python-dateutil-rust 2.9.0__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.
- python_dateutil_rust-2.9.0/.github/workflows/release.yml +191 -0
- python_dateutil_rust-2.9.0/.gitignore +9 -0
- python_dateutil_rust-2.9.0/Cargo.lock +251 -0
- python_dateutil_rust-2.9.0/Cargo.toml +21 -0
- python_dateutil_rust-2.9.0/LICENSE +54 -0
- python_dateutil_rust-2.9.0/NOTICE +21 -0
- python_dateutil_rust-2.9.0/PKG-INFO +45 -0
- python_dateutil_rust-2.9.0/README.md +25 -0
- python_dateutil_rust-2.9.0/bench_parser/MANIFEST.sha256 +6 -0
- python_dateutil_rust-2.9.0/bench_parser/WORKLOAD.md +87 -0
- python_dateutil_rust-2.9.0/bench_parser/bench.py +521 -0
- python_dateutil_rust-2.9.0/bench_parser/corpus_boundary.txt +21 -0
- python_dateutil_rust-2.9.0/bench_parser/corpus_clean.txt +11 -0
- python_dateutil_rust-2.9.0/bench_parser/corpus_edge.txt +20 -0
- python_dateutil_rust-2.9.0/bench_parser/corpus_large.txt +2003 -0
- python_dateutil_rust-2.9.0/bench_parser/corpus_noisy.txt +12 -0
- python_dateutil_rust-2.9.0/dateutil/__init__.py +29 -0
- python_dateutil_rust-2.9.0/dateutil-core/Cargo.toml +13 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/civil.rs +184 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/easter.rs +57 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/ical.rs +232 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/lib.rs +14 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/parser/dec.rs +103 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/parser/isoparser.rs +408 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/parser/lex.rs +749 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/parser/mod.rs +249 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/parser/parse.rs +476 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/parser/tables.rs +125 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/parser/ymd.rs +260 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/relativedelta.rs +202 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/rrule.rs +800 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/tz.rs +283 -0
- python_dateutil_rust-2.9.0/dateutil-core/src/tzfile.rs +334 -0
- python_dateutil_rust-2.9.0/dateutil-core/testdata/est5edt.tz +0 -0
- python_dateutil_rust-2.9.0/dateutil-core/testdata/new_york.tz +0 -0
- python_dateutil_rust-2.9.0/dateutil-core/tests/parser_iso_vectors.rs +109 -0
- python_dateutil_rust-2.9.0/dateutil-core/tests/parser_vectors.rs +315 -0
- python_dateutil_rust-2.9.0/pyproject.toml +40 -0
- python_dateutil_rust-2.9.0/release.toml +60 -0
- python_dateutil_rust-2.9.0/src/dateutil/__init__.py +24 -0
- python_dateutil_rust-2.9.0/src/dateutil/_common.py +43 -0
- python_dateutil_rust-2.9.0/src/dateutil/easter.py +89 -0
- python_dateutil_rust-2.9.0/src/dateutil/parser/__init__.py +64 -0
- python_dateutil_rust-2.9.0/src/dateutil/parser/_parser.py +66 -0
- python_dateutil_rust-2.9.0/src/dateutil/parser/_parser_py.py +1609 -0
- python_dateutil_rust-2.9.0/src/dateutil/parser/isoparser.py +15 -0
- python_dateutil_rust-2.9.0/src/dateutil/relativedelta.py +12 -0
- python_dateutil_rust-2.9.0/src/dateutil/rrule.py +38 -0
- python_dateutil_rust-2.9.0/src/dateutil/tz/__init__.py +12 -0
- python_dateutil_rust-2.9.0/src/dateutil/tz/_common.py +421 -0
- python_dateutil_rust-2.9.0/src/dateutil/tz/_factories.py +80 -0
- python_dateutil_rust-2.9.0/src/dateutil/tz/tz.py +657 -0
- python_dateutil_rust-2.9.0/src/dateutil/tz/win.py +370 -0
- python_dateutil_rust-2.9.0/src/dateutil/tzwin.py +2 -0
- python_dateutil_rust-2.9.0/src/dateutil/utils.py +71 -0
- python_dateutil_rust-2.9.0/src/dateutil/zoneinfo/__init__.py +167 -0
- python_dateutil_rust-2.9.0/src/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz +0 -0
- python_dateutil_rust-2.9.0/src/dateutil/zoneinfo/rebuild.py +75 -0
- python_dateutil_rust-2.9.0/src/isoparser_mod.rs +237 -0
- python_dateutil_rust-2.9.0/src/lib.rs +58 -0
- python_dateutil_rust-2.9.0/src/parser_mod.rs +1625 -0
- python_dateutil_rust-2.9.0/src/relativedelta_mod.rs +1039 -0
- python_dateutil_rust-2.9.0/src/rrule_mod.rs +3531 -0
- python_dateutil_rust-2.9.0/src/tz_mod.rs +2164 -0
- python_dateutil_rust-2.9.0/src/util.rs +339 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Release workflow for python-dateutil-rust (generated by `rustsmith release-prep`).
|
|
2
|
+
#
|
|
3
|
+
# DO NOT hand-edit here: regenerate from `release.toml` so the workflow stays
|
|
4
|
+
# in sync with the release configuration. Publishing order is fixed:
|
|
5
|
+
# TestPyPI first (automatic), then manual dispatch publishes the Rust core
|
|
6
|
+
# to crates.io FIRST (the binding depends on it by version) and the SAME
|
|
7
|
+
# tested artifacts to production PyPI, after the TestPyPI install check.
|
|
8
|
+
#
|
|
9
|
+
# Trust model: OpenID Connect trusted publishing on both registries. No
|
|
10
|
+
# long-lived tokens live in secrets. First-time setup (accounts, publisher
|
|
11
|
+
# identities, environments) is in TRUSTED_PUBLISHING_SETUP.md next to this file.
|
|
12
|
+
|
|
13
|
+
name: release
|
|
14
|
+
|
|
15
|
+
on:
|
|
16
|
+
push:
|
|
17
|
+
tags: ["v*"]
|
|
18
|
+
workflow_dispatch:
|
|
19
|
+
inputs:
|
|
20
|
+
publish_production:
|
|
21
|
+
description: "Publish verified artifacts to PyPI and the Rust core to crates.io"
|
|
22
|
+
required: true
|
|
23
|
+
default: "false"
|
|
24
|
+
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
|
|
28
|
+
jobs:
|
|
29
|
+
build:
|
|
30
|
+
name: build wheels (${{ matrix.os }} py${{ matrix.python-version }})
|
|
31
|
+
runs-on: ${{ matrix.os }}
|
|
32
|
+
strategy:
|
|
33
|
+
fail-fast: true
|
|
34
|
+
matrix:
|
|
35
|
+
os: ['ubuntu-22.04', 'macos-14', 'windows-2022']
|
|
36
|
+
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
- uses: actions/setup-python@v5
|
|
40
|
+
with:
|
|
41
|
+
python-version: ${{ matrix.python-version }}
|
|
42
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
43
|
+
- name: build wheel
|
|
44
|
+
uses: PyO3/maturin-action@v1
|
|
45
|
+
with:
|
|
46
|
+
command: build
|
|
47
|
+
args: --release --out dist
|
|
48
|
+
- name: core tests (same core Rust consumers use)
|
|
49
|
+
run: cargo test --release --manifest-path dateutil-core/Cargo.toml
|
|
50
|
+
if: matrix.os == 'ubuntu-22.04' && matrix.python-version == '3.9'
|
|
51
|
+
- name: upload wheel (exact file the publish jobs reuse)
|
|
52
|
+
uses: actions/upload-artifact@v4
|
|
53
|
+
with:
|
|
54
|
+
name: wheels-${{ matrix.os }}-py${{ matrix.python-version }}
|
|
55
|
+
path: dist/*.whl
|
|
56
|
+
if-no-files-found: error
|
|
57
|
+
|
|
58
|
+
sdist:
|
|
59
|
+
name: build sdist (includes the Rust core)
|
|
60
|
+
runs-on: ubuntu-22.04
|
|
61
|
+
steps:
|
|
62
|
+
- uses: actions/checkout@v4
|
|
63
|
+
- uses: actions/setup-python@v5
|
|
64
|
+
with:
|
|
65
|
+
python-version: "3.9"
|
|
66
|
+
- name: build sdist
|
|
67
|
+
uses: PyO3/maturin-action@v1
|
|
68
|
+
with:
|
|
69
|
+
command: sdist
|
|
70
|
+
args: --out dist
|
|
71
|
+
- name: sdist carries the core (rebuild proof runs in release-prep)
|
|
72
|
+
run: tar tzf dist/*.tar.gz | grep -q 'dateutil-core/Cargo.toml'
|
|
73
|
+
- uses: actions/upload-artifact@v4
|
|
74
|
+
with:
|
|
75
|
+
name: sdist
|
|
76
|
+
path: dist/*.tar.gz
|
|
77
|
+
if-no-files-found: error
|
|
78
|
+
|
|
79
|
+
test-wheels:
|
|
80
|
+
name: test wheel (fresh install, no network build)
|
|
81
|
+
needs: [build]
|
|
82
|
+
runs-on: ubuntu-22.04
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/download-artifact@v4
|
|
85
|
+
with:
|
|
86
|
+
# Reference cell only: dist/ then holds exactly one wheel, so the
|
|
87
|
+
# install below cannot mix wheels from other OS/Python cells.
|
|
88
|
+
name: wheels-ubuntu-22.04-py3.9
|
|
89
|
+
path: dist
|
|
90
|
+
- uses: actions/setup-python@v5
|
|
91
|
+
with:
|
|
92
|
+
python-version: "3.9"
|
|
93
|
+
- name: install the reference wheel from disk (same file that ships)
|
|
94
|
+
run: pip install dist/*.whl
|
|
95
|
+
- name: smoke (installed package, pinned vectors)
|
|
96
|
+
run: |
|
|
97
|
+
python - <<'PYEOF'
|
|
98
|
+
import dateutil
|
|
99
|
+
assert dateutil.parser.parse('2020-03-01T12:30:00').isoformat() == '2020-03-01T12:30:00', "smoke check failed"
|
|
100
|
+
assert dateutil.rrule.rrule(dateutil.rrule.DAILY, count=5, dtstart=dateutil.parser.parse('2020-01-01')).count() == 5, "smoke check failed"
|
|
101
|
+
PYEOF
|
|
102
|
+
- name: upload tested wheels (publish consumes THESE files)
|
|
103
|
+
uses: actions/upload-artifact@v4
|
|
104
|
+
with:
|
|
105
|
+
name: tested-dist
|
|
106
|
+
path: dist/*
|
|
107
|
+
|
|
108
|
+
publish-testpypi:
|
|
109
|
+
name: publish to TestPyPI
|
|
110
|
+
needs: [test-wheels, sdist]
|
|
111
|
+
runs-on: ubuntu-22.04
|
|
112
|
+
environment: testpypi
|
|
113
|
+
permissions:
|
|
114
|
+
id-token: write
|
|
115
|
+
steps:
|
|
116
|
+
- uses: actions/download-artifact@v4
|
|
117
|
+
with:
|
|
118
|
+
name: tested-dist
|
|
119
|
+
path: dist
|
|
120
|
+
- uses: actions/download-artifact@v4
|
|
121
|
+
with:
|
|
122
|
+
name: sdist
|
|
123
|
+
path: dist
|
|
124
|
+
- name: publish the tested artifacts to TestPyPI (no rebuild)
|
|
125
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
126
|
+
with:
|
|
127
|
+
repository-url: https://test.pypi.org/legacy/
|
|
128
|
+
packages-dir: dist/
|
|
129
|
+
verify-metadata: true
|
|
130
|
+
skip-existing: true
|
|
131
|
+
|
|
132
|
+
verify-testpypi:
|
|
133
|
+
name: verify install from TestPyPI
|
|
134
|
+
needs: [publish-testpypi]
|
|
135
|
+
runs-on: ubuntu-22.04
|
|
136
|
+
steps:
|
|
137
|
+
- uses: actions/setup-python@v5
|
|
138
|
+
with:
|
|
139
|
+
python-version: "3.9"
|
|
140
|
+
- name: install from TestPyPI (proves the index, not the local file)
|
|
141
|
+
run: pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ python-dateutil-rust==2.9.0
|
|
142
|
+
- name: smoke (index-installed package)
|
|
143
|
+
run: |
|
|
144
|
+
python - <<'PYEOF'
|
|
145
|
+
import dateutil
|
|
146
|
+
assert dateutil.parser.parse('2020-03-01T12:30:00').isoformat() == '2020-03-01T12:30:00', "smoke check failed"
|
|
147
|
+
assert dateutil.rrule.rrule(dateutil.rrule.DAILY, count=5, dtstart=dateutil.parser.parse('2020-01-01')).count() == 5, "smoke check failed"
|
|
148
|
+
PYEOF
|
|
149
|
+
|
|
150
|
+
release:
|
|
151
|
+
name: production release (crates.io core first, then PyPI, manual only)
|
|
152
|
+
needs: [verify-testpypi]
|
|
153
|
+
if: github.event_name == 'workflow_dispatch' && inputs.publish_production == 'true'
|
|
154
|
+
runs-on: ubuntu-22.04
|
|
155
|
+
environment: pypi
|
|
156
|
+
permissions:
|
|
157
|
+
id-token: write
|
|
158
|
+
steps:
|
|
159
|
+
- uses: actions/checkout@v4
|
|
160
|
+
- uses: actions/download-artifact@v4
|
|
161
|
+
with:
|
|
162
|
+
name: tested-dist
|
|
163
|
+
path: dist
|
|
164
|
+
- uses: actions/download-artifact@v4
|
|
165
|
+
with:
|
|
166
|
+
name: sdist
|
|
167
|
+
path: dist
|
|
168
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
169
|
+
- name: authenticate to crates.io (OIDC, no stored token)
|
|
170
|
+
id: auth
|
|
171
|
+
uses: rust-lang/crates-io-auth-action@v1
|
|
172
|
+
- name: publish the Rust core to crates.io (core first: the binding depends on it)
|
|
173
|
+
run: cargo publish --manifest-path dateutil-core/Cargo.toml
|
|
174
|
+
env:
|
|
175
|
+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
|
|
176
|
+
- name: publish the SAME tested artifacts to PyPI (no rebuild)
|
|
177
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
178
|
+
with:
|
|
179
|
+
packages-dir: dist/
|
|
180
|
+
verify-metadata: true
|
|
181
|
+
skip-existing: false
|
|
182
|
+
- name: upload release evidence (what release-prep verified plus the state seed)
|
|
183
|
+
# Per-registry recording stays manual via `release-record` (see
|
|
184
|
+
# TRUSTED_PUBLISHING_SETUP.md section 6); this artifact is the audit trail.
|
|
185
|
+
uses: actions/upload-artifact@v4
|
|
186
|
+
with:
|
|
187
|
+
name: release-evidence
|
|
188
|
+
path: |
|
|
189
|
+
verification.json
|
|
190
|
+
release-state.json
|
|
191
|
+
if-no-files-found: warn
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "autocfg"
|
|
7
|
+
version = "1.5.1"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "bitflags"
|
|
13
|
+
version = "2.13.2"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
|
|
16
|
+
|
|
17
|
+
[[package]]
|
|
18
|
+
name = "cfg-if"
|
|
19
|
+
version = "1.0.5"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "dateutil-core"
|
|
25
|
+
version = "2.9.0"
|
|
26
|
+
|
|
27
|
+
[[package]]
|
|
28
|
+
name = "heck"
|
|
29
|
+
version = "0.5.0"
|
|
30
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
31
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
32
|
+
|
|
33
|
+
[[package]]
|
|
34
|
+
name = "indoc"
|
|
35
|
+
version = "2.0.7"
|
|
36
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
37
|
+
checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
|
|
38
|
+
dependencies = [
|
|
39
|
+
"rustversion",
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
[[package]]
|
|
43
|
+
name = "libc"
|
|
44
|
+
version = "0.2.190"
|
|
45
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
46
|
+
checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
|
|
47
|
+
|
|
48
|
+
[[package]]
|
|
49
|
+
name = "lock_api"
|
|
50
|
+
version = "0.4.14"
|
|
51
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
52
|
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
|
|
53
|
+
dependencies = [
|
|
54
|
+
"scopeguard",
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
[[package]]
|
|
58
|
+
name = "memoffset"
|
|
59
|
+
version = "0.9.1"
|
|
60
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
61
|
+
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
|
62
|
+
dependencies = [
|
|
63
|
+
"autocfg",
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
[[package]]
|
|
67
|
+
name = "once_cell"
|
|
68
|
+
version = "1.21.4"
|
|
69
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
70
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
71
|
+
|
|
72
|
+
[[package]]
|
|
73
|
+
name = "parking_lot"
|
|
74
|
+
version = "0.12.5"
|
|
75
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
76
|
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
|
|
77
|
+
dependencies = [
|
|
78
|
+
"lock_api",
|
|
79
|
+
"parking_lot_core",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
[[package]]
|
|
83
|
+
name = "parking_lot_core"
|
|
84
|
+
version = "0.9.12"
|
|
85
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
86
|
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
|
|
87
|
+
dependencies = [
|
|
88
|
+
"cfg-if",
|
|
89
|
+
"libc",
|
|
90
|
+
"redox_syscall",
|
|
91
|
+
"smallvec",
|
|
92
|
+
"windows-link",
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
[[package]]
|
|
96
|
+
name = "portable-atomic"
|
|
97
|
+
version = "1.15.0"
|
|
98
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
99
|
+
checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
|
|
100
|
+
|
|
101
|
+
[[package]]
|
|
102
|
+
name = "proc-macro2"
|
|
103
|
+
version = "1.0.107"
|
|
104
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
105
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
106
|
+
dependencies = [
|
|
107
|
+
"unicode-ident",
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
[[package]]
|
|
111
|
+
name = "pyo3"
|
|
112
|
+
version = "0.23.5"
|
|
113
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
114
|
+
checksum = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872"
|
|
115
|
+
dependencies = [
|
|
116
|
+
"cfg-if",
|
|
117
|
+
"indoc",
|
|
118
|
+
"libc",
|
|
119
|
+
"memoffset",
|
|
120
|
+
"once_cell",
|
|
121
|
+
"portable-atomic",
|
|
122
|
+
"pyo3-build-config",
|
|
123
|
+
"pyo3-ffi",
|
|
124
|
+
"pyo3-macros",
|
|
125
|
+
"unindent",
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
[[package]]
|
|
129
|
+
name = "pyo3-build-config"
|
|
130
|
+
version = "0.23.5"
|
|
131
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
132
|
+
checksum = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb"
|
|
133
|
+
dependencies = [
|
|
134
|
+
"once_cell",
|
|
135
|
+
"target-lexicon",
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
[[package]]
|
|
139
|
+
name = "pyo3-ffi"
|
|
140
|
+
version = "0.23.5"
|
|
141
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
142
|
+
checksum = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d"
|
|
143
|
+
dependencies = [
|
|
144
|
+
"libc",
|
|
145
|
+
"pyo3-build-config",
|
|
146
|
+
]
|
|
147
|
+
|
|
148
|
+
[[package]]
|
|
149
|
+
name = "pyo3-macros"
|
|
150
|
+
version = "0.23.5"
|
|
151
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
152
|
+
checksum = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da"
|
|
153
|
+
dependencies = [
|
|
154
|
+
"proc-macro2",
|
|
155
|
+
"pyo3-macros-backend",
|
|
156
|
+
"quote",
|
|
157
|
+
"syn",
|
|
158
|
+
]
|
|
159
|
+
|
|
160
|
+
[[package]]
|
|
161
|
+
name = "pyo3-macros-backend"
|
|
162
|
+
version = "0.23.5"
|
|
163
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
164
|
+
checksum = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028"
|
|
165
|
+
dependencies = [
|
|
166
|
+
"heck",
|
|
167
|
+
"proc-macro2",
|
|
168
|
+
"pyo3-build-config",
|
|
169
|
+
"quote",
|
|
170
|
+
"syn",
|
|
171
|
+
]
|
|
172
|
+
|
|
173
|
+
[[package]]
|
|
174
|
+
name = "python-dateutil-rust"
|
|
175
|
+
version = "2.9.0"
|
|
176
|
+
dependencies = [
|
|
177
|
+
"dateutil-core",
|
|
178
|
+
"parking_lot",
|
|
179
|
+
"pyo3",
|
|
180
|
+
]
|
|
181
|
+
|
|
182
|
+
[[package]]
|
|
183
|
+
name = "quote"
|
|
184
|
+
version = "1.0.47"
|
|
185
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
186
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
187
|
+
dependencies = [
|
|
188
|
+
"proc-macro2",
|
|
189
|
+
]
|
|
190
|
+
|
|
191
|
+
[[package]]
|
|
192
|
+
name = "redox_syscall"
|
|
193
|
+
version = "0.5.18"
|
|
194
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
195
|
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
|
|
196
|
+
dependencies = [
|
|
197
|
+
"bitflags",
|
|
198
|
+
]
|
|
199
|
+
|
|
200
|
+
[[package]]
|
|
201
|
+
name = "rustversion"
|
|
202
|
+
version = "1.0.23"
|
|
203
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
204
|
+
checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
|
|
205
|
+
|
|
206
|
+
[[package]]
|
|
207
|
+
name = "scopeguard"
|
|
208
|
+
version = "1.2.0"
|
|
209
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
210
|
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
211
|
+
|
|
212
|
+
[[package]]
|
|
213
|
+
name = "smallvec"
|
|
214
|
+
version = "1.16.2"
|
|
215
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
216
|
+
checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e"
|
|
217
|
+
|
|
218
|
+
[[package]]
|
|
219
|
+
name = "syn"
|
|
220
|
+
version = "2.0.119"
|
|
221
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
222
|
+
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
223
|
+
dependencies = [
|
|
224
|
+
"proc-macro2",
|
|
225
|
+
"quote",
|
|
226
|
+
"unicode-ident",
|
|
227
|
+
]
|
|
228
|
+
|
|
229
|
+
[[package]]
|
|
230
|
+
name = "target-lexicon"
|
|
231
|
+
version = "0.12.16"
|
|
232
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
233
|
+
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
|
234
|
+
|
|
235
|
+
[[package]]
|
|
236
|
+
name = "unicode-ident"
|
|
237
|
+
version = "1.0.26"
|
|
238
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
239
|
+
checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
|
|
240
|
+
|
|
241
|
+
[[package]]
|
|
242
|
+
name = "unindent"
|
|
243
|
+
version = "0.2.4"
|
|
244
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
245
|
+
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
|
|
246
|
+
|
|
247
|
+
[[package]]
|
|
248
|
+
name = "windows-link"
|
|
249
|
+
version = "0.2.1"
|
|
250
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
251
|
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "python-dateutil-rust"
|
|
3
|
+
version = "2.9.0"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
description = "Pure-Rust dateutil engine (rrule/relativedelta/tz/parser/isoparser) with Python bindings (rustsmith Stage-1 mirror of dateutil/dateutil)"
|
|
6
|
+
license = "Apache-2.0"
|
|
7
|
+
repository = "https://github.com/John-Cusack/dateutil-rust"
|
|
8
|
+
homepage = "https://github.com/dateutil/dateutil"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
|
|
11
|
+
[lib]
|
|
12
|
+
name = "_dateutil"
|
|
13
|
+
crate-type = ["cdylib"]
|
|
14
|
+
|
|
15
|
+
[dependencies]
|
|
16
|
+
dateutil-core = { path = "dateutil-core", version = "2.9.0" }
|
|
17
|
+
pyo3 = { version = "0.23", features = ["macros"] }
|
|
18
|
+
parking_lot = "0.12"
|
|
19
|
+
|
|
20
|
+
[workspace]
|
|
21
|
+
members = ["dateutil-core"]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
Copyright 2017- Paul Ganssle <paul@ganssle.io>
|
|
2
|
+
Copyright 2017- dateutil contributors (see AUTHORS file)
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
|
|
16
|
+
The above license applies to all contributions after 2017-12-01, as well as
|
|
17
|
+
all contributions that have been re-licensed (see AUTHORS file for the list of
|
|
18
|
+
contributors who have re-licensed their code).
|
|
19
|
+
--------------------------------------------------------------------------------
|
|
20
|
+
dateutil - Extensions to the standard Python datetime module.
|
|
21
|
+
|
|
22
|
+
Copyright (c) 2003-2011 - Gustavo Niemeyer <gustavo@niemeyer.net>
|
|
23
|
+
Copyright (c) 2012-2014 - Tomi Pieviläinen <tomi.pievilainen@iki.fi>
|
|
24
|
+
Copyright (c) 2014-2016 - Yaron de Leeuw <me@jarondl.net>
|
|
25
|
+
Copyright (c) 2015- - Paul Ganssle <paul@ganssle.io>
|
|
26
|
+
Copyright (c) 2015- - dateutil contributors (see AUTHORS file)
|
|
27
|
+
|
|
28
|
+
All rights reserved.
|
|
29
|
+
|
|
30
|
+
Redistribution and use in source and binary forms, with or without
|
|
31
|
+
modification, are permitted provided that the following conditions are met:
|
|
32
|
+
|
|
33
|
+
* Redistributions of source code must retain the above copyright notice,
|
|
34
|
+
this list of conditions and the following disclaimer.
|
|
35
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
36
|
+
this list of conditions and the following disclaimer in the documentation
|
|
37
|
+
and/or other materials provided with the distribution.
|
|
38
|
+
* Neither the name of the copyright holder nor the names of its
|
|
39
|
+
contributors may be used to endorse or promote products derived from
|
|
40
|
+
this software without specific prior written permission.
|
|
41
|
+
|
|
42
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
43
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
44
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
45
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
46
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
47
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
48
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
49
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
50
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
51
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
52
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
53
|
+
|
|
54
|
+
The above BSD License Applies to all code, even that also covered by Apache 2.0.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
dateutil-rust: Rust port of dateutil/dateutil
|
|
2
|
+
============================================
|
|
3
|
+
|
|
4
|
+
This directory holds the rustsmith Stage-1 mirror of
|
|
5
|
+
https://github.com/dateutil/dateutil (rrule, relativedelta, tz, and the
|
|
6
|
+
fuzzy/ISO parser, all backed by the Rust `dateutil._dateutil` engine).
|
|
7
|
+
|
|
8
|
+
* Upstream authors: dateutil contributors
|
|
9
|
+
* Upstream license: Apache-2.0 (dual-licensed Apache-2.0/BSD; the engine
|
|
10
|
+
files carry the Apache-2.0 SPDX tag).
|
|
11
|
+
* This port: behavior-identical, same public API
|
|
12
|
+
(`dateutil._dateutil` extension module plus the
|
|
13
|
+
`src/dateutil/{rrule,relativedelta,tz/tz,parser/_parser}.py` shims),
|
|
14
|
+
published as the `python-dateutil-rust` distribution on PyPI
|
|
15
|
+
(import name unchanged: `import dateutil`) with reusable core
|
|
16
|
+
crate `dateutil-core` on crates.io.
|
|
17
|
+
|
|
18
|
+
Provenance: every artifact preserves the upstream license header and this
|
|
19
|
+
attribution (provenance gate). The vendored
|
|
20
|
+
`src/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz` is the release timezone
|
|
21
|
+
database from the python-dateutil 2.9.0.post0 sdist (package_data).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: python-dateutil-rust
|
|
3
|
+
Version: 2.9.0
|
|
4
|
+
Classifier: Programming Language :: Rust
|
|
5
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
7
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
License-File: NOTICE
|
|
10
|
+
Summary: Pure-Rust dateutil engine: rrule, relativedelta, tz and parser/isoparser with the dateutil interface (rustsmith Stage-1 mirror of dateutil/dateutil)
|
|
11
|
+
Keywords: dateutil,rrule,timezone,rust
|
|
12
|
+
Home-Page: https://github.com/dateutil/dateutil
|
|
13
|
+
Author: dateutil contributors
|
|
14
|
+
License-Expression: Apache-2.0
|
|
15
|
+
Requires-Python: >=3.9, <4.0
|
|
16
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
17
|
+
Project-URL: Homepage, https://github.com/John-Cusack/dateutil-rust
|
|
18
|
+
Project-URL: Upstream, https://github.com/dateutil/dateutil
|
|
19
|
+
|
|
20
|
+
# python-dateutil-rust
|
|
21
|
+
|
|
22
|
+
Pure-Rust port of the `python-dateutil` engine (`rrule`, `relativedelta`,
|
|
23
|
+
`tz`) plus the whole `parser`/`isoparser` path, with Python bindings
|
|
24
|
+
preserving the `dateutil` interface.
|
|
25
|
+
rustsmith Stage-1 mirror of [dateutil/dateutil](https://github.com/dateutil/dateutil)
|
|
26
|
+
(Apache-2.0), covering the recurrence/calendar/timezone engine and the
|
|
27
|
+
fuzzy/strict/ISO parse path (ADR-015 supersedes the ADR-013 parser
|
|
28
|
+
exclusion).
|
|
29
|
+
|
|
30
|
+
Layout: reusable core crate (`dateutil-core`, no Python dependency) plus a
|
|
31
|
+
thin PyO3 binding (`dateutil._dateutil`); `src/dateutil/{rrule,relativedelta,tz/tz}.py`
|
|
32
|
+
and `src/dateutil/parser/{_parser,isoparser}.py` are re-export shims over
|
|
33
|
+
the extension (`_parser_py.py` alongside is the verbatim upstream module
|
|
34
|
+
kept for the `_tzparser` lineage). Custom `parserinfo` subclasses and
|
|
35
|
+
`tzinfos` callables stay dynamic via the `Info`-trait/Python-callback seam
|
|
36
|
+
documented in `src/parser_mod.rs`. Two-track bench corpora + harness live
|
|
37
|
+
in `bench_parser/` (manifest hashes frozen before measurement; workload
|
|
38
|
+
contract and repro command in `bench_parser/WORKLOAD.md`).
|
|
39
|
+
|
|
40
|
+
<!-- RUSTSMITH-PERF:BEGIN (generated by `rustsmith release-prep`; do not hand-edit) -->
|
|
41
|
+
## Measured performance
|
|
42
|
+
No accepted optimizations yet (mirror baseline); re-run `release-prep` after `run --stage optimize` merges winners.
|
|
43
|
+
Artifact hashes are intentionally absent here; see `release-manifest.json`.
|
|
44
|
+
<!-- RUSTSMITH-PERF:END -->
|
|
45
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# python-dateutil-rust
|
|
2
|
+
|
|
3
|
+
Pure-Rust port of the `python-dateutil` engine (`rrule`, `relativedelta`,
|
|
4
|
+
`tz`) plus the whole `parser`/`isoparser` path, with Python bindings
|
|
5
|
+
preserving the `dateutil` interface.
|
|
6
|
+
rustsmith Stage-1 mirror of [dateutil/dateutil](https://github.com/dateutil/dateutil)
|
|
7
|
+
(Apache-2.0), covering the recurrence/calendar/timezone engine and the
|
|
8
|
+
fuzzy/strict/ISO parse path (ADR-015 supersedes the ADR-013 parser
|
|
9
|
+
exclusion).
|
|
10
|
+
|
|
11
|
+
Layout: reusable core crate (`dateutil-core`, no Python dependency) plus a
|
|
12
|
+
thin PyO3 binding (`dateutil._dateutil`); `src/dateutil/{rrule,relativedelta,tz/tz}.py`
|
|
13
|
+
and `src/dateutil/parser/{_parser,isoparser}.py` are re-export shims over
|
|
14
|
+
the extension (`_parser_py.py` alongside is the verbatim upstream module
|
|
15
|
+
kept for the `_tzparser` lineage). Custom `parserinfo` subclasses and
|
|
16
|
+
`tzinfos` callables stay dynamic via the `Info`-trait/Python-callback seam
|
|
17
|
+
documented in `src/parser_mod.rs`. Two-track bench corpora + harness live
|
|
18
|
+
in `bench_parser/` (manifest hashes frozen before measurement; workload
|
|
19
|
+
contract and repro command in `bench_parser/WORKLOAD.md`).
|
|
20
|
+
|
|
21
|
+
<!-- RUSTSMITH-PERF:BEGIN (generated by `rustsmith release-prep`; do not hand-edit) -->
|
|
22
|
+
## Measured performance
|
|
23
|
+
No accepted optimizations yet (mirror baseline); re-run `release-prep` after `run --stage optimize` merges winners.
|
|
24
|
+
Artifact hashes are intentionally absent here; see `release-manifest.json`.
|
|
25
|
+
<!-- RUSTSMITH-PERF:END -->
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
49c0e20546ab348e944a05d648c377d756e87ee7033c7d1b70a0d8dc3b9b70d1 corpus_clean.txt
|
|
2
|
+
fc8dee636649d0ebff45dd475402ce3f206bcbe39d930bf678be58e054e78a86 corpus_noisy.txt
|
|
3
|
+
d8f32bed37ad46ff29ae1f88bce3683edc67e9570aa4c0c0d2fa72c98671be4a corpus_boundary.txt
|
|
4
|
+
82ef93d2329f80b03b3f2907e4a7360ee3dbc028fdf2ed61f0503a43172a23fe bench.py
|
|
5
|
+
cbb9fb1637e03537f8d8fcdbc41c31550b81dac057642cc42746919807c64ded corpus_edge.txt
|
|
6
|
+
61fc90fe35b7d4cf003d34586becb17160d803bad7db987559890c025b1ea484 corpus_large.txt
|