From d3685ae4e2e7c8b5c7b80d70ffa0207345a93210 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 19 Jun 2026 17:30:17 +0200 Subject: [PATCH 01/18] Remove obsolete function --- src/gregor/disaggregate.py | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index 95dbc1e..9229a7a 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -151,44 +151,6 @@ def get_belongs_to_matrix( return xr.DataArray(arr, coords=raster.coords, dims=raster.dims) -def get_uniform_proxy( - polygons: gpd.GeoSeries, raster_resolution: tuple[int, int] -) -> xr.Dataset: - r""" - Get a uniform proxy which sums to one for each region. - - Parameters - ---------- - polygons : gpd.GeoSeries - Polygons to compute the proxy for. - raster_resolution : tuple[int, int] - Resolution of the desired raster proxy. - - Returns - ------- - xr.Dataset - Uniform proxy which sums to 1 in each region. - """ - # get spatial extent of spatial_units - x_min, y_min, x_max, y_max = polygons.total_bounds - - # define coords - x_coords = np.linspace(x_min, x_max, raster_resolution[0]) - y_coords = np.linspace(y_min, y_max, raster_resolution[1]) - - # create raster Dataset - uniform_proxy = xr.Dataset( - data_vars={}, coords={"x": ("x", x_coords), "y": ("y", y_coords)} - ) - - # TODO Set transform and crs - # uniform_proxy = uniform_proxy.rio.set_spatial_dims('x', 'y') - # uniform_proxy = uniform_proxy.rio.write_transform() - uniform_proxy = uniform_proxy.rio.set_crs(polygons.crs) - - return uniform_proxy - - def disaggregate_polygon_to_point( data: gpd.GeoDataFrame, column: str, From adcd03dbc17d8e0387b046e8846edc1fda760d46 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 19 Jun 2026 17:31:20 +0200 Subject: [PATCH 02/18] Drop reference to dataset --- docs/examples/disaggregate-to-point.py | 2 +- docs/examples/disaggregate-to-raster.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/examples/disaggregate-to-point.py b/docs/examples/disaggregate-to-point.py index b6ce92e..d2ca863 100644 --- a/docs/examples/disaggregate-to-point.py +++ b/docs/examples/disaggregate-to-point.py @@ -58,7 +58,7 @@ plt.show() # %% [markdown] -# Now, we disaggregate the demand data using the population data as a proxy. The result is a raster dataset with the resolution of the proxy. +# Now, we disaggregate the demand data using the population data as a proxy. The result is a raster with the resolution of the proxy. # %% demand_point = gregor.disaggregate.disaggregate_polygon_to_point(demand_geo, "FC_OTH_HH_E", cities, "pop_max") diff --git a/docs/examples/disaggregate-to-raster.py b/docs/examples/disaggregate-to-raster.py index a04fc24..d43b38f 100644 --- a/docs/examples/disaggregate-to-raster.py +++ b/docs/examples/disaggregate-to-raster.py @@ -64,7 +64,7 @@ plt.show() # %% [markdown] -# Now, we disaggregate the demand data using the population data as a proxy. The result is a raster dataset with the resolution of the proxy. +# Now, we disaggregate the demand data using the population data as a proxy. The result is a raster with the resolution of the proxy. # %% demand_raster = gregor.disaggregate.disaggregate_polygon_to_raster(demand_geo, column="FC_OTH_HH_E", proxy=population) From 459225d4f8831a2d94d2fa16966891760bc1d7f1 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 19 Jun 2026 17:36:12 +0200 Subject: [PATCH 03/18] Convert print statements to logger.info --- src/gregor/disaggregate.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index 9229a7a..73cbd18 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -1,3 +1,5 @@ +import logging + import dask.array as da import geopandas as gpd import numpy as np @@ -7,6 +9,8 @@ from gregor.aggregate import aggregate_raster_to_polygon +logger = logging.getLogger(__name__) + def disaggregate_polygon_to_raster( data: gpd.GeoDataFrame, @@ -62,7 +66,7 @@ def disaggregate_polygon_to_raster( # make sure that crs of data and proxy match if _proxy.rio.crs != _data.crs: - print( + logger.info( f"CRS of `data` ({_data.crs}) does not match CRS of `proxy` ({_proxy.rio.crs}). Reprojecting CRS of `data` to match `proxy`'s CRS." ) _data = _data.to_crs(_proxy.rio.crs) @@ -111,7 +115,7 @@ def lookup_func(blk): ) if to_data_crs and _proxy.rio.crs != data.crs: - print(f"Reprojecting results to `data`'s CRS {data.crs}.") + logger.info(f"Reprojecting results to `data`'s CRS {data.crs}.") raster = raster.rio.reproject(data.crs) return raster @@ -179,7 +183,7 @@ def disaggregate_polygon_to_point( # compare crs. If not the same, project data to proxy's crs if not proxy.crs == _data.crs: - print( + logger.info( f"CRS of `proxy` ({proxy.crs}) does not match CRS of `data` ({_data.crs}). Reprojecting CRS of `data` to `proxy`'s CRS." ) _data = _data.to_crs(proxy.crs) @@ -217,7 +221,7 @@ def disaggregate_polygon_to_point( points = points[["geometry", "disaggregated"]] if to_data_crs: - print(f"Reprojecting results to `data`'s CRS {_data.crs}.") + logger.info(f"Reprojecting results to `data`'s CRS {_data.crs}.") points = points.to_crs(_data.crs) return points From 1cfd8039cd92f3cc2c316a36109ec5bc67e7d0ce Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 19 Jun 2026 17:40:00 +0200 Subject: [PATCH 04/18] Fix deprecation warning --- src/gregor/disaggregate.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index 73cbd18..e43d650 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -42,8 +42,10 @@ def disaggregate_polygon_to_raster( _proxy = proxy elif isinstance(proxy, xr.Dataset): if len(proxy.data_vars) == 1: - raise DeprecationWarning( - "Passing DataSet is deprecated and will be disallowed in the future. Use DataArray instead." + warnings.warn( + "Passing DataSet is deprecated and will be disallowed in the future. Use DataArray instead.", + DeprecationWarning, + stacklevel=2, ) var_name = next(iter(proxy.data_vars)) _proxy = proxy[var_name] From b1dd3557b94d4dc0afcb895e8d00bb2a2b47fa30 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 15:41:34 +0000 Subject: [PATCH 05/18] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/gregor/disaggregate.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index e43d650..25216cf 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -9,6 +9,7 @@ from gregor.aggregate import aggregate_raster_to_polygon + logger = logging.getLogger(__name__) From 46ede039a86106d5b6a23ee8206397400df8234d Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Wed, 24 Jun 2026 13:10:33 +0200 Subject: [PATCH 06/18] Remove double pytest statement --- .github/workflows/ci-tests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index edfa83c..f3a1175 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -33,5 +33,4 @@ jobs: - name: Test with pytest run: | # not run benchmark test - pytest pytest -vv -m "not benchmark" \ No newline at end of file From b44359081adcbcf84ba2a5d260b8c085270e0c5d Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Wed, 24 Jun 2026 13:39:22 +0200 Subject: [PATCH 07/18] Fix xarray deprecation warning on method --- src/gregor/disaggregate.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index 25216cf..a7dd60e 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -93,7 +93,8 @@ def disaggregate_polygon_to_raster( id_nodata = len(value_lookup) - 1 # index of nodata in value_lookup belongs_to = get_belongs_to_matrix(_proxy, _data.geometry, nodata=id_nodata) if is_chunked_dask_array: - belongs_to = belongs_to.chunk(_proxy.chunks) + chunks = {dim: chunk_size for dim, chunk_size in zip(_proxy.dims, _proxy.chunks)} + belongs_to = belongs_to.chunk(chunks) belongs_to = belongs_to.data.astype("int32") if is_chunked_dask_array: From 687529a16b6669bdd032265ab7ed2052570b3f57 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Wed, 24 Jun 2026 13:42:26 +0200 Subject: [PATCH 08/18] Import missing package --- src/gregor/disaggregate.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index a7dd60e..5edaea6 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -6,6 +6,7 @@ import pandas as pd import xarray as xr from rasterio.features import rasterize +import warnings from gregor.aggregate import aggregate_raster_to_polygon From f7bdc77bd0013603ff9ed2c9120c57f1bf774550 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 24 Jun 2026 11:42:38 +0000 Subject: [PATCH 09/18] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/gregor/disaggregate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index 5edaea6..ea39241 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -1,4 +1,5 @@ import logging +import warnings import dask.array as da import geopandas as gpd @@ -6,7 +7,6 @@ import pandas as pd import xarray as xr from rasterio.features import rasterize -import warnings from gregor.aggregate import aggregate_raster_to_polygon From 90ba00d9470b7d56cdd7089803615d06f0577933 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Wed, 24 Jun 2026 13:47:06 +0200 Subject: [PATCH 10/18] Disable fail_fast for pre-commit --- .pre-commit-config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1eb102d..2e3e6a9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,5 @@ exclude: 'docs|node_modules|migrations|.git|.tox' default_stages: [commit] -fail_fast: true repos: - repo: https://github.com/pre-commit/pre-commit-hooks From 4f9d1517947970d421d195e22be7c6bef063905a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 24 Jun 2026 11:48:58 +0000 Subject: [PATCH 11/18] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/gregor/disaggregate.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gregor/disaggregate.py b/src/gregor/disaggregate.py index 9a73349..10cfb8c 100644 --- a/src/gregor/disaggregate.py +++ b/src/gregor/disaggregate.py @@ -94,7 +94,9 @@ def disaggregate_polygon_to_raster( id_nodata = len(value_lookup) - 1 # index of nodata in value_lookup belongs_to = get_belongs_to_matrix(_proxy, _data.geometry, nodata=id_nodata) if is_chunked_dask_array: - chunks = {dim: chunk_size for dim, chunk_size in zip(_proxy.dims, _proxy.chunks)} + chunks = { + dim: chunk_size for dim, chunk_size in zip(_proxy.dims, _proxy.chunks) + } belongs_to = belongs_to.chunk(chunks) belongs_to = belongs_to.data.astype("int32") From 8892e898a5644827d938c36ac89b36fcf3e03f94 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:47:24 +0200 Subject: [PATCH 12/18] Drop gregor.raster.clip from API docs --- docs/api.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/api.md b/docs/api.md index 335d15e..f25b668 100644 --- a/docs/api.md +++ b/docs/api.md @@ -5,7 +5,3 @@ ::: gregor.disaggregate options: show_source: false - -::: gregor.raster - options: - show_source: false \ No newline at end of file From 70f028ffc656e91e848cc2ca7ab703dc0a1c6764 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:50:44 +0200 Subject: [PATCH 13/18] List changes since last release --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a02af4..41fface 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ Changelog v0.0.3.dev ------------------------------------------------------------ +- Reduce computational load of disaggretation by re-organising code and allowing parallelisation with dask [#18](https://github.com/modelblocks-org/gregor/pull/18). +- Add a more computationally expensive performance test, which disaggregates rooftop PV capacities in Europe, to be run locally [#18](https://github.com/modelblocks-org/gregor/pull/18). +- Add CI testing [#19](https://github.com/modelblocks-org/gregor/pull/19). +- Add more unit tests [#17](https://github.com/modelblocks-org/gregor/pull/17). +- Fix failing aggregation when polygon index is unnamed [#14](https://github.com/modelblocks-org/gregor/pull/14). + v0.0.2 (2024-11-21) ------------------------------------------------------------ From 4561255d4cf30896e387ddb43a9a11431d5468bd Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:54:50 +0200 Subject: [PATCH 14/18] Set version for upcoming release --- CHANGELOG.md | 2 +- CITATION.cff | 2 +- pyproject.toml | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41fface..830510a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ Changelog ========= -v0.0.3.dev +v0.1.0 ------------------------------------------------------------ - Reduce computational load of disaggretation by re-organising code and allowing parallelisation with dask [#18](https://github.com/modelblocks-org/gregor/pull/18). - Add a more computationally expensive performance test, which disaggregates rooftop PV capacities in Europe, to be run locally [#18](https://github.com/modelblocks-org/gregor/pull/18). diff --git a/CITATION.cff b/CITATION.cff index 5ea2d69..6b338ba 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -9,7 +9,7 @@ authors: title: "Gregor" type: software license: MIT -version: 0.0.3.dev +version: 0.1.0 doi: date-released: url: "https://github.com/jnnr/gregor" \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index b727b12..f06377a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,16 +5,16 @@ authors = [ ] description = "A library for spatial aggregation and disaggregation" readme = "README.md" -version = "0.0.3.dev" +version = "0.1.0" dynamic = ["dependencies", "optional-dependencies"] # complete classifier list: # http://pypi.org/classifiers/ classifiers = [ - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', ] keywords = [ From dfc3098288d68fdc7f58ffc41185d63caa6ad4ad Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:57:30 +0200 Subject: [PATCH 15/18] Adapt links to new organisation --- CHANGELOG.md | 1 + CITATION.cff | 2 +- README.md | 4 ++-- pyproject.toml | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 830510a..5845c18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ v0.1.0 - Add CI testing [#19](https://github.com/modelblocks-org/gregor/pull/19). - Add more unit tests [#17](https://github.com/modelblocks-org/gregor/pull/17). - Fix failing aggregation when polygon index is unnamed [#14](https://github.com/modelblocks-org/gregor/pull/14). +- Move to the [modelblocks-org](https://github.com/modelblocks-org). v0.0.2 (2024-11-21) diff --git a/CITATION.cff b/CITATION.cff index 6b338ba..c29b490 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -12,4 +12,4 @@ license: MIT version: 0.1.0 doi: date-released: -url: "https://github.com/jnnr/gregor" \ No newline at end of file +url: "https://github.com/modelblocks-org/gregor" \ No newline at end of file diff --git a/README.md b/README.md index 20aa3cf..526a75f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Gregor is a tool that makes your life easier when aggregating and dis-aggregating spatial data. It has been developed in the context of preparing data for energy system modeling, but can be applied in any situation involving spatial data. - + ## Installation @@ -20,4 +20,4 @@ Please have a look at the examples presented in the [documentation](https://greg ## Development -If you encounter a bug, consider opening an issue on [GitHub](https://github.com/jnnr/gregor/issues). +If you encounter a bug, consider opening an issue on [GitHub](https://github.com/modelblocks-org/gregor/issues). diff --git a/pyproject.toml b/pyproject.toml index f06377a..dbf1109 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,9 +24,9 @@ keywords = [ requires-python = ">=3.8, <4" [project.urls] -changelog = "https://github.com/jnnr/gregor/blob/main/CHANGELOG.md" +changelog = "https://github.com/modelblocks-org/gregor/blob/main/CHANGELOG.md" homepage = "https://gregor.readthedocs.io/en/latest/" -repository = "https://github.com/jnnr/gregor.git" +repository = "https://github.com/modelblocks-org/gregor.git" [build-system] build-backend = "setuptools.build_meta" From efb5c0ebceffd07f567c215087bbd4f07953b1ea Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 26 Jun 2026 12:15:00 +0200 Subject: [PATCH 16/18] Adapt supported and tested python versions --- .github/workflows/ci-tests.yaml | 2 +- pyproject.toml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index f3a1175..43f4d44 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -16,7 +16,7 @@ jobs: max-parallel: 1 matrix: os: [ubuntu-latest] - python-version: ['3.13'] + python-version: ['3.12', '3.13', '3.14'] name: pytest (Python ${{ matrix.python-version }}) (OS ${{ matrix.os }}) # Configure tests diff --git a/pyproject.toml b/pyproject.toml index dbf1109..d3e43c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,10 +11,9 @@ dynamic = ["dependencies", "optional-dependencies"] # complete classifier list: # http://pypi.org/classifiers/ classifiers = [ - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', ] keywords = [ From f14b5328a00d7b4ec59cb7650a155fda15cb35b6 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 26 Jun 2026 12:18:38 +0200 Subject: [PATCH 17/18] Use python 3.13 for releases --- .github/workflows/publish-pypi.yaml | 4 ++-- .github/workflows/publish-test-pypi.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-pypi.yaml b/.github/workflows/publish-pypi.yaml index 8a3e138..01b4e39 100644 --- a/.github/workflows/publish-pypi.yaml +++ b/.github/workflows/publish-pypi.yaml @@ -11,10 +11,10 @@ jobs: environment: pypi-publish steps: - uses: actions/checkout@main - - name: Set up Python 3.10 + - name: Set up Python 3.13 uses: actions/setup-python@v3 with: - python-version: "3.10" + python-version: "3.13" - name: Install pypa/build run: >- diff --git a/.github/workflows/publish-test-pypi.yaml b/.github/workflows/publish-test-pypi.yaml index ddce920..ddd9aaf 100644 --- a/.github/workflows/publish-test-pypi.yaml +++ b/.github/workflows/publish-test-pypi.yaml @@ -13,10 +13,10 @@ jobs: environment: pypi-publish steps: - uses: actions/checkout@main - - name: Set up Python 3.10 + - name: Set up Python 3.13 uses: actions/setup-python@v3 with: - python-version: "3.10" + python-version: "3.13" - name: Install pypa/build run: >- From 718135662e70e2210fc9d5a037b9985806d8b909 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 26 Jun 2026 12:20:57 +0200 Subject: [PATCH 18/18] Add end-of-file-fixer to pre-commit hooks --- .pre-commit-config.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 237f8ad..9cbbbbf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,6 +7,8 @@ repos: hooks: - id: trailing-whitespace files: (^|/)a/.+\.(py|html|sh|css|js)$ + - id: end-of-file-fixer + files: (^|/)a/.+\.(py|html|sh|css|js)$ - id: check-added-large-files args: ["--maxkb=2000"]