From 79604d5b0af4f1b8c9ca252fc875b9714e9b8f6c Mon Sep 17 00:00:00 2001 From: Simon Pichugin Date: Wed, 22 Apr 2026 21:50:52 -0700 Subject: [PATCH] Revert "Package python-ldap with pyproject.toml (#589)" This reverts commit f49bb2dd2234f25404ad1679786de007444ce219. --- .coveragerc | 27 +++++++++ .gitignore | 2 + Doc/installing.rst | 30 +++------- Doc/spelling_wordlist.txt | 4 -- INSTALL | 3 +- MANIFEST.in | 2 +- Makefile | 1 + pyproject.toml | 112 ++------------------------------------ setup.py | 77 ++++++++++++++++++++++++-- tox.ini | 1 - 10 files changed, 120 insertions(+), 139 deletions(-) create mode 100644 .coveragerc diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..738d86f --- /dev/null +++ b/.coveragerc @@ -0,0 +1,27 @@ +[run] +branch = True +source = + ldap + ldif + ldapurl + slapdtest + +[paths] +source = + Lib/ + .tox/*/lib/python*/site-packages/ + +[report] +ignore_errors = False +precision = 1 +exclude_lines = + pragma: no cover + raise NotImplementedError + if 0: + if __name__ == .__main__.: + if PY2 + if not PY2 + +[html] +directory = build/htmlcov +title = python-ldap coverage report diff --git a/.gitignore b/.gitignore index 75a1353..bab2187 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ *.pyc __pycache__/ .tox +.coverage* +!.coveragerc /.cache /.pytest_cache diff --git a/Doc/installing.rst b/Doc/installing.rst index 1c7ec8c..03e7a29 100644 --- a/Doc/installing.rst +++ b/Doc/installing.rst @@ -76,23 +76,12 @@ The CVS repository of FreeBSD contains the package macOS ----- -You can install directly with pip. First install Xcode command line tools:: +You can install directly with pip:: $ xcode-select --install - -Then install python-ldap:: - - $ pip install python-ldap - -For custom installations, you may need to set environment variables:: - - $ export CPPFLAGS="-I$(xcrun --show-sdk-path)/usr/include/sasl" - $ pip install python-ldap - -If using Homebrew:: - - $ brew install openldap - $ pip install python-ldap + $ pip install python-ldap \ + --global-option=build_ext \ + --global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl" .. _install-source: @@ -101,14 +90,11 @@ Installing from Source ====================== -python-ldap is built and installed using modern Python packaging standards -with pyproject.toml configuration. From a source repository:: - - $ pip install . - -For development installation with editable mode:: +python-ldap is built and installed using the Python setuptools. +From a source repository:: - $ pip install -e . + $ python -m pip install setuptools + $ python setup.py install If you have more than one Python interpreter installed locally, you should use the same one you plan to use python-ldap with. diff --git a/Doc/spelling_wordlist.txt b/Doc/spelling_wordlist.txt index 42a8540..8cdd9f1 100644 --- a/Doc/spelling_wordlist.txt +++ b/Doc/spelling_wordlist.txt @@ -60,7 +60,6 @@ func Gohlke GPG Heimdal -Homebrew hostport hrefTarget hrefText @@ -108,7 +107,6 @@ previousDN processResultsCount Proxied py -pyproject pytest rdn readthedocs @@ -149,7 +147,6 @@ syncrepl syntaxes timelimit TLS -toml tracebacks tuple tuples @@ -166,6 +163,5 @@ userPassword usr uuids Valgrind -Xcode whitespace workflow diff --git a/INSTALL b/INSTALL index 224df4a..b9b13d2 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,8 @@ Quick build instructions: edit setup.cfg (see Build/ for platform-specific examples) - pip install . + python setup.py build + python setup.py install Detailed instructions are in Doc/installing.rst, or online at: diff --git a/MANIFEST.in b/MANIFEST.in index bedea8d..687d2b0 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,5 @@ include MANIFEST.in Makefile CHANGES INSTALL LICENCE README TODO -include tox.ini +include tox.ini .coveragerc include Modules/*.c Modules/*.h recursive-include Build *.cfg* recursive-include Lib *.py diff --git a/Makefile b/Makefile index 2c8efdb..577ba88 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ Modules/constants_generated.h: Lib/ldap/constants.py .PHONY: clean clean: rm -rf build dist *.egg-info .tox MANIFEST + rm -f .coverage .coverage.* find . \( -name '*.py[co]' -or -name '*.so*' -or -name '*.dylib' \) \ -delete find . -depth -name __pycache__ -exec rm -rf {} \; diff --git a/pyproject.toml b/pyproject.toml index 8781155..dda8dbc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,108 +1,8 @@ -[build-system] -requires = [ - "setuptools", - "setuptools-scm", -] -build-backend = "setuptools.build_meta" - -[project] -name = "python-ldap" -license.text = "python-ldap" # Replace with 'license' once Python 3.8 is dropped -dynamic = ["version"] -description = "Python modules for implementing LDAP clients" -authors = [ - {name = "python-ldap project", email = "python-ldap@python.org"}, -] -readme = "README" -requires-python = ">=3.6" -keywords = ["ldap", "directory", "authentication"] -classifiers = [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "Intended Audience :: System Administrators", - "Operating System :: OS Independent", - "Operating System :: MacOS :: MacOS X", - "Operating System :: Microsoft :: Windows", - "Operating System :: POSIX", - "Programming Language :: C", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "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", - "Topic :: Database", - "Topic :: Internet", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP", - "License :: OSI Approved :: Python Software Foundation License", -] -dependencies = [ - "pyasn1 >= 0.3.7", - "pyasn1_modules >= 0.1.5", -] - -[project.urls] -Homepage = "https://www.python-ldap.org/" -Documentation = "https://python-ldap.readthedocs.io/" -Repository = "https://github.com/python-ldap/python-ldap" -Download = "https://pypi.org/project/python-ldap/" -Changelog = "https://github.com/python-ldap/python-ldap/blob/main/CHANGES" - - - -[tool.setuptools] -zip-safe = false -include-package-data = true -license-files = ["LICENCE", "LICENCE.MIT"] -# Explicitly list all Python modules -py-modules = ["ldapurl", "ldif"] - -[tool.setuptools.dynamic] -version = {attr = "ldap.pkginfo.__version__"} - -[tool.setuptools.packages.find] -where = ["Lib"] - -[tool.setuptools.package-dir] -"" = "Lib" +[tool.black] +line-length = 88 +target-version = ['py36', 'py37', 'py38'] [tool.isort] -line_length = 88 -known_first_party = ["ldap", "_ldap", "ldapurl", "ldif", "slapdtest"] -sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"] - -[tool.coverage.run] -branch = true -source = [ - "ldap", - "ldif", - "ldapurl", - "slapdtest", -] - -[tool.coverage.paths] -source = [ - "Lib/", - ".tox/*/lib/python*/site-packages/", -] - -[tool.coverage.report] -ignore_errors = false -precision = 1 -exclude_lines = [ - "pragma: no cover", - "raise NotImplementedError", - "if 0:", - "if __name__ == .__main__.:", - "if PY2", - "if not PY2", -] - -[tool.coverage.html] -directory = "build/htmlcov" -title = "python-ldap coverage report" +line_length=88 +known_first_party=['ldap', '_ldap', 'ldapurl', 'ldif', 'slapdtest'] +sections=['FUTURE', 'STDLIB', 'THIRDPARTY', 'FIRSTPARTY', 'LOCALFOLDER'] diff --git a/setup.py b/setup.py index 9ad6996..ad9d93b 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,7 @@ """ -setup.py - C extension module configuration for python-ldap +setup.py - Setup package with the help Python's DistUtils See https://www.python-ldap.org/ for details. -This file handles only the C extension modules (_ldap) configuration, -while pyproject.toml handles all project metadata, dependencies, and other settings. """ import sys,os @@ -56,8 +54,55 @@ if os.environ.get('WITH_GCOV'): LDAP_CLASS.extra_link_args.append('-pg') LDAP_CLASS.libs.append('gcov') -#-- C extension modules configuration only +#-- Let distutils/setuptools do the rest +name = 'python-ldap' + setup( + #-- Package description + name = name, + license=pkginfo.__license__, + version=pkginfo.__version__, + description = 'Python modules for implementing LDAP clients', + long_description = """python-ldap: + python-ldap provides an object-oriented API to access LDAP directory servers + from Python programs. Mainly it wraps the OpenLDAP 2.x libs for that purpose. + Additionally the package contains modules for other LDAP-related stuff + (e.g. processing LDIF, LDAPURLs, LDAPv3 schema, LDAPv3 extended operations + and controls, etc.). + """, + author = 'python-ldap project', + author_email = 'python-ldap@python.org', + url = 'https://www.python-ldap.org/', + download_url = 'https://pypi.org/project/python-ldap/', + classifiers = [ + 'Development Status :: 5 - Production/Stable', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'Operating System :: OS Independent', + 'Operating System :: MacOS :: MacOS X', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: POSIX', + 'Programming Language :: C', + + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + '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', + # Note: when updating Python versions, also change tox.ini and .github/workflows/* + + 'Topic :: Database', + 'Topic :: Internet', + 'Topic :: Software Development :: Libraries :: Python Modules', + 'Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP', + 'License :: OSI Approved :: Python Software Foundation License', + ], + #-- C extension modules ext_modules = [ Extension( '_ldap', @@ -100,4 +145,28 @@ setup( ] ), ], + #-- Python "stand alone" modules + py_modules = [ + 'ldapurl', + 'ldif', + + ], + packages = [ + 'ldap', + 'ldap.controls', + 'ldap.extop', + 'ldap.schema', + 'slapdtest', + 'slapdtest.certs', + ], + package_dir = {'': 'Lib',}, + data_files = LDAP_CLASS.extra_files, + include_package_data=True, + install_requires=[ + 'pyasn1 >= 0.3.7', + 'pyasn1_modules >= 0.1.5', + ], + zip_safe=False, + python_requires='>=3.6', + test_suite = 'Tests', ) diff --git a/tox.ini b/tox.ini index d0cc0ad..d442cd2 100644 --- a/tox.ini +++ b/tox.ini @@ -34,7 +34,6 @@ commands = {envpython} -bb -Werror \ setenv = CFLAGS=-Wno-int-in-bool-context -Werror -std=c99 - [testenv:py3-nosasltls] basepython = python3 # don't install, install dependencies manually -- 2.52.0