Skip to content

Commit 42f4487

Browse files
authored
Introduced pyproject.toml and moved static metadata from setup.py (#1592)
Introduced pyproject.toml and moved static metadata from setup.py
1 parent e17f6e2 commit 42f4487

37 files changed

+149
-169
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
v2.6.1 is a maintenance release with the following fixes and enhancements:
66

7+
- Migrated build system from `setup.py` to `pyproject.toml` in accordance with `PEP 517` and `PEP 518`, improving project configuration, build system requirements management, and compatibility with modern Python packaging tools like `pip` and `build`.
78
- Added an example for OAUTH OIDC producer with support for confluent cloud (#1769, @sarwarbhuiyan)
89

910
confluent-kafka-python is based on librdkafka v2.6.1, see the

DEVELOPER.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ This document provides information useful to developers working on confluent-kaf
55

66
## Build
77

8-
$ python setup.py build
8+
$ python -m build
99

1010
If librdkafka is installed in a non-standard location provide the include and library directories with:
1111

12-
$ C_INCLUDE_PATH=/path/to/include LIBRARY_PATH=/path/to/lib python setup.py ...
12+
$ C_INCLUDE_PATH=/path/to/include LIBRARY_PATH=/path/to/lib python -m build
1313

1414
**Note**: On Windows the variables for Visual Studio are named INCLUDE and LIB
1515

1616
## Generate Documentation
1717

18-
Install sphinx and sphinx_rtd_theme packages:
18+
Install docs dependencies:
1919

20-
$ pip install sphinx sphinx_rtd_theme
20+
$ pip install .[docs]
2121

2222
Build HTML docs:
2323

File renamed without changes.

MANIFEST.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
include README.md
2-
include LICENSE.txt
3-
include test-requirements.txt
42
include src/confluent_kafka/src/*.[ch]
3+
prune tests
4+
prune docs

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ all:
55

66

77
clean:
8-
python setup.py clean
8+
pip cache purge
9+
rm -rf dist
910
make -C docs clean
1011

1112
.PHONY: docs

docs/conf.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,6 @@
1313
# serve to show the default.
1414

1515
import sphinx_rtd_theme
16-
import sys
17-
import os
18-
from glob import glob
19-
20-
# If extensions (or modules to document with autodoc) are in another directory,
21-
# add these directories to sys.path here. If the directory is relative to the
22-
# documentation root, use os.path.abspath to make it absolute, like shown here.
23-
sys.path[:0] = [os.path.abspath(x) for x in glob('../build/lib.*')]
2416

2517
# -- General configuration ------------------------------------------------
2618

examples/README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ To setup a venv with the latest release version of confluent-kafka and dependenc
3030
```
3131
$ python3 -m venv venv_examples
3232
$ source venv_examples/bin/activate
33-
$ cd examples
34-
$ pip install -r requirements.txt
33+
$ pip install confluent_kafka
34+
$ pip install -r requirements/requirements-examples.txt
3535
```
3636

3737
To setup a venv that uses the current source tree version of confluent_kafka, you
@@ -42,9 +42,7 @@ need to have a C compiler and librdkafka installed
4242
```
4343
$ python3 -m venv venv_examples
4444
$ source venv_examples/bin/activate
45-
$ python setup.py develop
46-
$ cd examples
47-
$ pip install -r requirements.txt
45+
$ pip install .[examples]
4846
```
4947

5048
When you're finished with the venv:

examples/docker/Dockerfile.alpine

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,10 @@ RUN \
7373
mkdir -p /usr/src/confluent-kafka-python && \
7474
cd /usr/src/confluent-kafka-python && \
7575
rm -rf build && \
76-
python3 setup.py clean -a && \
77-
python3 setup.py build && \
78-
python3 setup.py install && \
76+
rm -rf dist && \
77+
python3 -m pip install build \
78+
python3 -m build && \
79+
python3 -m pip install dist/confluent_kafka*whl && \
7980
cd / && \
8081
rm -rf /usr/src/confluent-kafka-python
8182

pyproject.toml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
[build-system]
2+
requires = [ "setuptools>=62", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "confluent-kafka"
7+
version = "2.6.0.post1.dev1"
8+
description = "Confluent's Python client for Apache Kafka"
9+
classifiers = [
10+
"Development Status :: 5 - Production/Stable",
11+
"Intended Audience :: Developers",
12+
"License :: OSI Approved :: Apache Software License",
13+
"Programming Language :: Python",
14+
"Programming Language :: Python :: 3",
15+
"Topic :: Software Development :: Libraries :: Python Modules"]
16+
readme = "README.md"
17+
license = { file = "LICENSE" }
18+
requires-python = ">=3.7"
19+
dynamic = ["dependencies", "optional-dependencies"]
20+
21+
[[project.authors]]
22+
name = "Confluent Inc."
23+
24+
25+
[project.urls]
26+
Homepage = "https://github.com/confluentinc/confluent-kafka-python"
27+
28+
[tool.setuptools]
29+
include-package-data = false
30+
31+
[tool.setuptools.dynamic]
32+
dependencies = {file = ["requirements/requirements.txt"]}
33+
optional-dependencies.schemaregistry = { file = ["requirements/requirements-schemaregistry.txt"] }
34+
optional-dependencies.avro = { file = ["requirements/requirements-avro.txt", "requirements/requirements-schemaregistry.txt"] }
35+
optional-dependencies.json = { file = ["requirements/requirements-json.txt", "requirements/requirements-schemaregistry.txt"] }
36+
optional-dependencies.protobuf = { file = ["requirements/requirements-protobuf.txt", "requirements/requirements-schemaregistry.txt"] }
37+
optional-dependencies.dev = { file = [
38+
"requirements/requirements-docs.txt",
39+
"requirements/requirements-examples.txt",
40+
"requirements/requirements-tests.txt",
41+
"requirements/requirements-schemaregistry.txt",
42+
"requirements/requirements-avro.txt",
43+
"requirements/requirements-json.txt",
44+
"requirements/requirements-protobuf.txt"] }
45+
optional-dependencies.docs = { file = [
46+
"requirements/requirements-docs.txt",
47+
"requirements/requirements-schemaregistry.txt",
48+
"requirements/requirements-avro.txt",
49+
"requirements/requirements-json.txt",
50+
"requirements/requirements-protobuf.txt"] }
51+
optional-dependencies.tests = { file = [
52+
"requirements/requirements-tests.txt",
53+
"requirements/requirements-schemaregistry.txt",
54+
"requirements/requirements-avro.txt",
55+
"requirements/requirements-json.txt",
56+
"requirements/requirements-protobuf.txt"] }
57+
optional-dependencies.examples = { file = ["requirements/requirements-examples.txt"] }
58+
optional-dependencies.soaktest = { file = ["requirements/requirements-soaktest.txt"] }
59+
optional-dependencies.all = { file = [
60+
"requirements/requirements-soaktest.txt",
61+
"requirements/requirements-docs.txt",
62+
"requirements/requirements-examples.txt",
63+
"requirements/requirements-tests.txt",
64+
"requirements/requirements-schemaregistry.txt",
65+
"requirements/requirements-avro.txt",
66+
"requirements/requirements-json.txt",
67+
"requirements/requirements-protobuf.txt"] }

requirements/requirements-all.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-r requirements.txt
2+
-r requirements-schemaregistry.txt
3+
-r requirements-avro.txt
4+
-r requirements-protobuf.txt
5+
-r requirements-json.txt
6+
-r requirements-examples.txt
7+
-r requirements-tests.txt
8+
-r requirements-docs.txt
9+
-r requirements-soaktest.txt

0 commit comments

Comments
 (0)