typikon 0.2.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.
Files changed (40) hide show
  1. typikon-0.2.0/.forgejo/workflows/ci.yml +70 -0
  2. typikon-0.2.0/.forgejo/workflows/release.yml +96 -0
  3. typikon-0.2.0/.gitignore +8 -0
  4. typikon-0.2.0/Cargo.lock +382 -0
  5. typikon-0.2.0/Cargo.toml +37 -0
  6. typikon-0.2.0/LICENSE +338 -0
  7. typikon-0.2.0/PKG-INFO +331 -0
  8. typikon-0.2.0/README.md +311 -0
  9. typikon-0.2.0/data/LICENSE +12 -0
  10. typikon-0.2.0/data/menologion.json +2059 -0
  11. typikon-0.2.0/data/tradition-greek.json +7 -0
  12. typikon-0.2.0/data/tradition-slavic.json +10 -0
  13. typikon-0.2.0/docs/cli.png +0 -0
  14. typikon-0.2.0/docs/releasing.md +120 -0
  15. typikon-0.2.0/examples/dump.rs +19 -0
  16. typikon-0.2.0/pyproject.toml +40 -0
  17. typikon-0.2.0/python/typikon/__init__.py +36 -0
  18. typikon-0.2.0/python/typikon/_typikon.pyi +70 -0
  19. typikon-0.2.0/python/typikon/py.typed +0 -0
  20. typikon-0.2.0/src/calendars.rs +262 -0
  21. typikon-0.2.0/src/config.rs +108 -0
  22. typikon-0.2.0/src/day.rs +251 -0
  23. typikon-0.2.0/src/export/csv.rs +80 -0
  24. typikon-0.2.0/src/export/ics.rs +130 -0
  25. typikon-0.2.0/src/export/json.rs +38 -0
  26. typikon-0.2.0/src/export/mod.rs +7 -0
  27. typikon-0.2.0/src/fasting.rs +134 -0
  28. typikon-0.2.0/src/jurisdictions.rs +222 -0
  29. typikon-0.2.0/src/lib.rs +14 -0
  30. typikon-0.2.0/src/main.rs +492 -0
  31. typikon-0.2.0/src/menaia.rs +272 -0
  32. typikon-0.2.0/src/menologion.rs +246 -0
  33. typikon-0.2.0/src/paschalion.rs +142 -0
  34. typikon-0.2.0/src/python.rs +333 -0
  35. typikon-0.2.0/src/rules/mod.rs +72 -0
  36. typikon-0.2.0/src/rules/orthodox.rs +264 -0
  37. typikon-0.2.0/src/rules/ruthenian.rs +168 -0
  38. typikon-0.2.0/src/seasons.rs +112 -0
  39. typikon-0.2.0/tests/python/test_typikon.py +114 -0
  40. typikon-0.2.0/tests/typikon.rs +627 -0
@@ -0,0 +1,70 @@
1
+ name: ci
2
+
3
+ # Deliberately not triggered by pull_request.
4
+ #
5
+ # The forge this runs on is public and takes pull requests from strangers, and a
6
+ # runner executes whatever the workflow checks out. Triggering on pull_request
7
+ # would mean a stranger's first contribution runs code on the runner host before
8
+ # anyone has read it. Triggering only on push means the runner only ever executes
9
+ # code that someone with push rights put there.
10
+ #
11
+ # The cost is that a pull request gets no automatic check. Run it by pushing the
12
+ # branch yourself once you have read the diff.
13
+ on:
14
+ push:
15
+ branches: ['**']
16
+ tags-ignore: ['**']
17
+
18
+ jobs:
19
+ test:
20
+ runs-on: docker
21
+ container:
22
+ image: rust:1.98-bookworm
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+
26
+ - name: Cache cargo
27
+ uses: actions/cache@v4
28
+ with:
29
+ path: |
30
+ ~/.cargo/registry
31
+ ~/.cargo/git
32
+ target
33
+ key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
34
+ restore-keys: cargo-${{ runner.os }}-
35
+
36
+ # No `cargo fmt --check`. The tables in this crate are aligned by hand —
37
+ # MONTHS, JURISDICTIONS — and rustfmt wants one entry per line, which loses
38
+ # the shape that makes them readable. A gate that fights the house style is
39
+ # a gate that gets ignored.
40
+ - name: Lint
41
+ run: |
42
+ rustup component add clippy
43
+ cargo clippy --all-targets -- -D warnings
44
+
45
+ - name: Rust tests
46
+ run: cargo test
47
+
48
+ # The CLI and the bindings are the same engine, so they have to agree. This
49
+ # is the check that caught the bindings resolving their own default
50
+ # jurisdiction while the CLI read the configured one.
51
+ - name: Python bindings
52
+ run: |
53
+ apt-get update && apt-get install -y --no-install-recommends python3 python3-venv python3-dev
54
+ python3 -m venv /tmp/venv
55
+ /tmp/venv/bin/pip install --quiet maturin pytest mypy
56
+ cargo build --release
57
+ /tmp/venv/bin/maturin build --release --out dist
58
+ /tmp/venv/bin/pip install --quiet --no-index --find-links dist typikon
59
+ /tmp/venv/bin/python -m pytest tests/python -q
60
+
61
+ - name: Type stubs
62
+ run: |
63
+ cat > /tmp/typecheck.py <<'EOF'
64
+ import datetime, typikon
65
+ d: typikon.Day = typikon.describe(datetime.date(2026, 4, 12))
66
+ day: datetime.date = d.date
67
+ feast: str | None = d.feast
68
+ n: int = d.days_to_pascha
69
+ EOF
70
+ /tmp/venv/bin/python -m mypy --strict /tmp/typecheck.py
@@ -0,0 +1,96 @@
1
+ name: release
2
+
3
+ # Tag-driven. Cargo.toml carries the version; the tag only points at it, and the
4
+ # first job refuses to go on if the two disagree — a release tagged v0.3.0 that
5
+ # publishes 0.2.0 is not recoverable, because PyPI will not let a version be
6
+ # reused even after it is yanked.
7
+ on:
8
+ push:
9
+ tags: ['v*']
10
+
11
+ jobs:
12
+ verify:
13
+ runs-on: docker
14
+ container:
15
+ image: rust:1.98-bookworm
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - name: Tag must match Cargo.toml
19
+ run: |
20
+ tag="${GITHUB_REF_NAME#v}"
21
+ crate=$(grep -m1 '^version = ' Cargo.toml | cut -d'"' -f2)
22
+ echo "tag=$tag crate=$crate"
23
+ [ "$tag" = "$crate" ] || { echo "::error::tag $tag != Cargo.toml $crate"; exit 1; }
24
+ - name: Tests
25
+ run: cargo test
26
+
27
+ build:
28
+ needs: verify
29
+ runs-on: docker
30
+ container:
31
+ image: rust:1.98-bookworm
32
+ strategy:
33
+ matrix:
34
+ target: [x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu]
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+ - name: Build wheel
38
+ run: |
39
+ apt-get update && apt-get install -y --no-install-recommends python3 python3-venv
40
+ python3 -m venv /tmp/venv
41
+ /tmp/venv/bin/pip install --quiet maturin[zig]
42
+ # --zig cross-compiles against an older glibc than the build image
43
+ # ships, so the wheel is not silently pinned to bookworm's.
44
+ /tmp/venv/bin/maturin build --release --zig \
45
+ --target ${{ matrix.target }} --out dist
46
+ - uses: actions/upload-artifact@v3
47
+ with:
48
+ name: wheels-${{ matrix.target }}
49
+ path: dist
50
+
51
+ sdist:
52
+ needs: verify
53
+ runs-on: docker
54
+ container:
55
+ image: rust:1.98-bookworm
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+ - name: Build sdist
59
+ run: |
60
+ apt-get update && apt-get install -y --no-install-recommends python3 python3-venv
61
+ python3 -m venv /tmp/venv
62
+ /tmp/venv/bin/pip install --quiet maturin
63
+ /tmp/venv/bin/maturin sdist --out dist
64
+ - uses: actions/upload-artifact@v3
65
+ with:
66
+ name: sdist
67
+ path: dist
68
+
69
+ publish:
70
+ needs: [build, sdist]
71
+ runs-on: docker
72
+ container:
73
+ image: python:3.12-bookworm
74
+ steps:
75
+ - uses: actions/download-artifact@v3
76
+ with:
77
+ path: dist
78
+ - name: Collect
79
+ run: |
80
+ mkdir -p upload
81
+ find dist -name '*.whl' -o -name '*.tar.gz' | xargs -I{} cp {} upload/
82
+ ls -l upload
83
+ - name: Publish
84
+ env:
85
+ # A PROJECT-SCOPED token, not an account-wide one. PyPI's trusted
86
+ # publishing is OIDC and supports GitHub, GitLab, Google Cloud Build and
87
+ # ActiveState — not Forgejo — so this forge has to hold a long-lived
88
+ # credential. Scoping it to this one project is the whole of the
89
+ # mitigation available: if the forge is compromised, the blast radius is
90
+ # releases of typikon rather than every package the account owns.
91
+ TWINE_USERNAME: __token__
92
+ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
93
+ run: |
94
+ pip install --quiet twine
95
+ twine check upload/*
96
+ twine upload --non-interactive upload/*
@@ -0,0 +1,8 @@
1
+ /target
2
+ **/*.rs.bk
3
+ .venv/
4
+ *.egg-info/
5
+
6
+ # python build and test artefacts
7
+ __pycache__/
8
+ *.py[cod]
@@ -0,0 +1,382 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 3
4
+
5
+ [[package]]
6
+ name = "anstream"
7
+ version = "1.0.0"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
10
+ dependencies = [
11
+ "anstyle",
12
+ "anstyle-parse",
13
+ "anstyle-query",
14
+ "anstyle-wincon",
15
+ "colorchoice",
16
+ "is_terminal_polyfill",
17
+ "utf8parse",
18
+ ]
19
+
20
+ [[package]]
21
+ name = "anstyle"
22
+ version = "1.0.14"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
25
+
26
+ [[package]]
27
+ name = "anstyle-parse"
28
+ version = "1.0.0"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
31
+ dependencies = [
32
+ "utf8parse",
33
+ ]
34
+
35
+ [[package]]
36
+ name = "anstyle-query"
37
+ version = "1.1.5"
38
+ source = "registry+https://github.com/rust-lang/crates.io-index"
39
+ checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
40
+ dependencies = [
41
+ "windows-sys",
42
+ ]
43
+
44
+ [[package]]
45
+ name = "anstyle-wincon"
46
+ version = "3.0.11"
47
+ source = "registry+https://github.com/rust-lang/crates.io-index"
48
+ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
49
+ dependencies = [
50
+ "anstyle",
51
+ "once_cell_polyfill",
52
+ "windows-sys",
53
+ ]
54
+
55
+ [[package]]
56
+ name = "autocfg"
57
+ version = "1.5.1"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
60
+
61
+ [[package]]
62
+ name = "clap"
63
+ version = "4.6.7"
64
+ source = "registry+https://github.com/rust-lang/crates.io-index"
65
+ checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946"
66
+ dependencies = [
67
+ "clap_builder",
68
+ "clap_derive",
69
+ ]
70
+
71
+ [[package]]
72
+ name = "clap_builder"
73
+ version = "4.6.7"
74
+ source = "registry+https://github.com/rust-lang/crates.io-index"
75
+ checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d"
76
+ dependencies = [
77
+ "anstream",
78
+ "anstyle",
79
+ "clap_lex",
80
+ "strsim",
81
+ ]
82
+
83
+ [[package]]
84
+ name = "clap_derive"
85
+ version = "4.6.7"
86
+ source = "registry+https://github.com/rust-lang/crates.io-index"
87
+ checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0"
88
+ dependencies = [
89
+ "heck",
90
+ "proc-macro2",
91
+ "quote",
92
+ "syn 3.0.6",
93
+ ]
94
+
95
+ [[package]]
96
+ name = "clap_lex"
97
+ version = "1.1.1"
98
+ source = "registry+https://github.com/rust-lang/crates.io-index"
99
+ checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486"
100
+
101
+ [[package]]
102
+ name = "colorchoice"
103
+ version = "1.0.5"
104
+ source = "registry+https://github.com/rust-lang/crates.io-index"
105
+ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
106
+
107
+ [[package]]
108
+ name = "heck"
109
+ version = "0.5.0"
110
+ source = "registry+https://github.com/rust-lang/crates.io-index"
111
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
112
+
113
+ [[package]]
114
+ name = "indoc"
115
+ version = "2.0.7"
116
+ source = "registry+https://github.com/rust-lang/crates.io-index"
117
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
118
+ dependencies = [
119
+ "rustversion",
120
+ ]
121
+
122
+ [[package]]
123
+ name = "is_terminal_polyfill"
124
+ version = "1.70.2"
125
+ source = "registry+https://github.com/rust-lang/crates.io-index"
126
+ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
127
+
128
+ [[package]]
129
+ name = "itoa"
130
+ version = "1.0.18"
131
+ source = "registry+https://github.com/rust-lang/crates.io-index"
132
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
133
+
134
+ [[package]]
135
+ name = "libc"
136
+ version = "0.2.189"
137
+ source = "registry+https://github.com/rust-lang/crates.io-index"
138
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
139
+
140
+ [[package]]
141
+ name = "memchr"
142
+ version = "2.8.3"
143
+ source = "registry+https://github.com/rust-lang/crates.io-index"
144
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
145
+
146
+ [[package]]
147
+ name = "memoffset"
148
+ version = "0.9.1"
149
+ source = "registry+https://github.com/rust-lang/crates.io-index"
150
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
151
+ dependencies = [
152
+ "autocfg",
153
+ ]
154
+
155
+ [[package]]
156
+ name = "once_cell"
157
+ version = "1.21.4"
158
+ source = "registry+https://github.com/rust-lang/crates.io-index"
159
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
160
+
161
+ [[package]]
162
+ name = "once_cell_polyfill"
163
+ version = "1.70.2"
164
+ source = "registry+https://github.com/rust-lang/crates.io-index"
165
+ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
166
+
167
+ [[package]]
168
+ name = "portable-atomic"
169
+ version = "1.15.0"
170
+ source = "registry+https://github.com/rust-lang/crates.io-index"
171
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
172
+
173
+ [[package]]
174
+ name = "proc-macro2"
175
+ version = "1.0.107"
176
+ source = "registry+https://github.com/rust-lang/crates.io-index"
177
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
178
+ dependencies = [
179
+ "unicode-ident",
180
+ ]
181
+
182
+ [[package]]
183
+ name = "pyo3"
184
+ version = "0.27.2"
185
+ source = "registry+https://github.com/rust-lang/crates.io-index"
186
+ checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d"
187
+ dependencies = [
188
+ "indoc",
189
+ "libc",
190
+ "memoffset",
191
+ "once_cell",
192
+ "portable-atomic",
193
+ "pyo3-build-config",
194
+ "pyo3-ffi",
195
+ "pyo3-macros",
196
+ "unindent",
197
+ ]
198
+
199
+ [[package]]
200
+ name = "pyo3-build-config"
201
+ version = "0.27.2"
202
+ source = "registry+https://github.com/rust-lang/crates.io-index"
203
+ checksum = "b455933107de8642b4487ed26d912c2d899dec6114884214a0b3bb3be9261ea6"
204
+ dependencies = [
205
+ "target-lexicon",
206
+ ]
207
+
208
+ [[package]]
209
+ name = "pyo3-ffi"
210
+ version = "0.27.2"
211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
212
+ checksum = "1c85c9cbfaddf651b1221594209aed57e9e5cff63c4d11d1feead529b872a089"
213
+ dependencies = [
214
+ "libc",
215
+ "pyo3-build-config",
216
+ ]
217
+
218
+ [[package]]
219
+ name = "pyo3-macros"
220
+ version = "0.27.2"
221
+ source = "registry+https://github.com/rust-lang/crates.io-index"
222
+ checksum = "0a5b10c9bf9888125d917fb4d2ca2d25c8df94c7ab5a52e13313a07e050a3b02"
223
+ dependencies = [
224
+ "proc-macro2",
225
+ "pyo3-macros-backend",
226
+ "quote",
227
+ "syn 2.0.119",
228
+ ]
229
+
230
+ [[package]]
231
+ name = "pyo3-macros-backend"
232
+ version = "0.27.2"
233
+ source = "registry+https://github.com/rust-lang/crates.io-index"
234
+ checksum = "03b51720d314836e53327f5871d4c0cfb4fb37cc2c4a11cc71907a86342c40f9"
235
+ dependencies = [
236
+ "heck",
237
+ "proc-macro2",
238
+ "pyo3-build-config",
239
+ "quote",
240
+ "syn 2.0.119",
241
+ ]
242
+
243
+ [[package]]
244
+ name = "quote"
245
+ version = "1.0.47"
246
+ source = "registry+https://github.com/rust-lang/crates.io-index"
247
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
248
+ dependencies = [
249
+ "proc-macro2",
250
+ ]
251
+
252
+ [[package]]
253
+ name = "rustversion"
254
+ version = "1.0.23"
255
+ source = "registry+https://github.com/rust-lang/crates.io-index"
256
+ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
257
+
258
+ [[package]]
259
+ name = "serde"
260
+ version = "1.0.229"
261
+ source = "registry+https://github.com/rust-lang/crates.io-index"
262
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
263
+ dependencies = [
264
+ "serde_core",
265
+ "serde_derive",
266
+ ]
267
+
268
+ [[package]]
269
+ name = "serde_core"
270
+ version = "1.0.229"
271
+ source = "registry+https://github.com/rust-lang/crates.io-index"
272
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
273
+ dependencies = [
274
+ "serde_derive",
275
+ ]
276
+
277
+ [[package]]
278
+ name = "serde_derive"
279
+ version = "1.0.229"
280
+ source = "registry+https://github.com/rust-lang/crates.io-index"
281
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
282
+ dependencies = [
283
+ "proc-macro2",
284
+ "quote",
285
+ "syn 3.0.6",
286
+ ]
287
+
288
+ [[package]]
289
+ name = "serde_json"
290
+ version = "1.0.151"
291
+ source = "registry+https://github.com/rust-lang/crates.io-index"
292
+ checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
293
+ dependencies = [
294
+ "itoa",
295
+ "memchr",
296
+ "serde",
297
+ "serde_core",
298
+ "zmij",
299
+ ]
300
+
301
+ [[package]]
302
+ name = "strsim"
303
+ version = "0.11.1"
304
+ source = "registry+https://github.com/rust-lang/crates.io-index"
305
+ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
306
+
307
+ [[package]]
308
+ name = "syn"
309
+ version = "2.0.119"
310
+ source = "registry+https://github.com/rust-lang/crates.io-index"
311
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
312
+ dependencies = [
313
+ "proc-macro2",
314
+ "quote",
315
+ "unicode-ident",
316
+ ]
317
+
318
+ [[package]]
319
+ name = "syn"
320
+ version = "3.0.6"
321
+ source = "registry+https://github.com/rust-lang/crates.io-index"
322
+ checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
323
+ dependencies = [
324
+ "proc-macro2",
325
+ "quote",
326
+ "unicode-ident",
327
+ ]
328
+
329
+ [[package]]
330
+ name = "target-lexicon"
331
+ version = "0.13.5"
332
+ source = "registry+https://github.com/rust-lang/crates.io-index"
333
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
334
+
335
+ [[package]]
336
+ name = "typikon"
337
+ version = "0.2.0"
338
+ dependencies = [
339
+ "clap",
340
+ "pyo3",
341
+ "serde",
342
+ "serde_json",
343
+ ]
344
+
345
+ [[package]]
346
+ name = "unicode-ident"
347
+ version = "1.0.26"
348
+ source = "registry+https://github.com/rust-lang/crates.io-index"
349
+ checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
350
+
351
+ [[package]]
352
+ name = "unindent"
353
+ version = "0.2.4"
354
+ source = "registry+https://github.com/rust-lang/crates.io-index"
355
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
356
+
357
+ [[package]]
358
+ name = "utf8parse"
359
+ version = "0.2.2"
360
+ source = "registry+https://github.com/rust-lang/crates.io-index"
361
+ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
362
+
363
+ [[package]]
364
+ name = "windows-link"
365
+ version = "0.2.1"
366
+ source = "registry+https://github.com/rust-lang/crates.io-index"
367
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
368
+
369
+ [[package]]
370
+ name = "windows-sys"
371
+ version = "0.61.2"
372
+ source = "registry+https://github.com/rust-lang/crates.io-index"
373
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
374
+ dependencies = [
375
+ "windows-link",
376
+ ]
377
+
378
+ [[package]]
379
+ name = "zmij"
380
+ version = "1.0.23"
381
+ source = "registry+https://github.com/rust-lang/crates.io-index"
382
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
@@ -0,0 +1,37 @@
1
+ [package]
2
+ name = "typikon"
3
+ version = "0.2.0"
4
+ edition = "2021"
5
+ rust-version = "1.74"
6
+ description = "The Orthodox liturgical day: feasts, seasons and the fast, computed rather than fetched"
7
+ license = "GPL-2.0-only"
8
+ repository = "https://git.pumpin.online/funkpower/typikon"
9
+ readme = "README.md"
10
+ keywords = ["orthodox", "liturgical", "calendar", "byzantine", "pascha"]
11
+ categories = ["command-line-utilities", "date-and-time"]
12
+
13
+ [dependencies]
14
+ serde = { version = "1", features = ["derive"] }
15
+ serde_json = "1"
16
+ clap = { version = "4", features = ["derive"] }
17
+ pyo3 = { version = "0.27.2", features = ["extension-module", "abi3-py39"], optional = true }
18
+
19
+ [profile.release]
20
+ strip = true
21
+ lto = true
22
+ codegen-units = 1
23
+
24
+ [[bin]]
25
+ name = "typikon"
26
+ path = "src/main.rs"
27
+
28
+ [lib]
29
+ name = "typikon"
30
+ path = "src/lib.rs"
31
+ crate-type = ["cdylib", "rlib"]
32
+
33
+ [features]
34
+ # Only maturin turns this on. pyo3's extension-module feature leaves the Python
35
+ # symbols to be resolved by the interpreter at load time, so a normal `cargo
36
+ # build` of the CLI would fail to link if it were on by default.
37
+ python = ["dep:pyo3"]