Skip to content

Commit 4332374

Browse files
committed
chore(release): finalize beta packaging metadata, PyPI README links, and v2.0.0b1 notes
1 parent 1aab58c commit 4332374

3 files changed

Lines changed: 33 additions & 27 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ Major upgrade: CodeClone evolves from a structural clone detector into a
2929
### Detection Quality
3030

3131
- Conservative dead-code detector: skips tests, dunders, visitors, protocol stubs.
32+
- Module-level PEP 562 hooks (`__getattr__`, `__dir__`) are treated as non-actionable dead-code candidates.
3233
- Exact qualname-based liveness with import-alias resolution.
33-
- Inline suppressions: `# codeclone: ignore[dead-code]` on declarations.
34+
- Canonical inline suppression syntax: `# codeclone: ignore[dead-code]` on declarations.
3435
- Structural finding families: `duplicated_branches`, `clone_guard_exit_divergence`, `clone_cohort_drift`.
3536

3637
### Configuration and CLI
@@ -70,6 +71,13 @@ Major upgrade: CodeClone evolves from a structural clone detector into a
7071

7172
- MkDocs site with Material theme and GitHub Pages workflow.
7273
- Live sample reports (HTML, JSON, SARIF).
74+
- PyPI-facing README now uses published docs URLs instead of repo-relative doc links.
75+
76+
### Packaging
77+
78+
- Package metadata stays explicitly beta (`2.0.0b1`, `Development Status :: 4 - Beta`).
79+
- `pyproject.toml` moved to SPDX-style `license = "MIT"` and `project.license-files`
80+
for modern setuptools builds without release-time deprecation warnings.
7381

7482
### Stability
7583

README.md

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<p align="center">
2-
<img src="docs/assets/codeclone-wordmark.svg" alt="CodeClone" height="60">
2+
<img src="https://orenlab.github.io/codeclone/assets/codeclone-wordmark.svg" alt="CodeClone" height="60">
33
</p>
44

55
<p align="center">
@@ -12,8 +12,8 @@
1212
<a href="https://github.com/orenlab/codeclone/actions/workflows/tests.yml"><img src="https://github.com/orenlab/codeclone/actions/workflows/tests.yml/badge.svg?branch=main&style=flat-square" alt="Tests"></a>
1313
<a href="https://github.com/orenlab/codeclone/actions/workflows/benchmark.yml"><img src="https://github.com/orenlab/codeclone/actions/workflows/benchmark.yml/badge.svg?style=flat-square" alt="Benchmark"></a>
1414
<a href="https://pypi.org/project/codeclone/"><img src="https://img.shields.io/pypi/pyversions/codeclone.svg?style=flat-square" alt="Python"></a>
15-
<img src="https://img.shields.io/badge/codeclone-78%20(B)-green" alt="codeclone 78 (B)">
16-
<a href="LICENSE"><img src="https://img.shields.io/pypi/l/codeclone.svg?style=flat-square" alt="License"></a>
15+
<a href="https://github.com/orenlab/codeclone"><img src="https://img.shields.io/badge/codeclone-81%20(B)-green" alt="codeclone 81 (B)"></a>
16+
<a href="https://github.com/orenlab/codeclone/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/codeclone.svg?style=flat-square" alt="License"></a>
1717
</p>
1818

1919
---
@@ -134,7 +134,7 @@ Baselines capture the current duplication state. Once committed, they become the
134134
- Trust is verified via `generator`, `fingerprint_version`, and `payload_sha256`
135135
- In `--ci` mode, an untrusted baseline is a contract error (exit 2)
136136

137-
Full contract: [`docs/book/06-baseline.md`](docs/book/06-baseline.md)
137+
Full contract: [Baseline contract](https://orenlab.github.io/codeclone/book/06-baseline/)
138138

139139
## Exit Codes
140140

@@ -280,8 +280,8 @@ Dynamic/runtime false positives are resolved via explicit inline suppressions, n
280280
}
281281
```
282282

283-
Canonical contract: [`docs/book/08-report.md`](docs/book/08-report.md) and [
284-
`docs/book/16-dead-code-contract.md`](docs/book/16-dead-code-contract.md)
283+
Canonical contract: [Report contract](https://orenlab.github.io/codeclone/book/08-report/) and
284+
[Dead-code contract](https://orenlab.github.io/codeclone/book/16-dead-code-contract/)
285285

286286
</details>
287287

@@ -295,22 +295,23 @@ Canonical contract: [`docs/book/08-report.md`](docs/book/08-report.md) and [
295295
6. **Metrics** — complexity, coupling, cohesion, dependencies, dead code, health
296296
7. **Gate** — baseline comparison, threshold checks
297297

298-
Architecture: [`docs/architecture.md`](docs/architecture.md) · CFG semantics: [`docs/cfg.md`](docs/cfg.md)
298+
Architecture: [Architecture narrative](https://orenlab.github.io/codeclone/architecture/) ·
299+
CFG semantics: [CFG semantics](https://orenlab.github.io/codeclone/cfg/)
299300

300301
## Documentation
301302

302-
| Topic | Link |
303-
|----------------------------|------------------------------------------------------------------------------------------|
304-
| Contract book (start here) | [`docs/book/00-intro.md`](docs/book/00-intro.md) |
305-
| Exit codes | [`docs/book/03-contracts-exit-codes.md`](docs/book/03-contracts-exit-codes.md) |
306-
| Configuration | [`docs/book/04-config-and-defaults.md`](docs/book/04-config-and-defaults.md) |
307-
| Baseline contract | [`docs/book/06-baseline.md`](docs/book/06-baseline.md) |
308-
| Cache contract | [`docs/book/07-cache.md`](docs/book/07-cache.md) |
309-
| Report contract | [`docs/book/08-report.md`](docs/book/08-report.md) |
310-
| Metrics & quality gates | [`docs/book/15-metrics-and-quality-gates.md`](docs/book/15-metrics-and-quality-gates.md) |
311-
| Dead code | [`docs/book/16-dead-code-contract.md`](docs/book/16-dead-code-contract.md) |
312-
| Docker benchmark contract | [`docs/book/18-benchmarking.md`](docs/book/18-benchmarking.md) |
313-
| Determinism | [`docs/book/12-determinism.md`](docs/book/12-determinism.md) |
303+
| Topic | Link |
304+
|----------------------------|----------------------------------------------------------------------------------------------------|
305+
| Contract book (start here) | [Contracts and guarantees](https://orenlab.github.io/codeclone/book/00-intro/) |
306+
| Exit codes | [Exit codes and failure policy](https://orenlab.github.io/codeclone/book/03-contracts-exit-codes/) |
307+
| Configuration | [Config and defaults](https://orenlab.github.io/codeclone/book/04-config-and-defaults/) |
308+
| Baseline contract | [Baseline contract](https://orenlab.github.io/codeclone/book/06-baseline/) |
309+
| Cache contract | [Cache contract](https://orenlab.github.io/codeclone/book/07-cache/) |
310+
| Report contract | [Report contract](https://orenlab.github.io/codeclone/book/08-report/) |
311+
| Metrics & quality gates | [Metrics and quality gates](https://orenlab.github.io/codeclone/book/15-metrics-and-quality-gates/) |
312+
| Dead code | [Dead-code contract](https://orenlab.github.io/codeclone/book/16-dead-code-contract/) |
313+
| Docker benchmark contract | [Benchmarking contract](https://orenlab.github.io/codeclone/book/18-benchmarking/) |
314+
| Determinism | [Determinism policy](https://orenlab.github.io/codeclone/book/12-determinism/) |
314315

315316
## * Benchmarking
316317

@@ -332,7 +333,7 @@ CPUSET=0 CPUS=1.0 MEMORY=2g RUNS=16 WARMUPS=4 \
332333
```
333334

334335
Performance claims are backed by the reproducible benchmark workflow documented
335-
in [docs/book/18-benchmarking.md](docs/book/18-benchmarking.md)
336+
in [Benchmarking contract](https://orenlab.github.io/codeclone/book/18-benchmarking/)
336337

337338
</details>
338339

pyproject.toml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
[build-system]
2-
requires = ["setuptools>=61.0", "wheel"]
2+
requires = ["setuptools>=77.0.0", "wheel"]
33
build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "codeclone"
77
version = "2.0.0b1"
88
description = "Structural code quality analysis for Python"
99
readme = { file = "README.md", content-type = "text/markdown" }
10-
license = { text = "MIT" }
10+
license = "MIT"
11+
license-files = ["LICENSE"]
1112

1213
authors = [
1314
{ name = "Den Rozhnovskiy", email = "pytelemonbot@mail.ru" }
@@ -42,17 +43,14 @@ classifiers = [
4243
"Topic :: Software Development :: Quality Assurance",
4344
"Topic :: Software Development :: Testing",
4445
"Typing :: Typed",
45-
"License :: OSI Approved :: MIT License",
4646
"Programming Language :: Python :: 3",
4747
"Programming Language :: Python :: 3.10",
4848
"Programming Language :: Python :: 3.11",
4949
"Programming Language :: Python :: 3.12",
5050
"Programming Language :: Python :: 3.13",
5151
"Programming Language :: Python :: 3.14",
5252
"Operating System :: OS Independent",
53-
"Topic :: Software Development :: Quality Assurance",
5453
"Topic :: Software Development :: Libraries :: Python Modules",
55-
"Topic :: Software Development :: Testing",
5654
]
5755

5856
[project.urls]
@@ -85,7 +83,6 @@ packages = [
8583
"codeclone.metrics",
8684
"codeclone.report",
8785
]
88-
license-files = ["LICENSE"]
8986

9087
[tool.setuptools.package-data]
9188
codeclone = ["py.typed"]

0 commit comments

Comments
 (0)