A Python port of the Invisible Internet Project (I2P)
1[build-system]
2requires = [
3 "hatchling",
4]
5build-backend = "hatchling.build"
6
7[project]
8name = "i2p-python"
9version = "0.1.0"
10description = "Complete I2P anonymous network implementation in Python"
11requires-python = ">=3.11"
12authors = [
13 { name = "bimo.studio", email = "hello@bimo.studio" },
14]
15readme = "README.md"
16classifiers = [
17 "Development Status :: 3 - Alpha",
18 "Programming Language :: Python :: 3",
19 "Programming Language :: Python :: 3.11",
20 "License :: OSI Approved :: MIT License",
21 "Topic :: Internet",
22 "Topic :: Security :: Cryptography",
23]
24dependencies = [
25 "cryptography>=41.0",
26 "pynacl>=1.5.0",
27 "flask>=3.0",
28]
29
30[project.license]
31text = "MIT"
32
33[project.urls]
34Homepage = "https://i2p-python.github.io/i2p-python"
35Repository = "https://github.com/Bimo-Studio/i2p-python"
36Changelog = "https://github.com/Bimo-Studio/i2p-python/blob/main/CHANGELOG.md"
37
38[project.scripts]
39i2p-router = "i2p_router.__main__:main"
40i2p-sam = "i2p_sam.__main__:main"
41i2p-tunnel = "i2p_apps.i2ptunnel.cli:main"
42i2p-router-gui = "i2p_apps.desktop.runner:main"
43
44[project.optional-dependencies]
45dev = [
46 "pytest>=7.4",
47 "pytest-cov>=5.0",
48 "pytest-timeout>=2.2",
49 "pytest-asyncio>=0.23",
50 "mypy>=1.10",
51]
52pqc = [
53 "pqcrypto>=0.1.0",
54]
55gui = [
56 "pystray>=0.19",
57]
58security = [
59 "bandit>=1.7.7",
60 "pip-audit>=2.7.0",
61]
62
63[tool.hatch.build.targets.wheel]
64packages = [
65 "src/i2p_time",
66 "src/i2p_stat",
67 "src/i2p_kademlia",
68 "src/i2p_util",
69 "src/i2p_crypto",
70 "src/i2p_data",
71 "src/i2p_client",
72 "src/i2p_streaming",
73 "src/i2p_transport",
74 "src/i2p_tunnel",
75 "src/i2p_netdb",
76 "src/i2p_peer",
77 "src/i2p_router",
78 "src/i2p_sam",
79 "src/i2p_apps",
80]
81
82[tool.pytest.ini_options]
83testpaths = [
84 "tests",
85]
86pythonpath = [
87 "src",
88]
89asyncio_mode = "auto"
90filterwarnings = []
91
92[tool.mypy]
93python_version = "3.11"
94mypy_path = "src"
95explicit_package_bases = true
96ignore_missing_imports = true
97warn_unused_configs = true
98warn_redundant_casts = true
99
100[tool.semantic_release]
101version_toml = [
102 "pyproject.toml:project.version",
103]
104branch = "main"
105commit_message = "chore(release): {version}"
106build_command = ""
107upload_to_vcs_release = true
108major_on_zero = false
109allow_zero_version = true
110
111[tool.semantic_release.remote]
112type = "github"
113domain = "github.com"
114
115[tool.semantic_release.changelog.default_templates]
116changelog_file = "CHANGELOG.md"
117
118[tool.semantic_release.commit_parser_options]
119minor_tags = [
120 "feat",
121]
122patch_tags = [
123 "fix",
124 "perf",
125]