Skip to content

Commit

Permalink
[change] Drop support for python 3.7
Browse files Browse the repository at this point in the history
  • Loading branch information
gazpachoking committed Nov 19, 2023
1 parent 1d3a23d commit e9a39a6
Show file tree
Hide file tree
Showing 14 changed files with 327 additions and 443 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
name: Update Changelog
runs-on: ubuntu-latest
env:
PYTHON_VERSION: 3.7
PYTHON_VERSION: 3.11
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
operating-system: [ubuntu-latest] # TODO: Fix a couple tests and enable windows. windows-latest
fail-fast: false
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:

runs-on: ubuntu-latest
env:
PYTHON_VERSION: "3.7"
PYTHON_VERSION: "3.11"
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
with:
Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ repos:
rev: '1.7.0'
hooks:
- id: poetry-check
- id: poetry-lock
name: poetry-lock-check
- id: poetry-check
name: poetry-check-lock
files: ^pyproject\.toml|poetry\.lock$
args: ["--check"]
args: ["--lock"]
- id: poetry-export
args: ["-f", "requirements.txt", "-o", "requirements.txt", "--without-hashes"]
- id: poetry-export
Expand Down
82 changes: 40 additions & 42 deletions dev-requirements-extras.txt
Original file line number Diff line number Diff line change
@@ -1,42 +1,40 @@
appdirs==1.4.4 ; python_version >= "3.7" and python_version < "4.0"
babelfish==0.6.0 ; python_version >= "3.7" and python_version < "4.0"
backports-cached-property==1.0.2 ; python_version == "3.7"
bcrypt==4.0.1 ; python_version >= "3.7" and python_version < "4.0"
beautifulsoup4==4.12.2 ; python_version >= "3.7" and python_version < "4.0"
boto3==1.28.63 ; python_version >= "3.7" and python_version < "4.0"
botocore==1.31.63 ; python_version >= "3.7" and python_version < "4.0"
certifi==2023.7.22 ; python_version >= "3.7" and python_version < "4.0"
cffi==1.15.1 ; python_version >= "3.7" and python_version < "4.0"
chardet==5.2.0 ; python_version >= "3.7" and python_version < "4.0"
charset-normalizer==3.3.0 ; python_version >= "3.7" and python_version < "4.0"
click==8.1.7 ; python_version >= "3.7" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.7" and python_version < "4.0" and platform_system == "Windows"
cryptography==41.0.4 ; python_version >= "3.7" and python_version < "4.0"
decorator==5.1.1 ; python_version >= "3.7" and python_version < "4.0"
dogpile-cache==1.2.2 ; python_version >= "3.7" and python_version < "4.0"
enzyme==0.4.1 ; python_version >= "3.7" and python_version < "4.0"
guessit==3.7.1 ; python_version >= "3.7" and python_version < "4.0"
idna==3.4 ; python_version >= "3.7" and python_version < "4.0"
importlib-metadata==6.7.0 ; python_version >= "3.7" and python_version < "3.8"
importlib-resources==5.12.0 ; python_version >= "3.7" and python_version < "3.9"
jmespath==1.0.1 ; python_version >= "3.7" and python_version < "4.0"
paramiko==3.3.1 ; python_version >= "3.7" and python_version < "4.0"
pbr==5.11.1 ; python_version >= "3.7" and python_version < "4.0"
plexapi==4.14.0 ; python_version >= "3.7" and python_version < "4.0"
pycparser==2.21 ; python_version >= "3.7" and python_version < "4.0"
pynacl==1.5.0 ; python_version >= "3.7" and python_version < "4.0"
pysftp==0.2.9 ; python_version >= "3.7" and python_version < "4.0"
pysrt==1.1.2 ; python_version >= "3.7" and python_version < "4.0"
python-dateutil==2.8.2 ; python_version >= "3.7" and python_version < "4.0"
pytz==2023.3.post1 ; python_version >= "3.7" and python_version < "4.0"
rarfile==4.1 ; python_version >= "3.7" and python_version < "4.0"
rebulk==3.2.0 ; python_version >= "3.7" and python_version < "4.0"
requests==2.31.0 ; python_version >= "3.7" and python_version < "4.0"
s3transfer==0.7.0 ; python_version >= "3.7" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.7" and python_version < "4.0"
soupsieve==2.4.1 ; python_version >= "3.7" and python_version < "4.0"
stevedore==3.5.2 ; python_version >= "3.7" and python_version < "4.0"
subliminal==2.1.0 ; python_version >= "3.7" and python_version < "4.0"
typing-extensions==4.7.1 ; python_version >= "3.7" and python_version < "3.11"
urllib3==1.26.17 ; python_version >= "3.7" and python_version < "4.0"
zipp==3.15.0 ; python_version >= "3.7" and python_version < "3.9"
appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0"
babelfish==0.6.0 ; python_version >= "3.8" and python_version < "4.0"
bcrypt==4.0.1 ; python_version >= "3.8" and python_version < "4.0"
beautifulsoup4==4.12.2 ; python_version >= "3.8" and python_version < "4.0"
boto3==1.28.63 ; python_version >= "3.8" and python_version < "4.0"
botocore==1.31.63 ; python_version >= "3.8" and python_version < "4.0"
certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0"
cffi==1.15.1 ; python_version >= "3.8" and python_version < "4.0"
chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0"
charset-normalizer==3.3.0 ; python_version >= "3.8" and python_version < "4.0"
click==8.1.7 ; python_version >= "3.8" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows"
cryptography==41.0.4 ; python_version >= "3.8" and python_version < "4.0"
decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0"
dogpile-cache==1.2.2 ; python_version >= "3.8" and python_version < "4.0"
enzyme==0.4.1 ; python_version >= "3.8" and python_version < "4.0"
guessit==3.7.1 ; python_version >= "3.8" and python_version < "4.0"
idna==3.4 ; python_version >= "3.8" and python_version < "4.0"
importlib-resources==5.12.0 ; python_version >= "3.8" and python_version < "3.9"
jmespath==1.0.1 ; python_version >= "3.8" and python_version < "4.0"
paramiko==3.3.1 ; python_version >= "3.8" and python_version < "4.0"
pbr==5.11.1 ; python_version >= "3.8" and python_version < "4.0"
plexapi==4.14.0 ; python_version >= "3.8" and python_version < "4.0"
pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0"
pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0"
pysftp==0.2.9 ; python_version >= "3.8" and python_version < "4.0"
pysrt==1.1.2 ; python_version >= "3.8" and python_version < "4.0"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0"
pytz==2023.3.post1 ; python_version >= "3.8" and python_version < "4.0"
rarfile==4.1 ; python_version >= "3.8" and python_version < "4.0"
rebulk==3.2.0 ; python_version >= "3.8" and python_version < "4.0"
requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0"
s3transfer==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
soupsieve==2.4.1 ; python_version >= "3.8" and python_version < "4.0"
stevedore==3.5.2 ; python_version >= "3.8" and python_version < "4.0"
subliminal==2.1.0 ; python_version >= "3.8" and python_version < "4.0"
typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "3.11"
urllib3==1.26.17 ; python_version >= "3.8" and python_version < "4.0"
zipp==3.15.0 ; python_version >= "3.8" and python_version < "3.9"
127 changes: 63 additions & 64 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,64 +1,63 @@
alabaster==0.7.13 ; python_version >= "3.7" and python_version < "4.0"
babel==2.13.0 ; python_version >= "3.7" and python_version < "4.0"
black==23.3.0 ; python_version >= "3.7" and python_version < "4.0"
certifi==2023.7.22 ; python_version >= "3.7" and python_version < "4.0"
cfgv==3.3.1 ; python_version >= "3.7" and python_version < "4.0"
charset-normalizer==3.3.0 ; python_version >= "3.7" and python_version < "4.0"
click==8.1.7 ; python_version >= "3.7" and python_version < "4.0"
codacy-coverage==1.3.11 ; python_version >= "3.7" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.7" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows")
coverage==7.2.7 ; python_version >= "3.7" and python_version < "4.0"
coverage[toml]==7.2.7 ; python_version >= "3.7" and python_version < "4.0"
distlib==0.3.7 ; python_version >= "3.7" and python_version < "4.0"
docutils==0.19 ; python_version >= "3.7" and python_version < "4.0"
exceptiongroup==1.1.3 ; python_version >= "3.7" and python_version < "3.11"
execnet==2.0.2 ; python_version >= "3.7" and python_version < "4.0"
filelock==3.12.2 ; python_version >= "3.7" and python_version < "4.0"
gitdb==4.0.10 ; python_version >= "3.7" and python_version < "4.0"
gitpython==3.1.37 ; python_version >= "3.7" and python_version < "4.0"
identify==2.5.24 ; python_version >= "3.7" and python_version < "4.0"
idna==3.4 ; python_version >= "3.7" and python_version < "4.0"
imagesize==1.4.1 ; python_version >= "3.7" and python_version < "4.0"
importlib-metadata==6.7.0 ; python_version >= "3.7" and python_version < "3.10"
iniconfig==2.0.0 ; python_version >= "3.7" and python_version < "4.0"
jinja2==3.1.2 ; python_version >= "3.7" and python_version < "4.0"
markupsafe==2.1.3 ; python_version >= "3.7" and python_version < "4.0"
multidict==6.0.4 ; python_version >= "3.7" and python_version < "4.0"
mypy-extensions==1.0.0 ; python_version >= "3.7" and python_version < "4.0"
mypy==1.4.1 ; python_version >= "3.7" and python_version < "4.0"
nodeenv==1.8.0 ; python_version >= "3.7" and python_version < "4.0"
packaging==23.2 ; python_version >= "3.7" and python_version < "4.0"
pathspec==0.11.2 ; python_version >= "3.7" and python_version < "4.0"
platformdirs==3.11.0 ; python_version >= "3.7" and python_version < "4.0"
pluggy==1.2.0 ; python_version >= "3.7" and python_version < "4.0"
pre-commit==2.21.0 ; python_version >= "3.7" and python_version < "4.0"
pygments==2.16.1 ; python_version >= "3.7" and python_version < "4.0"
pytest-cov==4.1.0 ; python_version >= "3.7" and python_version < "4.0"
pytest-runner==6.0.0 ; python_version >= "3.7" and python_version < "4.0"
pytest-xdist==3.3.1 ; python_version >= "3.7" and python_version < "4.0"
pytest==7.4.2 ; python_version >= "3.7" and python_version < "4.0"
pytz==2023.3.post1 ; python_version >= "3.7" and python_version < "3.9"
pyyaml==6.0.1 ; python_version >= "3.7" and python_version < "4.0"
requests==2.31.0 ; python_version >= "3.7" and python_version < "4.0"
ruff==0.0.292 ; python_version >= "3.7" and python_version < "4.0"
setuptools==68.0.0 ; python_version >= "3.7" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.7" and python_version < "4.0"
smmap==5.0.1 ; python_version >= "3.7" and python_version < "4.0"
snowballstemmer==2.2.0 ; python_version >= "3.7" and python_version < "4.0"
sphinx==5.3.0 ; python_version >= "3.7" and python_version < "4.0"
sphinxcontrib-applehelp==1.0.2 ; python_version >= "3.7" and python_version < "4.0"
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.7" and python_version < "4.0"
sphinxcontrib-htmlhelp==2.0.0 ; python_version >= "3.7" and python_version < "4.0"
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.7" and python_version < "4.0"
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.7" and python_version < "4.0"
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.7" and python_version < "4.0"
sqlalchemy-stubs==0.4 ; python_version >= "3.7" and python_version < "4.0"
tomli==2.0.1 ; python_version >= "3.7" and python_full_version <= "3.11.0a6"
typed-ast==1.5.5 ; python_version < "3.8" and python_version >= "3.7"
typing-extensions==4.7.1 ; python_version >= "3.7" and python_version < "4.0"
urllib3==1.26.17 ; python_version >= "3.7" and python_version < "4.0"
vcrpy==4.4.0 ; python_version >= "3.7" and python_version < "4.0"
virtualenv==20.24.5 ; python_version >= "3.7" and python_version < "4.0"
wrapt==1.15.0 ; python_version >= "3.7" and python_version < "4.0"
yarl==1.9.2 ; python_version >= "3.7" and python_version < "4.0"
zipp==3.15.0 ; python_version >= "3.7" and python_version < "3.10"
alabaster==0.7.13 ; python_version >= "3.8" and python_version < "4.0"
babel==2.13.0 ; python_version >= "3.8" and python_version < "4.0"
black==23.3.0 ; python_version >= "3.8" and python_version < "4.0"
certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0"
cfgv==3.3.1 ; python_version >= "3.8" and python_version < "4.0"
charset-normalizer==3.3.0 ; python_version >= "3.8" and python_version < "4.0"
click==8.1.7 ; python_version >= "3.8" and python_version < "4.0"
codacy-coverage==1.3.11 ; python_version >= "3.8" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows")
coverage==7.2.7 ; python_version >= "3.8" and python_version < "4.0"
coverage[toml]==7.2.7 ; python_version >= "3.8" and python_version < "4.0"
distlib==0.3.7 ; python_version >= "3.8" and python_version < "4.0"
docutils==0.19 ; python_version >= "3.8" and python_version < "4.0"
exceptiongroup==1.1.3 ; python_version >= "3.8" and python_version < "3.11"
execnet==2.0.2 ; python_version >= "3.8" and python_version < "4.0"
filelock==3.12.2 ; python_version >= "3.8" and python_version < "4.0"
gitdb==4.0.10 ; python_version >= "3.8" and python_version < "4.0"
gitpython==3.1.37 ; python_version >= "3.8" and python_version < "4.0"
identify==2.5.24 ; python_version >= "3.8" and python_version < "4.0"
idna==3.4 ; python_version >= "3.8" and python_version < "4.0"
imagesize==1.4.1 ; python_version >= "3.8" and python_version < "4.0"
importlib-metadata==6.7.0 ; python_version >= "3.8" and python_version < "3.10"
iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
jinja2==3.1.2 ; python_version >= "3.8" and python_version < "4.0"
markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0"
multidict==6.0.4 ; python_version >= "3.8" and python_version < "4.0"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "4.0"
mypy==1.4.1 ; python_version >= "3.8" and python_version < "4.0"
nodeenv==1.8.0 ; python_version >= "3.8" and python_version < "4.0"
packaging==23.2 ; python_version >= "3.8" and python_version < "4.0"
pathspec==0.11.2 ; python_version >= "3.8" and python_version < "4.0"
platformdirs==3.11.0 ; python_version >= "3.8" and python_version < "4.0"
pluggy==1.2.0 ; python_version >= "3.8" and python_version < "4.0"
pre-commit==3.5.0 ; python_version >= "3.8" and python_version < "4.0"
pygments==2.16.1 ; python_version >= "3.8" and python_version < "4.0"
pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0"
pytest-runner==6.0.0 ; python_version >= "3.8" and python_version < "4.0"
pytest-xdist==3.3.1 ; python_version >= "3.8" and python_version < "4.0"
pytest==7.4.2 ; python_version >= "3.8" and python_version < "4.0"
pytz==2023.3.post1 ; python_version >= "3.8" and python_version < "3.9"
pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0"
requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0"
ruff==0.0.292 ; python_version >= "3.8" and python_version < "4.0"
setuptools==68.0.0 ; python_version >= "3.8" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
smmap==5.0.1 ; python_version >= "3.8" and python_version < "4.0"
snowballstemmer==2.2.0 ; python_version >= "3.8" and python_version < "4.0"
sphinx==5.3.0 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-applehelp==1.0.2 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-htmlhelp==2.0.0 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_version < "4.0"
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_version < "4.0"
sqlalchemy-stubs==0.4 ; python_version >= "3.8" and python_version < "4.0"
tomli==2.0.1 ; python_version >= "3.8" and python_full_version <= "3.11.0a6"
typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "4.0"
urllib3==1.26.17 ; python_version >= "3.8" and python_version < "4.0"
vcrpy==4.4.0 ; python_version >= "3.8" and python_version < "4.0"
virtualenv==20.24.5 ; python_version >= "3.8" and python_version < "4.0"
wrapt==1.15.0 ; python_version >= "3.8" and python_version < "4.0"
yarl==1.9.2 ; python_version >= "3.8" and python_version < "4.0"
zipp==3.15.0 ; python_version >= "3.8" and python_version < "3.10"
3 changes: 0 additions & 3 deletions flexget/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,10 +206,7 @@ class NestedSubparserAction(_SubParsersAction):
def __init__(self, *args, **kwargs):
self.nested_namespaces = kwargs.pop('nested_namespaces', False)
self.parent_defaults = {}
# Python < 3.7 doesn't support the 'required' argument for subparsers
required = kwargs.pop('required', True)
super().__init__(*args, **kwargs)
self.required = required

def add_parser(self, name: str, parent_defaults: Optional[dict] = None, **kwargs):
if parent_defaults:
Expand Down
8 changes: 2 additions & 6 deletions flexget/plugins/clients/transmission.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import importlib.metadata
import os
import pathlib
import re
Expand All @@ -9,11 +10,6 @@
from typing import TYPE_CHECKING
from urllib.parse import urlparse

try:
import importlib.metadata as importlib_metadata
except ImportError:
import importlib_metadata # TODO: remove this after we drop python 3.7

import packaging.specifiers
import packaging.version
from loguru import logger
Expand Down Expand Up @@ -157,7 +153,7 @@ def on_task_start(self, task, config):
f'{__package__} module version {__version__} required.', logger
)

v = importlib_metadata.version(__package__)
v = importlib.metadata.version(__package__)
if not __requirement__.contains(v):
raise plugin.PluginError(
f'{__package__} module version mismatch, requiring {__package__}{__version__}',
Expand Down
7 changes: 4 additions & 3 deletions flexget/plugins/internal/change_warn.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import sys
from datetime import date

from loguru import logger

Expand Down Expand Up @@ -41,10 +42,10 @@ def register_plugin():

@event('manager.startup')
def startup_warnings(manager):
if sys.version_info < (3, 8):
if sys.version_info < (3, 9) and date.today() > date(year=2024, month=10, day=1):
logger.warning(
"Python 3.7 is EOL as of June 2023. FlexGet will remove support for it soon. "
"Please upgrade to python 3.8 or later."
"Python 3.8 is EOL as of October 2024. FlexGet will eventually remove support for it. "
"You should upgrade to Python 3.9 or later."
)


Expand Down
Loading

0 comments on commit e9a39a6

Please sign in to comment.