Skip to content

Package python-ldap with pyproject.toml #589

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions .coveragerc

This file was deleted.

34 changes: 26 additions & 8 deletions Doc/installing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,23 @@ The CVS repository of FreeBSD contains the package
macOS
-----

You can install directly with pip::
You can install directly with pip. First install Xcode command line tools::

$ xcode-select --install
$ pip install python-ldap \
--global-option=build_ext \
--global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl"

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


.. _install-source:
Expand All @@ -90,11 +101,18 @@ Installing from Source
======================


python-ldap is built and installed using the Python setuptools.
From a source repository::
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::

$ pip install -e .

With optional development dependencies::

$ python -m pip install setuptools
$ python setup.py install
$ pip install -e .[dev,doc]

If you have more than one Python interpreter installed locally, you should
use the same one you plan to use python-ldap with.
Expand Down
4 changes: 2 additions & 2 deletions INSTALL
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Quick build instructions:

edit setup.cfg (see Build/ for platform-specific examples)
python setup.py build
python setup.py install
python -m build
pip install .

Detailed instructions are in Doc/installing.rst, or online at:

Expand Down
159 changes: 156 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,157 @@
[build-system]
requires = [
"setuptools>=61.0",
"wheel",
"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"
# TODO: Make sure we have the info displayed correctly
# 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.).
# """
authors = [
{name = "python-ldap project", email = "python-ldap@python.org"},
]
readme = "README.rst"
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"

[project.optional-dependencies]
dev = [
"tox",
"pytest",
"coverage",
"black",
"isort",
]
doc = [
"docutils",
"markdown",
"sphinx",
"sphinxcontrib-spelling",
]

[tool.setuptools]
zip-safe = false
include-package-data = true
license-files = ["LICENCE", "LICENCE.MIT"]

[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', 'py39', 'py310', 'py311', 'py312']
extend-exclude = '''
/(
\.eggs
| \.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
| Modules
)/
'''

[tool.isort]
line_length=88
known_first_party=['ldap', '_ldap', 'ldapurl', 'ldif', 'slapdtest']
sections=['FUTURE', 'STDLIB', 'THIRDPARTY', 'FIRSTPARTY', 'LOCALFOLDER']
profile = "black"
line_length = 88
known_first_party = ["ldap", "_ldap", "ldapurl", "ldif", "slapdtest"]
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
skip_glob = ["Modules/*"]

[tool.pytest.ini_options]
testpaths = ["Tests"]
python_files = ["t_*.py"]
filterwarnings = [
"error",
"ignore::ldap.LDAPBytesWarning",
]

[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"
74 changes: 4 additions & 70 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
"""
setup.py - Setup package with the help Python's DistUtils
setup.py - C extension module configuration for python-ldap

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
Expand Down Expand Up @@ -54,52 +56,8 @@ class OpenLDAP2:
LDAP_CLASS.extra_link_args.append('-pg')
LDAP_CLASS.libs.append('gcov')

#-- Let distutils/setuptools do the rest
name = 'python-ldap'

#-- C extension modules configuration only
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.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',
Expand Down Expand Up @@ -135,28 +93,4 @@ class OpenLDAP2:
]
),
],
#-- 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.9',
test_suite = 'Tests',
)
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy