diff --git a/Makefile b/Makefile index 1466a4f..0df957c 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,3 @@ -.PHONY: lint -lint: - ruff format . - ruff check . - -.PHONY: check -check: - pyright - .PHONY: test test: pytest diff --git a/README.md b/README.md index 96a7696..2f5138f 100644 --- a/README.md +++ b/README.md @@ -32,20 +32,13 @@ Download or clone the repository and install the required packages (preferably i ```bash git clone https://github.com/carderne/gridfinder.git cd gridfinder -pip install -e '.[dev]' +rye sync ``` -### Linting +Useful commands: ```bash -make lint -``` - -### Typecheck -```bash -make check -``` - -### Testing -```bash -make test +rye fmt +rye lint +rye run check # type check +rye run test ``` diff --git a/pyproject.toml b/pyproject.toml index 221fc5b..d0dac7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,6 @@ -[build-system] -requires = [ - "setuptools>=65", - "wheel>=0.37.1", - "setuptools-scm[toml]>=7.0.5", -] -build-backend = "setuptools.build_meta" +[tool.rye.scripts] +check = "pyright" +test = "pytest" [project] name = "gridfinder" @@ -15,7 +11,7 @@ requires-python = ">=3.9" keywords = ["ntl", "electricity", "grid"] authors = [ - {name = "Chris Arderne", email="chris@rdrn.me"}, + {name = "Chris Arderne", email="chris@rdrn.me"}, ] dynamic = ["version"] @@ -49,8 +45,11 @@ dependencies = [ "Shapely ~= 2.0", ] -[project.optional-dependencies] -dev = [ +[tool.rye] +managed = true +dev-dependencies = [ + "pyright", + "pytest", "descartes ~= 1.1.0", "folium ~= 0.15", "matplotlib ~= 3.8", @@ -63,14 +62,15 @@ dev = [ homepage = "https://gridfinder.rdrn.me" repository = "https://github.com/carderne/gridfinder" -[tool.setuptools] -include-package-data = false +[build-system] +requires = ["pdm-backend"] +build-backend = "pdm.backend" -[tool.setuptools.packages.find] -include = ["gridfinder"] -exclude = ["docs*", "tests*"] +[tool.pdm.build] +includes = ["gridfinder/"] -[tool.setuptools_scm] +[tool.pdm.version] +source = "scm" [tool.ruff] target-version = "py39" @@ -96,6 +96,8 @@ select = [ known-first-party = ["gridfinder"] [tool.pyright] +venvPath = "." +venv = ".venv" include = ["gridfinder", "tests"] reportMissingImports = true reportMissingParameterType = true diff --git a/requirements-dev.lock b/requirements-dev.lock new file mode 100644 index 0000000..2baffe0 --- /dev/null +++ b/requirements-dev.lock @@ -0,0 +1,156 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false +# with-sources: false + +-e file:. +affine==2.4.0 + # via gridfinder + # via rasterio +attrs==23.2.0 + # via fiona + # via rasterio +branca==0.7.1 + # via folium +certifi==2024.2.2 + # via fiona + # via pyproj + # via rasterio + # via requests +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via click-plugins + # via cligj + # via fiona + # via gridfinder + # via rasterio +click-plugins==1.1.1 + # via fiona + # via rasterio +cligj==0.7.2 + # via fiona + # via rasterio +contourpy==1.2.1 + # via matplotlib +cycler==0.12.1 + # via matplotlib +descartes==1.1.0 +fiona==1.9.6 + # via geopandas + # via gridfinder +folium==0.16.0 +fonttools==4.51.0 + # via matplotlib +geopandas==0.14.3 + # via gridfinder +idna==3.7 + # via requests +imageio==2.34.0 + # via scikit-image +iniconfig==2.0.0 + # via pytest +jinja2==3.1.3 + # via branca + # via folium +kiwisolver==1.4.5 + # via matplotlib +lazy-loader==0.4 + # via scikit-image +llvmlite==0.42.0 + # via numba +markupsafe==2.1.5 + # via jinja2 +matplotlib==3.8.4 + # via descartes + # via seaborn +networkx==3.3 + # via scikit-image +nodeenv==1.8.0 + # via pyright +numba==0.59.1 + # via gridfinder +numpy==1.26.4 + # via contourpy + # via folium + # via gridfinder + # via imageio + # via matplotlib + # via numba + # via pandas + # via pyarrow + # via rasterio + # via scikit-image + # via scipy + # via seaborn + # via shapely + # via snuggs + # via tifffile +packaging==24.0 + # via geopandas + # via lazy-loader + # via matplotlib + # via pytest + # via scikit-image +pandas==2.2.2 + # via geopandas + # via gridfinder + # via seaborn +pillow==10.3.0 + # via gridfinder + # via imageio + # via matplotlib + # via scikit-image +pluggy==1.4.0 + # via pytest +pyarrow==15.0.2 + # via gridfinder +pyparsing==3.1.2 + # via matplotlib + # via snuggs +pyproj==3.6.1 + # via geopandas + # via gridfinder +pyright==1.1.358 +pytest==8.1.1 +python-dateutil==2.9.0.post0 + # via matplotlib + # via pandas +pytz==2024.1 + # via pandas +rasterio==1.3.10 + # via gridfinder +requests==2.31.0 + # via folium +rtree==1.2.0 + # via gridfinder +ruff==0.3.7 +scikit-image==0.23.1 + # via gridfinder +scipy==1.13.0 + # via gridfinder + # via scikit-image +seaborn==0.13.2 +setuptools==69.5.1 + # via nodeenv + # via rasterio +shapely==2.0.3 + # via geopandas + # via gridfinder +six==1.16.0 + # via fiona + # via python-dateutil +snuggs==1.4.7 + # via rasterio +tifffile==2024.2.12 + # via scikit-image +tzdata==2024.1 + # via pandas +urllib3==2.2.1 + # via requests +xyzservices==2024.4.0 + # via folium diff --git a/requirements.lock b/requirements.lock new file mode 100644 index 0000000..6b30b20 --- /dev/null +++ b/requirements.lock @@ -0,0 +1,104 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false +# with-sources: false + +-e file:. +affine==2.4.0 + # via gridfinder + # via rasterio +attrs==23.2.0 + # via fiona + # via rasterio +certifi==2024.2.2 + # via fiona + # via pyproj + # via rasterio +click==8.1.7 + # via click-plugins + # via cligj + # via fiona + # via gridfinder + # via rasterio +click-plugins==1.1.1 + # via fiona + # via rasterio +cligj==0.7.2 + # via fiona + # via rasterio +fiona==1.9.6 + # via geopandas + # via gridfinder +geopandas==0.14.3 + # via gridfinder +imageio==2.34.0 + # via scikit-image +lazy-loader==0.4 + # via scikit-image +llvmlite==0.42.0 + # via numba +networkx==3.3 + # via scikit-image +numba==0.59.1 + # via gridfinder +numpy==1.26.4 + # via gridfinder + # via imageio + # via numba + # via pandas + # via pyarrow + # via rasterio + # via scikit-image + # via scipy + # via shapely + # via snuggs + # via tifffile +packaging==24.0 + # via geopandas + # via lazy-loader + # via scikit-image +pandas==2.2.2 + # via geopandas + # via gridfinder +pillow==10.3.0 + # via gridfinder + # via imageio + # via scikit-image +pyarrow==15.0.2 + # via gridfinder +pyparsing==3.1.2 + # via snuggs +pyproj==3.6.1 + # via geopandas + # via gridfinder +python-dateutil==2.9.0.post0 + # via pandas +pytz==2024.1 + # via pandas +rasterio==1.3.10 + # via gridfinder +rtree==1.2.0 + # via gridfinder +scikit-image==0.23.1 + # via gridfinder +scipy==1.13.0 + # via gridfinder + # via scikit-image +setuptools==69.5.1 + # via rasterio +shapely==2.0.3 + # via geopandas + # via gridfinder +six==1.16.0 + # via fiona + # via python-dateutil +snuggs==1.4.7 + # via rasterio +tifffile==2024.2.12 + # via scikit-image +tzdata==2024.1 + # via pandas