diff --git a/.github/workflows/fv3_translate_tests.yaml b/.github/workflows/fv3_translate_tests.yaml index 9d030d72..d2da9488 100644 --- a/.github/workflows/fv3_translate_tests.yaml +++ b/.github/workflows/fv3_translate_tests.yaml @@ -6,5 +6,5 @@ jobs: fv3_translate_tests: uses: NOAA-GFDL/pyFV3/.github/workflows/translate.yaml@develop with: - component_trigger: true + component_trigger: true component_name: NDSL diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index ba5863f3..0407bce2 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -11,18 +11,18 @@ jobs: lint: runs-on: ubuntu-latest steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: 'recursive' + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: 'recursive' - - name: Setup Python 3.11 - uses: actions/setup-python@v5 - with: - python-version: '3.11' + - name: Setup Python 3.11 + uses: actions/setup-python@v5 + with: + python-version: '3.11' - - name: Install pre-commit - run: pip install pre-commit + - name: Install pre-commit + run: pip install pre-commit - - name: Run lint via pre-commit - run: pre-commit run --all-files + - name: Run lint via pre-commit + run: pre-commit run --all-files diff --git a/.github/workflows/pace_tests.yaml b/.github/workflows/pace_tests.yaml index 3837beec..63f9f0e7 100644 --- a/.github/workflows/pace_tests.yaml +++ b/.github/workflows/pace_tests.yaml @@ -6,5 +6,5 @@ jobs: pace_main_tests: uses: NOAA-GFDL/pace/.github/workflows/main_unit_tests.yaml@develop with: - component_trigger: true + component_trigger: true component_name: NDSL diff --git a/.github/workflows/shield_tests.yaml b/.github/workflows/shield_tests.yaml index fcc86f20..c27fd232 100644 --- a/.github/workflows/shield_tests.yaml +++ b/.github/workflows/shield_tests.yaml @@ -6,5 +6,5 @@ jobs: shield_translate_tests: uses: NOAA-GFDL/pySHiELD/.github/workflows/translate.yaml@develop with: - component_trigger: true + component_trigger: true component_name: NDSL diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index 8857f1b2..d2095258 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -14,21 +14,21 @@ jobs: image: ghcr.io/noaa-gfdl/miniforge:mpich steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: 'recursive' + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: 'recursive' - - name: Install Python packages - run: pip3 install .[test] + - name: Install Python packages + run: pip3 install .[test] - - name: Run serial-cpu tests - run: coverage run --rcfile=setup.cfg -m pytest tests + - name: Run serial-cpu tests + run: coverage run --rcfile=pyproject.toml -m pytest tests - - name: Run parallel-cpu tests - run: mpiexec -np 6 --oversubscribe coverage run --rcfile=setup.cfg -m mpi4py -m pytest tests/mpi + - name: Run parallel-cpu tests + run: mpiexec -np 6 --oversubscribe coverage run --rcfile=pyproject.toml -m mpi4py -m pytest tests/mpi - - name: Output code coverage - run: | - coverage combine - coverage report + - name: Output code coverage + run: | + coverage combine + coverage report diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0ad9802d..6ecc7023 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,50 +2,59 @@ default_language_version: python: python3 repos: -- repo: https://github.com/psf/black + - repo: https://github.com/psf/black rev: 25.1.0 hooks: - - id: black - additional_dependencies: ["click==8.0.4"] + - id: black + additional_dependencies: ["click==8.0.4"] -- repo: https://github.com/pre-commit/mirrors-isort + - repo: https://github.com/pre-commit/mirrors-isort rev: v5.10.1 hooks: - - id: isort - args: ["--profile", "black"] + - id: isort + args: ["--profile", "black"] -- repo: https://github.com/pre-commit/mirrors-mypy + - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.16.1 hooks: - - id: mypy - name: mypy-ndsl - args: [--config-file, setup.cfg] - additional_dependencies: [types-PyYAML] - files: ndsl - exclude: | - (?x)^( - ndsl/ndsl/gt4py_utils.py | - )$ -- repo: https://github.com/pre-commit/pre-commit-hooks + - id: mypy + name: mypy-ndsl + args: ["--config-file", "pyproject.toml"] + additional_dependencies: [types-PyYAML] + files: ndsl + exclude: | + (?x)^( + ndsl/ndsl/gt4py_utils.py | + )$ + + - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: - - id: check-toml - - id: check-yaml - - id: end-of-file-fixer - - id: trailing-whitespace -- repo: https://github.com/pycqa/flake8 + - id: check-toml + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + + - repo: https://github.com/pycqa/flake8 rev: 7.3.0 hooks: - - id: flake8 - name: flake8 - language_version: python3 - args: [--config, setup.cfg] - exclude: | - (?x)^( - .*/__init__.py | - )$ - - id: flake8 - name: flake8 __init__.py files - files: "__init__.py" - # ignore unused import error in __init__.py files - args: ["--ignore=F401,E203", --config, setup.cfg] + - id: flake8 + name: flake8 + language_version: python3 + additional_dependencies: [Flake8-pyproject] + exclude: | + (?x)^( + .*/__init__.py | + )$ + - id: flake8 + additional_dependencies: [Flake8-pyproject] + name: flake8 __init__.py files + files: "__init__.py" + + - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks + rev: v2.15.0 + hooks: + - id: pretty-format-toml + args: [--autofix, --indent, "2"] + - id: pretty-format-yaml + args: [--autofix, --preserve-quotes, --indent, "2", --offset, "2"] diff --git a/README.md b/README.md index 78a2f937..e55b012e 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ cd NDSL/ python -m venv .venv/ source ./venv/bin/activate -# Choose pip install -e .[develop] if you'd like to contribute +# Choose pip install -e .[dev] if you'd like to contribute pip install .[demos] ``` @@ -57,11 +57,11 @@ See [quickstart](#quickstart) above on how to pull and setup a virtual environme - `ndsl[test]`: extra dependencies to run tests (based on `pytest`) - `ndsl[demos]`: extra dependencies to run [NDSL examples](./examples/NDSL/) - `ndsl[docs]`: extra dependencies to build the docs -- `ndsl[develop]`: installs tools for development, docs, and tests. +- `ndsl[dev]`: installs tools for development, docs, and tests. ### Running tests -Tests are available via `pytest` (don't forget to install the `test` or `develop` extras). +Tests are available via `pytest` (don't forget to install the `test` or `dev` extras). To run serial tests on CPU (GPU tests also run if `cupy` is available) @@ -79,7 +79,7 @@ mpirun -np 6 pytest tests/mpi ### Code/contribution guidelines -1. Code quality is enforced by `pre-commit` (which is part of the "develop" extra). Run `pre-commit install` to install the pre-commit hooks locally or make sure to run `pre-commit run -a` before submitting a pull request. +1. Code quality is enforced by `pre-commit` (which is part of the "dev" extra). Run `pre-commit install` to install the pre-commit hooks locally or make sure to run `pre-commit run -a` before submitting a pull request. 2. While we don't strictly enforce type hints, we add them on new code. 3. Pull requests have to merged as "squash merge" to keep the `git` history clean. @@ -87,7 +87,7 @@ mpirun -np 6 pytest tests/mpi We are using [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/), which allows us to write the docs in Markdown files and optionally serve it as a static site. -To view the documentation, install NDSL with the `docs` or `develop` extras. Then run the following: +To view the documentation, install NDSL with the `docs` or `dev` extras. Then run the following: ```bash mkdocs serve diff --git a/mkdocs.yml b/mkdocs.yml index 09916f21..e931b342 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,12 +11,12 @@ nav: - Home: index.md - User documentation: user/index.md - Porting: - - General Concepts: porting/index.md - - Testing Infrastructure: porting/translate/index.md + - General Concepts: porting/index.md + - Testing Infrastructure: porting/translate/index.md - Under the hood: - - Technical Documentation: dev/index.md - - DaCe: dev/dace.md - - GT4Py: dev/gt4py.md + - Technical Documentation: dev/index.md + - DaCe: dev/dace.md + - GT4Py: dev/gt4py.md markdown_extensions: @@ -39,9 +39,9 @@ markdown_extensions: - pymdownx.superfences: custom_fences: # support for mermaid graphs - - name: mermaid - class: mermaid - format: python/name:pymdownx.superfences.fence_code_format + - name: mermaid + class: mermaid + format: python/name:pymdownx.superfences.fence_code_format # image inclusion plugins: diff --git a/ndsl/restart/restart_properties.yml b/ndsl/restart/restart_properties.yml index f19c2ce4..48ab0f9c 100644 --- a/ndsl/restart/restart_properties.yml +++ b/ndsl/restart/restart_properties.yml @@ -1,568 +1,568 @@ accumulated_x_courant_number: dims: - - z - - y - - x + - z + - y + - x restart_name: cx units: '' accumulated_x_mass_flux: dims: - - z - - y - - x_interface + - z + - y + - x_interface restart_name: mfx units: unknown accumulated_y_courant_number: dims: - - z - - y - - x + - z + - y + - x restart_name: cy units: unknown accumulated_y_mass_flux: dims: - - z - - y_interface - - x + - z + - y_interface + - x restart_name: mfy units: unknown air_temperature: dims: - - z - - y - - x + - z + - y + - x restart_name: T units: degK air_temperature_after_physics: dims: - - z - - y - - x + - z + - y + - x restart_name: gt0 units: K air_temperature_at_2m: dims: - - y - - x + - y + - x restart_name: t2m units: degK area_of_grid_cell: dims: - - y - - x + - y + - x restart_name: area units: m^2 atmosphere_hybrid_a_coordinate: dims: - - z_interface + - z_interface restart_name: ak units: Pa atmosphere_hybrid_b_coordinate: dims: - - z_interface + - z_interface restart_name: bk units: '' canopy_water: dims: - - y - - x + - y + - x restart_name: canopy units: unknown clear_sky_downward_longwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: dnfx0 restart_name: sfcflw units: W/m^2 clear_sky_downward_shortwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: dnfx0 restart_name: sfcfsw units: W/m^2 clear_sky_upward_longwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: upfx0 restart_name: sfcflw units: W/m^2 clear_sky_upward_longwave_flux_at_top_of_atmosphere: dims: - - y - - x + - y + - x fortran_subname: upfx0 restart_name: topflw units: W/m^2 clear_sky_upward_shortwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: upfx0 restart_name: sfcfsw units: W/m^2 clear_sky_upward_shortwave_flux_at_top_of_atmosphere: dims: - - y - - x + - y + - x fortran_subname: upfx0 restart_name: topfsw units: W/m^2 convective_cloud_bottom_pressure: dims: - - y - - x + - y + - x restart_name: cvb units: Pa convective_cloud_fraction: dims: - - y - - x + - y + - x restart_name: cv units: '' convective_cloud_top_pressure: dims: - - y - - x + - y + - x restart_name: cvt units: Pa deep_soil_temperature: dims: - - y - - x + - y + - x restart_name: tg3 units: degK dissipation_estimate_from_heat_source: dims: - - z - - y - - x + - z + - y + - x restart_name: diss_est units: unknown eastward_wind: dims: - - z - - y - - x + - z + - y + - x restart_name: ua units: m/s eastward_wind_after_physics: dims: - - z - - y - - x + - z + - y + - x restart_name: gu0 units: m/s eastward_wind_at_surface: dims: - - y - - x + - y + - x restart_name: u_srf units: m/s fh_parameter: description: used in PBL scheme dims: - - y - - x + - y + - x restart_name: ffhh units: unknown fm_at_10m: description: Ratio of sigma level 1 wind and 10m wind dims: - - y - - x + - y + - x restart_name: f10m units: unknown fm_parameter: description: used in PBL scheme dims: - - y - - x + - y + - x restart_name: ffmm units: unknown fractional_coverage_with_strong_cosz_dependency: dims: - - y - - x + - y + - x restart_name: facsf units: '' fractional_coverage_with_weak_cosz_dependency: dims: - - y - - x + - y + - x restart_name: facwf units: '' friction_velocity: dims: - - y - - x + - y + - x restart_name: uustar units: m/s ice_fraction_over_open_water: dims: - - y - - x + - y + - x restart_name: fice units: '' interface_pressure: dims: - - y - - z_interface - - x + - y + - z_interface + - x restart_name: pe units: Pa interface_pressure_raised_to_power_of_kappa: dims: - - z_interface - - y - - x + - z_interface + - y + - x restart_name: pk units: unknown land_sea_mask: description: sea=0, land=1, sea-ice=2 dims: - - y - - x + - y + - x restart_name: slmsk units: '' latent_heat_flux: dims: - - y - - x + - y + - x restart_name: dqsfci units: W/m^2 latitude: dims: - - y - - x + - y + - x restart_name: xlat units: radians layer_mean_pressure_raised_to_power_of_kappa: dims: - - z - - y - - x + - z + - y + - x restart_name: pkz units: unknown liquid_soil_moisture: dims: - - z_soil - - y - - x + - z_soil + - y + - x restart_name: slc units: unknown logarithm_of_interface_pressure: dims: - - y - - z_interface - - x + - y + - z_interface + - x restart_name: peln units: ln(Pa) longitude: dims: - - y - - x + - y + - x restart_name: xlon units: radians maximum_fractional_coverage_of_green_vegetation: dims: - - y - - x + - y + - x restart_name: shdmax units: '' maximum_snow_albedo_in_fraction: dims: - - y - - x + - y + - x restart_name: snoalb units: '' mean_cos_zenith_angle: dims: - - y - - x + - y + - x restart_name: coszen units: '' mean_near_infrared_albedo_with_strong_cosz_dependency: dims: - - y - - x + - y + - x restart_name: alnsf units: '' mean_near_infrared_albedo_with_weak_cosz_dependency: dims: - - y - - x + - y + - x restart_name: alnwf units: '' mean_visible_albedo_with_strong_cosz_dependency: dims: - - y - - x + - y + - x restart_name: alvsf units: '' mean_visible_albedo_with_weak_cosz_dependency: dims: - - y - - x + - y + - x restart_name: alvwf units: '' minimum_fractional_coverage_of_green_vegetation: dims: - - y - - x + - y + - x restart_name: shdmin units: '' northward_wind: dims: - - z - - y - - x + - z + - y + - x restart_name: va units: m/s northward_wind_after_physics: dims: - - z - - y - - x + - z + - y + - x restart_name: gv0 units: m/s northward_wind_at_surface: dims: - - y - - x + - y + - x restart_name: v_srf units: m/s pressure_thickness_of_atmospheric_layer: dims: - - z - - y - - x + - z + - y + - x restart_name: delp units: Pa sea_ice_thickness: dims: - - y - - x + - y + - x restart_name: hice units: unknown sensible_heat_flux: dims: - - y - - x + - y + - x restart_name: dtsfci units: W/m^2 snow_cover_in_fraction: dims: - - y - - x + - y + - x restart_name: sncovr units: '' snow_depth_water_equivalent: dims: - - y - - x + - y + - x restart_name: snwdph units: mm snow_rain_flag: description: snow/rain flag for precipitation dims: - - y - - x + - y + - x restart_name: srflag units: '' soil_temperature: dims: - - z_soil - - y - - x + - z_soil + - y + - x restart_name: stc units: degK soil_type: dims: - - y - - x + - y + - x restart_name: stype units: '' specific_humidity_at_2m: dims: - - y - - x + - y + - x restart_name: q2m units: kg/kg surface_geopotential: dims: - - y - - x + - y + - x restart_name: phis units: m^2 s^-2 surface_pressure: dims: - - y - - x + - y + - x restart_name: ps units: Pa surface_roughness: dims: - - y - - x + - y + - x restart_name: zorl units: cm surface_slope_type: description: used in land surface model dims: - - y - - x + - y + - x restart_name: slope units: '' surface_temperature: description: surface skin temperature dims: - - y - - x + - y + - x restart_name: tsea units: degK surface_temperature_over_ice_fraction: dims: - - y - - x + - y + - x restart_name: tisfc units: degK total_condensate_mixing_ratio: dims: - - z - - y - - x + - z + - y + - x restart_name: q_con units: kg/kg total_precipitation: dims: - - y - - x + - y + - x restart_name: tprcp units: m total_sky_downward_longwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: dnfxc restart_name: sfcflw units: W/m^2 total_sky_downward_shortwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: dnfxc restart_name: sfcfsw units: W/m^2 total_sky_downward_shortwave_flux_at_top_of_atmosphere: dims: - - y - - x + - y + - x fortran_subname: dnfxc restart_name: topfsw units: W/m^2 total_sky_upward_longwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: upfxc restart_name: sfcflw units: W/m^2 total_sky_upward_longwave_flux_at_top_of_atmosphere: dims: - - y - - x + - y + - x fortran_subname: upfxc restart_name: topflw units: W/m^2 total_sky_upward_shortwave_flux_at_surface: dims: - - y - - x + - y + - x fortran_subname: upfxc restart_name: sfcfsw units: W/m^2 total_sky_upward_shortwave_flux_at_top_of_atmosphere: dims: - - y - - x + - y + - x fortran_subname: upfxc restart_name: topfsw units: W/m^2 total_soil_moisture: dims: - - z_soil - - y - - x + - z_soil + - y + - x restart_name: smc units: unknown vegetation_fraction: dims: - - y - - x + - y + - x restart_name: vfrac units: '' vegetation_type: dims: - - y - - x + - y + - x restart_name: vtype units: '' vertical_pressure_velocity: dims: - - z - - y - - x + - z + - y + - x restart_name: omga units: Pa/s vertical_thickness_of_atmospheric_layer: dims: - - z - - y - - x + - z + - y + - x restart_name: DZ units: m vertical_wind: dims: - - z - - y - - x + - z + - y + - x restart_name: W units: m/s water_equivalent_of_accumulated_snow_depth: description: weasd in Fortran code, over land and sea ice only dims: - - y - - x + - y + - x restart_name: sheleg units: kg/m^2 x_wind: dims: - - z - - y_interface - - x + - z + - y_interface + - x restart_name: u units: m/s x_wind_on_c_grid: dims: - - z - - y - - x_interface + - z + - y + - x_interface restart_name: uc units: m/s y_wind: dims: - - z - - y - - x_interface + - z + - y + - x_interface restart_name: v units: m/s y_wind_on_c_grid: dims: - - z - - y_interface - - x + - z + - y_interface + - x restart_name: vc units: m/s diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..155ef409 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,69 @@ +[build-system] +build-backend = "setuptools.build_meta" +requires = ["setuptools >= 77.0.3"] + +[project] +authors = [{name = "NOAA/NASA"}] +classifiers = [ + "Development Status :: 2 - Pre-Alpha", + "Intended Audience :: Science/Research", + "Topic :: Scientific/Engineering :: Atmospheric Science", + "Private :: Do Not Upload", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11" +] +dynamic = ["dependencies"] +license = "Apache-2.0" +license-files = ["LICENSE.txt", "ndsl/viz/fv3/README.md"] +name = "ndsl" +readme = "README.md" +requires-python = ">=3.11,<3.12" +version = "2025.05.00" + +[project.optional-dependencies] +demos = ["ipython", "ipykernel"] +dev = ["ndsl[docs]", "ndsl[demos]", "ndsl[test]", "pre-commit", "flake8-pyproject"] +docs = ["mkdocs-material"] +extras = ["ndsl[docs]", "ndsl[demos]", "ndsl[test]", "ndsl[dev]"] +test = ["pytest", "pytest-subtests", "coverage"] + +[project.scripts] +ndsl-serialbox_to_netcdf = "ndsl.stencils.testing.serialbox_to_netcdf:entry_point" + +[project.urls] +Repository = "https://github.com/NOAA-GFDL/NDSL" + +[tool.aliases] + +[tool.coverage.run] +branch = true +omit = ["tests/*", "*gt_cache*", ".dacecache*", "external/*", "__init__.py"] +parallel = true +source_pkgs = ["ndsl"] + +[tool.flake8] +exclude = ["docs"] +extend-ignore = ["E203", "E302", "E704", "F841", "W293", "E501", "W503", "F401"] +max-line-length = 88 + +[tool.isort] +default_section = "THIRDPARTY" +known_third_party = "f90nml,pytest,xarray,numpy,mpi4py,gt4py,dace" +lines_after_imports = 2 +profile = "black" +sections = "FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER" + +[tool.mypy] +explicit_package_bases = "true" +follow_imports = "normal" +ignore_missing_imports = "true" +namespace_packages = "true" +strict_optional = "false" +warn_unreachable = "true" + +[tool.setuptools] +include-package-data = true + +[tool.setuptools.packages.find] +include = ["ndsl", "ndsl.*"] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 5b289889..00000000 --- a/setup.cfg +++ /dev/null @@ -1,37 +0,0 @@ -[flake8] -exclude = docs -ignore = E203,E302,E704,F841,W293,E501,W503 -max-line-length = 88 - -[aliases] - -[tool:isort] -profile = black -lines_after_imports = 2 -default_section = THIRDPARTY -sections = FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER -known_third_party = f90nml,pytest,xarray,numpy,mpi4py,gt4py,dace - -[mypy] -ignore_missing_imports = True -follow_imports = normal -namespace_packages = True -strict_optional = False -warn_unreachable = True -explicit_package_bases = True - -[coverage:run] -parallel = true -branch = true -omit = - tests/* - *gt_cache* - .dacecache* - external/* - __init__.py -source_pkgs = ndsl - -[metadata] -# Include the license file in the generated wheel, see -# https://wheel.readthedocs.io/en/stable/user_guide.html#including-license-files-in-the-generated-wheel-file -license_files = LICENSE.txt diff --git a/setup.py b/setup.py index 453c4e07..afa96925 100644 --- a/setup.py +++ b/setup.py @@ -1,30 +1,14 @@ -import os from pathlib import Path -from typing import List -from setuptools import find_namespace_packages, setup +from setuptools import setup def local_pkg(name: str, relative_path: str) -> str: """Returns an absolute path to a local package.""" - path = f"{name} @ file://{Path(os.path.abspath(__file__)).parent / relative_path}" - return path + return f"{name} @ file://{Path(__file__).absolute().parent / relative_path}" -docs_requirements = ["mkdocs-material"] -demos_requirements = ["ipython", "ipykernel"] -test_requirements = ["pytest", "pytest-subtests", "coverage"] - -develop_requirements = test_requirements + docs_requirements + ["pre-commit"] - -extras_requires = { - "demos": demos_requirements, - "develop": develop_requirements, - "docs": docs_requirements, - "test": test_requirements, -} - -requirements: List[str] = [ +requirements: list[str] = [ local_pkg("gt4py", "external/gt4py"), local_pkg("dace", "external/dace"), "mpi4py==3.1.5", @@ -42,29 +26,4 @@ def local_pkg(name: str, relative_path: str) -> str: ] -setup( - author="NOAA/NASA", - python_requires=">=3.11", - classifiers=[ - "Development Status :: 2 - Pre-Alpha", - "Intended Audience :: Developers", - "License :: OSI Approved :: Apache Software License", - "Natural Language :: English", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.11", - ], - install_requires=requirements, - extras_require=extras_requires, - name="ndsl", - license="Apache 2.0 license", - packages=find_namespace_packages(include=["ndsl", "ndsl.*"]), - include_package_data=True, - url="https://github.com/NOAA-GFDL/NDSL", - version="2025.05.00", - zip_safe=False, - entry_points={ - "console_scripts": [ - "ndsl-serialbox_to_netcdf = ndsl.stencils.testing.serialbox_to_netcdf:entry_point", - ] - }, -) +setup(install_requires=requirements)