-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
168 lines (153 loc) · 5.09 KB
/
Copy pathpyproject.toml
File metadata and controls
168 lines (153 loc) · 5.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "logquill"
version = "1.0.0"
description = "A structured, leveled logging framework with pluggable transports and a plugin pipeline."
readme = "README.md"
license = "MIT"
requires-python = ">=3.10"
authors = [{ name = "Nikhil Arora" }]
keywords = [
"logging",
"structured-logging",
"logger",
"observability",
"json-logging",
"async-logging",
"transports",
"plugins",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Logging",
"Typing :: Typed",
]
dependencies = []
[project.optional-dependencies]
http = ["aiohttp>=3.9"]
apprise = ["apprise>=1.8"]
otel = [
"opentelemetry-api>=1.39",
"opentelemetry-sdk>=1.39",
"opentelemetry-exporter-otlp-proto-http>=1.39",
]
postgres = ["psycopg2-binary>=2.9"]
mysql = ["pymysql>=1.1"]
mongodb = ["pymongo>=4.6"]
redis = ["redis>=5.0"]
kafka = ["kafka-python>=2.0"]
rabbitmq = ["pika>=1.3"]
pubsub = ["google-cloud-pubsub>=2.21"]
gcp-logging = ["google-cloud-logging>=3.10"]
aws = ["boto3>=1.34"]
presidio = ["presidio-analyzer>=2.2", "presidio-anonymizer>=2.2"]
crypto = ["cryptography>=41"]
langchain = ["langchain-core>=0.3"]
langgraph = ["langgraph>=1.0"]
crewai = ["crewai>=1.0"]
llamaindex = ["llama-index-core>=0.12"]
autogen = ["autogen-core>=0.6"]
yaml = ["PyYAML>=6.0"]
dev = [
"ruff>=0.6",
"mypy>=1.11",
"pytest>=8.0",
"pytest-asyncio>=0.24",
"pytest-cov>=5.0",
"hypothesis>=6.100",
"jsonschema>=4.18",
"build>=1.2",
"twine>=5.1",
]
hooks = [
# Separate from "dev": only needed locally, not in CI.
"pre-commit>=3.7",
]
docs = [
# Renders the API reference published to GitHub Pages; not needed to
# use or develop logquill itself.
"pdoc>=16",
]
[project.scripts]
logquill = "logquill.cli:main"
[project.urls]
Homepage = "https://github.com/nikhilvdev/logquill-python"
Repository = "https://github.com/nikhilvdev/logquill-python"
Changelog = "https://github.com/nikhilvdev/logquill-python/blob/main/CHANGELOG.md"
Issues = "https://github.com/nikhilvdev/logquill-python/issues"
[tool.hatch.build.targets.wheel]
packages = ["logquill"]
[tool.hatch.build.targets.sdist]
# Explicit allowlist rather than an exclude list: keeps the sdist limited
# to what the package actually needs regardless of what local, untracked
# tool/editor state happens to sit in the working tree at build time.
include = [
"/logquill",
"/tests",
"/benchmarks",
"/schema",
"/README.md",
"/CHANGELOG.md",
"/MIGRATING.md",
"/CODE_OF_CONDUCT.md",
"/CONTRIBUTING.md",
"/LICENSE",
"/pyproject.toml",
]
[tool.ruff]
line-length = 100
target-version = "py310"
[tool.ruff.lint.per-file-ignores]
# Test fixtures read better as one record per line than wrapped to 100 columns.
"tests/**" = ["E501"]
[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP", "B", "C4", "SIM"]
# Importing `Callable`/`Sequence`/... from `typing` still works and is used
# throughout; moving them to `collections.abc` is churn with no behavior change.
# UP038 (`isinstance(x, (A, B))` -> `A | B`) is slower and has been dropped from
# newer ruff releases.
ignore = ["UP035", "UP038"]
[tool.mypy]
strict = true
python_version = "3.10"
files = ["logquill"]
# `cryptography` (optional, lazily imported for `FileTransport(encrypt_key=...)`)
# is never a direct dev dependency, but `twine` -> `keyring` -> `SecretStorage`
# pulls it in transitively on Linux only (`SecretStorage` is a Linux-only
# keyring backend) — so CI (ubuntu-latest) sees it as genuinely importable and
# flags the `# type: ignore[import-not-found]` as unused, while it's genuinely
# absent (and the ignore genuinely needed) on macOS/Windows. The import's
# resolvability is platform-dependent through no fault of this module, so
# `warn_unused_ignores` is disabled here specifically rather than project-wide.
[[tool.mypy.overrides]]
module = "logquill.transports.file_transport"
warn_unused_ignores = false
# `apprise` and `aiohttp` are optional dependencies that a bare type-check
# environment (the pre-commit hook) doesn't install, so their imports have to
# resolve the same way whether or not they're present.
[[tool.mypy.overrides]]
module = ["apprise", "aiohttp"]
ignore_missing_imports = true
# OpenTelemetry is optional too, and is imported lazily; treating it as untyped
# keeps `mypy --strict` giving the same answer with or without it installed.
[[tool.mypy.overrides]]
module = ["opentelemetry", "opentelemetry.*"]
ignore_missing_imports = true
follow_imports = "skip"
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
[tool.coverage.run]
source = ["logquill"]