Skip to content

pendulum: Add version 3.3.0 - #3324

Merged
luhenry merged 4 commits into
mainfrom
pendulum
Nov 3, 2026
Merged

luhenry merged 4 commits into
mainfrom
pendulum

Conversation

@luhenry

@luhenry luhenry commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Compiles pendulum's _pendulum Rust extension (date/duration parsing and arithmetic helpers) with PyO3/maturin. Upstream publishes no riscv64 wheel.

Mirrors upstream's tests.yml Tests job, narrowed to Linux.

Differs from upstream

  • Matrix trimmed to cp312-cp314t - time-machine, one of upstream's own test dependencies, has no riscv64 wheel below cp312 on our registry or on public PyPI.

Testing

  • Same as upstream: its own pytest suite run against the built wheel, once normally and once with PENDULUM_EXTENSIONS=0 (upstream's own pure-Python pass).

License: OK, MIT, nothing vendored.

Built on cp312; cargo metadata --filter-platform riscv64gc-unknown-linux-gnu against the committed rust/Cargo.lock resolves 14 packages, all pure Rust, none -sys/C crates.

Rust/PyO3 (maturin) datetime library. Verified real upstream
(python-pendulum/pendulum, MIT): pyproject.toml/rust/Cargo.toml confirm a
plain `features = ["pyo3/extension-module"]` build (no abi3), and
cargo metadata's crate set (pyo3/pyo3-ffi/pyo3-macros/libc/once_cell/
portable-atomic/target-lexicon/heck/proc-macro2/quote/syn/unicode-ident) is
pure Rust with zero -sys/C crates. Mirrors upstream's own tests.yml Tests
job, running its real pytest suite against the built wheel (and once more
with PENDULUM_EXTENSIONS=0, as upstream also does). Matrix trimmed to
cp312-cp314t: time-machine, one of upstream's own test dependencies, is
only published for cp312+ on our registry and has no riscv64 wheel on
public PyPI either, so cp310/cp311 wheels could not be tested against
upstream's real suite (same trim as build-neo4j-rust-ext.yml's pyarrow
note).
luhenry added a commit that referenced this pull request Oct 15, 2026
…ython-Levenshtein, cytoolz -- no riscv64 gap to close
--no-index disables index lookups entirely, including for pendulum's
own runtime deps (python-dateutil, tzdata), which dist/ only has the
built wheel for. That made the step fail resolving dependencies before
ever reaching the network, since the next line installs those deps
explicitly anyway.
python-dateutil 3.0.0 (now resolved by the loose >=2.6 floor) gives
tz.gettz() tzfile objects a .key attribute. pendulum's _safe_timezone
treats any tzinfo with .key as zoneinfo and keeps the IANA name, so
test_instance_with_aware_datetime_any_tzinfo gets 'Europe/Paris'
instead of the '+02:00' fixed offset it expects, on every interpreter.
This is version drift and isn't specific to riscv64: upstream's CI
passes against poetry.lock, which pins python-dateutil 2.9.0.post0, so
pin that in the test environment.
Two adjacent single-quoted args with no space between them get
concatenated by the shell into one invalid requirement
(python-dateutil==2.9.0.post0tzdata>=2020.1), failing uv's install
on every job before the test ever runs.
@luhenry
luhenry marked this pull request as ready for review November 2, 2026 10:36
@luhenry
luhenry merged commit 885b118 into main Nov 3, 2026
9 checks passed
@luhenry
luhenry deleted the pendulum branch November 3, 2026 02:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant