From d1b1931884aeb2f513e6d799cbb2ee256270953e Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Mon, 15 Aug 2022 00:05:58 -0400 Subject: [PATCH 01/11] Change to pyproject.toml --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 14 +++---- Makefile | 8 ++-- README.rst | 2 +- pyproject.toml | 52 ++++++++++++++++++++++++++ setup.py | 69 ----------------------------------- 6 files changed, 65 insertions(+), 82 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 17e93f9..5debbc8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Install library - run: python3 setup.py install + run: pip install . - name: Install sphinx run: pip3 install pylint Sphinx sphinx-rtd-theme diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 27f5fee..3e57f66 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,25 +9,25 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - name: Check For setup.py + - name: Check For pyproject.toml id: need-pypi run: | - echo ::set-output name=setup-py::$( find . -wholename './setup.py' ) + echo ::set-output name=pyproject-toml::$( find . -wholename './pyproject.toml' ) - name: Set up Python - if: contains(steps.need-pypi.outputs.setup-py, 'setup.py') + if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') uses: actions/setup-python@v1 with: python-version: '3.x' - name: Install dependencies - if: contains(steps.need-pypi.outputs.setup-py, 'setup.py') + if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') run: | python -m pip install --upgrade pip - pip install setuptools wheel twine + pip install build wheel twine - name: Build and publish - if: contains(steps.need-pypi.outputs.setup-py, 'setup.py') + if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | - python setup.py sdist + python -m build twine upload dist/* \ No newline at end of file diff --git a/Makefile b/Makefile index 69241d6..eb48ec3 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -publish: clean - python setup.py sdist upload +publish: clean build + twine upload dist/* clean: #rm -rf Adafruit_BBIO.* build dist @@ -9,7 +9,7 @@ tests: py.test build: - python setup.py build --force + python -m build install: build - python setup.py install --force \ No newline at end of file + pip install . \ No newline at end of file diff --git a/README.rst b/README.rst index edb4bfa..297bbe2 100644 --- a/README.rst +++ b/README.rst @@ -51,7 +51,7 @@ Clone or download the contents of this repository. Then navigate to the folder i .. code-block:: shell - python setup.py install + pip install . diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..e6324ba --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,52 @@ +# SPDX-FileCopyrightText: 2022 Alec Delaney for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +[build-system] +requires = [ + "setuptools", + "wheel", + "setuptools-scm", +] + +[project] +name = "adafruit-io" +description = "Python client library for Adafruit IO (http://io.adafruit.com/)." +version = "0.0.0" +readme = "README.rst" +authors = [ + {name = "Adafruit Industries", email = "adafruit@adafruit.com"} +] +urls = {Homepage = "https://github.com/adafruit/Adafruit_IO_Python"} +keywords = [ + "adafruit", + "blinka", + "circuitpython", + "micropython", + "lis3mdl", + "magnetometer", + "LSM6DS33", + "IMU", +] +license = {text = "MIT"} +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Operating System :: POSIX :: Linux", + "Operating System :: Microsoft :: Windows", + "Operating System :: MacOS", + "License :: OSI Approved :: MIT License", + "Intended Audience :: Developers", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Topic :: Home Automation", + "Topic :: Software Development", +] +dependencies = [ + "requests", + "paho-mqtt" +] + +[tool.setuptools] +packages = ["Adafruit_IO"] diff --git a/setup.py b/setup.py deleted file mode 100644 index 09087f3..0000000 --- a/setup.py +++ /dev/null @@ -1,69 +0,0 @@ -"""A setuptools based setup module. - -See: -https://packaging.python.org/en/latest/distributing.html -https://github.com/pypa/sampleproject -""" - -from ez_setup import use_setuptools -use_setuptools() -from setuptools import setup, find_packages -# To use a consistent encoding -from codecs import open -from os import path -import re - -verstrline = open('Adafruit_IO/_version.py', "rt").read() -VSRE = r"^__version__ = ['\"]([^'\"]*)['\"]" -mo = re.search(VSRE, verstrline, re.M) -if mo: - verstr = mo.group(1) -else: - raise RuntimeError("Unable to find version string in %s." % (VERSIONFILE,)) -print('version: ', verstr) - - -# Get the long description from the README file -here = path.abspath(path.dirname(__file__)) -with open(path.join(here, 'README.rst'), encoding='utf-8') as f: - long_description = f.read() - -classifiers = ['Development Status :: 5 - Production/Stable', - 'Operating System :: POSIX :: Linux', - 'Operating System :: Microsoft :: Windows', - 'Operating System :: MacOS', - 'License :: OSI Approved :: MIT License', - 'Intended Audience :: Developers', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Topic :: Home Automation', - 'Topic :: Software Development'] - -setup( - name = 'adafruit-io', - use_scm_version = True, - setup_requires = ['setuptools_scm'], - - description = 'Python client library for Adafruit IO (http://io.adafruit.com/).', - long_description = open('README.rst').read(), - long_description_content_type='text/x-rst', - - url = 'https://github.com/adafruit/Adafruit_IO_Python', - - author = 'Adafruit Industries', - author_email = 'adafruitio@adafruit.com', - - license = 'MIT', - - - version = verstr, - install_requires = ["requests", "paho-mqtt"], - - - packages = ['Adafruit_IO'], - py_modules = ['ez_setup'], - keywords = 'adafruitio io python circuitpython raspberrypi hardware MQTT REST', - classifiers = classifiers -) From 76820e07d4270371409f452a0cbb643f06533ec6 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Mon, 15 Aug 2022 00:06:11 -0400 Subject: [PATCH 02/11] Remove ez_setup.py --- ez_setup.py | 332 ---------------------------------------------------- 1 file changed, 332 deletions(-) delete mode 100644 ez_setup.py diff --git a/ez_setup.py b/ez_setup.py deleted file mode 100644 index 1bcd3e9..0000000 --- a/ez_setup.py +++ /dev/null @@ -1,332 +0,0 @@ -#!/usr/bin/env python -"""Bootstrap setuptools installation - -To use setuptools in your package's setup.py, include this -file in the same directory and add this to the top of your setup.py:: - - from ez_setup import use_setuptools - use_setuptools() - -To require a specific version of setuptools, set a download -mirror, or use an alternate download directory, simply supply -the appropriate options to ``use_setuptools()``. - -This file can also be run as a script to install or upgrade setuptools. -""" -import os -import shutil -import sys -import tempfile -import zipfile -import optparse -import subprocess -import platform -import textwrap -import contextlib - -from distutils import log - -try: - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen - -try: - from site import USER_SITE -except ImportError: - USER_SITE = None - -DEFAULT_VERSION = "4.0.1" -DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/" - -def _python_cmd(*args): - """ - Return True if the command succeeded. - """ - args = (sys.executable,) + args - return subprocess.call(args) == 0 - - -def _install(archive_filename, install_args=()): - with archive_context(archive_filename): - # installing - log.warn('Installing Setuptools') - if not _python_cmd('setup.py', 'install', *install_args): - log.warn('Something went wrong during the installation.') - log.warn('See the error message above.') - # exitcode will be 2 - return 2 - - -def _build_egg(egg, archive_filename, to_dir): - with archive_context(archive_filename): - # building an egg - log.warn('Building a Setuptools egg in %s', to_dir) - _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir) - # returning the result - log.warn(egg) - if not os.path.exists(egg): - raise IOError('Could not build the egg.') - - -class ContextualZipFile(zipfile.ZipFile): - """ - Supplement ZipFile class to support context manager for Python 2.6 - """ - - def __enter__(self): - return self - - def __exit__(self, type, value, traceback): - self.close() - - def __new__(cls, *args, **kwargs): - """ - Construct a ZipFile or ContextualZipFile as appropriate - """ - if hasattr(zipfile.ZipFile, '__exit__'): - return zipfile.ZipFile(*args, **kwargs) - return super(ContextualZipFile, cls).__new__(cls) - - -@contextlib.contextmanager -def archive_context(filename): - # extracting the archive - tmpdir = tempfile.mkdtemp() - log.warn('Extracting in %s', tmpdir) - old_wd = os.getcwd() - try: - os.chdir(tmpdir) - with ContextualZipFile(filename) as archive: - archive.extractall() - - # going in the directory - subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) - os.chdir(subdir) - log.warn('Now working in %s', subdir) - yield - - finally: - os.chdir(old_wd) - shutil.rmtree(tmpdir) - - -def _do_download(version, download_base, to_dir, download_delay): - egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg' - % (version, sys.version_info[0], sys.version_info[1])) - if not os.path.exists(egg): - archive = download_setuptools(version, download_base, - to_dir, download_delay) - _build_egg(egg, archive, to_dir) - sys.path.insert(0, egg) - - # Remove previously-imported pkg_resources if present (see - # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details). - if 'pkg_resources' in sys.modules: - del sys.modules['pkg_resources'] - - import setuptools - setuptools.bootstrap_install_from = egg - - -def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, - to_dir=os.curdir, download_delay=15): - to_dir = os.path.abspath(to_dir) - rep_modules = 'pkg_resources', 'setuptools' - imported = set(sys.modules).intersection(rep_modules) - try: - import pkg_resources - except ImportError: - return _do_download(version, download_base, to_dir, download_delay) - try: - pkg_resources.require("setuptools>=" + version) - return - except pkg_resources.DistributionNotFound: - return _do_download(version, download_base, to_dir, download_delay) - except pkg_resources.VersionConflict as VC_err: - if imported: - msg = textwrap.dedent(""" - The required version of setuptools (>={version}) is not available, - and can't be installed while this script is running. Please - install a more recent version first, using - 'easy_install -U setuptools'. - - (Currently using {VC_err.args[0]!r}) - """).format(VC_err=VC_err, version=version) - sys.stderr.write(msg) - sys.exit(2) - - # otherwise, reload ok - del pkg_resources, sys.modules['pkg_resources'] - return _do_download(version, download_base, to_dir, download_delay) - -def _clean_check(cmd, target): - """ - Run the command to download target. If the command fails, clean up before - re-raising the error. - """ - try: - subprocess.check_call(cmd) - except subprocess.CalledProcessError: - if os.access(target, os.F_OK): - os.unlink(target) - raise - -def download_file_powershell(url, target): - """ - Download the file at url to target using Powershell (which will validate - trust). Raise an exception if the command cannot complete. - """ - target = os.path.abspath(target) - ps_cmd = ( - "[System.Net.WebRequest]::DefaultWebProxy.Credentials = " - "[System.Net.CredentialCache]::DefaultCredentials; " - "(new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" - % vars() - ) - cmd = [ - 'powershell', - '-Command', - ps_cmd, - ] - _clean_check(cmd, target) - -def has_powershell(): - if platform.system() != 'Windows': - return False - cmd = ['powershell', '-Command', 'echo test'] - with open(os.path.devnull, 'wb') as devnull: - try: - subprocess.check_call(cmd, stdout=devnull, stderr=devnull) - except Exception: - return False - return True - -download_file_powershell.viable = has_powershell - -def download_file_curl(url, target): - cmd = ['curl', url, '--silent', '--output', target] - _clean_check(cmd, target) - -def has_curl(): - cmd = ['curl', '--version'] - with open(os.path.devnull, 'wb') as devnull: - try: - subprocess.check_call(cmd, stdout=devnull, stderr=devnull) - except Exception: - return False - return True - -download_file_curl.viable = has_curl - -def download_file_wget(url, target): - cmd = ['wget', url, '--quiet', '--output-document', target] - _clean_check(cmd, target) - -def has_wget(): - cmd = ['wget', '--version'] - with open(os.path.devnull, 'wb') as devnull: - try: - subprocess.check_call(cmd, stdout=devnull, stderr=devnull) - except Exception: - return False - return True - -download_file_wget.viable = has_wget - -def download_file_insecure(url, target): - """ - Use Python to download the file, even though it cannot authenticate the - connection. - """ - src = urlopen(url) - try: - # Read all the data in one block. - data = src.read() - finally: - src.close() - - # Write all the data in one block to avoid creating a partial file. - with open(target, "wb") as dst: - dst.write(data) - -download_file_insecure.viable = lambda: True - -def get_best_downloader(): - downloaders = ( - download_file_powershell, - download_file_curl, - download_file_wget, - download_file_insecure, - ) - viable_downloaders = (dl for dl in downloaders if dl.viable()) - return next(viable_downloaders, None) - -def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, - to_dir=os.curdir, delay=15, downloader_factory=get_best_downloader): - """ - Download setuptools from a specified location and return its filename - - `version` should be a valid setuptools version number that is available - as an egg for download under the `download_base` URL (which should end - with a '/'). `to_dir` is the directory where the egg will be downloaded. - `delay` is the number of seconds to pause before an actual download - attempt. - - ``downloader_factory`` should be a function taking no arguments and - returning a function for downloading a URL to a target. - """ - # making sure we use the absolute path - to_dir = os.path.abspath(to_dir) - zip_name = "setuptools-%s.zip" % version - url = download_base + zip_name - saveto = os.path.join(to_dir, zip_name) - if not os.path.exists(saveto): # Avoid repeated downloads - log.warn("Downloading %s", url) - downloader = downloader_factory() - downloader(url, saveto) - return os.path.realpath(saveto) - -def _build_install_args(options): - """ - Build the arguments to 'python setup.py install' on the setuptools package - """ - return ['--user'] if options.user_install else [] - -def _parse_args(): - """ - Parse the command line for options - """ - parser = optparse.OptionParser() - parser.add_option( - '--user', dest='user_install', action='store_true', default=False, - help='install in user site package (requires Python 2.6 or later)') - parser.add_option( - '--download-base', dest='download_base', metavar="URL", - default=DEFAULT_URL, - help='alternative URL from where to download the setuptools package') - parser.add_option( - '--insecure', dest='downloader_factory', action='store_const', - const=lambda: download_file_insecure, default=get_best_downloader, - help='Use internal, non-validating downloader' - ) - parser.add_option( - '--version', help="Specify which version to download", - default=DEFAULT_VERSION, - ) - options, args = parser.parse_args() - # positional arguments are ignored - return options - -def main(): - """Install or upgrade setuptools and EasyInstall""" - options = _parse_args() - archive = download_setuptools( - version=options.version, - download_base=options.download_base, - downloader_factory=options.downloader_factory, - ) - return _install(archive, _build_install_args(options)) - -if __name__ == '__main__': - sys.exit(main()) From ac44d998ce4f6477c03a1fe60a15fc95f6ac3070 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Mon, 15 Aug 2022 00:06:49 -0400 Subject: [PATCH 03/11] Use CI to set version --- .github/workflows/release.yml | 3 +++ Adafruit_IO/_version.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3e57f66..559aed6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,5 +29,8 @@ jobs: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | + for file in $(find -not -path "./.*" -not -path "./docs*" \( -name "*.py" -o -name "*.toml" \) ); do + sed -i -e "s/0.0.0/${{github.event.release.tag_name}}/" $file; + done; python -m build twine upload dist/* \ No newline at end of file diff --git a/Adafruit_IO/_version.py b/Adafruit_IO/_version.py index 50062f8..6c8e6b9 100644 --- a/Adafruit_IO/_version.py +++ b/Adafruit_IO/_version.py @@ -1 +1 @@ -__version__ = "2.5.0" +__version__ = "0.0.0" From abb2946cdefa987b50e435a92df6d6e0d0eefad5 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Mon, 15 Aug 2022 00:09:25 -0400 Subject: [PATCH 04/11] Update keywords in pyproject.toml --- pyproject.toml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e6324ba..28d99ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,14 +19,14 @@ authors = [ ] urls = {Homepage = "https://github.com/adafruit/Adafruit_IO_Python"} keywords = [ - "adafruit", - "blinka", + "adafruitio", + "io", + "python", "circuitpython", - "micropython", - "lis3mdl", - "magnetometer", - "LSM6DS33", - "IMU", + "raspberrypi", + "hardware", + "MQTT", + "REST", ] license = {text = "MIT"} classifiers = [ From d500b589dd06ec2ae34dc0f94af9e257f1547c22 Mon Sep 17 00:00:00 2001 From: Alec Delaney <89490472+tekktrik@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:09:45 -0400 Subject: [PATCH 05/11] Upgrade setuptools in Actions --- .github/workflows/build.yml | 4 ++++ .github/workflows/release.yml | 3 +++ 2 files changed, 7 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5debbc8..8eb5ca1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,6 +30,10 @@ jobs: python -m pip install --upgrade pip if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Update setuptools + run: | + python -m pip install --upgrade setuptools + - name: Install library run: pip install . diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 559aed6..f1a69c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,6 +18,9 @@ jobs: uses: actions/setup-python@v1 with: python-version: '3.x' + - name: Update setuptools + run: | + python -m pip install --upgrade setuptools - name: Install dependencies if: contains(steps.need-pypi.outputs.pyproject-toml, 'pyproject.toml') run: | From 4b9d79b582db64c1b6add2769baba0b8fdd6bc08 Mon Sep 17 00:00:00 2001 From: Tekktrik Date: Wed, 31 May 2023 19:11:45 -0400 Subject: [PATCH 06/11] Update action versions --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8eb5ca1..66d6426 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,12 +18,12 @@ jobs: environment: name: IO steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - name: Set up Python 3.6 - uses: actions/setup-python@v1 + - name: Set up Python 3.x + uses: actions/setup-python@v4 with: - python-version: 3.6 + python-version: 3.x - name: Install dependencies run: | From 22ae783024c8d25d6a05d8ca721fa9e4ea3347d1 Mon Sep 17 00:00:00 2001 From: Tekktrik Date: Wed, 31 May 2023 23:56:32 -0400 Subject: [PATCH 07/11] Remove manifest file --- MANIFEST.in | 1 - 1 file changed, 1 deletion(-) delete mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 2c6efd2..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -include README.rst From 250fae2f623f34a4b91d697daa8dc061ed1e0cdc Mon Sep 17 00:00:00 2001 From: Tekktrik Date: Thu, 1 Jun 2023 00:02:14 -0400 Subject: [PATCH 08/11] Make dependencies dynamic --- pyproject.toml | 8 ++++---- requirements.txt | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 28d99ab..f409899 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,10 +43,10 @@ classifiers = [ "Topic :: Home Automation", "Topic :: Software Development", ] -dependencies = [ - "requests", - "paho-mqtt" -] +dynamic = ["dependencies"] [tool.setuptools] packages = ["Adafruit_IO"] + +[tool.setuptools.dynamic] +dependencies = {file = ["requirements.txt"]} diff --git a/requirements.txt b/requirements.txt index 8b13789..4459269 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ - +requests +paho-mqtt From 4940af1659ea5923aa18ab10fd1924c84fbd4f06 Mon Sep 17 00:00:00 2001 From: Tekktrik Date: Thu, 1 Jun 2023 01:06:46 -0400 Subject: [PATCH 09/11] Fix test failing due to timezone --- tests/test_client.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_client.py b/tests/test_client.py index 90acd5b..263ac30 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,5 +1,6 @@ # Test REST client. # Author: Tony DiCola (tdicola@adafruit.com) +import os import time import unittest @@ -182,6 +183,7 @@ def test_time_data(self): for time_data in server_time: self.assertIsNotNone(time_data) # Check that the week day was interpreted properly + os.environ['TZ'] = "US/Eastern" adjusted_time = time.localtime(time.mktime(server_time)) self.assertEqual(server_time.tm_wday, adjusted_time.tm_wday) From 6cc6ae5476f5e0f5d2f45afbe19f90e3fcde42f1 Mon Sep 17 00:00:00 2001 From: Tekktrik Date: Thu, 1 Jun 2023 01:09:07 -0400 Subject: [PATCH 10/11] Set docs language to English --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index 848ccc3..3a784d8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -46,7 +46,7 @@ # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. From 4d99ff62bd633c05693335bb35c7ef57315c0aed Mon Sep 17 00:00:00 2001 From: Tekktrik Date: Thu, 1 Jun 2023 01:17:41 -0400 Subject: [PATCH 11/11] Only apply timezone if in GitHub Actions --- tests/test_client.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_client.py b/tests/test_client.py index 263ac30..e08c1bb 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -183,7 +183,8 @@ def test_time_data(self): for time_data in server_time: self.assertIsNotNone(time_data) # Check that the week day was interpreted properly - os.environ['TZ'] = "US/Eastern" + if "GITHUB_ACTIONS" in os.environ: + os.environ['TZ'] = "US/Eastern" adjusted_time = time.localtime(time.mktime(server_time)) self.assertEqual(server_time.tm_wday, adjusted_time.tm_wday)