From 6ca35a37971a3661c31c48e47270d4f778eac374 Mon Sep 17 00:00:00 2001 From: Nicolas Graves Date: Tue, 23 Sep 2025 23:34:29 +0200 Subject: [PATCH] Migrate to PEP518 --- pyproject.toml | 66 +++++++++++++++++++++++- setup.cfg | 15 ------ setup.py | 137 ------------------------------------------------- 3 files changed, 65 insertions(+), 153 deletions(-) delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/pyproject.toml b/pyproject.toml index b0471b7f..fbc473a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,67 @@ [build-system] requires = ["setuptools", "wheel"] -build-backend = "setuptools.build_meta:__legacy__" \ No newline at end of file +build-backend = "setuptools.build_meta" + +[project] +name = "sshtunnel" +dynamic = ["version", "readme"] +description = "Pure python SSH tunnels" +license = {text = "MIT"} +authors = [ + {name = "Pahaz White", email = "pahaz.white@gmail.com"} +] +keywords = ["ssh", "tunnel", "paramiko", "proxy", "tcp-forward"] +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "Topic :: Software Development :: Build Tools", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", +] +requires-python = ">=2.7" +dependencies = [ + "paramiko>=2.7.2", +] + +[project.urls] +Homepage = "https://github.com/pahaz/sshtunnel" +Download = "https://pypi.python.org/packages/source/s/sshtunnel/" + +[project.optional-dependencies] +dev = ["check-manifest"] +test = ["tox>=1.8.1"] +build_sphinx = ["sphinx", "sphinxcontrib-napoleon"] + +[project.scripts] +sshtunnel = "sshtunnel:_cli_main" + +[tool.setuptools] +py-modules = ["sshtunnel"] + +[tool.setuptools.dynamic] +version = {attr = "sshtunnel.__version__"} +readme = {file = ["README.rst", "docs.rst", "changelog.rst"], content-type = "text/x-rst"} + +[tool.setuptools.package-data] +tests = ["testrsa.key"] + +[tool.bdist_wheel] +universal = true + +[tool.check-manifest] +ignore = [ + ".travis.yml", + "circle.yml", + "tox.ini" +] + +[tool.build_sphinx] +source-dir = "docs/" +build-dir = "docs/_build" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 94f65bb8..00000000 --- a/setup.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[bdist_wheel] -# This flag says that the code is written to work on both Python 2 and Python -# 3. If at all possible, it is good practice to do this. If you cannot, you -# will need to generate wheels for each Python version that you support. -universal=1 - -[check-manifest] -ignore = - .travis.yml - circle.yml - tox.ini - -[build_sphinx] -source-dir = docs/ -build-dir = docs/_build diff --git a/setup.py b/setup.py deleted file mode 100644 index ccaaab8c..00000000 --- a/setup.py +++ /dev/null @@ -1,137 +0,0 @@ -"""A setuptools based setup module. - -See: -https://packaging.python.org/en/latest/distributing.html -https://github.com/pypa/sampleproject -""" - -import re -from os import path -from codecs import open # To use a consistent encoding -from setuptools import setup # Always prefer setuptools over distutils - -here = path.abspath(path.dirname(__file__)) -name = 'sshtunnel' -description = 'Pure python SSH tunnels' -url = 'https://github.com/pahaz/sshtunnel' -ppa = 'https://pypi.python.org/packages/source/s/{0}/{0}-'.format(name) - -# Get the long description from the README file -with open(path.join(here, 'README.rst'), encoding='utf-8') as f: - long_description = f.read() -with open(path.join(here, 'docs.rst'), encoding='utf-8') as f: - documentation = f.read() -with open(path.join(here, 'changelog.rst'), encoding='utf-8') as f: - changelog = f.read() - -with open(path.join(here, name + '.py'), encoding='utf-8') as f: - data = f.read() - version = eval(re.search("__version__[ ]*=[ ]*([^\r\n]+)", data).group(1)) - - -setup( - name=name, - - # Versions should comply with PEP440. For a discussion on single-sourcing - # the version across setup.py and the project code, see - # https://packaging.python.org/en/latest/single_source_version.html - version=version, - - description=description, - long_description='\n'.join((long_description, documentation, changelog)), - long_description_content_type='text/x-rst', - - # The project's main homepage. - url=url, - download_url=ppa + version + '.zip', # noqa - - # Author details - author='Pahaz White', - author_email='pahaz.white@gmail.com', - - # Choose your license - license='MIT', - - # See https://pypi.python.org/pypi?%3Aaction=list_classifiers - classifiers=[ - # How mature is this project? Common values are - # 3 - Alpha - # 4 - Beta - # 5 - Production/Stable - 'Development Status :: 3 - Alpha', - - # Indicate who your project is intended for - 'Intended Audience :: Developers', - 'Topic :: Software Development :: Build Tools', - - # Pick your license as you wish (should match "license" above) - 'License :: OSI Approved :: MIT License', - - # Specify the Python versions you support here. In particular, ensure - # that you indicate whether you support Python 2, Python 3 or both. - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - ], - - platforms=['unix', 'macos', 'windows'], - - # What does your project relate to? - keywords='ssh tunnel paramiko proxy tcp-forward', - - # You can just specify the packages manually here if your project is - # simple. Or you can use find_packages(). - # packages=find_packages(exclude=['contrib', 'docs', 'tests']), - - # Alternatively, if you want to distribute just a my_module.py, uncomment - # this: - py_modules=["sshtunnel"], - - # List run-time dependencies here. These will be installed by pip when - # your project is installed. For an analysis of "install_requires" vs pip's - # requirements files see: - # https://packaging.python.org/en/latest/requirements.html - install_requires=[ - 'paramiko>=2.7.2', - ], - - # List additional groups of dependencies here (e.g. development - # dependencies). You can install these using the following syntax, - # for example: - # $ pip install -e .[dev,test] - tests_require=[ - 'tox>=1.8.1', - ], - extras_require={ - 'dev': ['check-manifest'], - 'test': [ - 'tox>=1.8.1', - ], - 'build_sphinx': [ - 'sphinx', - 'sphinxcontrib-napoleon', - ], - }, - - # If there are data files included in your packages that need to be - # installed, specify them here. If using Python 2.6 or less, then these - # have to be included in MANIFEST.in as well. - package_data={ - 'tests': ['testrsa.key'], - }, - - # To provide executable scripts, use entry points in preference to the - # "scripts" keyword. Entry points provide cross-platform support and allow - # pip to create the appropriate form of executable for the target platform. - entry_points={ - 'console_scripts': [ - 'sshtunnel=sshtunnel:_cli_main', - ] - }, - -)