Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to pyproject.toml #9100

Merged
merged 1 commit into from
Mar 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
with:
python-version: '3.11'
cache: pip
cache-dependency-path: requirements*.txt
cache-dependency-path: pyproject.toml
- name: Used versions
run: ./ci/print-versions
- name: Install pip dependencies
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
with:
python-version: '3.11'
cache: pip
cache-dependency-path: '**/requirements*.txt'
cache-dependency-path: docs/requirements.txt
- name: Install pip dependencies
run: pip install -r docs/requirements.txt
- name: Sphinx linkcheck
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/licenses-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,16 @@ jobs:
path: |
~/.cache/pip
~/.cache/pre-commit
key: ${{ runner.os }}-pre-commit-${{ hashFiles('**/requirements*.txt') }}-${{ hashFiles('.pre-commit-config.yaml') }}
key: ${{ runner.os }}-pre-commit-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
pip install -r requirements-lint.txt
python -m pip install $(sed -n 's/.*"\(pip==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(wheel==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(pre-commit==\([^"]*\)\)".*/\1/p' pyproject.toml)
- run: ./scripts/generate-license-data
- name: Update renovate branch
if: github.ref != 'refs/heads/main'
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/migrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,9 @@ jobs:
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: |-
3.11
python-version: 3.11
cache: pip
cache-dependency-path: '**/requirements*.txt'
cache-dependency-path: pyproject.toml
- name: Install pip dependencies
run: ./ci/pip-install migrations
- name: Check missing migrations
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mypy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
with:
python-version: '3.11'
cache: pip
cache-dependency-path: requirements*.txt
cache-dependency-path: pyproject.toml
- name: Install dependencies
run: ./ci/pip-install mypy

Expand Down
10 changes: 4 additions & 6 deletions .github/workflows/pylint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,12 @@ jobs:
with:
python-version: '3.11'
cache: pip
cache-dependency-path: |
requirements-lint.txt
requirements-ci.txt
cache-dependency-path: pyproject.toml
- name: Install dependencies
run: |
pip install -r requirements-ci.txt
pip install -r requirements-lint.txt

python -m pip install $(sed -n 's/.*"\(pip==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(wheel==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(pylint==\([^"]*\)\)".*/\1/p' pyproject.toml)
- name: Add pylint annotator
uses: pr-annotators/[email protected]

Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/schema-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
- main
paths:
- .github/workflows/schema-update.yml
- requirements.txt
- pyproject.toml
- docs/Makefile

jobs:
Expand All @@ -28,7 +28,12 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install $(grep -E '^(weblate-schemas)==' requirements.txt) -r requirements-lint.txt
- name: Install pip dependencies
run: |
python -m pip install $(sed -n 's/.*"\(pip==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(wheel==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(weblate-schemas==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(pre-commit==\([^"]*\)\)".*/\1/p' pyproject.toml)
- run: make -C docs update-schemas
- run: pre-commit run --files $(git diff --name-only)
continue-on-error: true
Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
with:
python-version: '3.11'
cache: pip
cache-dependency-path: requirements*.txt
cache-dependency-path: pyproject.toml
- name: Used versions
run: ./ci/print-versions
- name: Install pip dependencies
Expand Down Expand Up @@ -69,7 +69,7 @@ jobs:
with:
python-version: '3.11'
cache: pip
cache-dependency-path: '**/requirements*.txt'
cache-dependency-path: pyproject.toml
- name: Used versions
run: ./ci/print-versions
- name: Install pip dependencies
Expand All @@ -95,9 +95,13 @@ jobs:
with:
python-version: '3.11'
cache: pip
cache-dependency-path: requirements-ci.txt
cache-dependency-path: pyproject.toml
- name: Install pip dependencies
run: pip install -r requirements-ci.txt
run: |
python -m pip install $(sed -n 's/.*"\(pip==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(wheel==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(twine==\([^"]*\)\)".*/\1/p' pyproject.toml)
pip install $(sed -n 's/.*"\(build==\([^"]*\)\)".*/\1/p' pyproject.toml)
- name: build
run: python -m build
- name: Twine check
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: '**/requirements*.txt'
cache-dependency-path: pyproject.toml
- name: Used versions
run: ./ci/print-versions
- name: Install pip dependencies
Expand Down
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,4 @@ weblate-*.tar.*
/dev-docker/data/
/dev-docker/weblate-dev/requirements.txt
*~
# Generated minimal deps
requirements-min.txt
/.dmypy.json
1 change: 0 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ repos:
- id: check-yaml
- id: check-xml
- id: check-toml
- id: requirements-txt-fixer
- id: check-merge-conflict
- id: check-json
- id: debug-statements
Expand Down
2 changes: 0 additions & 2 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ include ChangeLog
include README.rst
include BACKERS.rst
include CONTRIBUTING.md
include requirements-*.txt
include requirements.txt
include manage.py
recursive-include weblate *.py
recursive-include weblate/static *
Expand Down
35 changes: 12 additions & 23 deletions ci/pip-install
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,30 @@
set -e -x

# Install CI requirements
python -m pip install -r requirements-ci.txt
# shellcheck disable=SC2046
python -m pip install $(sed -n 's/.*"\(pip==\([^"]*\)\)".*/\1/p' pyproject.toml)
# shellcheck disable=SC2046
pip install $(sed -n 's/.*"\(wheel==\([^"]*\)\)".*/\1/p' pyproject.toml)

# Workaround for
# SystemError: ffi_prep_closure(): bad user_data (it seems that the version of the libffi library seen at runtime is different from the 'ffi.h' file seen at compile-time)
pip install --no-binary :all: cffi

if [ "${1:-latest}" = migrations ] ; then
# shellcheck disable=SC2046
pip install $(grep -E '^(Cython|pycairo)[>=<]' requirements.txt)
# shellcheck disable=SC2046
pip install $(grep -E '^(psycopg|mysqlclient)' requirements-optional.txt)
# shellcheck disable=SC2046
pip install $(grep -E '^coverage[>=<]' requirements-ci.txt)
pip install -r requirements.txt
elif [ "${1:-latest}" = minimal ] ; then
# Build list of minimal requirements
requirements-builder --req requirements-test.txt --level min > requirements-min.txt

# Install cython and pycairo first, these are needed during install of others
# shellcheck disable=SC2046
pip install $(grep -E '^(Cython|pycairo)[>=<]' requirements-min.txt)

pip install -r requirements-min.txt
pip install -e ".[all,mysql,ci]"
else
# Install cython and pycairo first, these are needed during install of others
# shellcheck disable=SC2046
pip install $(grep -E '^(Cython|pycairo)[>=<]' requirements.txt)
if [ "${1:-latest}" = minimal ] ; then
# Adjust deps to force minimal version
sed 's/>=/==/' pyproject.toml
fi

if [ "${1:-latest}" = mypy ] ; then
pip install -r requirements-mypy.txt
pip install -e ".[all,mysql,ci,mypy,test]"
else
pip install -r requirements-test.txt
pip install -e ".[all,mysql,ci,test]"
fi
if [ "${1:-latest}" = edge ] ; then
pip install --upgrade-strategy eager -U -r requirements-test.txt -r requirements-ci.txt
pip install --upgrade-strategy eager -U -e ".[all,mysql,test,ci]"
# Install from git / pre-release
pip install --no-deps --upgrade --force-reinstall https://github.com/translate/translate/archive/master.zip
pip install --no-deps --upgrade --force-reinstall https://github.com/WeblateOrg/language-data/archive/main.zip
Expand Down
10 changes: 1 addition & 9 deletions ci/run-migrate
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,7 @@ check
. ".venv-$TAG/bin/activate"
# Workaround for SystemError: ffi_prep_closure(): bad user_data
pip install --no-binary :all: cffi
# Use older psycopg2 for compatibility with older Django releases
pip install psycopg2-binary==2.7.7
# Use specific Selenium versions to avoid issues with pip resolver
pip install selenium==4.0.0a6.post2
# The 5.0.0 release removed some compatibility shims used by Celery
pip install importlib-metadata==4.12.0
pip install -r requirements.txt
# shellcheck disable=SC2046
pip install $(grep -E '^(psycopg|mysqlclient)' requirements-optional.txt)
pip install -e ".[all,mysql]"
check
echo "DATABASES['default']['HOST'] = '$CI_DB_HOST'" >> weblate/settings_test.py
check
Expand Down
4 changes: 2 additions & 2 deletions docs/admin/upgrade.rst
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ work, but is not as well tested as single version upgrades.
# Update Weblate inside your virtualenv
. ~/weblate-env/bin/pip install -e '.[all]'
# Install dependencies directly when not using virtualenv
pip install --upgrade -r requirements.txt
pip install --upgrade -e .
# Install optional dependencies directly when not using virtualenv
pip install --upgrade -r requirements-optional.txt
pip install --upgrade -e '.[all]'

#. New Weblate release might have new :ref:`python-deps`, please check if they cover
features you want.
Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/modules.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ The tests are executed using :program:`py.test`. First you need to install test

.. code-block:: sh

pip install -r requirements-test.txt
pip install -e '.[test,lint]'

You can then execute the testsuite in the repository checkout:

Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/snippets/pre-commit.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ stored in :file:`pyproject.toml`.
The easiest approach to enforce all this is to install `pre-commit`_. The
repository contains configuration for it to verify the committed files are sane.
After installing it (it is already included in the
:file:`requirements-lint.txt`) turn it on by running ``pre-commit install`` in
:file:`pyproject.toml`) turn it on by running ``pre-commit install`` in
Weblate checkout. This way all your changes will be automatically checked.

You can also trigger check manually, to check all files run:
Expand Down
16 changes: 5 additions & 11 deletions docs/contributing/start.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,31 +34,25 @@ sources.
virtualenv .venv
. .venv/bin/activate

3. Install Weblate (for this you need some system dependencies, see :doc:`../admin/install/source`):
3. Install Weblate (for this you need some system dependencies, see :doc:`../admin/install/source`) and all dependencies useful for development:

.. code-block:: sh

pip install -e '.[all]'
pip install -e '.[all,dev,ci,test,mypy,lint]'

3. Install all dependencies useful for development:

.. code-block:: sh

pip install -r requirements-dev.txt

4. Start a development server:
3. Start a development server:

.. code-block:: sh

weblate runserver

5. Depending on your configuration, you might also want to start Celery workers:
4. Depending on your configuration, you might also want to start Celery workers:

.. code-block:: sh

./weblate/examples/celery start

6. To run a test (see :ref:`local-tests` for more details):
5. To run a test (see :ref:`local-tests` for more details):

.. code-block:: sh

Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/tests.rst
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ The simple execution can look like:
Local testing
+++++++++++++

Before running test, please ensure test dependencies are installed. This can be done by `pip install -r requirements-dev.txt` or `pip install -e .[test]`.
Before running test, please ensure test dependencies are installed. This can be done by ``pip install -e .[test]``.

To run a testsuite locally, use:

Expand Down
Loading
Loading