Quebec
Quebec is a simple background task queue for processing asynchronous tasks. The name is derived from the NATO phonetic alphabet for "Q", representing "Queue".
This project is inspired by Solid Queue.
[!NOTE] Project status: Production-tested beta. Quebec is actively maintained and has been running in the maintainers' own production projects since April 2026, with no known stability issues. Its core job-processing APIs are suitable for production deployments. The project remains pre-1.0, so pin the version you deploy and review changes before upgrading. APIs and configuration explicitly marked experimental may still change between minor releases.
Why Quebec?
- Simplified Architecture: No dependencies on Redis or message queues
- Database-Powered: Leverages RDBMS capabilities for complex task queries and management
- Rust Implementation: High performance and safety with Python compatibility
- Framework Agnostic: Works with asyncio, Trio, threading, SQLAlchemy, Django, FastAPI, etc.
Features
- Scheduled tasks
- Recurring tasks
- Concurrency control
- Per-queue concurrency limits
- Rate limiting
- Exclusive (stop-the-world) jobs
- Multi-process (fork) mode
- Memory-based worker recycling
- Web dashboard
- Automatic retries
- Signal handling & graceful restart
- Lifecycle hooks
Control Plane
Built-in web dashboard for monitoring jobs, queues, and workers in real-time.
Database Support
- SQLite
- PostgreSQL
- MySQL
Upgrading an existing PostgreSQL deployment
On PostgreSQL only, Quebec no longer creates the (key, value) and
(expires_at) indexes on the semaphores table. They prevent HOT updates: every
concurrency wait/signal rewrites both value and expires_at, and indexing a
column that every UPDATE touches forces a new row version plus an index write
each time. Dead tuples then pile up faster than autovacuum can reclaim them, and
a table holding a handful of live rows can end up costing thousands of buffer
hits per statement.
Databases created before this version still carry both indexes.
create_tables() does not drop indexes, so run this once against an existing
database (substitute your table prefix):
DROP INDEX IF EXISTS idx_solid_queue_semaphores_key_value;
DROP INDEX IF EXISTS idx_solid_queue_semaphores_expires_at;
ALTER TABLE solid_queue_semaphores SET (
fillfactor = 70,
autovacuum_vacuum_scale_factor = 0,
autovacuum_vacuum_threshold = 1000
);
-- Reclaims space already lost to bloat and applies the new fillfactor.
-- Takes an ACCESS EXCLUSIVE lock, so concurrency operations block for its
-- duration -- normally well under a second on a healthy table.
VACUUM FULL solid_queue_semaphores;
The unique index on key stays: it serves the only hot-path lookup
(WHERE key = $1), and PostgreSQL applies the value predicate as a filter
after it. Calling create_tables() afterwards re-applies the storage
parameters but never re-creates the dropped indexes.
The expires_at index only served delete_expired, which the dispatcher runs
once per concurrency_maintenance_interval (default 600s). That scan is a
sequential one now -- roughly 11 ms on a 50k-row table, against an index that
would otherwise be maintained on every write.
SQLite and MySQL keep both indexes and need no migration. InnoDB's undo-log
MVCC and SQLite's rollback journal do not accumulate heap bloat this way, so
there the indexes are a plain win -- delete_expired in particular gets to use
(expires_at) instead of scanning.
Quick Start
Module Runner (Recommended)
Define jobs in a package:
# jobs/email_job.py
import quebec
class EmailJob(quebec.BaseClass):
queue_as = "default"
def perform(self, to, subject):
self.logger.info(f"Sending email to {to}: {subject}")
Export them in __init__.py:
# jobs/__init__.py
from .email_job import EmailJob
Run with python -m quebec:
DATABASE_URL=sqlite:///demo.db?mode=rwc python -m quebec jobs
All configuration via QUEBEC_* environment variables — no boilerplate entry script needed.
Script Mode
For more control, use Quebec directly in a script:
import logging
from pathlib import Path
from quebec.logger import setup_logging
setup_logging(level=logging.DEBUG)
import quebec
db_path = Path('demo.db')
qc = quebec.Quebec(f'sqlite://{db_path}?mode=rwc')
@qc.register_job
class FakeJob(quebec.BaseClass):
def perform(self, *args, **kwargs):
self.logger.info(f"Processing job {self.id}: args={args}, kwargs={kwargs}")
if __name__ == "__main__":
# Enqueue a job (qc is inferred from @qc.register_job)
FakeJob.perform_later(123, foo='bar')
# Start Quebec (handles signal, spawns workers, runs main loop)
qc.run(
create_tables=not db_path.exists(),
control_plane='127.0.0.1:5006', # Optional: web dashboard
)
Or run the quickstart script directly:
curl -O https://raw.githubusercontent.com/ratazzi/quebec/refs/heads/master/quickstart.py
uv run quickstart.py
Auto-Discovering Jobs
If your jobs are organized in a package (e.g. app.jobs.*), call
Quebec.discover_jobs() instead of decorating each class with
@qc.register_job or calling qc.register_job_class(...) one by one:
# app/jobs/cleanup.py
class CleanupJob(quebec.BaseClass):
def perform(self, *args, **kwargs): ...
# main.py
qc = quebec.Quebec(dsn)
qc.discover_jobs("app.jobs", "worker.tasks") # recursively scans each
qc.run()
discover_jobs takes one or more dotted package paths as positional
arguments (varargs) — no need to wrap a single package in a list.
discover_jobs(*packages, recursive=True, on_error="raise"):
- Registers every
BaseClasssubclass whose__module__falls under one of the given packages. Classes imported from elsewhere (e.g.from some.lib import JobMixin) are ignored. - Raises
ValueErrorif two discovered classes share the same__qualname__, since Quebec's worker registry is keyed by qualname and the later registration would otherwise silently replace the earlier one. on_error="raise"(default) propagates submoduleImportError. Passon_error="warn"to emit aRuntimeWarningand keep scanning — useful when a package contains optional-integration modules that may fail to import in some environments. The top-level package is always imported strictly.
Multiple Quebec Instances
Quebec is designed for one instance per process. Registering a job class
(via @qc.register_job, qc.register_job_class, or qc.discover_jobs)
binds it to that Quebec instance, so MyJob.perform_later(...) shorthand
routes to the binding. If a process holds more than one Quebec instance
and registers the same job class to each, the most recent registration
wins — pass the target instance explicitly to disambiguate:
MyJob.perform_later(qc2, arg1) # route to qc2
MyJob.set(queue='critical').perform_later(qc2, arg1)
qc.run() Options
| Parameter | Type | Default | Description |
|---|---|---|---|
create_tables |
bool |
False |
Create database tables (requires DDL permissions) |
control_plane |
str |
None |
Web dashboard address, e.g. '127.0.0.1:5006' |
spawn |
list[str] |
None |
Components to spawn: ['worker', 'dispatcher', 'scheduler']. None = all |
Recommended: configure worker thread count in queue.yml via workers.threads.
If you need a one-off override, Quebec(..., worker_threads=3) is also supported.
Multi-Process Mode (fork supervisor)
By default qc.run() runs all components as threads in a single process. To scale across CPU cores, set QUEBEC_SUPERVISOR=1 to fork a pool of child processes instead:
QUEBEC_SUPERVISOR=1 python -m quebec your.jobs
# queue.yml (under your environment, e.g. production:)
workers:
- queues: "*"
threads: 5
processes: 4 # fork 4 worker processes
dispatchers:
- polling_interval: 1
processes: 1 # fork 1 dispatcher process
The supervisor forks workers[].processes worker children and dispatchers[].processes dispatcher children, each taking its config from the matching yml entry, and reforks any child that dies (matching Solid Queue's process model). Fork mode is opt-in via the env var so an existing config with processes set doesn't silently switch process model on upgrade; spawn is ignored in this mode. Outside supervisor mode the processes keys are ignored and Quebec uses the single-process threaded runtime.
Force Queue Override (multi-branch development)
Set QUEBEC_FORCE_OVERRIDE_QUEUE to pin every enqueue and consumption to one queue — handy when several development branches share a single database:
QUEBEC_FORCE_OVERRIDE_QUEUE=branch_x python -m quebec your.jobs
Every enqueue path rewrites queue_name to this value (ignoring whatever the class, call site, or scheduler specified), and the worker only consumes that queue — so jobs enqueued by one branch are never picked up by another. URL-hostile characters and * in the name are sanitized to - (a literal * would otherwise be reinterpreted as a wildcard by the consuming worker).
Transactional Enqueue
[!IMPORTANT] Enqueuing is not part of your database transaction — even on the same database. Quebec's enqueue runs through the Rust engine on its own connection pool, completely separate from your Python connection (SQLAlchemy / Django / psycopg). There is no way to atomically commit a business write and a job enqueue together.
This is the deliberate cost of keeping the engine fully decoupled from your ORM and connection — the upside is that Quebec drags no Python database dependencies into your app, but it means the enqueue cannot join your transaction. Two failure windows follow:
- The business transaction commits but the enqueue fails → the job is lost.
- The enqueue commits but the business transaction rolls back → the job runs against missing or stale data.
Recommendations:
- Enqueue after your business transaction commits. This removes the worse direction — a job running for a write that was rolled back.
- Make jobs idempotent and tolerant of data that may not be visible yet; lean on retries.
- If you genuinely need atomicity, use a transactional outbox: write an outbox row inside your own transaction (business + outbox commit atomically), then relay it into a real job (at-least-once delivery).
Delayed Jobs
from datetime import timedelta
# Run after 1 hour
FakeJob.set(wait=3600).perform_later(arg1)
# Run at specific time
FakeJob.set(wait_until=tomorrow_9am).perform_later(arg1)
# Override queue and priority
FakeJob.set(queue='critical', priority=1).perform_later(arg1)
Automatic Retries
from datetime import timedelta
class PaymentJob(quebec.BaseClass):
retry_on = [
quebec.RetryStrategy(
(ConnectionError, TimeoutError),
wait=timedelta(seconds=30),
attempts=3,
),
quebec.RetryStrategy(
(ValueError,),
wait=timedelta(seconds=5),
attempts=1,
# Called once retries are exhausted; receives (job, error).
handler=lambda job, error: notify_admin(error),
),
]
def perform(self, order_id):
process_payment(order_id)
Multiple RetryStrategy entries can target different exception types with independent wait/attempts. The optional handler fires only when a strategy's attempts are exhausted (mirroring ActiveJob's retry_on ... do |job, error| block) and is called with (job, error). discard_on and rescue_from handlers use the same (job, error) signature.
Concurrency Control
Limit how many jobs with the same key can run simultaneously:
class ReportJob(quebec.BaseClass):
concurrency_limit = 3 # max 3 concurrent executions per key
concurrency_duration = 120 # semaphore TTL in seconds
def concurrency_key(self, account_id, **kwargs):
return str(account_id) # final key: "ReportJob/123"
def perform(self, account_id):
generate_report(account_id)
The actual concurrency key is "ClassName/key" (e.g. "ReportJob/123"), so different job classes never conflict. When the limit is reached, new jobs are blocked until a slot becomes available. The concurrency_duration acts as a safety TTL — the semaphore is released automatically if a worker crashes.
Rate Limiting (experimental)
Cap how many jobs run within a sliding time window, scoped per key:
from datetime import timedelta
class ApiCallJob(quebec.BaseClass):
rate_limit_max = 5 # at most 5 runs...
rate_limit_duration = timedelta(seconds=2) # ...per rolling 2-second window
rate_limit_on_throttle = quebec.RateLimitConflict.Reschedule # default
def rate_limit_key(self, region="us", **kwargs):
return region # bucket key: "ApiCallJob/us"
def perform(self, region="us"):
call_external_api(region)
Like concurrency control, the bucket is "ClassName/key", and rate_limit_key defaults to the class name when not overridden. rate_limit_duration must be a datetime.timedelta of at least one second. When the window is exhausted, rate_limit_on_throttle decides what happens: Reschedule (the default) pushes the job to a later run, while Discard drops it.
Exclusive Jobs
Let an occasional memory-heavy job own the whole worker process while it runs:
class RebuildSearchIndexJob(quebec.BaseClass):
exclusive = True
def perform(self):
rebuild_index() # runs alone on this worker
When an exclusive job is claimed, the worker stops claiming new jobs, waits for any in-flight siblings to finish, then runs the exclusive job by itself before resuming normal claiming. The scope is the current worker process — it does not coordinate across separate worker processes; pair it with concurrency_limit = 1 and a concurrency_key if you also need cluster-wide single-instance execution.
Graceful Restart (quiet-then-exit)
Drain in-flight work and exit on a quiet signal, for zero-downtime rolling restarts:
qc = quebec.Quebec(database_url="...", quiet_then_exit=True)
qc.run()
Sending SIGUSR1 (or SIGTSTP) puts the worker into quiet mode: it stops claiming new jobs but keeps running until every in-flight job finishes, then exits cleanly — with no time limit (unlike the SIGTERM path, which is bounded by shutdown_timeout). The usual flow is: signal the old instance quiet, start a new instance, and the old one exits once drained. Opt-in (default off), and standalone-only — under the fork supervisor a self-exited child would just be reforked, so use a supervisor-level rolling restart there instead. Also settable via QUEBEC_QUIET_THEN_EXIT=1.
Memory-Based Worker Recycling
Long-lived Python workers tend to hold onto RSS the interpreter never returns to the OS. Quebec can recycle a bloated worker by draining it and exiting with a dedicated code, leaving the actual restart to your process supervisor. It is configured by environment variables — there is no in-process restart:
QUEBEC_WORKER_MAX_RSS_MB=512 # soft limit; unset = disabled
QUEBEC_WORKER_MEMORY_RECYCLE_CONFIRMATIONS=3 # consecutive over-limit samples before recycling (default)
QUEBEC_WORKER_MEMORY_CHECK_INTERVAL=5s # how often RSS is sampled (default)
When a worker's RSS stays above the limit for that many consecutive samples, it enters quiet mode, stops claiming, drains its in-flight jobs (no time limit), and exits with code 75 — the planned-recycle code. The supervisor then relaunches a fresh process. Under the built-in fork supervisor (QUEBEC_SUPERVISOR=1) this refork is automatic; under systemd, Restart=on-failure relaunches the worker after the non-zero recycle exit:
# /etc/systemd/system/quebec-worker.service
[Service]
ExecStart=/usr/bin/python -m quebec your.jobs
Environment=QUEBEC_DATABASE_URL=postgresql://localhost/myapp
Environment=QUEBEC_WORKER_MAX_RSS_MB=512
Restart=on-failure
[Install]
WantedBy=multi-user.target
Exit code 75 is non-zero, so Restart=on-failure treats the planned recycle as a failure and relaunches the worker. If you'd rather not have planned recycles show up as failures (in systemctl status or the start-limit counter), add SuccessExitStatus=75 together with RestartForceExitStatus=75 — the former keeps 75 out of the failure tally, the latter still forces the restart.
Per-Queue Concurrency (experimental)
Cap how many jobs run concurrently across the cluster for specific queues, independent of per-class concurrency_key:
qc = quebec.Quebec(
database_url="...",
experimental_queue_concurrency={"reports": 2, "exports": 1},
)
qc.run()
Each listed queue acquires a queue:<name> semaphore at claim time; queues not present are unlimited. Useful for isolating a misbehaving queue during remediation. Naming and semantics are experimental and may change.
Global Priority Across Queues (experimental, off by default)
With queues: "*" and nothing to skip, a worker polls with a single unfiltered query, so priority orders jobs across every queue. That stops being possible as soon as a queue must be skipped — paused, or with a full experimental_queue_concurrency slot — because excluding queues with NOT IN cannot use an index. Quebec then does what Solid Queue does: one query per live queue, which makes queue order override priority until the queue is resumed.
Enabling this flag keeps one global order in that situation by polling with an IN list instead:
SELECT * FROM solid_queue_ready_executions
WHERE queue_name IN ($live_queues)
ORDER BY priority, job_id
LIMIT $batch
FOR UPDATE SKIP LOCKED;
qc = quebec.Quebec(
"postgresql://localhost/myapp",
experimental_global_priority=True, # or QUEBEC_EXPERIMENTAL_GLOBAL_PRIORITY=true
)
Measure before enabling — this is not universally faster. It moves the scan from the excluded side to the live side, and which one wins depends on where your backlog sits:
| Backlog distribution | Default (per-queue) | experimental_global_priority |
|---|---|---|
| Skipped queues hold most rows | fine — skipped rows never scanned | likely much better: one query, shallow live set |
| Live queues hold most rows | fine — each query is an index range | likely far worse: reads and sorts the live rows |
| Many live queues, all deep | fine | worst case |
PostgreSQL picks between two plans for the IN form, and the choice depends on statistics: walk (queue_name, priority, job_id) per listed queue and sort the union, or walk (priority, job_id) and filter. Check which one you get on real data:
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM solid_queue_ready_executions
WHERE queue_name IN ('live_a', 'live_b')
ORDER BY priority, job_id
LIMIT 10
FOR UPDATE SKIP LOCKED;
Look at whether the queue_name index is used, how many rows feed the Sort, Rows Removed by Filter, and shared buffers. Note that LockRows sits above Sort, so SKIP LOCKED does not shrink the sort input.
Two things it does not change:
- It only ever applies to
*. Explicit queue lists (["real_time", "background"]) and wildcard prefixes ("beta*") keep Solid Queue's contract that queue order takes precedence overpriority. - Ordering and locking stay in one statement, so there is no window where the order is decided from rows another worker has already taken.
Pausing Recurring Tasks (opt-in)
Recurring tasks can be paused and resumed at runtime — from Python or from the control plane's Recurring Jobs page — without editing recurring.yml or restarting the scheduler:
qc = quebec.Quebec(db_url, recurring_pause=True) # or QUEBEC_RECURRING_PAUSE=true
qc.pause_recurring("nightly_report") # True; False if it was already paused
qc.recurring_paused("nightly_report") # True
qc.paused_recurring_tasks() # ["nightly_report"]
qc.resume_recurring("nightly_report") # True; False if it was not paused
While paused, the scheduler skips each occurrence (nothing is enqueued, no recurring_executions row is written) and moves on to the next one. Resuming does not replay the skipped runs; the next occurrence after the resume fires as scheduled. run_recurring_now() still works on a paused task. Unknown keys raise LookupError — static tasks appear in the table once a scheduler has started.
Solid Queue has no such state, so this is the one place Quebec extends its schema: enabling recurring_pause adds a nullable paused_at column to the recurring tasks table. It is added automatically by create_tables() and when a scheduler starts, and each process checks for it on its own. It is off by default so an unmodified Solid Queue database keeps working exactly as before; with it off, the column is not added even if it exists elsewhere, and the pause API raises RuntimeError.
Sharing the database with a Rails app:
-
Solid Queue reads and writes the table as usual and leaves
paused_atalone, with one exception: its scheduler upserts every attribute of the static tasks when it boots, which resetspaused_at. Solid Queue's scheduler also ignores the pause, so pausing only takes effect when Quebec runs the scheduler. -
If the connecting role is not allowed to
ALTER TABLE, Quebec logs a warning and pausing is unavailable in that process until the column exists. Add it yourself in that case:add_column :solid_queue_recurring_tasks, :paused_at, :datetime
No restart is needed: a process whose attempt failed keeps looking for the column (a catalog lookup, at most every 5 seconds) and starts honouring pauses as soon as it appears. Explicit calls —
create_tables(), the pause API, the control-plane buttons — retry theALTERright away.
TLS Configuration (PostgreSQL)
Quebec links sqlx against rustls + webpki-roots. Public CAs (AWS RDS,
Neon, Google Cloud SQL, Supabase, etc.) are trusted out of the box — no OS
trust store is consulted.
Pass libpq-style SSL options as Quebec(...) kwargs, as DSN query params, or
via QUEBEC_SSL* environment variables:
qc = quebec.Quebec(
"postgresql://user:pass@host:5432/db",
sslmode="verify-full", # or QUEBEC_SSLMODE
sslrootcert="/etc/ssl/certs/ca.pem", # internal CAs only
)
Priority is kwargs > env > DSN query. Passing any ssl* kwarg/env against
a non-postgres URL raises ValueError.
sslmode |
Transport | Certificate verification | Hostname verification |
|---|---|---|---|
disable |
plaintext | — | — |
prefer |
TLS if offered, else plaintext | — | — |
require |
TLS (fails if unsupported) | — (accepts any cert) | — |
verify-ca |
TLS | CA-signed | — |
verify-full |
TLS | CA-signed | hostname matches CN/SAN |
For public CAs, verify-full works zero-config. Use sslrootcert for
internal/self-signed CAs. sslcert + sslkey enable client certificate
(mTLS) auth.
sslmode=allowis rejected with aValueError. Upstreamsqlx-postgres0.8 treatsallowidentically todisable(plaintext, markedFIXMEin the driver); to avoid a silent downgrade, Quebec refuses it. Usepreferfor opportunistic TLS, orrequire/verify-*to enforce it.
Note: some managed Postgres services (e.g. Neon) terminate TLS at a proxy layer. In those cases
pg_stat_ssl.sslmay reportfalsebecause the backend sees plaintext from the proxy — not the client.
Lifecycle Hooks
Quebec provides several lifecycle hooks that you can use to execute code at different stages of the application lifecycle:
@qc.on_start: Called when Quebec starts@qc.on_stop: Called when Quebec stops@qc.on_worker_start: Called when a worker starts@qc.on_worker_stop: Called when a worker stops@qc.on_shutdown: Called during graceful shutdown
These hooks are useful for:
- Initializing resources
- Cleaning up resources
- Logging application state
- Monitoring worker lifecycle
- Graceful shutdown handling
Metadata
Release files for quebec 0.3.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quebec-0.3.15.tar.gz | 840.7 kB | Details |
Built distributions (wheels)
Total release size: 364.2 MB
Release files / quebec-0.3.15.tar.gz
| Download URL | quebec-0.3.15.tar.gz |
|---|---|
| Size | 840.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ccfdb92ef153ce22890a81ca1a3a699df09d3bbdb21f2128d15ff7120cfd6df3
|
|
BLAKE2b-256 checksum How to use checksums |
f57f2af950d031c65ea5205ecb514ea99c855e4350336e2857f2806834eeb083
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-win_arm64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-win_arm64.whl |
|---|---|
| Size | 10.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows ARM64 |
|
SHA-256 checksum How to use checksums |
190c3e39a84e3d930d3be917137f72d704bae3cc5f974c3ff6f76310d73f9687
|
|
BLAKE2b-256 checksum How to use checksums |
d870da032a28515095432938b6b3b6517dc35e520a1ec217d8a110864d37e8b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-win_amd64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 11.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
149e788eed4a19ccf6e5017916633ce398c5ec7911333dcb25eb52e64634ebff
|
|
BLAKE2b-256 checksum How to use checksums |
beae1d66687853d739818bb9756d5a6b65c5764bda4180406cba72921c1479f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-win32.whl
| Download URL | quebec-0.3.15-cp314-cp314t-win32.whl |
|---|---|
| Size | 9.8 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-32 |
|
SHA-256 checksum How to use checksums |
cd21fe5586d1864f8eb51bfe31b8cfb2c4ea7bca3aa5eb6ff49474484fab26fc
|
|
BLAKE2b-256 checksum How to use checksums |
153f83ff9e4a1fe6626568b77ceb3aa31060aafdb9d42a1f4d011a88f02201d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 12.9 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
2d31026ec2d729ba97793930c7c2fd88cf65ac6dacb8f317432379b16f614b23
|
|
BLAKE2b-256 checksum How to use checksums |
7e3c60b9f6bb003167970199bf6ef3d2ef635359810edd6fd66c7927f5de26c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-musllinux_1_2_i686.whl
| Download URL | quebec-0.3.15-cp314-cp314t-musllinux_1_2_i686.whl |
|---|---|
| Size | 12.9 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-32 |
|
SHA-256 checksum How to use checksums |
7b04b39c260546df41e4c6ba66816771d44619d80202eef6438d9cfc42db943d
|
|
BLAKE2b-256 checksum How to use checksums |
3e18b69bafdb53e4dd10e05604552b6fb248492efb0dc3b46468a0f315cd25fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-musllinux_1_2_armv7l.whl
| Download URL | quebec-0.3.15-cp314-cp314t-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 12.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARMv7l |
|
SHA-256 checksum How to use checksums |
ff58a303cedae183aa5b2199a334018a1bcc9f0c2a8ca4dbc12d2c2601684bce
|
|
BLAKE2b-256 checksum How to use checksums |
dfc00d921946c99dbf210ac10eae822036ff2aca904f81c9103dfc033d7fb2d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-musllinux_1_2_aarch64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
afbd60c77e6eb8ae25b3e85139cfabbedcd9e721d46c4978904958f91abaf02e
|
|
BLAKE2b-256 checksum How to use checksums |
1bd398e400a9d574a788b96baf9c19aab8a5e7b57061109957552f659a98b934
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
d1464a0ec84a33be1c2eb8f40ef3177a88d84e38ed7a9408dda827b766801ed3
|
|
BLAKE2b-256 checksum How to use checksums |
ee3883d3a0c3402437ccad5f87d5b56686f0c5d712f915bcc58a7cc1274592fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | quebec-0.3.15-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ IBM System/390x |
|
SHA-256 checksum How to use checksums |
4ab6090a14c35019e965703b2a4e50856cf5d3f77dd9865f80f57b034ea2ec0a
|
|
BLAKE2b-256 checksum How to use checksums |
f84e28994f0ec8d6ec20c48618f93e80de7d03f3f6b429ea1f307ec52409cfe0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | quebec-0.3.15-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 13.9 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ PowerPC 64-le |
|
SHA-256 checksum How to use checksums |
767f10b3d5795798339438e648c1d8363f495d6f5052733d3cc59b92c5d1f6f0
|
|
BLAKE2b-256 checksum How to use checksums |
89f8061c1c861c90d74cf47c4d620963977ef52d96fe519a9336e40abeff6ad4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | quebec-0.3.15-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 13.3 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
e31f14e21115315d29d91290c00f1c4cf9eed4347865335d2c6c244b44304018
|
|
BLAKE2b-256 checksum How to use checksums |
ba95fff10dcfed55c116f24552084731de12a489a4fd4a78eca028a48710b57b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | quebec-0.3.15-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 12.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARMv7l |
|
SHA-256 checksum How to use checksums |
b51f9f4b0a48dfe5a1597de48961f2701dbe7b68660d636dc1299e71e4c27a8a
|
|
BLAKE2b-256 checksum How to use checksums |
1006ace52efcce0e8ce7046e3d44ed44e967d7946ba337e8a30ca08f35e90943
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 12.4 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
576652150e1cd7f9051dbfd9729f988086e014c88d6311f35eeb0fc1bc75e2e8
|
|
BLAKE2b-256 checksum How to use checksums |
104b9d6b98e4739ce03d6c88030be546cb591dd74ea1a56ab32ecb101bf27b6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
60103452fc90f90a8fd8eb798a8f08ac02fbfb31256690a70f2cd6ba83348ad0
|
|
BLAKE2b-256 checksum How to use checksums |
85ea3348cff36caef922b15d15b6594c206da56d0a4710fa722c7e381be51f3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp314-cp314t-macosx_10_12_x86_64.whl
| Download URL | quebec-0.3.15-cp314-cp314t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
9e02415ca67ef20024e4c1e181f5aa1e397c2361aad64cca36de07a7af1871f8
|
|
BLAKE2b-256 checksum How to use checksums |
4951f100bb8820b57dbe392dcb016e56ae1e586c743b21bb43484aac27392226
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-win_arm64.whl
| Download URL | quebec-0.3.15-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 10.6 MB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
f9a8a09ba8ee1eca09767f7dd78d42d88e996100bcc2de580ab349f4a9e8b8c4
|
|
BLAKE2b-256 checksum How to use checksums |
99f4e9c00aa2d19f7ec4e9ddb0f30aa170ac4b83ece4734e27e761d64528d8f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-win_amd64.whl
| Download URL | quebec-0.3.15-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 11.5 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a25bf10fd9d976939fe4e55b9d67e2b8dd88fe9673aea43dcc285489646d453d
|
|
BLAKE2b-256 checksum How to use checksums |
23d19569ce752417d3321bd5e9ccb8c189e5bce2e00ec8e4ef91f64cc80c1784
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-win32.whl
| Download URL | quebec-0.3.15-cp39-abi3-win32.whl |
|---|---|
| Size | 9.9 MB |
| Tags | CPython 3.9 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
7ab7484f484b32dc9514a5ff582b50fd4a08bc25b6c79cc3fac63d8a8b5c3fae
|
|
BLAKE2b-256 checksum How to use checksums |
48f8710d0bf3069ff95df242e1974ceda795fcbba92a2e4a1aa47103f5f2e135
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | quebec-0.3.15-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 12.9 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
8fa94a161f17ceefea7a4636c85b8b9279ce67289e9db981e92319dba51824fe
|
|
BLAKE2b-256 checksum How to use checksums |
bf4941eb63e36fa73ea06d58b634e03bb6de82be4ae6ad3ffc1a9d3311e6993f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-musllinux_1_2_i686.whl
| Download URL | quebec-0.3.15-cp39-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 12.9 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
993456cc8eb72632ead8e6d2074fada74832785187d0e6d1a646360f68bdfc55
|
|
BLAKE2b-256 checksum How to use checksums |
ee9b5f4b56018bf8a6a8875b1007a07b7e805c536cae9109f2468f3988e53ce1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-musllinux_1_2_armv7l.whl
| Download URL | quebec-0.3.15-cp39-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 12.5 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
0ae121720ab283476ad5cb60acaab1416af574c02a395a167ae937374f7678fc
|
|
BLAKE2b-256 checksum How to use checksums |
a58d7a92c00ea0e5091f32b4b461f06c7b689b62151ea1604021740ad1bec470
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | quebec-0.3.15-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
28d5804e6ba28cd5b7ff9a1312e5e3bc28c6322bfc84a2aa5cf18113cd722bca
|
|
BLAKE2b-256 checksum How to use checksums |
9bf18893a9e105ff6ca6c0fc7035e7ef748b4c3b18a4a00ca2d2f92c780be626
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | quebec-0.3.15-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7463558927c625752de131e217d3bf2d2c10d869a2af9d21f06a31fbce31f800
|
|
BLAKE2b-256 checksum How to use checksums |
28d568b10512daec2cdcc22818a2cea1a288f0381ec7669e57256fc9366f8bd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | quebec-0.3.15-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
42a13c7df474cd4492ed3f9ec935e469c68904336ba03474c3a08ef1247b47f3
|
|
BLAKE2b-256 checksum How to use checksums |
93c7a21c920690ea11e55ca02d708e23165d9592ae2aa628a2008f4597b9cd19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | quebec-0.3.15-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 13.9 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
46247fa3c97cbe63952385a27c98e72b961d9217513f59efecbcdcde0ff7c3be
|
|
BLAKE2b-256 checksum How to use checksums |
1258057ac51e76ffb3b436a30d3618031a578f34c0ccc20141e9a75600c76dca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | quebec-0.3.15-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 13.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
91aa41788e06a071acf9ac96404faff464cdd3688635d823a372afe6a8495a66
|
|
BLAKE2b-256 checksum How to use checksums |
f649b94397330232605e1061556a05ff5e23f4e3a066f2235c374e2d97d0b93b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | quebec-0.3.15-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 12.1 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
90cc809afda53ac68fcf0a53a5b0d4519ae76520935476da85982251c90d447d
|
|
BLAKE2b-256 checksum How to use checksums |
0da7d39a7f322a20d15ad2d89b8203c310f4c8a75a1fdc89f6002da5b1c6dcd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | quebec-0.3.15-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 12.4 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
586150451b14035aa203dc06975c17a90702a2db928e158b6006d1f1da1cdcd1
|
|
BLAKE2b-256 checksum How to use checksums |
c4bdb28d73c30c376f8231dfc459086736440216b60b68b92e34e9461f898412
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | quebec-0.3.15-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.1 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
57c5005d7831246339ad51b2305b6f06d52af5d571d1d139564e7f459aff8737
|
|
BLAKE2b-256 checksum How to use checksums |
c2a0bd8260cacb3a895a57e88197ac067f8cc03581966bff5947d2a993049e45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / quebec-0.3.15-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | quebec-0.3.15-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
46a882d7b606d3ad9ca20efc78448a35e56d893c5d3fe5393daf59f34e65ddd0
|
|
BLAKE2b-256 checksum How to use checksums |
8f840f8c12b1239bae0f99b606d2c490a124afbde335922e642887b64bfead4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|