From 5bb5632cacae02a134f4aa1d71c99165855d46b0 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 19 Aug 2024 13:12:46 +0200 Subject: [PATCH 01/25] first changes --- pycode/memilio-epidata/pyproject.toml | 41 +++++++++++++++++++ pycode/memilio-epidata/setup.py | 50 ++++-------------------- pycode/memilio-plot/setup.py | 2 - pycode/memilio-simulation/pyproject.toml | 20 ++++++++++ pycode/memilio-simulation/setup.py | 19 +-------- 5 files changed, 70 insertions(+), 62 deletions(-) create mode 100644 pycode/memilio-epidata/pyproject.toml create mode 100644 pycode/memilio-simulation/pyproject.toml diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml new file mode 100644 index 0000000000..43e601ec7d --- /dev/null +++ b/pycode/memilio-epidata/pyproject.toml @@ -0,0 +1,41 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "memilio-epidata" +version = "1.0.0" +readme = "README.rst" +authors = [{name = "DLR-SC", email = "daniel.abele@dlr.de"}] +maintainers = [{email = "martin.kuehn@dlr.de"}] +description = "Part of MEmilio project, reads epidemiological data from different official and unofficial sources." +requires-python = ">=3.8" +dynamic = ["dependencies"] + +[project.optional-dependencies] +dev = [ + # first support of python 3.11 4.6 + # 5.3.4 has conflicts with openpyxl + # 5.3.3 broken + "pyfakefs>=4.6,<5.3.3", + # coverage 7.0.0 can't find .whl files and breaks CI + "coverage>=7.0.1", + # pylint 2.16 creates problem with wrapt package version + "pylint>=2.13.0,<2.16", + "pylint_json2html==0.4.0", + ] + +[project.urls] +Repository = "https://github.com/SciCompMod/memilio" +Issues = "https://github.com/SciCompMod/memilio/issues" + +[project.scripts] +getcasedata = "memilio.epidata.getCaseData:main" +getpopuldata = "memilio.epidata.getPopulationData:main" +getjhdata = "memilio.epidata.getJHData:main" +getdividata = "memilio.epidata.getDIVIData:main" +getsimdata = "memilio.epidata.getSimulationData:main" +cleandata = "memilio.epidata.cleanData:main" +getcommutermobility = "memilio.epidata.getCommuterMobility:main" +getvaccinationdata = "memilio.epidata.getVaccinationData:main" +gethospitalizationdata = "memilio.epidata.getHospitalizationData:main" diff --git a/pycode/memilio-epidata/setup.py b/pycode/memilio-epidata/setup.py index de62cf1872..05dda4e4db 100644 --- a/pycode/memilio-epidata/setup.py +++ b/pycode/memilio-epidata/setup.py @@ -1,11 +1,8 @@ import os -import subprocess import sys from setuptools import Command, find_packages, setup -__version__ = '1.0.0' - class PylintCommand(Command): """ @@ -46,36 +43,16 @@ def run(self): # Python-magic needs DLLs for libmagic. They have to be installed only on windows. -if sys.platform == 'win32': - pymagic = 'python-magic-bin' -else: - pymagic = 'python-magic' +def get_pymagic(): + if sys.platform == 'win32': + return 'python-magic-bin' + else: + return 'python-magic' setup( - name='memilio-epidata', - version=__version__, - author='DLR-SC', - author_email='daniel.abele@dlr.de', - maintainer_email='martin.kuehn@dlr.de', - url='https://github.com/SciCompMod/memilio', - description='Part of MEmilio project, reads epidemiological data from different official and unofficial sources.', - entry_points={ - 'console_scripts': [ - 'getcasedata=memilio.epidata.getCaseData:main', - 'getpopuldata=memilio.epidata.getPopulationData:main', - 'getjhdata = memilio.epidata.getJHData:main', - 'getdividata = memilio.epidata.getDIVIData:main', - 'getsimdata = memilio.epidata.getSimulationData:main', - 'cleandata = memilio.epidata.cleanData:main', - 'getcommutermobility = memilio.epidata.getCommuterMobility:main', - 'getvaccinationdata = memilio.epidata.getVaccinationData:main', - 'gethospitalizationdata = memilio.epidata.getHospitalizationData:main' - ], - }, packages=find_packages(where=os.path.dirname(os.path.abspath(__file__))), - long_description='', test_suite='memilio.epidata_test', - install_requires=[ + dependencies=[ # pandas 2.0 is minimum for CoW 'pandas>=2.0.0', # FutureWarning of pandas that pyarrow will be required in a future release @@ -93,21 +70,8 @@ def run(self): 'twill==3.1', 'PyQt6', 'python-calamine', - pymagic + get_pymagic() ], - extras_require={ - 'dev': [ - # first support of python 3.11 4.6 - # 5.3.4 has conflicts with openpyxl - # 5.3.3 broken - 'pyfakefs>=4.6,<5.3.3', - # coverage 7.0.0 can't find .whl files and breaks CI - 'coverage>=7.0.1', - # pylint 2.16 creates problem with wrapt package version - 'pylint>=2.13.0,<2.16', - 'pylint_json2html==0.4.0', - ], - }, cmdclass={ 'pylint': PylintCommand }, diff --git a/pycode/memilio-plot/setup.py b/pycode/memilio-plot/setup.py index 30efd2c76f..2de76a7b1d 100644 --- a/pycode/memilio-plot/setup.py +++ b/pycode/memilio-plot/setup.py @@ -1,6 +1,4 @@ import os -import subprocess -import sys from setuptools import Command, find_packages, setup diff --git a/pycode/memilio-simulation/pyproject.toml b/pycode/memilio-simulation/pyproject.toml new file mode 100644 index 0000000000..b776f4bd1e --- /dev/null +++ b/pycode/memilio-simulation/pyproject.toml @@ -0,0 +1,20 @@ +[project] +name = "memilio-simulation" +version = "1.0.0" +readme = "README.rst" +authors = [{name = "DLR-SC", email = "daniel.abele@dlr.de"}] +maintainers = [{email = "martin.kuehn@dlr.de"}] +description = "Part of MEmilio project, python bindings to the C++ libraries that contain the models and simulations." + +[build-system] +requires = [ + "setuptools>=61.0", + "scikit-build>=0.13", + "cmake>=3.18", + "ninja" +] +build-backend = "setuptools.build_meta" + +[project.urls] +Repository = "https://github.com/SciCompMod/memilio" +Issues = "https://github.com/SciCompMod/memilio/issues" \ No newline at end of file diff --git a/pycode/memilio-simulation/setup.py b/pycode/memilio-simulation/setup.py index e534bee1d7..2281b533ac 100644 --- a/pycode/memilio-simulation/setup.py +++ b/pycode/memilio-simulation/setup.py @@ -1,25 +1,10 @@ import os -import subprocess -import sys -from setuptools import find_packages, setup +from setuptools import find_packages -try: - from skbuild import setup -except ImportError: - print('scikit-build is required to build from source.') - print('Installation: python -m pip install scikit-build') - subprocess.check_call( - [sys.executable, "-m", "pip", "install", "scikit-build"]) - from skbuild import setup - -__version__ = '1.0.0' +from skbuild import setup setup( - name='memilio-simulation', version=__version__, author='DLR-SC', - author_email='daniel.abele@dlr.de', maintainer_email='Martin.Kuehn@DLR.de', - url='https://github.com/SciCompMod/memilio', - description='Part of MEmilio project, python bindings to the C++ libraries that contain the models and simulations.', packages=find_packages(where=os.path.dirname(os.path.abspath(__file__))), setup_requires=['cmake'], # need shared libs so there is one shared log level From 11f244a5cd404a8b56c4fd8fe532140dd1c5ab5f Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Thu, 12 Sep 2024 10:01:57 +0200 Subject: [PATCH 02/25] os specific dependencies --- pycode/memilio-epidata/pyproject.toml | 22 +++++++++++++++++++- pycode/memilio-epidata/setup.py | 29 --------------------------- 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 43e601ec7d..749aac0ebe 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -10,7 +10,27 @@ authors = [{name = "DLR-SC", email = "daniel.abele@dlr.de"}] maintainers = [{email = "martin.kuehn@dlr.de"}] description = "Part of MEmilio project, reads epidemiological data from different official and unofficial sources." requires-python = ">=3.8" -dynamic = ["dependencies"] +dependencies = [ + # pandas 2.0 is minimum for CoW + "pandas>=2.0.0", + # FutureWarning of pandas that pyarrow will be required in a future release + "pyarrow", + "matplotlib", + "tables", + # smaller numpy versions cause a security issue, 1.25 breaks testing with pyfakefs + "numpy>=1.22,<1.25", + "openpyxl", + "xlrd", + "xlsxwriter", + "requests", + "pyxlsb", + "wget", + "twill==3.1", + "PyQt6", + "python-calamine", + "python-magic-bin; sys_platform == 'win32'", + "python-magic; sys_platform != 'win32'" +] [project.optional-dependencies] dev = [ diff --git a/pycode/memilio-epidata/setup.py b/pycode/memilio-epidata/setup.py index 05dda4e4db..d2768b815f 100644 --- a/pycode/memilio-epidata/setup.py +++ b/pycode/memilio-epidata/setup.py @@ -1,5 +1,4 @@ import os -import sys from setuptools import Command, find_packages, setup @@ -41,37 +40,9 @@ def run(self): lint.Run(options, reporter=self.reporter( report_file), do_exit=False) - -# Python-magic needs DLLs for libmagic. They have to be installed only on windows. -def get_pymagic(): - if sys.platform == 'win32': - return 'python-magic-bin' - else: - return 'python-magic' - setup( packages=find_packages(where=os.path.dirname(os.path.abspath(__file__))), test_suite='memilio.epidata_test', - dependencies=[ - # pandas 2.0 is minimum for CoW - 'pandas>=2.0.0', - # FutureWarning of pandas that pyarrow will be required in a future release - 'pyarrow', - 'matplotlib', - 'tables', - # smaller numpy versions cause a security issue, 1.25 breaks testing with pyfakefs - 'numpy>=1.22,<1.25', - 'openpyxl', - 'xlrd', - 'xlsxwriter', - 'requests', - 'pyxlsb', - 'wget', - 'twill==3.1', - 'PyQt6', - 'python-calamine', - get_pymagic() - ], cmdclass={ 'pylint': PylintCommand }, From 31c57c3c8171c32c5de01cfd7c33ee014318d446 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Thu, 12 Sep 2024 10:09:13 +0200 Subject: [PATCH 03/25] precommit --- pycode/memilio-epidata/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pycode/memilio-epidata/setup.py b/pycode/memilio-epidata/setup.py index d2768b815f..9335883110 100644 --- a/pycode/memilio-epidata/setup.py +++ b/pycode/memilio-epidata/setup.py @@ -40,6 +40,7 @@ def run(self): lint.Run(options, reporter=self.reporter( report_file), do_exit=False) + setup( packages=find_packages(where=os.path.dirname(os.path.abspath(__file__))), test_suite='memilio.epidata_test', From a42159f8463eb76ece507abe040408319c0d94b3 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 09:56:04 +0200 Subject: [PATCH 04/25] pylint to toml --- pycode/memilio-epidata/pyproject.toml | 6 ++++ pycode/memilio-epidata/setup.py | 50 --------------------------- 2 files changed, 6 insertions(+), 50 deletions(-) delete mode 100644 pycode/memilio-epidata/setup.py diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 749aac0ebe..665a3b85db 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -59,3 +59,9 @@ cleandata = "memilio.epidata.cleanData:main" getcommutermobility = "memilio.epidata.getCommuterMobility:main" getvaccinationdata = "memilio.epidata.getVaccinationData:main" gethospitalizationdata = "memilio.epidata.getHospitalizationData:main" + +[tool.pylint] +max-line-length = 120 +source-roots = "memilio/" +output-format = "colorized" +sugestion-mode = true \ No newline at end of file diff --git a/pycode/memilio-epidata/setup.py b/pycode/memilio-epidata/setup.py deleted file mode 100644 index 9335883110..0000000000 --- a/pycode/memilio-epidata/setup.py +++ /dev/null @@ -1,50 +0,0 @@ -import os - -from setuptools import Command, find_packages, setup - - -class PylintCommand(Command): - """ - Custom command to run pylint and get a report as html. - """ - description = "Runs pylint and outputs the report as html." - user_options = [] - - def initialize_options(self): - from pylint.reporters.json_reporter import JSONReporter - from pylint.reporters.text import ParseableTextReporter, TextReporter - from pylint_json2html import JsonExtendedReporter - - self.lint_modules = ["memilio/"] - self.out_format = "extendedjson" - - self.REPORTERS = { - "parseable": (ParseableTextReporter, "build_pylint/pylint_parseable.txt"), - "text": (TextReporter, "build_pylint/pylint.txt"), - "json": (JSONReporter, "build_pylint/pylint.json"), - "extendedjson": (JsonExtendedReporter, "build_pylint/pylint_extended.json") - } - - def finalize_options(self): - self.reporter, self.out_file = self.REPORTERS.get( - self.out_format) # , self.REPORTERS.get("parseable")) - - def run(self): - os.makedirs("build_pylint", exist_ok=True) - - # Run pylint - from pylint import lint - with open(self.out_file, "w", encoding="utf-8") as report_file: - options = ["--rcfile=../pylintrc", *self.lint_modules] - - lint.Run(options, reporter=self.reporter( - report_file), do_exit=False) - - -setup( - packages=find_packages(where=os.path.dirname(os.path.abspath(__file__))), - test_suite='memilio.epidata_test', - cmdclass={ - 'pylint': PylintCommand - }, -) From bcc4c74a682503f5c2dd72212343e10b8e6a9930 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 10:06:06 +0200 Subject: [PATCH 05/25] change build action --- .github/actions/build-py/action.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-py/action.yml b/.github/actions/build-py/action.yml index ed7e937538..5a21c42c8e 100644 --- a/.github/actions/build-py/action.yml +++ b/.github/actions/build-py/action.yml @@ -19,8 +19,11 @@ runs: shell: bash run: | cd pycode/memilio-${{ inputs.package }}/ - /opt/python/cp38-cp38/bin/python setup.py bdist_wheel - /opt/python/cp311-cp311/bin/python setup.py bdist_wheel + /opt/python/cp38-cp38/bin/python -m pip install build + /opt/python/cp38-cp38/bin/python -m build --wheel + + /opt/python/cp311-cp311/bin/python -m pip install build + /opt/python/cp311-cp311/bin/python -m build --wheel # Exclude memilio-generation, because its a pure python package, cmake is only used in the build process to retrieve data from cpp if [[ -f "CMakeLists.txt" ]] && [ "${{ inputs.package }}" != "generation" ]; then # includes native dependencies in the wheel From 19950e560c021566dc7fa19f0eea3f84f74bd8f4 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 10:23:02 +0200 Subject: [PATCH 06/25] explicitl name package to install --- pycode/memilio-epidata/pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 665a3b85db..afde19c223 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -2,6 +2,9 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" +[tool.setuptools.packages.find] +where = ["memilio"] + [project] name = "memilio-epidata" version = "1.0.0" From eb9c70490e8824c2881c6cf5b9c17d8946e529fc Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 10:44:17 +0200 Subject: [PATCH 07/25] test setuptools --- .github/actions/test-pylint/action.yml | 4 +--- pycode/memilio-epidata/pyproject.toml | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index 9f9f50bc2c..0139cb6930 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -27,9 +27,7 @@ runs: shell: bash run: | cd pycode/memilio-${{ inputs.package }} - mkdir -p build_pylint - python setup.py pylint - pylint-json2html -f jsonextended -o build_pylint/pylint.html < build_pylint/pylint_extended.json + pylint memilio/ - name: Upload Pylint Report uses: actions/upload-artifact@v4 with: diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index afde19c223..04e77412aa 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -2,8 +2,8 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" -[tool.setuptools.packages.find] -where = ["memilio"] +[tool.setuptools] +packages = ["memilio", "memilio.epidata", "memilio.epidata_test"] [project] name = "memilio-epidata" From a09116ca44a5b290af9606d8b3c0325a85d8be75 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 13:23:28 +0200 Subject: [PATCH 08/25] small changes to github actions --- .github/actions/build-py/action.yml | 4 ++-- .github/actions/test-pylint/action.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/build-py/action.yml b/.github/actions/build-py/action.yml index 5a21c42c8e..0def718c1b 100644 --- a/.github/actions/build-py/action.yml +++ b/.github/actions/build-py/action.yml @@ -20,10 +20,10 @@ runs: run: | cd pycode/memilio-${{ inputs.package }}/ /opt/python/cp38-cp38/bin/python -m pip install build - /opt/python/cp38-cp38/bin/python -m build --wheel + /opt/python/cp38-cp38/bin/python -m build --wheel --outdir dist /opt/python/cp311-cp311/bin/python -m pip install build - /opt/python/cp311-cp311/bin/python -m build --wheel + /opt/python/cp311-cp311/bin/python -m build --wheel --outdir dist # Exclude memilio-generation, because its a pure python package, cmake is only used in the build process to retrieve data from cpp if [[ -f "CMakeLists.txt" ]] && [ "${{ inputs.package }}" != "generation" ]; then # includes native dependencies in the wheel diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index 0139cb6930..a13f5f7a74 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -20,8 +20,8 @@ runs: - name: Install Python Wheels shell: bash run: | - for pkg in `ls pycode/wheelhouse/*cp311*.whl`; do python -m pip install $pkg; done # packages that contain native extensions are version specific - for pkg in `ls pycode/wheelhouse/*py3*.whl`; do python -m pip install $pkg; done # pure python packages are not version specific + for pkg in `ls wheelhouse/*cp311*.whl`; do python -m pip install $pkg; done # packages that contain native extensions are version specific + for pkg in `ls wheelhouse/*py3*.whl`; do python -m pip install $pkg; done # pure python packages are not version specific pip install -r pycode/memilio-${{ inputs.package }}/requirements-dev.txt - name: Run pylint shell: bash From b2ad7adc0e119cedff474836cf73f10911173481 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 13:29:57 +0200 Subject: [PATCH 09/25] test path --- .github/actions/test-pylint/action.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index a13f5f7a74..068c6ded2c 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -20,8 +20,9 @@ runs: - name: Install Python Wheels shell: bash run: | - for pkg in `ls wheelhouse/*cp311*.whl`; do python -m pip install $pkg; done # packages that contain native extensions are version specific - for pkg in `ls wheelhouse/*py3*.whl`; do python -m pip install $pkg; done # pure python packages are not version specific + find . -type d -print + for pkg in `ls pycode/wheelhouse/*cp311*.whl`; do python -m pip install $pkg; done # packages that contain native extensions are version specific + for pkg in `ls pycode/wheelhouse/*py3*.whl`; do python -m pip install $pkg; done # pure python packages are not version specific pip install -r pycode/memilio-${{ inputs.package }}/requirements-dev.txt - name: Run pylint shell: bash From 6515568ca7c2d1cf5ad1befdbeb17b39f00fcd7c Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 13:33:26 +0200 Subject: [PATCH 10/25] test path II --- .github/actions/test-pylint/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index 068c6ded2c..f6dc86f9b1 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -17,6 +17,7 @@ runs: uses: actions/download-artifact@v4 with: name: python-wheels-${{ inputs.package }} + path: pycode/wheelhouse - name: Install Python Wheels shell: bash run: | From b648bc6bd8d7866543df9e926e9f139133c051b2 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 13:39:32 +0200 Subject: [PATCH 11/25] pylint should not fail CI --- pycode/memilio-epidata/pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 04e77412aa..2c06a9ecb2 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -67,4 +67,5 @@ gethospitalizationdata = "memilio.epidata.getHospitalizationData:main" max-line-length = 120 source-roots = "memilio/" output-format = "colorized" -sugestion-mode = true \ No newline at end of file +sugestion-mode = true +exit-zero = true #Always return a non-error status code \ No newline at end of file From 25f32f51d2385b5088003ea5e826cba85f676809 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 13:54:12 +0200 Subject: [PATCH 12/25] pylint to json --- pycode/memilio-epidata/pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 2c06a9ecb2..5fcfc8aeca 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -68,4 +68,7 @@ max-line-length = 120 source-roots = "memilio/" output-format = "colorized" sugestion-mode = true -exit-zero = true #Always return a non-error status code \ No newline at end of file +exit-zero = true #Always return a non-error status code + +[tool.pylint.reports] +output-format = "json2" \ No newline at end of file From b8ee465e0dc8a60857e0a5f59835e9589560f3d8 Mon Sep 17 00:00:00 2001 From: Patrick Lenz Date: Mon, 16 Sep 2024 13:57:54 +0200 Subject: [PATCH 13/25] test path III --- .github/actions/test-pylint/action.yml | 1 - pycode/memilio-epidata/pyproject.toml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index f6dc86f9b1..5fe9936375 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -21,7 +21,6 @@ runs: - name: Install Python Wheels shell: bash run: | - find . -type d -print for pkg in `ls pycode/wheelhouse/*cp311*.whl`; do python -m pip install $pkg; done # packages that contain native extensions are version specific for pkg in `ls pycode/wheelhouse/*py3*.whl`; do python -m pip install $pkg; done # pure python packages are not version specific pip install -r pycode/memilio-${{ inputs.package }}/requirements-dev.txt diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 5fcfc8aeca..a3ab98c55c 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -71,4 +71,4 @@ sugestion-mode = true exit-zero = true #Always return a non-error status code [tool.pylint.reports] -output-format = "json2" \ No newline at end of file +output-format = "extendedjson" \ No newline at end of file From dfc39ccafbc9bfae52b2060f899b0c3191f90036 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 19 Sep 2024 12:15:45 +0200 Subject: [PATCH 14/25] output --- pycode/memilio-epidata/pyproject.toml | 3 +-- pycode/memilio-simulation/pyproject.toml | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index a3ab98c55c..f37828b43c 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -66,9 +66,8 @@ gethospitalizationdata = "memilio.epidata.getHospitalizationData:main" [tool.pylint] max-line-length = 120 source-roots = "memilio/" -output-format = "colorized" sugestion-mode = true exit-zero = true #Always return a non-error status code [tool.pylint.reports] -output-format = "extendedjson" \ No newline at end of file +output-format = "json" \ No newline at end of file diff --git a/pycode/memilio-simulation/pyproject.toml b/pycode/memilio-simulation/pyproject.toml index b776f4bd1e..96194f3f75 100644 --- a/pycode/memilio-simulation/pyproject.toml +++ b/pycode/memilio-simulation/pyproject.toml @@ -11,7 +11,8 @@ requires = [ "setuptools>=61.0", "scikit-build>=0.13", "cmake>=3.18", - "ninja" + "ninja", + "pandas>=2.0.0" ] build-backend = "setuptools.build_meta" From 5bfa99addf6e6c4a7b2d7ed841aaf16d0abdf522 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Mon, 23 Sep 2024 13:33:53 +0200 Subject: [PATCH 15/25] pylint in html --- .github/actions/test-pylint/action.yml | 4 ++-- pycode/memilio-plot/pyproject.toml | 0 pycode/memilio-simulation/pyproject.toml | 19 +++++++++++-------- pycode/memilio-simulation/setup.py | 6 ------ 4 files changed, 13 insertions(+), 16 deletions(-) create mode 100644 pycode/memilio-plot/pyproject.toml diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index 5fe9936375..08a77b761d 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -28,10 +28,10 @@ runs: shell: bash run: | cd pycode/memilio-${{ inputs.package }} - pylint memilio/ + pylint memilio/ > pylint.html - name: Upload Pylint Report uses: actions/upload-artifact@v4 with: name: pylint-report-${{ inputs.package }} - path: pycode/memilio-${{ inputs.package }}/build_pylint/pylint.html + path: pycode/memilio-${{ inputs.package }}/pylint.html retention-days: 7 diff --git a/pycode/memilio-plot/pyproject.toml b/pycode/memilio-plot/pyproject.toml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pycode/memilio-simulation/pyproject.toml b/pycode/memilio-simulation/pyproject.toml index 96194f3f75..b58272f5ff 100644 --- a/pycode/memilio-simulation/pyproject.toml +++ b/pycode/memilio-simulation/pyproject.toml @@ -1,3 +1,10 @@ +[build-system] +requires = ["setuptools>=61.0", "cmake>=3.18"] +build-backend = "setuptools.build_meta" + +[tool.setuptools] +packages = ["memilio", "memilio.epidata", "memilio.epidata_test"] + [project] name = "memilio-simulation" version = "1.0.0" @@ -5,16 +12,12 @@ readme = "README.rst" authors = [{name = "DLR-SC", email = "daniel.abele@dlr.de"}] maintainers = [{email = "martin.kuehn@dlr.de"}] description = "Part of MEmilio project, python bindings to the C++ libraries that contain the models and simulations." - -[build-system] -requires = [ - "setuptools>=61.0", - "scikit-build>=0.13", - "cmake>=3.18", - "ninja", +dependencies = [ "pandas>=2.0.0" ] -build-backend = "setuptools.build_meta" + +[project.optional-dependencies] +dev = ["numpy>=1.22,<1.25"] [project.urls] Repository = "https://github.com/SciCompMod/memilio" diff --git a/pycode/memilio-simulation/setup.py b/pycode/memilio-simulation/setup.py index 2281b533ac..3d6dc1803c 100644 --- a/pycode/memilio-simulation/setup.py +++ b/pycode/memilio-simulation/setup.py @@ -9,14 +9,8 @@ setup_requires=['cmake'], # need shared libs so there is one shared log level cmake_args=['-DMEMILIO_BUILD_SHARED_LIBS:BOOL=ON'], - install_requires=[ - # smaller pandas versions contain a bug that sometimes prevents reading - # some excel files (e.g. population or twitter data) - 'pandas>=2.0.0', - ], extras_require={ 'dev': [ - # smaller numpy versions cause a security issue, 1.25 breaks testing with pyfakefs 'numpy>=1.22,<1.25', ], }, From 824375f497de52b666aac7f5f0368bfc62613363 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Wed, 25 Sep 2024 11:54:57 +0200 Subject: [PATCH 16/25] readme --- pycode/memilio-epidata/README.rst | 6 +++--- pycode/memilio-epidata/pyproject.toml | 5 +---- pycode/memilio-simulation/pyproject.toml | 6 ++---- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/pycode/memilio-epidata/README.rst b/pycode/memilio-epidata/README.rst index be21a21a89..9511e02340 100644 --- a/pycode/memilio-epidata/README.rst +++ b/pycode/memilio-epidata/README.rst @@ -115,9 +115,9 @@ See Installation on how to install all these dependencies automatically. Run pylint with the commands .. code:: sh - - python setup.py pylint - pylint-json2html -f jsonextended -o build_pylint/pylint.html < build_pylint/pylint_extended.json + + pylint memilio/ > pylint.html + pylint-json2html -f jsonextended -o pylint.html < pylint_extended.json Pylint report for actual master: diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index f37828b43c..f78c70adaf 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -67,7 +67,4 @@ gethospitalizationdata = "memilio.epidata.getHospitalizationData:main" max-line-length = 120 source-roots = "memilio/" sugestion-mode = true -exit-zero = true #Always return a non-error status code - -[tool.pylint.reports] -output-format = "json" \ No newline at end of file +exit-zero = true #Always return a non-error status code \ No newline at end of file diff --git a/pycode/memilio-simulation/pyproject.toml b/pycode/memilio-simulation/pyproject.toml index b58272f5ff..e2c1c01ca1 100644 --- a/pycode/memilio-simulation/pyproject.toml +++ b/pycode/memilio-simulation/pyproject.toml @@ -12,12 +12,10 @@ readme = "README.rst" authors = [{name = "DLR-SC", email = "daniel.abele@dlr.de"}] maintainers = [{email = "martin.kuehn@dlr.de"}] description = "Part of MEmilio project, python bindings to the C++ libraries that contain the models and simulations." -dependencies = [ - "pandas>=2.0.0" -] [project.optional-dependencies] -dev = ["numpy>=1.22,<1.25"] +dev = ["numpy>=1.22,<1.25", + "pandas>=2.0.0"] [project.urls] Repository = "https://github.com/SciCompMod/memilio" From 0c7ecf5fb9bf03ebf9b958df1e554d6e8974db27 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 09:53:40 +0200 Subject: [PATCH 17/25] test build --- pycode/memilio-epidata/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index f78c70adaf..7f0701db4e 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [tool.setuptools] -packages = ["memilio", "memilio.epidata", "memilio.epidata_test"] +packages = [ "memilio.epidata", "memilio.epidata_test"] [project] name = "memilio-epidata" From 26b7c01f4ffc4375b1e9dfb1f3de26bd1d3b955c Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 11:23:48 +0200 Subject: [PATCH 18/25] custom pylint --- .../memilio-epidata/memilio/custom_pylint.py | 50 +++++++++++++++++++ pycode/memilio-epidata/pyproject.toml | 10 +--- 2 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 pycode/memilio-epidata/memilio/custom_pylint.py diff --git a/pycode/memilio-epidata/memilio/custom_pylint.py b/pycode/memilio-epidata/memilio/custom_pylint.py new file mode 100644 index 0000000000..7b3f7d92e7 --- /dev/null +++ b/pycode/memilio-epidata/memilio/custom_pylint.py @@ -0,0 +1,50 @@ +from setuptools import Command, Distribution +import os + +__version__ = '1.0.0' + +class PylintCommand(Command): + """ + Custom command to run pylint and get a report as html. + """ + description = "Runs pylint and outputs the report as html." + user_options = [] + + def initialize_options(self): + from pylint.reporters.json_reporter import JSONReporter + from pylint.reporters.text import ParseableTextReporter, TextReporter + from pylint_json2html import JsonExtendedReporter + + self.lint_modules = ["memilio/"] + self.out_format = "extendedjson" + + self.REPORTERS = { + "parseable": (ParseableTextReporter, "build_pylint/pylint_parseable.txt"), + "text": (TextReporter, "build_pylint/pylint.txt"), + "json": (JSONReporter, "build_pylint/pylint.json"), + "extendedjson": (JsonExtendedReporter, "build_pylint/pylint_extended.json") + } + + def finalize_options(self): + self.reporter, self.out_file = self.REPORTERS.get( + self.out_format) + + def run(self): + os.makedirs("build_pylint", exist_ok=True) + + # Run pylint + from pylint import lint + with open(self.out_file, "w", encoding="utf-8") as report_file: + options = ["--rcfile=../pylintrc", *self.lint_modules] + + lint.Run(options, reporter=self.reporter( + report_file), do_exit=False) + +def main(): + cmd = PylintCommand(dist=Distribution()) + cmd.initialize_options() + cmd.finalize_options() + cmd.run() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 7f0701db4e..290fa6ed1a 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -2,9 +2,6 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" -[tool.setuptools] -packages = [ "memilio.epidata", "memilio.epidata_test"] - [project] name = "memilio-epidata" version = "1.0.0" @@ -62,9 +59,4 @@ cleandata = "memilio.epidata.cleanData:main" getcommutermobility = "memilio.epidata.getCommuterMobility:main" getvaccinationdata = "memilio.epidata.getVaccinationData:main" gethospitalizationdata = "memilio.epidata.getHospitalizationData:main" - -[tool.pylint] -max-line-length = 120 -source-roots = "memilio/" -sugestion-mode = true -exit-zero = true #Always return a non-error status code \ No newline at end of file +pylint = "memilio.custom_pylint:main" \ No newline at end of file From e09bdf940bd9160aef68cc83a4c00ab7c18955fc Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 12:12:42 +0200 Subject: [PATCH 19/25] custom pylint --- .github/actions/test-pylint/action.yml | 3 ++- pycode/memilio-epidata/memilio/custom_pylint.py | 5 ++++- pycode/memilio-epidata/pyproject.toml | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index 08a77b761d..4ec3ac5fcc 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -28,7 +28,8 @@ runs: shell: bash run: | cd pycode/memilio-${{ inputs.package }} - pylint memilio/ > pylint.html + pylint + pylint-json2html -f jsonextended -o build_pylint/pylint.html < build_pylint/pylint_extended.json - name: Upload Pylint Report uses: actions/upload-artifact@v4 with: diff --git a/pycode/memilio-epidata/memilio/custom_pylint.py b/pycode/memilio-epidata/memilio/custom_pylint.py index 7b3f7d92e7..0b2ff300d1 100644 --- a/pycode/memilio-epidata/memilio/custom_pylint.py +++ b/pycode/memilio-epidata/memilio/custom_pylint.py @@ -3,6 +3,7 @@ __version__ = '1.0.0' + class PylintCommand(Command): """ Custom command to run pylint and get a report as html. @@ -40,11 +41,13 @@ def run(self): lint.Run(options, reporter=self.reporter( report_file), do_exit=False) + def main(): cmd = PylintCommand(dist=Distribution()) cmd.initialize_options() cmd.finalize_options() cmd.run() + if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 290fa6ed1a..3b4e37e009 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -2,6 +2,9 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" +[tool.setuptools] +packages = [ "memilio"] + [project] name = "memilio-epidata" version = "1.0.0" From f1410cd492936b004ddbd22aa3e88828000a0a0c Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 13:05:48 +0200 Subject: [PATCH 20/25] test build --- pycode/memilio-epidata/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 3b4e37e009..64981c05d9 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [tool.setuptools] -packages = [ "memilio"] +packages = [ "memilio", "memilio.epidata", "memilio.epidata_test"] [project] name = "memilio-epidata" From d6301d70b7285335b96e114efc116c6675f6329a Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 14:04:46 +0200 Subject: [PATCH 21/25] fix pylint --- .github/actions/test-pylint/action.yml | 6 +++--- pycode/memilio-epidata/README.rst | 2 +- pycode/memilio-epidata/pyproject.toml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index 4ec3ac5fcc..a2ebd26dde 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -27,12 +27,12 @@ runs: - name: Run pylint shell: bash run: | - cd pycode/memilio-${{ inputs.package }} - pylint + cd pycode/memilio-${{ inputs.package }}/memilio + python custom_pylint.py pylint-json2html -f jsonextended -o build_pylint/pylint.html < build_pylint/pylint_extended.json - name: Upload Pylint Report uses: actions/upload-artifact@v4 with: name: pylint-report-${{ inputs.package }} - path: pycode/memilio-${{ inputs.package }}/pylint.html + path: pycode/memilio-${{ inputs.package }}/memilio/pylint.html retention-days: 7 diff --git a/pycode/memilio-epidata/README.rst b/pycode/memilio-epidata/README.rst index 9511e02340..8e643ba510 100644 --- a/pycode/memilio-epidata/README.rst +++ b/pycode/memilio-epidata/README.rst @@ -116,7 +116,7 @@ Run pylint with the commands .. code:: sh - pylint memilio/ > pylint.html + memiliopylint pylint-json2html -f jsonextended -o pylint.html < pylint_extended.json Pylint report for actual master: diff --git a/pycode/memilio-epidata/pyproject.toml b/pycode/memilio-epidata/pyproject.toml index 64981c05d9..f104a55886 100644 --- a/pycode/memilio-epidata/pyproject.toml +++ b/pycode/memilio-epidata/pyproject.toml @@ -62,4 +62,4 @@ cleandata = "memilio.epidata.cleanData:main" getcommutermobility = "memilio.epidata.getCommuterMobility:main" getvaccinationdata = "memilio.epidata.getVaccinationData:main" gethospitalizationdata = "memilio.epidata.getHospitalizationData:main" -pylint = "memilio.custom_pylint:main" \ No newline at end of file +memiliopylint = "memilio.custom_pylint:main" \ No newline at end of file From dc0374c08d0ad6f619306bb99304f11871c446a5 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 14:12:08 +0200 Subject: [PATCH 22/25] structuring pylint --- .github/actions/test-pylint/action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index a2ebd26dde..ac3ed6c54e 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -27,12 +27,12 @@ runs: - name: Run pylint shell: bash run: | - cd pycode/memilio-${{ inputs.package }}/memilio - python custom_pylint.py + cd pycode/memilio-${{ inputs.package }} + python memilio/custom_pylint.py pylint-json2html -f jsonextended -o build_pylint/pylint.html < build_pylint/pylint_extended.json - name: Upload Pylint Report uses: actions/upload-artifact@v4 with: name: pylint-report-${{ inputs.package }} - path: pycode/memilio-${{ inputs.package }}/memilio/pylint.html + path: pycode/memilio-${{ inputs.package }}/pylint.html retention-days: 7 From 71f3fa2213b3f72541ee768efb3f52ccc0584680 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 14:21:07 +0200 Subject: [PATCH 23/25] correct path --- .github/actions/test-pylint/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/test-pylint/action.yml b/.github/actions/test-pylint/action.yml index ac3ed6c54e..5d59e09a2a 100644 --- a/.github/actions/test-pylint/action.yml +++ b/.github/actions/test-pylint/action.yml @@ -34,5 +34,5 @@ runs: uses: actions/upload-artifact@v4 with: name: pylint-report-${{ inputs.package }} - path: pycode/memilio-${{ inputs.package }}/pylint.html + path: pycode/memilio-${{ inputs.package }}/build_pylint/pylint.html retention-days: 7 From f1a2a34e8708bbdcd86c1ecf29804cf55ee9d836 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Thu, 26 Sep 2024 14:47:24 +0200 Subject: [PATCH 24/25] [ci skip] reset readme path --- pycode/memilio-epidata/README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycode/memilio-epidata/README.rst b/pycode/memilio-epidata/README.rst index 8e643ba510..dd120ec6ee 100644 --- a/pycode/memilio-epidata/README.rst +++ b/pycode/memilio-epidata/README.rst @@ -117,7 +117,7 @@ Run pylint with the commands .. code:: sh memiliopylint - pylint-json2html -f jsonextended -o pylint.html < pylint_extended.json + pylint-json2html -f jsonextended -o build_pylint/pylint.html < build_pylint/pylint_extended.json Pylint report for actual master: From db676f31b9932023d651d8a1077c49f47788bb62 Mon Sep 17 00:00:00 2001 From: patricklnz Date: Mon, 30 Sep 2024 12:36:28 +0200 Subject: [PATCH 25/25] toml setup for memilio plot --- pycode/memilio-plot/memilio/custom_pylint.py | 53 +++++++++++ pycode/memilio-plot/pyproject.toml | 55 ++++++++++++ pycode/memilio-plot/setup.py | 94 -------------------- 3 files changed, 108 insertions(+), 94 deletions(-) create mode 100644 pycode/memilio-plot/memilio/custom_pylint.py delete mode 100644 pycode/memilio-plot/setup.py diff --git a/pycode/memilio-plot/memilio/custom_pylint.py b/pycode/memilio-plot/memilio/custom_pylint.py new file mode 100644 index 0000000000..0b2ff300d1 --- /dev/null +++ b/pycode/memilio-plot/memilio/custom_pylint.py @@ -0,0 +1,53 @@ +from setuptools import Command, Distribution +import os + +__version__ = '1.0.0' + + +class PylintCommand(Command): + """ + Custom command to run pylint and get a report as html. + """ + description = "Runs pylint and outputs the report as html." + user_options = [] + + def initialize_options(self): + from pylint.reporters.json_reporter import JSONReporter + from pylint.reporters.text import ParseableTextReporter, TextReporter + from pylint_json2html import JsonExtendedReporter + + self.lint_modules = ["memilio/"] + self.out_format = "extendedjson" + + self.REPORTERS = { + "parseable": (ParseableTextReporter, "build_pylint/pylint_parseable.txt"), + "text": (TextReporter, "build_pylint/pylint.txt"), + "json": (JSONReporter, "build_pylint/pylint.json"), + "extendedjson": (JsonExtendedReporter, "build_pylint/pylint_extended.json") + } + + def finalize_options(self): + self.reporter, self.out_file = self.REPORTERS.get( + self.out_format) + + def run(self): + os.makedirs("build_pylint", exist_ok=True) + + # Run pylint + from pylint import lint + with open(self.out_file, "w", encoding="utf-8") as report_file: + options = ["--rcfile=../pylintrc", *self.lint_modules] + + lint.Run(options, reporter=self.reporter( + report_file), do_exit=False) + + +def main(): + cmd = PylintCommand(dist=Distribution()) + cmd.initialize_options() + cmd.finalize_options() + cmd.run() + + +if __name__ == "__main__": + main() diff --git a/pycode/memilio-plot/pyproject.toml b/pycode/memilio-plot/pyproject.toml index e69de29bb2..b5f055e448 100644 --- a/pycode/memilio-plot/pyproject.toml +++ b/pycode/memilio-plot/pyproject.toml @@ -0,0 +1,55 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[tool.setuptools] +packages = [ "memilio", "memilio.plot", "memilio.plot_test"] + +[project] +name = "memilio-plot" +version = "1.0.0" +readme = "README.md" +authors = [{name = "DLR-SC", email = "martin.kuehn@dlr.de"}] +maintainers = [{email = "martin.kuehn@dlr.de"}] +description = "Part of MEmilio project, plots data to maps or visualizes simulation curves." +requires-python = ">=3.8" +dependencies = [ + # smaller pandas versions contain a bug that sometimes prevents reading + # some excel files (e.g. population or twitter data) + "pandas>=1.2.2", + "matplotlib", + "tables", + # smaller numpy versions cause a security issue, 1.25 breaks testing with pyfakefs + "numpy>=1.22,<1.25", + "openpyxl", + "xlrd", + "requests", + "pyxlsb", + "wget", + "folium", + "mapclassify", + "geopandas", + "h5py", + "imageio", + "datetime" +] + +[project.optional-dependencies] +dev = [ + # first support of python 3.11 4.6 + # 5.3.4 has conflicts with openpyxl + # 5.3.3 broken + "pyfakefs>=4.6,<5.3.3", + # coverage 7.0.0 can't find .whl files and breaks CI + "coverage>=7.0.1", + # pylint 2.16 creates problem with wrapt package version + "pylint>=2.13.0,<2.16", + "pylint_json2html==0.4.0", + ] + +[project.urls] +Repository = "https://github.com/SciCompMod/memilio" +Issues = "https://github.com/SciCompMod/memilio/issues" + +[project.scripts] +memiliopylint = "memilio.custom_pylint:main" \ No newline at end of file diff --git a/pycode/memilio-plot/setup.py b/pycode/memilio-plot/setup.py deleted file mode 100644 index 2de76a7b1d..0000000000 --- a/pycode/memilio-plot/setup.py +++ /dev/null @@ -1,94 +0,0 @@ -import os - -from setuptools import Command, find_packages, setup - -__version__ = '1.0.0' - - -class PylintCommand(Command): - """ - Custom command to run pylint and get a report as html. - """ - description = "Runs pylint and outputs the report as html." - user_options = [] - - def initialize_options(self): - from pylint.reporters.json_reporter import JSONReporter - from pylint.reporters.text import ParseableTextReporter, TextReporter - from pylint_json2html import JsonExtendedReporter - - self.lint_modules = ["memilio/"] - self.out_format = "extendedjson" - - self.REPORTERS = { - "parseable": (ParseableTextReporter, "build_pylint/pylint_parseable.txt"), - "text": (TextReporter, "build_pylint/pylint.txt"), - "json": (JSONReporter, "build_pylint/pylint.json"), - "extendedjson": (JsonExtendedReporter, "build_pylint/pylint_extended.json") - } - - def finalize_options(self): - self.reporter, self.out_file = self.REPORTERS.get( - self.out_format) # , self.REPORTERS.get("parseable")) - - def run(self): - os.makedirs("build_pylint", exist_ok=True) - - # Run pylint - from pylint import lint - with open(self.out_file, "w", encoding="utf-8") as report_file: - options = ["--rcfile=../pylintrc", *self.lint_modules] - - lint.Run(options, reporter=self.reporter( - report_file), do_exit=False) - - -setup( - name='memilio-plot', - version=__version__, - author='DLR-SC', - author_email='martin.kuehn@dlr.de', - maintainer_email='martin.kuehn@dlr.de', - url='https://github.com/SciCompMod/memilio', - description='Part of MEmilio project, plots data to maps or visualizes simulation curves.', - entry_points={ - 'console_scripts': [ - ], - }, - packages=find_packages(where=os.path.dirname(os.path.abspath(__file__))), - long_description='', - test_suite='memilio.plot_test', - install_requires=[ - # smaller pandas versions contain a bug that sometimes prevents reading - # some excel files (e.g. population or twitter data) - 'pandas>=1.2.2', - 'matplotlib', - # smaller numpy versions cause a security issue, 1.25 breaks testing with pyfakefs - 'numpy>=1.22,<1.25', - 'openpyxl', - 'xlrd', - 'requests', - 'pyxlsb', - 'wget', - 'folium', - 'matplotlib', - 'mapclassify', - 'geopandas', - 'h5py', - 'imageio', - 'datetime' - ], - extras_require={ - 'dev': [ - # first support of python 3.11 - 'pyfakefs>=4.6', - 'coverage>=7.0.1', - # pylint 2.16 creates problem with wrapt package version - 'pylint>=2.13.0,<2.16', - 'pylint_json2html==0.4.0', - ], - }, - cmdclass={ - 'pylint': PylintCommand - }, -)