From 3235d4e761c44d92298fa4804986414a19914c3b Mon Sep 17 00:00:00 2001 From: Deborah Kaplan Date: Tue, 30 Jul 2024 13:27:04 +0000 Subject: [PATCH 1/3] chore: rebuilding the requirements with new constraint because this is consumed as a package, the requirements need to be built manually. --- requirements/base.txt | 22 +++----- requirements/ci.txt | 74 +++++++++--------------- requirements/common_constraints.txt | 8 +++ requirements/dev.txt | 88 +++++++++-------------------- requirements/django.txt | 2 +- requirements/pip.txt | 6 +- requirements/pip_tools.txt | 17 +----- requirements/test.txt | 52 ++++++----------- requirements/tox.txt | 20 +++---- 9 files changed, 105 insertions(+), 184 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index c0a3d9e..2c2eefc 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,32 +1,28 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade # asgiref==3.8.1 # via django -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -c requirements/constraints.txt - # django -django==4.2.11 +django==4.2.14 # via # -c requirements/common_constraints.txt # -r requirements/base.in -lxml[html-clean,html_clean]==5.2.1 +lxml[html-clean,html_clean]==5.2.2 # via # -r requirements/base.in # lxml-html-clean -lxml-html-clean==0.1.1 +lxml-html-clean==0.2.0 # via lxml -path==16.14.0 - # via -r requirements/base.in +path==16.16.0 + # via + # -c requirements/constraints.txt + # -r requirements/base.in polib==1.2.0 # via -r requirements/base.in pyyaml==6.0.1 # via -r requirements/base.in -sqlparse==0.5.0 +sqlparse==0.5.1 # via django -typing-extensions==4.11.0 - # via asgiref diff --git a/requirements/ci.txt b/requirements/ci.txt index b913f11..8ac535b 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -8,17 +8,12 @@ asgiref==3.8.1 # via # -r requirements/test.txt # django -astroid==3.1.0 +astroid==3.2.4 # via # -r requirements/test.txt # pylint # pylint-celery -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -c requirements/constraints.txt - # -r requirements/test.txt - # django -cachetools==5.3.3 +cachetools==5.4.0 # via # -r requirements/tox.txt # tox @@ -44,7 +39,7 @@ colorama==0.4.6 # via # -r requirements/tox.txt # tox -coverage[toml]==7.5.0 +coverage[toml]==7.6.0 # via # -r requirements/ci.in # -r requirements/test.txt @@ -59,17 +54,13 @@ distlib==0.3.8 # via # -r requirements/tox.txt # virtualenv -django==4.2.11 +django==4.2.14 # via # -c requirements/common_constraints.txt # -r requirements/test.txt -edx-lint==5.3.6 +edx-lint==5.3.7 # via -r requirements/test.txt -exceptiongroup==1.2.1 - # via - # -r requirements/test.txt - # pytest -filelock==3.13.4 +filelock==3.15.4 # via # -r requirements/tox.txt # tox @@ -82,16 +73,18 @@ isort==5.13.2 # via # -r requirements/test.txt # pylint -jinja2==3.1.3 +jinja2==3.1.4 # via # -r requirements/test.txt # code-annotations -lxml[html-clean]==5.2.1 +lxml[html-clean]==5.2.2 # via # -r requirements/test.txt # lxml-html-clean -lxml-html-clean==0.1.1 - # via -r requirements/test.txt +lxml-html-clean==0.2.0 + # via + # -r requirements/test.txt + # lxml markupsafe==2.1.5 # via # -r requirements/test.txt @@ -104,20 +97,22 @@ mock==3.0.5 # via # -c requirements/constraints.txt # -r requirements/test.txt -packaging==24.0 +packaging==24.1 # via # -r requirements/test.txt # -r requirements/tox.txt # pyproject-api # pytest # tox -path==16.14.0 - # via -r requirements/test.txt +path==16.16.0 + # via + # -c requirements/constraints.txt + # -r requirements/test.txt pbr==6.0.0 # via # -r requirements/test.txt # stevedore -platformdirs==4.2.1 +platformdirs==4.2.2 # via # -r requirements/test.txt # -r requirements/tox.txt @@ -132,9 +127,9 @@ pluggy==1.5.0 # tox polib==1.2.0 # via -r requirements/test.txt -pycodestyle==2.11.1 +pycodestyle==2.12.0 # via -r requirements/test.txt -pylint==3.1.0 +pylint==3.2.6 # via # -r requirements/test.txt # edx-lint @@ -154,11 +149,11 @@ pylint-plugin-utils==0.8.2 # -r requirements/test.txt # pylint-celery # pylint-django -pyproject-api==1.6.1 +pyproject-api==1.7.1 # via # -r requirements/tox.txt # tox -pytest==8.1.1 +pytest==8.3.2 # via # -r requirements/test.txt # pytest-cov @@ -179,7 +174,7 @@ six==1.16.0 # -r requirements/test.txt # edx-lint # mock -sqlparse==0.5.0 +sqlparse==0.5.1 # via # -r requirements/test.txt # django @@ -191,28 +186,13 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.0.1 - # via - # -r requirements/test.txt - # -r requirements/tox.txt - # coverage - # pylint - # pyproject-api - # pytest - # tox -tomlkit==0.12.4 +tomlkit==0.13.0 # via # -r requirements/test.txt # pylint -tox==4.14.2 +tox==4.16.0 # via -r requirements/tox.txt -typing-extensions==4.11.0 - # via - # -r requirements/test.txt - # asgiref - # astroid - # pylint -virtualenv==20.26.0 +virtualenv==20.26.3 # via # -r requirements/tox.txt # tox diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt index c9d8d9c..6459fbe 100644 --- a/requirements/common_constraints.txt +++ b/requirements/common_constraints.txt @@ -22,6 +22,7 @@ Django<5.0 # elasticsearch>=7.14.0 includes breaking changes in it which caused issues in discovery upgrade process. # elastic search changelog: https://www.elastic.co/guide/en/enterprise-search/master/release-notes-7.14.0.html +# See https://github.com/openedx/edx-platform/issues/35126 for more info elasticsearch<7.14.0 # django-simple-history>3.0.0 adds indexing and causes a lot of migrations to be affected @@ -35,3 +36,10 @@ django-simple-history==3.0.0 # So we need to pin it globally, for now. # Ticket for unpinning: https://github.com/openedx/edx-lint/issues/407 importlib-metadata<7 + +# Cause: https://github.com/openedx/event-tracking/pull/290 +# event-tracking 2.4.1 upgrades to pymongo 4.4.0 which is not supported on edx-platform. +# We will pin event-tracking to do not break existing installations +# This can be unpinned once https://github.com/openedx/edx-platform/issues/34586 +# has been resolved and edx-platform is running with pymongo>=4.4.0 +event-tracking<2.4.1 diff --git a/requirements/dev.txt b/requirements/dev.txt index 173867b..6acb5c0 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -8,21 +8,16 @@ asgiref==3.8.1 # via # -r requirements/ci.txt # django -astroid==3.1.0 +astroid==3.2.4 # via # -r requirements/ci.txt # pylint # pylint-celery -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -c requirements/constraints.txt - # -r requirements/ci.txt - # django build==1.2.1 # via # -r requirements/pip_tools.txt # pip-tools -cachetools==5.3.3 +cachetools==5.4.0 # via # -r requirements/ci.txt # tox @@ -50,7 +45,7 @@ colorama==0.4.6 # via # -r requirements/ci.txt # tox -coverage[toml]==7.5.0 +coverage[toml]==7.6.0 # via # -r requirements/ci.txt # pytest-cov @@ -64,26 +59,17 @@ distlib==0.3.8 # via # -r requirements/ci.txt # virtualenv -django==4.2.11 +django==4.2.14 # via # -c requirements/common_constraints.txt # -r requirements/ci.txt -edx-lint==5.3.6 +edx-lint==5.3.7 # via -r requirements/ci.txt -exceptiongroup==1.2.1 - # via - # -r requirements/ci.txt - # pytest -filelock==3.13.4 +filelock==3.15.4 # via # -r requirements/ci.txt # tox # virtualenv -importlib-metadata==6.11.0 - # via - # -c requirements/common_constraints.txt - # -r requirements/pip_tools.txt - # build iniconfig==2.0.0 # via # -r requirements/ci.txt @@ -92,16 +78,18 @@ isort==5.13.2 # via # -r requirements/ci.txt # pylint -jinja2==3.1.3 +jinja2==3.1.4 # via # -r requirements/ci.txt # code-annotations -lxml[html-clean]==5.2.1 +lxml[html-clean]==5.2.2 # via # -r requirements/ci.txt # lxml-html-clean -lxml-html-clean==0.1.1 - # via -r requirements/ci.txt +lxml-html-clean==0.2.0 + # via + # -r requirements/ci.txt + # lxml markupsafe==2.1.5 # via # -r requirements/ci.txt @@ -114,7 +102,7 @@ mock==3.0.5 # via # -c requirements/constraints.txt # -r requirements/ci.txt -packaging==24.0 +packaging==24.1 # via # -r requirements/ci.txt # -r requirements/pip_tools.txt @@ -122,15 +110,17 @@ packaging==24.0 # pyproject-api # pytest # tox -path==16.14.0 - # via -r requirements/ci.txt +path==16.16.0 + # via + # -c requirements/constraints.txt + # -r requirements/ci.txt pbr==6.0.0 # via # -r requirements/ci.txt # stevedore pip-tools==7.4.1 # via -r requirements/pip_tools.txt -platformdirs==4.2.1 +platformdirs==4.2.2 # via # -r requirements/ci.txt # pylint @@ -143,9 +133,9 @@ pluggy==1.5.0 # tox polib==1.2.0 # via -r requirements/ci.txt -pycodestyle==2.11.1 +pycodestyle==2.12.0 # via -r requirements/ci.txt -pylint==3.1.0 +pylint==3.2.6 # via # -r requirements/ci.txt # edx-lint @@ -165,16 +155,16 @@ pylint-plugin-utils==0.8.2 # -r requirements/ci.txt # pylint-celery # pylint-django -pyproject-api==1.6.1 +pyproject-api==1.7.1 # via # -r requirements/ci.txt # tox -pyproject-hooks==1.0.0 +pyproject-hooks==1.1.0 # via # -r requirements/pip_tools.txt # build # pip-tools -pytest==8.1.1 +pytest==8.3.2 # via # -r requirements/ci.txt # pytest-cov @@ -195,7 +185,7 @@ six==1.16.0 # -r requirements/ci.txt # edx-lint # mock -sqlparse==0.5.0 +sqlparse==0.5.1 # via # -r requirements/ci.txt # django @@ -207,31 +197,13 @@ text-unidecode==1.3 # via # -r requirements/ci.txt # python-slugify -tomli==2.0.1 - # via - # -r requirements/ci.txt - # -r requirements/pip_tools.txt - # build - # coverage - # pip-tools - # pylint - # pyproject-api - # pyproject-hooks - # pytest - # tox -tomlkit==0.12.4 +tomlkit==0.13.0 # via # -r requirements/ci.txt # pylint -tox==4.14.2 +tox==4.16.0 # via -r requirements/ci.txt -typing-extensions==4.11.0 - # via - # -r requirements/ci.txt - # asgiref - # astroid - # pylint -virtualenv==20.26.0 +virtualenv==20.26.3 # via # -r requirements/ci.txt # tox @@ -239,10 +211,6 @@ wheel==0.43.0 # via # -r requirements/pip_tools.txt # pip-tools -zipp==3.18.1 - # via - # -r requirements/pip_tools.txt - # importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/django.txt b/requirements/django.txt index db03776..549c1f8 100644 --- a/requirements/django.txt +++ b/requirements/django.txt @@ -1 +1 @@ -django==4.2.11 +django==4.2.14 diff --git a/requirements/pip.txt b/requirements/pip.txt index e3ffcc7..54b0571 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -8,7 +8,7 @@ wheel==0.43.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==24.0 +pip==24.2 # via -r requirements/pip.in -setuptools==69.5.1 +setuptools==72.1.0 # via -r requirements/pip.in diff --git a/requirements/pip_tools.txt b/requirements/pip_tools.txt index 4e1105e..0b0b25e 100644 --- a/requirements/pip_tools.txt +++ b/requirements/pip_tools.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -8,27 +8,16 @@ build==1.2.1 # via pip-tools click==8.1.7 # via pip-tools -importlib-metadata==6.11.0 - # via - # -c requirements/common_constraints.txt - # build -packaging==24.0 +packaging==24.1 # via build pip-tools==7.4.1 # via -r requirements/pip_tools.in -pyproject-hooks==1.0.0 - # via - # build - # pip-tools -tomli==2.0.1 +pyproject-hooks==1.1.0 # via # build # pip-tools - # pyproject-hooks wheel==0.43.0 # via pip-tools -zipp==3.18.1 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/test.txt b/requirements/test.txt index 819de90..9b3312d 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -8,15 +8,10 @@ asgiref==3.8.1 # via # -r requirements/base.txt # django -astroid==3.1.0 +astroid==3.2.4 # via # pylint # pylint-celery -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -c requirements/constraints.txt - # -r requirements/base.txt - # django click==8.1.7 # via # click-log @@ -26,7 +21,7 @@ click-log==0.4.0 # via edx-lint code-annotations==1.8.0 # via edx-lint -coverage[toml]==7.5.0 +coverage[toml]==7.6.0 # via # -r requirements/test.in # pytest-cov @@ -37,21 +32,19 @@ dill==0.3.8 # via # -c requirements/common_constraints.txt # -r requirements/base.txt -edx-lint==5.3.6 +edx-lint==5.3.7 # via -r requirements/test.in -exceptiongroup==1.2.1 - # via pytest iniconfig==2.0.0 # via pytest isort==5.13.2 # via pylint -jinja2==3.1.3 +jinja2==3.1.4 # via code-annotations -lxml[html-clean]==5.2.1 +lxml[html-clean]==5.2.2 # via # -r requirements/base.txt # lxml-html-clean -lxml-html-clean==0.1.1 +lxml-html-clean==0.2.0 # via # -r requirements/base.txt # lxml @@ -63,21 +56,23 @@ mock==3.0.5 # via # -c requirements/constraints.txt # -r requirements/test.in -packaging==24.0 +packaging==24.1 # via pytest -path==16.14.0 - # via -r requirements/base.txt +path==16.16.0 + # via + # -c requirements/constraints.txt + # -r requirements/base.txt pbr==6.0.0 # via stevedore -platformdirs==4.2.1 +platformdirs==4.2.2 # via pylint pluggy==1.5.0 # via pytest polib==1.2.0 # via -r requirements/base.txt -pycodestyle==2.11.1 +pycodestyle==2.12.0 # via -r requirements/test.in -pylint==3.1.0 +pylint==3.2.6 # via # edx-lint # pylint-celery @@ -91,7 +86,7 @@ pylint-plugin-utils==0.8.2 # via # pylint-celery # pylint-django -pytest==8.1.1 +pytest==8.3.2 # via pytest-cov pytest-cov==5.0.0 # via -r requirements/test.in @@ -107,7 +102,7 @@ six==1.16.0 # via # edx-lint # mock -sqlparse==0.5.0 +sqlparse==0.5.1 # via # -r requirements/base.txt # django @@ -115,16 +110,5 @@ stevedore==5.2.0 # via code-annotations text-unidecode==1.3 # via python-slugify -tomli==2.0.1 - # via - # coverage - # pylint - # pytest -tomlkit==0.12.4 +tomlkit==0.13.0 # via pylint -typing-extensions==4.11.0 - # via - # -r requirements/base.txt - # asgiref - # astroid - # pylint diff --git a/requirements/tox.txt b/requirements/tox.txt index b213aa7..e8cfb9e 100644 --- a/requirements/tox.txt +++ b/requirements/tox.txt @@ -1,10 +1,10 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade # -cachetools==5.3.3 +cachetools==5.4.0 # via tox chardet==5.2.0 # via tox @@ -12,27 +12,23 @@ colorama==0.4.6 # via tox distlib==0.3.8 # via virtualenv -filelock==3.13.4 +filelock==3.15.4 # via # tox # virtualenv -packaging==24.0 +packaging==24.1 # via # pyproject-api # tox -platformdirs==4.2.1 +platformdirs==4.2.2 # via # tox # virtualenv pluggy==1.5.0 # via tox -pyproject-api==1.6.1 +pyproject-api==1.7.1 # via tox -tomli==2.0.1 - # via - # pyproject-api - # tox -tox==4.14.2 +tox==4.16.0 # via -r requirements/tox.in -virtualenv==20.26.0 +virtualenv==20.26.3 # via tox From 0b2a730f1bef7193359f672643c2eda57f6feb76 Mon Sep 17 00:00:00 2001 From: Deborah Kaplan Date: Tue, 30 Jul 2024 15:25:34 +0000 Subject: [PATCH 2/3] chore: updating setup.py to understand constraints logic from https://github.com/openedx/xblock-sdk/blob/master/setup.py --- i18n/__init__.py | 18 +++----- setup.py | 115 +++++++++++++++++++++++++++++++---------------- 2 files changed, 82 insertions(+), 51 deletions(-) diff --git a/i18n/__init__.py b/i18n/__init__.py index 114b81a..f96414f 100644 --- a/i18n/__init__.py +++ b/i18n/__init__.py @@ -1,32 +1,26 @@ """ Tool to be used by other IDAs for internationalization. """ + import argparse import sys from . import config -__version__ = '1.6.1' +__version__ = "1.6.2" class Runner: """ Runner class for internationalization. """ + def __init__(self): self.args = sys.argv[1:] self.configuration = None self.parser = argparse.ArgumentParser() - self.parser.add_argument( - '--config', - '-c', - help='configuration file' - ) - self.parser.add_argument( - '-v', '--verbose', - action='count', default=0, - help="Turns on info-level logging." - ) + self.parser.add_argument("--config", "-c", help="configuration file") + self.parser.add_argument("-v", "--verbose", action="count", default=0, help="Turns on info-level logging.") self.add_args() def add_args(self): @@ -45,6 +39,6 @@ def __call__(self, **kwargs): args = self.parser.parse_known_args(self.args)[0] for key, val in kwargs.items(): setattr(args, key, val) - root_dir = kwargs.get('root_dir') + root_dir = kwargs.get("root_dir") self.configuration = config.Configuration(filename=args.config, root_dir=root_dir) return self.run(args) diff --git a/setup.py b/setup.py index 9f1531b..f59467f 100755 --- a/setup.py +++ b/setup.py @@ -1,24 +1,61 @@ #!/usr/bin/env python import os -import re import pathlib +import re from setuptools import setup -def load_requirements(*requirements_paths): +def load_requirements(*requirements_paths) -> list[str]: """ Load all requirements from the specified requirements files. + + Requirements will include any constraints from files specified with -c in the requirements files. Returns a list of requirement strings. """ - requirements = set() + requirements = {} + constraint_files = set() + + # groups "my-package-name<=x.y.z,..." into ("my-package-name", "<=x.y.z,...") + requirement_line_regex = re.compile(r"([a-zA-Z0-9-_.]+)([<>=][^#\s]+)?") + + def add_version_constraint_or_raise(current_line, current_requirements, add_if_not_present): + regex_match = requirement_line_regex.match(current_line) + if regex_match: + package = regex_match.group(1) + version_constraints = regex_match.group(2) + existing_version_constraints = current_requirements.get(package, None) + # it's fine to add constraints to an unconstrained package, but raise an error if there are already + # constraints in place + if existing_version_constraints and existing_version_constraints != version_constraints: + raise BaseException( + f"Multiple constraint definitions found for {package}:" + f' "{existing_version_constraints}" and "{version_constraints}".' + f"Combine constraints into one location with {package}" + f"{existing_version_constraints},{version_constraints}." + ) + if add_if_not_present or package in current_requirements: + current_requirements[package] = version_constraints + + # process .in files and store the path to any constraint files that are pulled in for path in requirements_paths: with open(path) as reqs: - requirements.update( - line.split('#')[0].strip() for line in reqs - if is_requirement(line.strip()) - ) - return list(requirements) + for line in reqs: + if is_requirement(line): + add_version_constraint_or_raise(line, requirements, True) + if line and line.startswith("-c") and not line.startswith("-c http"): + constraint_files.add(os.path.dirname(path) + "/" + line.split("#")[0].replace("-c", "").strip()) + + # process constraint files and add any new constraints found to existing requirements + for constraint_file in constraint_files: + with open(constraint_file) as reader: + for line in reader: + if is_requirement(line): + add_version_constraint_or_raise(line, requirements, False) + + # process back into list of pkg><=constraints strings + constrained_requirements = [f'{pkg}{version or ""}' for (pkg, version) in sorted(requirements.items())] + return constrained_requirements def is_requirement(line): @@ -26,19 +63,19 @@ def is_requirement(line): Return True if the requirement line is a package requirement; that is, it is not blank, a comment, a URL, or an included file. """ - return line and not line.startswith(('-r', '#', '-e', 'git+', '-c')) + return line and not line.startswith(("-r", "#", "-e", "git+", "-c")) def get_version(*file_paths): - """ - Extract the version string from the file at the given relative path fragments. - """ - filename = os.path.join(os.path.dirname(__file__), *file_paths) - version_file = open(filename).read() - version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M) - if version_match: - return version_match.group(1) - raise RuntimeError("Unable to find version string.") + """ + Extract the version string from the file at the given relative path fragments. + """ + filename = os.path.join(os.path.dirname(__file__), *file_paths) + version_file = open(filename).read() + version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M) + if version_match: + return version_match.group(1) + raise RuntimeError("Unable to find version string.") VERSION = get_version("i18n", "__init__.py") @@ -49,34 +86,34 @@ def get_version(*file_paths): long_description = (here / "README.rst").read_text(encoding="utf-8") setup( - name='edx-i18n-tools', + name="edx-i18n-tools", version=VERSION, - description='edX Internationalization Tools', + description="edX Internationalization Tools", long_description=long_description, - long_description_content_type='text/x-rst', - author='edX', - author_email='oscm@edx.org', - url='https://github.com/openedx/i18n-tools', + long_description_content_type="text/x-rst", + author="edX", + author_email="oscm@edx.org", + url="https://github.com/openedx/i18n-tools", packages=[ - 'i18n', + "i18n", ], - install_requires=load_requirements('requirements/base.in'), + install_requires=load_requirements("requirements/base.in"), entry_points={ - 'console_scripts': [ - 'i18n_tool = i18n.main:main', + "console_scripts": [ + "i18n_tool = i18n.main:main", ], }, - license='Apache License 2.0', + license="Apache License 2.0", classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Environment :: Web Environment', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: Apache Software License', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.11', - 'Framework :: Django', - 'Framework :: Django :: 4.2', + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.11", + "Framework :: Django", + "Framework :: Django :: 4.2", ], ) From bf1becbabf9a16c9e91af670991487d936f2a970 Mon Sep 17 00:00:00 2001 From: Deborah Kaplan Date: Tue, 30 Jul 2024 15:42:59 +0000 Subject: [PATCH 3/3] chore: bad typing bad typing --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f59467f..2e0a64a 100755 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ from setuptools import setup -def load_requirements(*requirements_paths) -> list[str]: +def load_requirements(*requirements_paths): """ Load all requirements from the specified requirements files.