From 8327283285f2127d951c9f8e9c20a30a47444ff4 Mon Sep 17 00:00:00 2001 From: Frank Schneider Date: Wed, 15 Jan 2025 13:07:55 +0100 Subject: [PATCH 1/3] Create equivalent pyproject toml --- pyproject.toml | 327 +++++++++++++++++++++++++++++++++++++++++++++++++ setup.cfg | 314 ----------------------------------------------- setup.py | 4 - 3 files changed, 327 insertions(+), 318 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..10fd4b730 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,327 @@ +############################################################################### +# MLCommons Algorithmic Efficiency. # +############################################################################### + +[project] +name = "algorithmic_efficiency" +dynamic = ["version"] +description = "Codebase for the AlgoPerf: Training Algorithms benchmark" +authors = [ + { name = "MLCommons Algorithms Working Group", email = "algorithms@mlcommons.org" }, +] +license = { text = "Apache 2.0" } +readme = "README.md" +requires-python = ">=3.8" +keywords = [ + "algoperf", + "algorithmic-efficiency", + "machine-learning", + "deep-learning", + "optimization", + "benchmarking", + "training-methods", +] +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Scientific/Engineering :: Artificial Intelligence", +] +dependencies = [ + "absl-py==1.4.0", + "networkx==3.1", + "docker==7.0.0", + "numpy>=1.23", + "pandas>=2.0.1", + "tensorflow==2.12.0", + "tensorflow-datasets==4.9.2", + "tensorflow-probability==0.20.0", + "tensorflow-addons==0.20.0", + "gputil==1.4.0", + "psutil==5.9.5", + "clu==0.0.7", + "matplotlib>=3.7.2", + "tabulate==0.9.0", +] + +[build-system] +requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"] +build-backend = "setuptools.build_meta" + +[tool.setuptools] +packages = ["algorithmic_efficiency"] +py-modules = ["submission_runner"] +include-package-data = true +zip-safe = false + +[tool.setuptools.dynamic] +version = { attr = "algorithmic_efficiency.__version__" } + +############################################################################### +# (Optional) Dependencies # +############################################################################### +[project.optional-dependencies] +# All workloads +full = [ + "algorithmic_efficiency[criteo1tb,fastmri,ogbg,librispeech_conformer,wmt]", +] +# All workloads plus development dependencies +full_dev = ["algorithmic_efficiency[full,dev]"] +# Dependencies for developing the package +dev = [ + "isort==5.12.0", + "pylint==2.17.4", + "pytest==7.3.1", + "yapf==0.33.0", + "pre-commit==3.3.1", +] + +# Workloads +criteo1tb = ["scikit-learn==1.2.2"] +fastmri = ["h5py==3.8.0", "scikit-image==0.20.0"] +ogbg = ["jraph==0.0.6.dev0", "scikit-learn==1.2.2"] +librispeech_conformer = [ + "sentencepiece==0.1.99", + "tensorflow-text==2.12.1", + "pydub==0.25.1", +] +wmt = ["sentencepiece==0.1.99", "tensorflow-text==2.12.1", "sacrebleu==1.3.1"] + +# Frameworks +jax_core_deps = [ + "flax==0.6.10", + "optax==0.1.5", + # Todo(kasimbeg): verify if this is necessary after we upgrade jax. + "chex==0.1.7", + "ml_dtypes==0.2.0", + "protobuf==4.25.3", +] +jax_cpu = [ + "jax==0.4.10", + "jaxlib==0.4.10", + "algorithmic_efficiency[jax_core_deps]", +] +jax_gpu = [ + "jax==0.4.10", + "jaxlib==0.4.10+cuda12.cudnn88", + "algorithmic_efficiency[jax_core_deps]", +] +pytorch_cpu = ["torch==2.1.0", "torchvision==0.16.0"] +pytorch_gpu = [ + "torch==2.1.0", + "torchvision==0.16.0", +] # Note: omit the cuda suffix and installing from the appropriate wheel will result in using locally installed CUDA. +wandb = ["wandb==0.16.5"] + +############################################################################### +# Linting Configurations # +############################################################################### + +# yapf configuration +[tool.yapf] +based_on_style = "yapf" +each_dict_entry_on_separate_line = false +split_all_top_level_comma_separated_values = true + +# isort configuration +[tool.isort] +profile = "google" + +# pylint configuration +[tool.pylint.MASTER] +persistent = false +ignore = "get_references_web.py,get_references_web_single_group.py" + +[tool.pylint.REPORTS] +reports = false +msg-template = "{msg_id}:{line:3} {obj}: {msg} [{symbol}]" + +[tool.pylint.MESSAGES_CONTROL] +enable = "indexing-exception,old-raise-syntax" + +[tool.pylint.BASIC] +# Required attributes for module, separated by a comma +#required-attributes= +# Regular expression which should only match the name +# of functions or classes which do not require a docstring. +no-docstring-rgx = "(__.*__|main)" +# Min length in lines of a function that requires a docstring. +docstring-min-length = 10 +# Regular expression which should only match correct module names. The +# leading underscore is sanctioned for private modules by Google's style +# guide. +# +# There are exceptions to the basic rule (_?[a-z][a-z0-9_]*) to cover +# requirements of Python's module system. +module-rgx = "^(_?[a-z][a-z0-9_]*)|__init__$" +# Regular expression which should only match correct module level names +const-rgx = "^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$" +# Regular expression which should only match correct class attribute +class-attribute-rgx = "^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$" +# Regular expression which should only match correct class names +class-rgx = "^_?[A-Z][a-zA-Z0-9]*$" +# Regular expression which should only match correct function names. +# 'camel_case' and 'snake_case' group names are used for consistency of naming +# styles across functions and methods. +function-rgx = "^(?:(?PsetUp|tearDown|setUpModule|tearDownModule)|(?P_?[A-Z][a-zA-Z0-9]*)|(?P_?[a-z][a-z0-9_]*))$" +# Regular expression which should only match correct method names. +# 'camel_case' and 'snake_case' group names are used for consistency of naming +# styles across functions and methods. 'exempt' indicates a name which is +# consistent with all naming styles. +method-rgx = "(?x)^(?:(?P_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|_testDatasetSize|setUpClass|test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|(?:test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|next|(?P_{0,2}[A-Z][a-zA-Z0-9_]*)|(?P_{0,2}[a-z][a-z0-9_]*))$" +# Regular expression which should only match correct instance attribute names +attr-rgx = "^_{0,2}[a-z][a-z0-9_]*$" +# Regular expression which should only match correct argument names +argument-rgx = "^[a-z][a-z0-9_]*$" +# Regular expression which should only match correct variable names +variable-rgx = "^[a-z][a-z0-9_]*$" +# Regular expression which should only match correct list comprehension / +# generator expression variable names +inlinevar-rgx = "^[a-z][a-z0-9_]*$" +# Good variable names which should always be accepted, separated by a comma +good-names = "main,_" +# Bad variable names which should always be refused, separated by a comma +bad-names = "" +# List of builtins function names that should not be used, separated by a comma +#bad-functions=input,apply,reduce +# List of decorators that define properties, such as abc.abstractproperty. +property-classes = "abc.abstractproperty" + +[tool.pylint.typecheck] +# Tells whether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members = true + +# List of decorators that create context managers from functions, such as +# contextlib.contextmanager. +contextmanager-decorators = [ + "contextlib.contextmanager", + "contextlib2.contextmanager", +] + +[tool.pylint.VARIABLES] +# Tells whether we should check for unused import in __init__ files. +init-import = false + +# A regular expression matching names used for dummy variables (i.e. not used). +dummy-variables-rgx = "^\\*{0,2}(_$|unused_|dummy_)" + +# List of additional names supposed to be defined in builtins. +additional-builtins = [] + +[tool.pylint.CLASSES] +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods = ["__init__", "__new__", "setUp"] + +# Valid names for the first argument to a class method. +valid-classmethod-first-arg = ["cls", "class_"] + +[tool.pylint.EXCEPTIONS] +overgeneral-exceptions = [ + "builtins.StandardError", + "builtins.Exception", + "builtins.BaseException", +] + +[tool.pylint.IMPORTS] +# Deprecated modules which should not be used, separated by a comma +deprecated-modules = ["regsub", "TERMIOS", "Bastion", "rexec", "sets"] + +[tool.pylint.FORMAT] +# List of checkers and warnings to disable. +disable = [ + "abstract-method", + "access-member-before-definition", + "arguments-differ", + "assignment-from-no-return", + "attribute-defined-outside-init", + "bad-mcs-classmethod-argument", + "bad-option-value", + "c-extension-no-member", + "consider-merging-isinstance", + "consider-using-dict-comprehension", + "consider-using-enumerate", + "consider-using-in", + "consider-using-set-comprehension", + "consider-using-ternary", + "deprecated-method", + "design", + "file-ignored", + "fixme", + "global-statement", + "import-error", + "inconsistent-return-statements", + "invalid-unary-operand-type", + "len-as-condition", + "locally-disabled", + "locally-enabled", + "misplaced-comparison-constant", + "missing-docstring", + "multiple-imports", + "no-else-return", + "no-member", + "no-name-in-module", + "no-self-use", + "no-value-for-parameter", + "not-an-iterable", + "not-context-manager", + "pointless-except", + "protected-access", + "redefined-argument-from-local", + "signature-differs", + "similarities", + "simplifiable-if-expression", + "star-args", + "super-init-not-called", + "suppressed-message", + "too-many-function-args", + "trailing-comma-tuple", + "trailing-newlines", + "ungrouped-imports", + "unnecessary-pass", + "unsubscriptable-object", + "unused-argument", + "useless-object-inheritance", + "useless-return", + "useless-suppression", + "wrong-import-order", + "wrong-import-position", + "unneeded-not", + "unexpected-keyword-arg", + "redundant-keyword-arg", + "unspecified-encoding", + "logging-fstring-interpolation", + "consider-using-f-string", + "use-dict-literal", +] +# Maximum number of characters on a single line. +max-line-length = 80 +ignore-long-lines = "(?x)(^\\s*(import|from)\\s|^\\s*(\\#\\ )??$|^[a-zA-Z_][a-zA-Z0-9_]*\\s*=\\s*('[^']\\S+'|\"[^\"]\\S+\"))" +# Maximum number of lines in a module +max-module-lines = 99999 +# String used as indentation unit. We differ from PEP8's normal 4 spaces. +indent-string = ' ' +single-line-if-stmt = true +# Do not warn about multiple statements on a single line for constructs like +# if test: stmt +[tool.pylint.LOGGING] +logging-modules = "logging,absl.logging" +# Add logging modules. +[tool.pylint.MISCELLANEOUS] +# Maximum line length for lambdas +#short-func-length=1 +# List of module members that should be marked as deprecated. +# All of the string functions are listed in 4.1.4 Deprecated string functions +# in the Python 2.4 docs. +#deprecated-members=string.atof,string.atoi,string.atol,string.capitalize,string.expandtabs,string.find,string.rfind,string.index,string.rindex,string.count,string.lower,string.split,string.rsplit,string.splitfields,string.join,string.joinfields,string.lstrip,string.rstrip,string.strip,string.swapcase,string.translate,string.upper,string.ljust,string.rjust,string.center,string.zfill,string.replace,sys.exitfunc,sys.maxint +# List of exceptions that do not need to be mentioned in the Raises section of +# a docstring. +#ignore-exceptions=AssertionError,NotImplementedError,StopIteration,TypeError +# Number of spaces of indent required when the last token on the preceding line +# is an open (, [, or {. +indent-after-paren = 4 diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 4afefd164..000000000 --- a/setup.cfg +++ /dev/null @@ -1,314 +0,0 @@ -############################################################################### -# MLCommons Algorithmic Efficiency. # -############################################################################### - -[metadata] -name = algorithmic_efficiency -version = attr: algorithmic_efficiency.__version__ -description = MLCommons Algorithmic Efficiency -url = https://github.com/mlcommons/algorithmic-efficiency -author = MLCommons Algorithmic Efficiency -author_email = algorithms@mlcommons.org -license = Apache 2.0 -long_description = file: README.md -long_description_content_type = text/markdown -keywords = algorithmic-efficiency, machine-learning, deep-learning, - optimization, benchmarking, training-methods -platforms = any -classifiers = - Development Status :: 3 - Alpha - Intended Audience :: Developers - Intended Audience :: Science/Research - License :: OSI Approved :: Apache Software License - Operating System :: OS Independent - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Topic :: Scientific/Engineering :: Artificial Intelligence - -[options] -zip_safe = False -packages = find: -include_package_data = True -setup_requires = - setuptools_scm -# Dependencies of the project: -install_requires = - absl-py==1.4.0 - # Pin to avoid unpinned install in dependencies that requires Python>=3.9. - networkx==3.1 - docker==7.0.0 - numpy>=1.23 - pandas>=2.0.1 - tensorflow==2.12.0 - tensorflow-datasets==4.9.2 - tensorflow-probability==0.20.0 - tensorflow-addons==0.20.0 - gputil==1.4.0 - psutil==5.9.5 - clu==0.0.7 - matplotlib>=3.7.2 - tabulate==0.9.0 -python_requires = >=3.8 - - -############################################################################### -# Additional Dependencies # -############################################################################### - -[options.extras_require] -# Add extra dependencies, e.g. to run tests or for the different frameworks. -# Use as `pip install -e '.[jax_gpu]' -f https://storage.googleapis.com/jax-releases/jax_releases.html` -# or `pip install -e '.[dev]'` - -# Bundled installs # - -# All workloads -full = - %(criteo1tb)s - %(fastmri)s - %(ogbg)s - %(librispeech_conformer)s - %(wmt)s - -# All workloads plus development dependencies -full_dev = - %(full)s - %(dev)s - - -# Dependencies for developing the package -dev = - isort==5.12.0 - pylint==2.17.4 - pytest==7.3.1 - yapf==0.33.0 - pre-commit==3.3.1 - -# Workloads # -criteo1tb = - scikit-learn==1.2.2 - -fastmri = - h5py==3.8.0 - scikit-image==0.20.0 - -ogbg = - jraph==0.0.6.dev0 - scikit-learn==1.2.2 - -librispeech_conformer = - sentencepiece==0.1.99 - tensorflow-text==2.12.1 - pydub==0.25.1 - -wmt = - sentencepiece==0.1.99 - tensorflow-text==2.12.1 - sacrebleu==1.3.1 - -# Frameworks # - -# JAX Core -jax_core_deps = - flax==0.6.10 - optax==0.1.5 - # Fix chex (optax dependency) version. - # Not fixing it can raise dependency issues with our - # jax version. - # Todo(kasimbeg): verify if this is necessary after we - # upgrade jax. - chex==0.1.7 - ml_dtypes==0.2.0 - protobuf==4.25.3 - - -# JAX CPU -jax_cpu = - jax==0.4.10 - jaxlib==0.4.10 - %(jax_core_deps)s - -# JAX GPU -# Note this installs both jax and jaxlib. -jax_gpu = - jax==0.4.10 - jaxlib==0.4.10+cuda12.cudnn88 - %(jax_core_deps)s - -# PyTorch CPU -pytorch_cpu = - torch==2.1.0 - torchvision==0.16.0 - -# PyTorch GPU -# Note: omit the cuda suffix and installing from the appropriate -# wheel will result in using locally installed CUDA. -pytorch_gpu = - torch==2.1.0 - torchvision==0.16.0 - -# wandb -wandb = - wandb==0.16.5 - -############################################################################### -# Linting Configurations # -############################################################################### - -# yapf configuration -[yapf] -based_on_style = yapf -each_dict_entry_on_separate_line = false -split_all_top_level_comma_separated_values = true - - -# isort configuration -[isort] -profile=google - - -# pylint configuration -[pylint.MASTER] -persistent=no # Pickle collected data for later comparisons. -#cache-size=500 # Set the cache size for astng objects. -# Ignore Py3 files -ignore=get_references_web.py,get_references_web_single_group.py -[pylint.REPORTS] -# Set the output format. -# output-format=sorted-text -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". -#files-output=no -# Tells whether to display a full report or only the messages. -reports=no -# Disable the report(s) with the given id(s). -#disable-report=R0001,R0002,R0003,R0004,R0101,R0102,R0201,R0202,R0220,R0401,R0402,R0701,R0801,R0901,R0902,R0903,R0904,R0911,R0912,R0913,R0914,R0915,R0921,R0922,R0923 -# Error message template (continued on second line) -msg-template={msg_id}:{line:3} {obj}: {msg} [{symbol}] -[pylint.'MESSAGES CONTROL'] -# List of checkers and warnings to enable. -enable=indexing-exception,old-raise-syntax - - -[pylint.BASIC] -# Required attributes for module, separated by a comma -#required-attributes= -# Regular expression which should only match the name -# of functions or classes which do not require a docstring. -no-docstring-rgx=(__.*__|main) -# Min length in lines of a function that requires a docstring. -docstring-min-length=10 -# Regular expression which should only match correct module names. The -# leading underscore is sanctioned for private modules by Google's style -# guide. -# -# There are exceptions to the basic rule (_?[a-z][a-z0-9_]*) to cover -# requirements of Python's module system. -module-rgx=^(_?[a-z][a-z0-9_]*)|__init__$ -# Regular expression which should only match correct module level names -const-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$ -# Regular expression which should only match correct class attribute -class-attribute-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$ -# Regular expression which should only match correct class names -class-rgx=^_?[A-Z][a-zA-Z0-9]*$ -# Regular expression which should only match correct function names. -# 'camel_case' and 'snake_case' group names are used for consistency of naming -# styles across functions and methods. -function-rgx=^(?:(?PsetUp|tearDown|setUpModule|tearDownModule)|(?P_?[A-Z][a-zA-Z0-9]*)|(?P_?[a-z][a-z0-9_]*))$ -# Regular expression which should only match correct method names. -# 'camel_case' and 'snake_case' group names are used for consistency of naming -# styles across functions and methods. 'exempt' indicates a name which is -# consistent with all naming styles. -method-rgx=(?x) - ^(?:(?P_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase - |tearDownTestCase|setupSelf|tearDownClass|_testDatasetSize|setUpClass - |(test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|next) - |(?P_{0,2}[A-Z][a-zA-Z0-9_]*) - |(?P_{0,2}[a-z][a-z0-9_]*))$ -# Regular expression which should only match correct instance attribute names -attr-rgx=^_{0,2}[a-z][a-z0-9_]*$ -# Regular expression which should only match correct argument names -argument-rgx=^[a-z][a-z0-9_]*$ -# Regular expression which should only match correct variable names -variable-rgx=^[a-z][a-z0-9_]*$ -# Regular expression which should only match correct list comprehension / -# generator expression variable names -inlinevar-rgx=^[a-z][a-z0-9_]*$ -# Good variable names which should always be accepted, separated by a comma -good-names=main,_ -# Bad variable names which should always be refused, separated by a comma -bad-names= -# List of builtins function names that should not be used, separated by a comma -#bad-functions=input,apply,reduce -# List of decorators that define properties, such as abc.abstractproperty. -property-classes=abc.abstractproperty -[pylint.TYPECHECK] -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes -# List of decorators that create context managers from functions, such as -# contextlib.contextmanager. -contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager -[pylint.VARIABLES] -# Tells whether we should check for unused import in __init__ files. -init-import=no -# A regular expression matching names used for dummy variables (i.e. not used). -dummy-variables-rgx=^\*{0,2}(_$|unused_|dummy_) -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid to define new builtins when possible. -additional-builtins= -[pylint.CLASSES] -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__,__new__,setUp -# "class_" is also a valid for the first argument to a class method. -valid-classmethod-first-arg=cls,class_ -[pylint.EXCEPTIONS] -overgeneral-exceptions=builtins.StandardError,builtins.Exception,builtins.BaseException -[pylint.IMPORTS] -# Deprecated modules which should not be used, separated by a comma -deprecated-modules=regsub,TERMIOS,Bastion,rexec,sets -[pylint.FORMAT] -# List of checkers and warnings to disable. -disable=abstract-method,access-member-before-definition,arguments-differ,assignment-from-no-return,attribute-defined-outside-init,bad-mcs-classmethod-argument,bad-option-value,c-extension-no-member,consider-merging-isinstance,consider-using-dict-comprehension,consider-using-enumerate,consider-using-in,consider-using-set-comprehension,consider-using-ternary,deprecated-method,design,file-ignored,fixme,global-statement,import-error,inconsistent-return-statements,invalid-unary-operand-type,len-as-condition,locally-disabled,locally-enabled,misplaced-comparison-constant,missing-docstring,multiple-imports,no-else-return,no-member,no-name-in-module,no-self-use,no-value-for-parameter,not-an-iterable,not-context-manager,pointless-except,protected-access,redefined-argument-from-local,signature-differs,similarities,simplifiable-if-expression,star-args,super-init-not-called,suppressed-message,too-many-function-args,trailing-comma-tuple,trailing-newlines,ungrouped-imports,unnecessary-pass,unsubscriptable-object,unused-argument,useless-object-inheritance,useless-return,useless-suppression,wrong-import-order,wrong-import-position,unneeded-not,unexpected-keyword-arg,redundant-keyword-arg,unspecified-encoding,logging-fstring-interpolation,consider-using-f-string,use-dict-literal - -# Maximum number of characters on a single line. -max-line-length=80 -# Regexp for a line that is allowed to be longer than the limit. -# This "ignore" regex is today composed of several independent parts: -# (1) Long import lines -# (2) URLs in comments or pydocs. Detecting URLs by regex is a hard problem and -# no amount of tweaking will make a perfect regex AFAICT. This one is a good -# compromise. -# (3) Constant string literals at the start of files don't need to be broken -# across lines. Allowing long paths and urls to be on a single -# line. Also requires that the string not be a triplequoted string. -ignore-long-lines=(?x) - (^\s*(import|from)\s - |^\s*(\#\ )??$ - |^[a-zA-Z_][a-zA-Z0-9_]*\s*=\s*("[^"]\S+"|'[^']\S+') - ) -# Maximum number of lines in a module -max-module-lines=99999 -# String used as indentation unit. We differ from PEP8's normal 4 spaces. -indent-string=' ' -# Do not warn about multiple statements on a single line for constructs like -# if test: stmt -single-line-if-stmt=y -[pylint.LOGGING] -# Add logging modules. -logging-modules=logging,absl.logging -[pylint.MISCELLANEOUS] -# Maximum line length for lambdas -#short-func-length=1 -# List of module members that should be marked as deprecated. -# All of the string functions are listed in 4.1.4 Deprecated string functions -# in the Python 2.4 docs. -#deprecated-members=string.atof,string.atoi,string.atol,string.capitalize,string.expandtabs,string.find,string.rfind,string.index,string.rindex,string.count,string.lower,string.split,string.rsplit,string.splitfields,string.join,string.joinfields,string.lstrip,string.rstrip,string.strip,string.swapcase,string.translate,string.upper,string.ljust,string.rjust,string.center,string.zfill,string.replace,sys.exitfunc,sys.maxint -# List of exceptions that do not need to be mentioned in the Raises section of -# a docstring. -#ignore-exceptions=AssertionError,NotImplementedError,StopIteration,TypeError -# Number of spaces of indent required when the last token on the preceding line -# is an open (, [, or {. -indent-after-paren=4 diff --git a/setup.py b/setup.py deleted file mode 100644 index a4ead8f48..000000000 --- a/setup.py +++ /dev/null @@ -1,4 +0,0 @@ -from setuptools import setup - -if __name__ == "__main__": - setup() From c8dc704ec42a77cf6ac84c83fbcada13c9b41a1c Mon Sep 17 00:00:00 2001 From: Frank Schneider Date: Wed, 15 Jan 2025 13:21:11 +0100 Subject: [PATCH 2/3] yapf requires toml --- .github/workflows/linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 89b5ef288..e49686358 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -50,7 +50,7 @@ jobs: - name: Install yapf run: | python -m pip install --upgrade pip - pip install yapf==0.32 + pip install yapf==0.32 toml - name: Run yapf run: | yapf . --diff --recursive From 50658bc1e23cb5f4076f6565c3629d0dc1a8e1fa Mon Sep 17 00:00:00 2001 From: Frank Schneider Date: Wed, 15 Jan 2025 13:55:34 +0100 Subject: [PATCH 3/3] Revert to auto-finding packages (includes `tests/`) --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 10fd4b730..3ff79bece 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,11 +54,13 @@ requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"] build-backend = "setuptools.build_meta" [tool.setuptools] -packages = ["algorithmic_efficiency"] py-modules = ["submission_runner"] include-package-data = true zip-safe = false +[tool.setuptools.packages] +find = {} # Scanning implicit namespaces is active by default + [tool.setuptools.dynamic] version = { attr = "algorithmic_efficiency.__version__" }