From 9d67609fb3c30527f2465c22234fb55908c2411f Mon Sep 17 00:00:00 2001 From: Aaron Anderson Date: Sun, 24 Aug 2025 14:02:57 -0500 Subject: [PATCH 1/5] Update S3 bucket name to 'unidata-nexrad-level2' across nexradawsinterface.py --- nexradaws/nexradawsinterface.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/nexradaws/nexradawsinterface.py b/nexradaws/nexradawsinterface.py index 7242880..83cee75 100644 --- a/nexradaws/nexradawsinterface.py +++ b/nexradaws/nexradawsinterface.py @@ -32,7 +32,7 @@ def __init__(self): self._scan_re = re.compile(r'^\d{4}/\d{2}/\d{2}/..../(?:(?=(.*.gz))|(?=(.*V0*.gz))|(?=(.*V0*)))') self._s3conn = boto3.resource('s3') self._s3conn.meta.client.meta.events.register('choose-signer.s3.*', disable_signing) - self._bucket = self._s3conn.Bucket('noaa-nexrad-level2') + self._bucket = self._s3conn.Bucket('unidata-nexrad-level2') def get_avail_years(self): """ @@ -46,7 +46,7 @@ def get_avail_years(self): """ years = [] - resp = self._bucket.meta.client.list_objects(Bucket='noaa-nexrad-level2',Delimiter='/') + resp = self._bucket.meta.client.list_objects(Bucket='unidata-nexrad-level2',Delimiter='/') for each in resp.get('CommonPrefixes', []): match = self._year_re.match(each.get('Prefix')) @@ -70,7 +70,7 @@ def get_avail_months(self, year): """ months = [] prefix = self._build_prefix(year=year, month=None, day=None, station_id=None) - resp = self._bucket.meta.client.list_objects(Bucket='noaa-nexrad-level2', + resp = self._bucket.meta.client.list_objects(Bucket='unidata-nexrad-level2', Prefix=prefix, Delimiter='/') for each in resp.get('CommonPrefixes', []): @@ -96,7 +96,7 @@ def get_avail_days(self, year, month): """ days = [] prefix = self._build_prefix(year=year, month=month, day=None, station_id=None) - resp = self._bucket.meta.client.list_objects(Bucket='noaa-nexrad-level2', + resp = self._bucket.meta.client.list_objects(Bucket='unidata-nexrad-level2', Prefix=prefix, Delimiter='/') for each in resp.get('CommonPrefixes', []): @@ -124,7 +124,7 @@ def get_avail_radars(self, year, month, day): """ radars = [] prefix = self._build_prefix(year=year, month=month, day=day, station_id=None) - resp = self._bucket.meta.client.list_objects(Bucket='noaa-nexrad-level2', + resp = self._bucket.meta.client.list_objects(Bucket='unidata-nexrad-level2', Prefix=prefix, Delimiter='/') for each in resp.get('CommonPrefixes', []): @@ -155,7 +155,7 @@ def get_avail_scans(self, year, month, day, radar): """ scans = [] prefix = self._build_prefix(year=year, month=month, day=day, station_id=radar) - resp = self._bucket.meta.client.list_objects(Bucket='noaa-nexrad-level2', + resp = self._bucket.meta.client.list_objects(Bucket='unidata-nexrad-level2', Prefix=prefix, Delimiter='/') for scan in resp.get('Contents', []): @@ -304,7 +304,7 @@ def _download(self, awsnexradfile, basepath, keep_aws_folders): try: s3 = boto3.client('s3') s3.meta.events.register('choose-signer.s3.*', disable_signing) - s3.download_file('noaa-nexrad-level2',awsnexradfile.key,filepath) + s3.download_file('unidata-nexrad-level2',awsnexradfile.key,filepath) return LocalNexradFile(awsnexradfile, filepath) except: message = 'Download failed for {}'.format(awsnexradfile.filename) From b74a31c1c7f7628787c570dae0cd29ecbbce6c50 Mon Sep 17 00:00:00 2001 From: Aaron Anderson Date: Sun, 24 Aug 2025 14:25:39 -0500 Subject: [PATCH 2/5] Drop Python 2.7 support, remove dependency on `six`, and update version to 2.0.0. --- .travis.yml | 2 -- README.md | 3 +-- docker_devel/3.6/environment.yml | 1 - docker_devel/3.6/requirements_devel.txt | 1 - docs/source/index.rst | 3 +-- docs/source/readthedocs-environment.yml | 1 - examples/download.py | 5 ++--- examples/example.py | 13 ++++++------- nexradaws/nexradawsinterface.py | 11 +++++------ requirements.txt | 1 - setup.cfg | 2 +- setup.py | 15 ++++++++------- tests/test_nexradAwsInterface.py | 5 ++--- 13 files changed, 26 insertions(+), 37 deletions(-) diff --git a/.travis.yml b/.travis.yml index 90a7b8f..923cafb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,12 @@ language: python python: - - "2.7" - "3.6" install: - pip install boto3 - pip install codecov - pip install coverage - - pip install six - pip install pytz script: diff --git a/README.md b/README.md index c828e0d..b191f81 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ radar files from Amazon Web Services S3 Storage. The real-time feed and full his resolution (Level II) NEXRAD data, from June 1991 to present, is now freely available on Amazon S3 for anyone to use. More information can be found here https://aws.amazon.com/public-datasets/nexrad/. -nexradaws supports Python 2.7 and Python 3.6. +nexradaws supports Python 3.6+. Github - https://github.com/aarande/nexradaws @@ -17,7 +17,6 @@ Docs - http://nexradaws.readthedocs.io/en/latest/ * boto3 * pytz -* six **Optional dependencies** diff --git a/docker_devel/3.6/environment.yml b/docker_devel/3.6/environment.yml index 2e74898..f61e283 100644 --- a/docker_devel/3.6/environment.yml +++ b/docker_devel/3.6/environment.yml @@ -11,6 +11,5 @@ dependencies: - arm_pyart - basemap - pytz - - six - pip: - nbsphinx \ No newline at end of file diff --git a/docker_devel/3.6/requirements_devel.txt b/docker_devel/3.6/requirements_devel.txt index 09dbdeb..d65d53f 100644 --- a/docker_devel/3.6/requirements_devel.txt +++ b/docker_devel/3.6/requirements_devel.txt @@ -1,5 +1,4 @@ boto3 coverage -six pytz sphinx \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index d22ab56..31af90f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,7 +11,7 @@ radar files from Amazon Web Services S3 Storage. The real-time feed and full his resolution (Level II) NEXRAD data, from June 1991 to present, is now freely available on Amazon S3 for anyone to use. More information can be found here https://aws.amazon.com/public-datasets/nexrad/. -nexradaws supports Python 2.7 and Python 3.6. +nexradaws supports Python 3.6+. Github - https://github.com/aarande/nexradaws @@ -21,7 +21,6 @@ PyPi - https://pypi.python.org/pypi/nexradaws * boto3 * pytz -* six **Optional dependencies** diff --git a/docs/source/readthedocs-environment.yml b/docs/source/readthedocs-environment.yml index c7a52a8..f3448b3 100644 --- a/docs/source/readthedocs-environment.yml +++ b/docs/source/readthedocs-environment.yml @@ -10,6 +10,5 @@ dependencies: - arm_pyart - basemap - pytz - - six - pip: - nbsphinx \ No newline at end of file diff --git a/examples/download.py b/examples/download.py index b906bc2..dd8cca9 100644 --- a/examples/download.py +++ b/examples/download.py @@ -1,10 +1,9 @@ import nexradaws import tempfile -import six templocation = tempfile.mkdtemp() conn = nexradaws.NexradAwsInterface() scans = conn.get_avail_scans('2013', '05', '31', 'KTLX') localfiles = conn.download(scans[0:12],templocation) -six.print_(localfiles.success) -six.print_(localfiles.success[0].filepath) \ No newline at end of file +print(localfiles.success) +print(localfiles.success[0].filepath) \ No newline at end of file diff --git a/examples/example.py b/examples/example.py index 2d1355f..b7436fc 100644 --- a/examples/example.py +++ b/examples/example.py @@ -1,14 +1,13 @@ -import six import nexradaws conn = nexradaws.NexradAwsInterface() -six.print_(conn.get_avail_years()) -six.print_(conn.get_avail_months('2013')) -six.print_(conn.get_avail_days('2013', '05')) -six.print_(conn.get_avail_radars('2013', '05', '31')) -six.print_(conn.get_avail_scans('2013', '05', '31', 'KTLX')) +print(conn.get_avail_years()) +print(conn.get_avail_months('2013')) +print(conn.get_avail_days('2013', '05')) +print(conn.get_avail_radars('2013', '05', '31')) +print(conn.get_avail_scans('2013', '05', '31', 'KTLX')) from datetime import datetime radarid = 'KTLX' start = datetime(2013,5,31,20,00) end = datetime(2013,5,31,23,00) -six.print_(conn.get_avail_scans_in_range(start, end, radarid)) \ No newline at end of file +print(conn.get_avail_scans_in_range(start, end, radarid)) \ No newline at end of file diff --git a/nexradaws/nexradawsinterface.py b/nexradaws/nexradawsinterface.py index 83cee75..48a78bc 100644 --- a/nexradaws/nexradawsinterface.py +++ b/nexradaws/nexradawsinterface.py @@ -5,7 +5,6 @@ import boto3 import errno import pytz -import six from botocore.handlers import disable_signing from .resources.downloadresults import DownloadResults @@ -195,7 +194,7 @@ def get_avail_scans_in_range(self, start, end, radar): raise ValueError("Future start date specified, please check start input") if self._is_future(utcend): utcend = datetime.now(timezone.utc) - six.print_("Future end date specified, changing to current time") + print("Future end date specified, changing to current time") for day in self._datetime_range(utcstart, utcend): if self._is_future(day): @@ -242,16 +241,16 @@ def download(self, awsnexradfiles, basepath, keep_aws_folders=False, threads=6): try: result = future.result() localfiles.append(result) - six.print_("Downloaded {}".format(result.filename)) + print("Downloaded {}".format(result.filename)) except NexradAwsDownloadError: error = future.exception() errors.append(error.awsnexradfile) # Sort returned list of NexradLocalFile objects by the scan_time localfiles.sort(key=lambda x:x.scan_time) downloadresults = DownloadResults(localfiles,errors) - six.print_('{} out of {} files downloaded...{} errors'.format(downloadresults.success_count, - downloadresults.total, - downloadresults.failed_count)) + print('{} out of {} files downloaded...{} errors'.format(downloadresults.success_count, + downloadresults.total, + downloadresults.failed_count)) return downloadresults def _build_prefix(self, year=None, month=None, day=None, station_id=None): diff --git a/requirements.txt b/requirements.txt index d6303c0..7e94e5e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,2 @@ boto3 -six pytz \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index fe9fe96..16c4b72 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,4 @@ [metadata] description-file = README.md [bdist_wheel] -universal=1 \ No newline at end of file +universal=0 \ No newline at end of file diff --git a/setup.py b/setup.py index 3db09c3..feca775 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ setuptools.setup( name='nexradaws', - version='1.1', + version='2.0.0', packages=['nexradaws','nexradaws.resources'], description= 'Query and download NEXRAD data from AWS S3 storage.', long_description= '''This module is designed to allow you to query and download Nexrad @@ -12,7 +12,7 @@ If pyart is installed nexradaws allows you to quickly get pyart objects of downloaded files. -nexradaws supports Python 2.7 and Python 3.6. +nexradaws supports Python 3.6+. Github - https://github.com/aarande/nexradaws @@ -24,7 +24,6 @@ * boto3 * pytz -* six **Optional dependencies** @@ -34,21 +33,23 @@ pip install nexradaws -**Version 1.1** +**Version 2.0.0** +* Drop support for Python 2.7 and remove dependency on six. * Bug fix for varying filename extensions over the years (.gz .V06 etc). Thanks Nick Guy for the PR!''', url='https://github.com/aarande/nexradaws', license='MIT', author='Aaron Anderson', author_email='aaron.anderson74@yahoo.com', keywords='weather,radar,nexrad,aws,amazon', - download_url='https://github.com/aarande/nexradaws/archive/1.1.tar.gz', - install_requires=['boto3','pytz','six'], + download_url='https://github.com/aarande/nexradaws/archive/2.0.0.tar.gz', + install_requires=['boto3','pytz'], classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Topic :: Scientific/Engineering :: Atmospheric Science', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3 :: Only', + 'Programming Language :: Python :: 3.6', ], ) diff --git a/tests/test_nexradAwsInterface.py b/tests/test_nexradAwsInterface.py index 32cf370..427d621 100644 --- a/tests/test_nexradAwsInterface.py +++ b/tests/test_nexradAwsInterface.py @@ -4,7 +4,6 @@ from unittest import TestCase import pytz -import six from datetime import datetime import nexradaws @@ -37,7 +36,7 @@ def test_get_available_years(self): def test_get_available_months(self): months = self.query.get_avail_months('2006') self.assertIsInstance(months, list) - six.assertCountEqual(self, months, examplemonths) + self.assertCountEqual(months, examplemonths) self.assertEqual(12, len(months)) def test_get_available_months_missing(self): @@ -48,7 +47,7 @@ def test_get_available_days(self): days = self.query.get_avail_days('2006', '05') self.assertIsInstance(days, list) self.assertEqual(31, len(days)) - six.assertCountEqual(self, days, exampledays) + self.assertCountEqual(days, exampledays) def test_get_available_days_missing(self): days = self.query.get_avail_days('2006', '13') From 4a1953fc3a046eaa266244753ce40819f2058b2b Mon Sep 17 00:00:00 2001 From: Aaron Anderson Date: Sun, 24 Aug 2025 14:45:47 -0500 Subject: [PATCH 3/5] Drop Python 3.6 support, update to Python 3.8+, migrate CI to GitHub Actions, and remove obsolete Docker and Travis configurations. --- .github/workflows/ci.yml | 41 +++++++++++++++ .github/workflows/publish.yml | 70 +++++++++++++++++++++++++ .travis.yml | 16 ------ README.md | 4 +- docker_devel/2.7/Dockerfile | 33 ------------ docker_devel/2.7/docker-compose.dev.yml | 9 ---- docker_devel/2.7/environment.yml | 16 ------ docker_devel/2.7/requirements_devel.txt | 5 -- docker_devel/3.6/Dockerfile | 33 ------------ docker_devel/3.6/docker-compose.dev.yml | 9 ---- docker_devel/3.6/environment.yml | 15 ------ docker_devel/3.6/requirements_devel.txt | 4 -- setup.py | 9 +++- 13 files changed, 120 insertions(+), 144 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/publish.yml delete mode 100644 .travis.yml delete mode 100644 docker_devel/2.7/Dockerfile delete mode 100644 docker_devel/2.7/docker-compose.dev.yml delete mode 100644 docker_devel/2.7/environment.yml delete mode 100644 docker_devel/2.7/requirements_devel.txt delete mode 100644 docker_devel/3.6/Dockerfile delete mode 100644 docker_devel/3.6/docker-compose.dev.yml delete mode 100644 docker_devel/3.6/environment.yml delete mode 100644 docker_devel/3.6/requirements_devel.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..886d6bf --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +name: CI + +on: + push: + branches: ["**"] + pull_request: + +jobs: + tests: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install coverage codecov + + - name: Run tests with coverage (unittest discovery) + run: | + coverage run -m unittest discover + coverage xml -o coverage.xml + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + files: coverage.xml + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..fa3cd0c --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,70 @@ +name: Publish + +on: + push: + branches: ["main", "master"] + tags: + - "v*" + +jobs: + build: + name: Build distributions + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install build backend + run: | + python -m pip install --upgrade pip + pip install build + + - name: Build sdist and wheel + run: | + python -m build + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/* + + publish-testpypi: + name: Publish to TestPyPI (on main/master pushes) + if: github.ref_type == 'branch' && (github.ref_name == 'main' || github.ref_name == 'master') + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist + + - name: Publish to TestPyPI + uses: pypa/gh-action-pypi-publish@v1.10.1 + with: + packages-dir: dist + repository-url: https://test.pypi.org/legacy/ + user: __token__ + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + + publish-pypi: + name: Publish to PyPI (on version tag) + if: startsWith(github.ref, 'refs/tags/v') + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@v1.10.1 + with: + packages-dir: dist + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 923cafb..0000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: python - -python: - - "3.6" - -install: - - pip install boto3 - - pip install codecov - - pip install coverage - - pip install pytz - -script: - - coverage run -m unittest discover - -after_success: - - codecov \ No newline at end of file diff --git a/README.md b/README.md index b191f81..b83835b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -[![Build Status](https://travis-ci.org/aarande/nexradaws.svg?branch=master)](https://travis-ci.org/aarande/nexradaws) [![codecov](https://codecov.io/gh/aarande/nexradaws/branch/master/graph/badge.svg)](https://codecov.io/gh/aarande/nexradaws) [![Documentation Status](https://readthedocs.org/projects/nexradaws/badge/?version=latest)](http://nexradaws.readthedocs.io/en/latest/?badge=latest) [![Documentation Status](https://readthedocs.org/projects/nexradaws/badge/?version=devel)](http://nexradaws.readthedocs.io/en/devel/?badge=devel) +[![CI](https://github.com/aarande/nexradaws/actions/workflows/ci.yml/badge.svg)](https://github.com/aarande/nexradaws/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/aarande/nexradaws/branch/master/graph/badge.svg)](https://codecov.io/gh/aarande/nexradaws) [![Documentation Status](https://readthedocs.org/projects/nexradaws/badge/?version=latest)](http://nexradaws.readthedocs.io/en/latest/?badge=latest) [![Documentation Status](https://readthedocs.org/projects/nexradaws/badge/?version=devel)](http://nexradaws.readthedocs.io/en/devel/?badge=devel) # nexradaws This module is designed to allow you to query and download Nexrad radar files from Amazon Web Services S3 Storage. The real-time feed and full historical archive of original resolution (Level II) NEXRAD data, from June 1991 to present, is now freely available on Amazon S3 for anyone to use. More information can be found here https://aws.amazon.com/public-datasets/nexrad/. -nexradaws supports Python 3.6+. +nexradaws supports Python 3.8+. Github - https://github.com/aarande/nexradaws diff --git a/docker_devel/2.7/Dockerfile b/docker_devel/2.7/Dockerfile deleted file mode 100644 index f3e6bd6..0000000 --- a/docker_devel/2.7/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM continuumio/miniconda3 - -# Set the ENTRYPOINT to use bash -# (this is also where you’d set SHELL, -# if your version of docker supports this) -ENTRYPOINT [ "/bin/bash”, “-c” ] - -EXPOSE 5000 - -# Conda supports delegating to pip to install dependencies -# that aren’t available in anaconda or need to be compiled -# for other reasons. In our case, we need psycopg compiled -# with SSL support. These commands install prereqs necessary -# to build psycopg. -RUN apt-get update && apt-get install -y \ - libpq-dev \ - build-essential \ -&& rm -rf /var/lib/apt/lists/* - - -RUN mkdir /app - - -ADD environment.yml /tmp/environment.yml -WORKDIR /tmp -RUN ["conda","env","create", "--file", "environment.yml"] - -WORKDIR /app -COPY . /app - -# We set ENTRYPOINT, so while we still use exec mode, we don’t -# explicitly call /bin/bash -CMD ["source activate nexradaws"] diff --git a/docker_devel/2.7/docker-compose.dev.yml b/docker_devel/2.7/docker-compose.dev.yml deleted file mode 100644 index df47bc9..0000000 --- a/docker_devel/2.7/docker-compose.dev.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2' - -services: - app: - container_name: nexradaws2.7 - build: . - image: aarande/nexradaws:2.7 - volumes: - - .:/app diff --git a/docker_devel/2.7/environment.yml b/docker_devel/2.7/environment.yml deleted file mode 100644 index 6e7aefd..0000000 --- a/docker_devel/2.7/environment.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: nexradaws -channels: - - conda-forge -dependencies: - - python==2.7 - - sphinx>=1.4 - - pandoc - - nbconvert - - ipykernel - - boto3 - - arm_pyart - - basemap - - pytz - - six - - pip: - - nbsphinx \ No newline at end of file diff --git a/docker_devel/2.7/requirements_devel.txt b/docker_devel/2.7/requirements_devel.txt deleted file mode 100644 index 09dbdeb..0000000 --- a/docker_devel/2.7/requirements_devel.txt +++ /dev/null @@ -1,5 +0,0 @@ -boto3 -coverage -six -pytz -sphinx \ No newline at end of file diff --git a/docker_devel/3.6/Dockerfile b/docker_devel/3.6/Dockerfile deleted file mode 100644 index f3e6bd6..0000000 --- a/docker_devel/3.6/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM continuumio/miniconda3 - -# Set the ENTRYPOINT to use bash -# (this is also where you’d set SHELL, -# if your version of docker supports this) -ENTRYPOINT [ "/bin/bash”, “-c” ] - -EXPOSE 5000 - -# Conda supports delegating to pip to install dependencies -# that aren’t available in anaconda or need to be compiled -# for other reasons. In our case, we need psycopg compiled -# with SSL support. These commands install prereqs necessary -# to build psycopg. -RUN apt-get update && apt-get install -y \ - libpq-dev \ - build-essential \ -&& rm -rf /var/lib/apt/lists/* - - -RUN mkdir /app - - -ADD environment.yml /tmp/environment.yml -WORKDIR /tmp -RUN ["conda","env","create", "--file", "environment.yml"] - -WORKDIR /app -COPY . /app - -# We set ENTRYPOINT, so while we still use exec mode, we don’t -# explicitly call /bin/bash -CMD ["source activate nexradaws"] diff --git a/docker_devel/3.6/docker-compose.dev.yml b/docker_devel/3.6/docker-compose.dev.yml deleted file mode 100644 index 03952e4..0000000 --- a/docker_devel/3.6/docker-compose.dev.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2' - -services: - app: - container_name: nexradaws3.6 - build: . - image: aarande/nexradaws:3.6 - volumes: - - .:/app diff --git a/docker_devel/3.6/environment.yml b/docker_devel/3.6/environment.yml deleted file mode 100644 index f61e283..0000000 --- a/docker_devel/3.6/environment.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: nexradaws -channels: - - conda-forge -dependencies: - - python==3.6 - - sphinx>=1.4 - - pandoc - - nbconvert - - ipykernel - - boto3 - - arm_pyart - - basemap - - pytz - - pip: - - nbsphinx \ No newline at end of file diff --git a/docker_devel/3.6/requirements_devel.txt b/docker_devel/3.6/requirements_devel.txt deleted file mode 100644 index d65d53f..0000000 --- a/docker_devel/3.6/requirements_devel.txt +++ /dev/null @@ -1,4 +0,0 @@ -boto3 -coverage -pytz -sphinx \ No newline at end of file diff --git a/setup.py b/setup.py index feca775..3e8aa72 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ If pyart is installed nexradaws allows you to quickly get pyart objects of downloaded files. -nexradaws supports Python 3.6+. +nexradaws supports Python 3.8+. Github - https://github.com/aarande/nexradaws @@ -43,6 +43,7 @@ keywords='weather,radar,nexrad,aws,amazon', download_url='https://github.com/aarande/nexradaws/archive/2.0.0.tar.gz', install_requires=['boto3','pytz'], + python_requires='>=3.8', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Science/Research', @@ -50,6 +51,10 @@ 'Topic :: Scientific/Engineering :: Atmospheric Science', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3 :: Only', - 'Programming Language :: Python :: 3.6', + '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', ], ) From b7c50fb06b9fbe3696f2cb5928c2c5d0c43adb01 Mon Sep 17 00:00:00 2001 From: Aaron Anderson Date: Sun, 24 Aug 2025 15:08:28 -0500 Subject: [PATCH 4/5] Update Codecov step in CI to run only on push or valid pull requests --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 886d6bf..56c76e8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,10 @@ jobs: coverage xml -o coverage.xml - name: Upload coverage to Codecov + if: | + github.event_name == 'push' || + (github.event_name == 'pull_request' && + github.event.pull_request.head.repo.full_name == github.repository) uses: codecov/codecov-action@v4 with: files: coverage.xml From 589b7f93d4a04acb0b87f6342d1fe887a30d7b88 Mon Sep 17 00:00:00 2001 From: Aaron Anderson Date: Sun, 24 Aug 2025 15:31:35 -0500 Subject: [PATCH 5/5] Update ReadTheDocs environment to use Python 3.8, add pip as a dependency --- docs/source/readthedocs-environment.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/readthedocs-environment.yml b/docs/source/readthedocs-environment.yml index f3448b3..2b051eb 100644 --- a/docs/source/readthedocs-environment.yml +++ b/docs/source/readthedocs-environment.yml @@ -1,7 +1,8 @@ channels: - conda-forge dependencies: - - python==3.6 + - python==3.8 + - pip - sphinx>=1.4 - pandoc - nbconvert @@ -11,4 +12,5 @@ dependencies: - basemap - pytz - pip: + - pip - nbsphinx \ No newline at end of file