roundlet 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ image: alpine/latest
5
+ secrets:
6
+ - 1caf0d15-6373-4eca-b33f-8ac10a759f9a
7
+ packages:
8
+ - curl
9
+ sources:
10
+ - https://git.sr.ht/~ppentchev/roundlet
11
+ tasks:
12
+ - trigger-webhook: |
13
+ ls -l ~/.config/secrets/roundlet-readthedocs-api-token.txt
14
+ set +x
15
+ curl -s -v -d "token=$(cat ~/.config/secrets/roundlet-readthedocs-api-token.txt)" 'https://app.readthedocs.org/api/v2/webhook/roundlet/319380/'
16
+ set -x
@@ -0,0 +1,35 @@
1
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ image: alpine/edge
5
+ repositories:
6
+ ringlet-edge: >
7
+ https://devel.ringlet.net/repo/alpine/ringlet/edge
8
+ https://devel.ringlet.net/repo/alpine/ringlet/edge/keys/roam@ringlet.net-6a32fb63.rsa.pub
9
+ roam@ringlet.net-6a32fb63.rsa.pub
10
+ packages:
11
+ - cargo
12
+ - cargo-feature-combinations
13
+ - cargo-nextest
14
+ - execline
15
+ - git
16
+ - jq
17
+ - musl-locales
18
+ - py3-tox
19
+ - rust-clippy
20
+ - rustfmt
21
+ - uv
22
+ sources:
23
+ - https://git.sr.ht/~ppentchev/roundlet
24
+ tasks:
25
+ - test-uvoxen: |
26
+ cd roundlet
27
+ uv venv ../venv-uvoxen
28
+ sh -c 'set -e; . ../venv-uvoxen/bin/activate; uv pip install uvoxen'
29
+ env UVOXEN="$PWD/../venv-uvoxen/bin/uvoxen" UV="$PWD/../venv-uvoxen/bin/uv" python/tests/run-uvoxen.sh
30
+ - test-tox: |
31
+ cd roundlet
32
+ tox run-parallel
33
+ - test-rust: |
34
+ cd roundlet
35
+ tools/rust/build-and-test
@@ -0,0 +1,35 @@
1
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ image: alpine/3.24
5
+ repositories:
6
+ ringlet-edge: >
7
+ https://devel.ringlet.net/repo/alpine/ringlet/edge
8
+ https://devel.ringlet.net/repo/alpine/ringlet/edge/keys/roam@ringlet.net-6a32fb63.rsa.pub
9
+ roam@ringlet.net-6a32fb63.rsa.pub
10
+ packages:
11
+ - cargo
12
+ - cargo-feature-combinations
13
+ - cargo-nextest
14
+ - execline
15
+ - git
16
+ - jq
17
+ - musl-locales
18
+ - py3-tox
19
+ - rust-clippy
20
+ - rustfmt
21
+ - uv
22
+ sources:
23
+ - https://git.sr.ht/~ppentchev/roundlet
24
+ tasks:
25
+ - test-uvoxen: |
26
+ cd roundlet
27
+ uv venv ../venv-uvoxen
28
+ sh -c 'set -e; . ../venv-uvoxen/bin/activate; uv pip install uvoxen'
29
+ env UVOXEN="$PWD/../venv-uvoxen/bin/uvoxen" UV="$PWD/../venv-uvoxen/bin/uv" python/tests/run-uvoxen.sh
30
+ - test-tox: |
31
+ cd roundlet
32
+ tox run-parallel
33
+ - test-rust: |
34
+ cd roundlet
35
+ tools/rust/build-and-test
@@ -0,0 +1,43 @@
1
+ # https://editorconfig.org/
2
+ #
3
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
4
+ # SPDX-License-Identifier: BSD-2-Clause
5
+
6
+ root = true
7
+
8
+ [*]
9
+ end_of_line = lf
10
+ insert_final_newline = true
11
+ charset = utf-8
12
+
13
+ [*.ini]
14
+ indent_style = space
15
+ indent_size = 2
16
+
17
+ [*.md]
18
+ indent_style = space
19
+ indent_size = 4
20
+
21
+ [*.py]
22
+ indent_style = space
23
+ indent_size = 4
24
+
25
+ [*.rs]
26
+ indent_style = space
27
+ indent_size = 4
28
+
29
+ [*.sh]
30
+ indent_style = tab
31
+ tab_width = 8
32
+
33
+ [*.toml]
34
+ indent_style = space
35
+ indent_size = 2
36
+
37
+ [*.yaml]
38
+ indent_style = space
39
+ indent_size = 4
40
+
41
+ [*.yml]
42
+ indent_style = space
43
+ indent_size = 4
@@ -0,0 +1,12 @@
1
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ **/__pycache__/
5
+ /.jj/
6
+ /.mypy_cache/
7
+ /.pytest_cache/
8
+ /.ruff_cache/
9
+ /.tox/
10
+ /.venv/
11
+ /site/
12
+ /target/
@@ -0,0 +1,17 @@
1
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ version: 2
5
+
6
+ build:
7
+ os: ubuntu-22.04
8
+ tools:
9
+ python: "3.12"
10
+ jobs:
11
+ build:
12
+ html:
13
+ - python3 -m venv --upgrade-deps .zensical-venv
14
+ - .zensical-venv/bin/python3 -m pip install -r python/requirements/docs.txt
15
+ - .zensical-venv/bin/zensical build
16
+ - mkdir -p $READTHEDOCS_OUTPUT/html/
17
+ - cp -r site/docs/* $READTHEDOCS_OUTPUT/html/
@@ -0,0 +1,9 @@
1
+ Copyright (c) <year> <owner>
2
+
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4
+
5
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6
+
7
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8
+
9
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,48 @@
1
+ Metadata-Version: 2.5
2
+ Name: roundlet
3
+ Version: 0.2.4
4
+ Summary: Random collection of helper libraries used by Ringlet software
5
+ License-Expression: BSD-2-Clause
6
+ License-File: LICENSES/BSD-2-Clause.txt
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3 :: Only
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Programming Language :: Python :: 3.15
18
+ Classifier: Programming Language :: Python :: 3.16
19
+ Classifier: Topic :: Software Development :: Libraries
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Classifier: Typing :: Typed
22
+ Requires-Python: >=3.11
23
+ Description-Content-Type: text/markdown
24
+
25
+ <!--
26
+ SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
27
+ SPDX-License-Identifier: BSD-2-Clause
28
+ -->
29
+
30
+ # roundlet - a random collection of helper libraries used by Ringlet software
31
+
32
+ \[[Home][ringlet-home] | [sourcehut][sourcehut] | [crates.io][crates-io] | [ReadTheDocs][readthedocs]\]
33
+
34
+ ## Overview
35
+
36
+ A couple of helper functions for Rust programs developed at Ringlet.
37
+
38
+ ## Contact
39
+
40
+ The `roundlet` library was written by [Peter Pentchev][roam].
41
+ It is developed in [a Sourcehut repository][sourcehut]. This documentation is
42
+ hosted at [Ringlet][ringlet-home] with a copy at [ReadTheDocs][readthedocs].
43
+
44
+ [roam]: mailto:roam@ringlet.net "Peter Pentchev"
45
+ [sourcehut]: https://git.sr.ht/~ppentchev/roundlet "The roundlet Sourcehut repository"
46
+ [crates-io]: https://crates.io/crates/roundlet "The roundlet crate on crates.io"
47
+ [readthedocs]: https://roundlet.readthedocs.io/ "The roundlet ReadTheDocs page"
48
+ [ringlet-home]: https://devel.ringlet.net/devel/roundlet/ "The Ringlet roundlet homepage"
@@ -0,0 +1,24 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
3
+ SPDX-License-Identifier: BSD-2-Clause
4
+ -->
5
+
6
+ # roundlet - a random collection of helper libraries used by Ringlet software
7
+
8
+ \[[Home][ringlet-home] | [sourcehut][sourcehut] | [crates.io][crates-io] | [ReadTheDocs][readthedocs]\]
9
+
10
+ ## Overview
11
+
12
+ A couple of helper functions for Rust programs developed at Ringlet.
13
+
14
+ ## Contact
15
+
16
+ The `roundlet` library was written by [Peter Pentchev][roam].
17
+ It is developed in [a Sourcehut repository][sourcehut]. This documentation is
18
+ hosted at [Ringlet][ringlet-home] with a copy at [ReadTheDocs][readthedocs].
19
+
20
+ [roam]: mailto:roam@ringlet.net "Peter Pentchev"
21
+ [sourcehut]: https://git.sr.ht/~ppentchev/roundlet "The roundlet Sourcehut repository"
22
+ [crates-io]: https://crates.io/crates/roundlet "The roundlet crate on crates.io"
23
+ [readthedocs]: https://roundlet.readthedocs.io/ "The roundlet ReadTheDocs page"
24
+ [ringlet-home]: https://devel.ringlet.net/devel/roundlet/ "The Ringlet roundlet homepage"
@@ -0,0 +1,16 @@
1
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ version = 1
5
+ SPDX-PackageName = "roundlet"
6
+ SPDX-PackageSupplier = "Peter Pentchev <roam@ringlet.net>"
7
+ SPDX-PackageDownloadLocation = "https://git.sr.ht/~ppentchev/roundlet"
8
+
9
+ [[annotations]]
10
+ path = [
11
+ "Cargo.lock",
12
+ "uv.lock",
13
+ ]
14
+ precedence = "aggregate"
15
+ SPDX-FileCopyrightText = "Peter Pentchev <roam@ringlet.net>"
16
+ SPDX-License-Identifier = "BSD-2-Clause"
@@ -0,0 +1,216 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
3
+ SPDX-License-Identifier: BSD-2-Clause
4
+ -->
5
+
6
+ # Changelog
7
+
8
+ All notable changes to the roundlet project will be documented in this file.
9
+
10
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
11
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
12
+
13
+ ## [Unreleased]
14
+
15
+ ## [0.2.4] - 2026-11-10
16
+
17
+ ### Fixes
18
+
19
+ - The `.gitignore` file:
20
+ - add some more Python linter dot-dirs
21
+ - Python implementation:
22
+ - tell `hatchling` exactly what to include in the sdist
23
+
24
+ ### Other changes
25
+
26
+ - Rust implementation:
27
+ - push the Rust source files down into `rust/`
28
+
29
+ ## [0.2.3] - 2026-11-10
30
+
31
+ ### Fixes
32
+
33
+ - The `.gitignore` file:
34
+ - add leading slashes
35
+ - add the `.jj/` directory so we don't accidentally ship the Jujutsu repo
36
+ - CI:
37
+ - explicitly specify `alpine/3.24` instead of `alpine/latest`
38
+
39
+ ### Additions
40
+
41
+ - Add an EditorConfig file.
42
+ - Python implementation:
43
+ - add a `roundlet` Python module:
44
+ - `cli_basic`: the `handle_basic_options()` function
45
+ - `env`: the `UTF8_VARS` dictionary with a caveat in the docstring
46
+ - `logging`: the `build_logger()` function
47
+ - Test suite:
48
+ - add `uvoxen` definitions for the `reuse` and `docs` test environments
49
+ - CI:
50
+ - add sourcehut CI definitions for `alpine/edge`
51
+
52
+ ### Other changes
53
+
54
+ - Rust implementation:
55
+ - move the helper tools to the `tools/rust/` directory and drop the `el-` prefix
56
+ - drop the recipe for creating a test container; the `sim-ci` tool can handle that
57
+
58
+ ## [0.2.2] - 2026-09-23
59
+
60
+ ### Additions
61
+
62
+ - cli-basic-clap:
63
+ - add a doctest for `handle_basic_options`
64
+ - env-utf8:
65
+ - add doctests for `c_utf8_vars` and `utf8_path`
66
+
67
+ ### Other changes
68
+
69
+ - test-exe-path:
70
+ - use our own `env::utf8_path` helper function
71
+ - test-temp-paths:
72
+ - use our own `env::utf8_path` helper function
73
+ - Test suite:
74
+ - minor formatting changes to the `el-build-and-test` tool
75
+
76
+ ## [0.2.1] - 2026-08-17
77
+
78
+ ### Fixes
79
+
80
+ - Test suite:
81
+ - use `/usr/bin/env` on the hasbang line of `el-run-clippy`
82
+ - make sure `charset-normalizer` is installed when running `reuse`
83
+
84
+ ### Additions
85
+
86
+ - env-utf8-path:
87
+ - new feature: add the `utf8_path()` and `utf8_pathbuf()` helpers for
88
+ the common task of converting `Path/PathBuf` to `Utf8Path/Utf8PathBuf` with
89
+ a sensible error message
90
+ - test-temp-paths:
91
+ - new feature: add the `Paths` and `CopyTo` structs for easier creation of
92
+ temporary directory trees during unit/integration testing
93
+ - Test suite:
94
+ - make sure `cargo test` can be run in the packaged crate
95
+ - sourcehut CI:
96
+ - run `el-build-and-test` instead of just `cargo nextest run`
97
+ - run `tox run-parallel` for the documentation and the `reuse` check
98
+
99
+ ### Other changes
100
+
101
+ - Documentation:
102
+ - switch from the unmaintained `mkdocs` to a pinned version of `zensical`
103
+
104
+ ## [0.2.0] - 2026-08-03
105
+
106
+ ### INCOMPATIBLE CHANGES
107
+
108
+ - test-exe-path:
109
+ - switch from `eyre` to `anyhow` for the returned errors
110
+
111
+ ### Fixes
112
+
113
+ - Drop the unneeded per-crate `README.md` files.
114
+
115
+ ## [0.1.5] - 2026-08-03
116
+
117
+ ### Fixes
118
+
119
+ - Cargo metadata:
120
+ - no longer declare `no-std` and `no-std::no-alloc` for the `roundlet` crate
121
+ - test-exe-path:
122
+ - handle the new build dir layout on nightly
123
+ - Test suite:
124
+ - drop `default` from the feature combinations's excluded list;
125
+ we don't even have such a feature
126
+
127
+ ### Additions
128
+
129
+ - cli-basic-clap:
130
+ - accept `IntoIterator` instead of `Iterator`
131
+
132
+ ### Other changes
133
+
134
+ - Cargo metadata:
135
+ - switch to workspace package definitions
136
+ - test-exe-path:
137
+ - fall back to the current executable's directory on any errors
138
+
139
+ ## [0.1.4] - 2026-07-20
140
+
141
+ ### Additions
142
+
143
+ - Point the `package.homepage` Cargo field to our Ringlet homepage.
144
+
145
+ ## [0.1.3] - 2026-07-20
146
+
147
+ ### Semi-incompatible changes
148
+
149
+ - Drop the `std` feature that was enabled by all of the other features;
150
+ everything we do depends on the standard library, so admit it.
151
+
152
+ ### Fixes
153
+
154
+ - Do not use the `bail` macro as an expression.
155
+ - Run `clippy` with all feature flags enabled to test all code paths.
156
+
157
+ ### Additions
158
+
159
+ - Add the `env-utf8` feature flag that enables the `env` module
160
+ containing the `c_utf8_vars()` and `c_utf8_add_vars()` functions.
161
+ They prepare an environment for running child processes in
162
+ a UTF-8-capable locale in a way that will work on most modern
163
+ systems.
164
+ If older systems that do not define the `C.UTF-8` locale need to
165
+ be supported, see the `utf8-locale` crate.
166
+
167
+ ### Other changes
168
+
169
+ - Drop the version suffixes for the crates we depend on.
170
+ If we ever need to support more than one version of a crate at
171
+ a time, we will deal with it then.
172
+ - Use workspace dependencies to avoid repetition.
173
+ - Explicitly mark the `test-roundlet-cmd` crate as unpublishable to
174
+ avoid mistakes.
175
+
176
+ ## [0.1.2] - 2026-07-11
177
+
178
+ ### Fixes
179
+
180
+ - Bump MSRV to 1.88 for `time` pulled in by `simple_logger`.
181
+ - Test suite:
182
+ - override Clippy's "inline modules" check
183
+
184
+ ### Other changes
185
+
186
+ - Allow `itertools` 0.15.x with no changes.
187
+ - sourcehut CI:
188
+ - install `cargo-feature-combinations` from the Ringlet edge repo
189
+
190
+ ## [0.1.1] - 2026-02-09
191
+
192
+ ### Fixes
193
+
194
+ - Documentation:
195
+ - add `README.md` files to the two crates
196
+ - correct an internal Markdown reference
197
+ - add some `docs.rs` configuration settings
198
+
199
+ ## [0.1.0] - 2026-02-09
200
+
201
+ ### Started
202
+
203
+ - First public release.
204
+
205
+ [Unreleased]: https://git.sr.ht/~ppentchev/roundlet
206
+ [0.2.4]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.2.4
207
+ [0.2.3]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.2.3
208
+ [0.2.2]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.2.2
209
+ [0.2.1]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.2.1
210
+ [0.2.0]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.2.0
211
+ [0.1.5]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.1.5
212
+ [0.1.4]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.1.4
213
+ [0.1.3]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.1.3
214
+ [0.1.2]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.1.2
215
+ [0.1.1]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.1.1
216
+ [0.1.0]: https://git.sr.ht/~ppentchev/roundlet/refs/release/0.1.0
@@ -0,0 +1,24 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
3
+ SPDX-License-Identifier: BSD-2-Clause
4
+ -->
5
+
6
+ # roundlet - a random collection of helper libraries used by Ringlet software
7
+
8
+ \[[Home][ringlet-home] | [sourcehut][sourcehut] | [crates.io][crates-io] | [ReadTheDocs][readthedocs]\]
9
+
10
+ ## Overview
11
+
12
+ A couple of helper functions for Rust programs developed at Ringlet.
13
+
14
+ ## Contact
15
+
16
+ The `roundlet` library was written by [Peter Pentchev][roam].
17
+ It is developed in [a Sourcehut repository][sourcehut]. This documentation is
18
+ hosted at [Ringlet][ringlet-home] with a copy at [ReadTheDocs][readthedocs].
19
+
20
+ [roam]: mailto:roam@ringlet.net "Peter Pentchev"
21
+ [sourcehut]: https://git.sr.ht/~ppentchev/roundlet "The roundlet Sourcehut repository"
22
+ [crates-io]: https://crates.io/crates/roundlet "The roundlet crate on crates.io"
23
+ [readthedocs]: https://roundlet.readthedocs.io/ "The roundlet ReadTheDocs page"
24
+ [ringlet-home]: https://devel.ringlet.net/devel/roundlet/ "The Ringlet roundlet homepage"
@@ -0,0 +1,39 @@
1
+ # SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
2
+ # SPDX-License-Identifier: BSD-2-Clause
3
+
4
+ theme:
5
+ name: material
6
+ features:
7
+ - navigation.instant
8
+ - navigation.tracking
9
+ - toc.integrate
10
+ - toc.follow
11
+ - content.code.copy
12
+ palette:
13
+ - media: "(prefers-color-scheme: light)"
14
+ scheme: default
15
+ toggle:
16
+ icon: material/weather-sunny
17
+ name: Switch to dark mode
18
+ - media: "(prefers-color-scheme: dark)"
19
+ scheme: slate
20
+ toggle:
21
+ icon: material/weather-night
22
+ name: Switch to light mode
23
+ site_name: roundlet
24
+ repo_url: https://git.sr.ht/~ppentchev/roundlet
25
+ repo_name: roundlet
26
+ site_author: ppentchev
27
+ site_url: https://devel.ringlet.net/devel/roundlet/
28
+ site_dir: site/docs
29
+ nav:
30
+ - 'index.md'
31
+ - 'Changelog': 'changes.md'
32
+ markdown_extensions:
33
+ - toc:
34
+ - pymdownx.highlight:
35
+ anchor_linenums: true
36
+ - pymdownx.inlinehilite:
37
+ - pymdownx.superfences:
38
+ plugins:
39
+ - search