Skip to content

Commit b11142c

Browse files
authored
Prepare project metadata for PyPI publication (#8)
- Add LICENSE (MIT) with dual-author copyright - Add CHANGELOG.md in Keep-a-Changelog format - Add CONTRIBUTING.md with minimal contributor expectations - Add src/devol/py.typed marker for downstream type checkers - Fill in pyproject.toml project metadata (readme, license, license-files, authors, keywords, classifiers, urls) - Move pytest from required deps to the dev extra - Add docs/superpowers/ to .gitignore for local-only notes
1 parent 382645e commit b11142c

7 files changed

Lines changed: 122 additions & 5 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,3 +221,6 @@ __marimo__/
221221
data/
222222
mnist_checkpoints/
223223
benchmark_results/
224+
225+
# Local-only working notes (specs, brainstorming docs, etc.)
226+
docs/superpowers/

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
While on `0.x`, minor releases may include breaking changes. The public API is
9+
the set of symbols exported from `devol.__all__`; anything else is internal.
10+
11+
## [Unreleased]
12+
13+
### Added
14+
15+
- Project metadata for PyPI publication (license, authors, classifiers, URLs).
16+
- `LICENSE` file (MIT).
17+
- `py.typed` marker so downstream type checkers pick up `devol`'s inline hints.
18+
- `CONTRIBUTING.md` with minimum expectations for patches.
19+
- This changelog.
20+
21+
### Changed
22+
23+
- Moved `pytest` from required dependencies to the `dev` extra.
24+
25+
## [0.1.0]
26+
27+
Initial development version. Not yet released to PyPI.

CONTRIBUTING.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Contributing
2+
3+
Thanks for your interest in devol. This is a small project, so the process is light.
4+
5+
## Before you start
6+
7+
For anything non-trivial, open an issue first to discuss the change. Bug fixes, typo fixes, and small quality-of-life improvements can go straight to a PR.
8+
9+
## Development setup
10+
11+
```bash
12+
git clone https://github.com/LabStrangeLoop/devol.git
13+
cd devol
14+
uv sync --extra dev
15+
```
16+
17+
## Before you open a PR
18+
19+
Please make sure these all pass locally:
20+
21+
```bash
22+
uv run pytest
23+
uv run ruff check
24+
uv run ruff format --check
25+
uv run mypy src/
26+
```
27+
28+
## Pull requests
29+
30+
- One logical change per PR.
31+
- Include a short description of the "why" — what problem does this solve?
32+
- If you add behavior, add tests.
33+
- Add a line to `CHANGELOG.md` under `[Unreleased]` describing user-visible changes.
34+
35+
## Questions
36+
37+
Open an issue with the `question` label, or start a discussion. No wrong questions.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Dario Cazzani, Aleksandr Yeganov
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

pyproject.toml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,55 @@
22
name = "devol"
33
version = "0.1.0"
44
description = "Diffusion Evolution Algorithm - Evolution through iterative denoising"
5+
readme = "README.md"
6+
license = "MIT"
7+
license-files = ["LICENSE"]
58
requires-python = ">=3.11"
9+
authors = [
10+
{name = "Dario Cazzani", email = "dariocazzani@gmail.com"},
11+
{name = "Aleksandr Yeganov", email = "ayeganov@gmail.com"},
12+
]
13+
keywords = [
14+
"evolution",
15+
"optimization",
16+
"diffusion",
17+
"evolutionary-algorithms",
18+
"black-box-optimization",
19+
]
20+
classifiers = [
21+
"Development Status :: 3 - Alpha",
22+
"Intended Audience :: Science/Research",
23+
"Intended Audience :: Developers",
24+
"Programming Language :: Python :: 3",
25+
"Programming Language :: Python :: 3.11",
26+
"Programming Language :: Python :: 3.12",
27+
"Programming Language :: Python :: 3.13",
28+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
29+
"Operating System :: OS Independent",
30+
"Typing :: Typed",
31+
]
632
dependencies = [
733
"gymnasium[classic-control]>=1.2.1",
834
"matplotlib>=3.10.7",
935
"numpy>=1.26.0",
1036
"pydantic>=2.0.0",
1137
"pydantic-settings>=2.0.0",
1238
"pydantic-yaml>=1.6.0",
13-
"pytest>=8.4.2",
1439
"torch>=2.9.0",
1540
"torchvision>=0.24.0",
1641
]
1742

43+
[project.urls]
44+
Homepage = "https://github.com/LabStrangeLoop/devol"
45+
Repository = "https://github.com/LabStrangeLoop/devol"
46+
Issues = "https://github.com/LabStrangeLoop/devol/issues"
47+
Changelog = "https://github.com/LabStrangeLoop/devol/blob/main/CHANGELOG.md"
48+
1849
[project.optional-dependencies]
1950
dev = [
2051
"ruff>=0.1.0",
2152
"mypy>=1.7.0",
22-
"pytest>=7.0.0",
53+
"pytest>=8.0.0",
2354
]
2455
examples = [
2556
"matplotlib>=3.8.0",

src/devol/py.typed

Whitespace-only changes.

uv.lock

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)