FISHDBC
Scalable, incremental hierarchical density-based clustering with a Flexible, Incremental, Scalable, Hierarchical Density-Based Clustering algorithm (FISHDBC is the acronym). This package lets you cluster arbitrary data with an arbitrary distance function you write (or reuse from somebody else's work!) — a true metric is not required, and neither is anything else beyond a number saying how dissimilar two elements are. Clustering is incremental: you can keep adding elements and re-cluster cheaply as new data arrives.
Please see the paper at https://arxiv.org/abs/1910.07283.
Approximate nearest-neighbor search is delegated to the companion
anydist package, which provides it
through a Hierarchical Navigable Small World graph (HNSW) — the data
structure the names below refer to; see anydist for what it is and how to
tune it. The freedom in the distance function is anydist's doing too. The hierarchy
extraction reuses hdbscan's
single-linkage labelling and cluster-tree routines, which are vendored
(BSD-3, in fishdbc/_hdbscan.pyx) so clustering needs neither hdbscan nor its
scikit-learn/joblib dependency chain.
Two implementations are provided:
FISHDBC(an alias ofFISHDBCFast) — the default: a Cython implementation over typed data structures, built onanydist.HNSWFast. It supports arbitrary Python distance callbacks, plus an optional built-in metric mode (euclidean,cosine,angular,dot,l1,linf, ...) that skips the Python callback entirely.FISHDBCPure— the pure-Python reference implementation, built onanydist.HNSWPure.
FISHDBC exists only where the compiled extension does, and does not fall
back to FISHDBCPure on its own: the reference implementation runs several
times slower over the same source, and a clusterer that quietly became it is
a performance bug that looks like nothing at all. Importing it then raises,
explaining the trade. Write from fishdbc import FISHDBCPure as FISHDBC to
take it deliberately; FISHDBC.from_metric below then builds over
anydist.HNSWPure as well.
anydist.HNSW behaves the same way, and the two extensions are independent:
a build can have either, both or neither.
Installation
pip install fishdbc
or, from a checkout of this repository:
pip install .
Windows is not supported: MSVC, the compiler Windows Pythons are built with, lacks the atomic builtins the parallel code needs. Under WSL, the Linux wheels work as usual.
PyPI has prebuilt wheels for the common platforms. Anywhere else, and from a
checkout, pip compiles the extensions, so you need a C compiler with OpenMP.
On macOS, fishdbc builds and runs on the OpenMP runtime that anydist ships (see
anydist.get_openmp_dir()), since libomp aborts a process that loads two
copies of itself; only if anydist has to be built from source too does that
need Homebrew's libomp (see anydist's installation notes). For an extra speed
boost on the
machine you build on (at the cost of a non-portable binary):
FISHDBC_NATIVE=1 pip install .
The runtime dependencies are numpy and anydist, nothing else — deliberately,
since it is what lets FISHDBC install on interpreters the wider scientific
stack has not reached yet (free-threaded builds especially, where scipy and
scikit-learn routinely lack wheels for months after a Python release).
The test suite likewise needs only numpy and pytest; its scikit-learn and hdbscan checks skip cleanly when those are absent.
Quickstart
FISHDBC.from_metric(metric, ...) builds a clusterer over a
sensibly-configured HNSW. Its only positional argument is the distance between
data elements, and it defaults to "euclidean" — so FISHDBC.from_metric()
clusters numeric vectors out of the box. What FISHDBC is distinctive for,
though, is that it takes a distance of your own over arbitrary objects just as
happily:
from fishdbc import FISHDBC
clusterer = FISHDBC.from_metric(my_distance)
for elem in my_data:
clusterer.add(elem)
result = clusterer.cluster()
labels = result.labels # result is a named tuple (see Return values)
for elem in some_new_data: # supports cheap incremental clustering
clusterer.add(elem)
# new clustering according to the newly available data
labels = clusterer.cluster().labels
The argument is named metric after scikit-learn's and hdbscan's usage,
which anydist follows: there too metric= is just the parameter that picks
the distance, and both accept distances that are not true metrics. Nothing
here requires one either: the triangle inequality may fail — cosine, one of
the built-ins below, fails it — and non-metric distances are key in
FISHDBC's design. This README says distance throughout for whatever your
function returns.
For numeric vectors, the built-in metric mode is substantially faster than
Python callbacks. Pass a metric name from anydist.metrics (like
euclidean, cosine, angular, dot, l1, linf, or their aliases) —
cosine being the one to reach for if you want cosine distance, since it
normalizes for you. See the
anydist README for the full table and
for how to supply your own C/numba implementations for maximum speed.
clusterer = FISHDBC.from_metric("euclidean") # or just FISHDBC.from_metric()
for v in vectors:
clusterer.add(v)
"euclidean" is the default, so clustering numeric vectors in an Euclidean space
takes no argument at all.
FISHDBC clusters on top of a distance-pair source — any object with an
add_recording(elem) -> (i, j, dist) method, anydist.HNSW being the
built-in one. FISHDBC.from_metric is a thin wrapper that constructs one; for
full control over the HNSW (or to plug in a different source), build it
yourself:
from fishdbc import FISHDBC
from anydist import HNSW
clusterer = FISHDBC(HNSW(my_distance, m=16, ef=100, keep_pruned=True))
The source must be empty at construction and thereafter driven only through
clusterer.add — it is exposed for reading as clusterer.source, so if the source supports nearest-neighbour queries, you can ask it questions like
clusterer.source.search(q, k) which answer "what is this point near?". FISHDBC
itself has no search: the protocol is add_recording() alone, and a
conforming source (an LSH pair generator, a kNN-graph replayer) need not
support nearest-neighbor queries at all. When the elements stop coming,
clusterer.drop_source() lets go of it and keeps the clustering (see
Saving and loading).
A source that inserts a batch better than one element at a time — in
parallel, say — can also offer update_recording(elems, num_threads=None) -> (i, j, dist), and clusterer.update then hands it the elements in chunks
instead of calling add_recording for each. num_threads=None asks for the
source's own default, so a source that is only safe on one thread stays on one
unless the caller asks for more; anything else about how it inserts is set on
the source, as HNSW(..., chunksize=...) is. The arrays it returns are handed
over rather than lent: FISHDBC may write into them and keep them.
The candidate pool
FISHDBC maintains a minimum spanning
tree (MST) — a small
structure, n - 1 edges for n elements — from which the clustering is
derived. add, add_edges and update do not update it directly: they
fill a pool of candidate edges, which flush() processes and empties.
cluster() and fishdbc.save flush on their own, so a saved clusterer never
carries a pool (see Saving and loading); calling
flush() yourself only reclaims the pool's memory at a moment of your
choosing.
The pool grows with the source's ef as well as with n, and it is what
dominates memory during a build, so it is bounded: max_pool_bytes, a
constructor argument that defaults to 1 GiB, flushes it whenever it fills.
Below the budget nothing changes, and a single flush at the end stays the
fastest path. Above it, peak memory holds at about four to five times the
budget on top of what the index and the clusterer keep anyway, and the extra
flushes cost time: measured, a 400k-point build whose pool fills 1 GiB twice
took 11% longer. Pass max_pool_bytes=None to never flush on your behalf,
or a smaller budget under memory pressure. FISHDBCPure counts its pool
entries at their real size on the running interpreter, several times what
FISHDBC needs for each.
To understand what the MST is and how it drives clustering, see Campello et al., and McInnes and Healy for the accelerated implementation this package vendors its extraction routines from.
Clustering a graph you already have
A source is one way to produce (i, j, distance) triples. The other is to
push them in directly, which is what add_edges is for — distances that
already exist or are computed elsewhere: a kNN graph from another library,
GPU-batched distances, pairwise scores out of a database or a pipeline.
from fishdbc import FISHDBC
clusterer = FISHDBC.from_edges(min_samples=5)
clusterer.add_edges(rows, cols, distances) # any iterables, any length
labels = clusterer.cluster().labels # indexed by node id
The three arguments are duck-typed: numpy arrays of any integer or float
width, lists, tuples, array.array, range, or a lazy iterator that is
never materialised. np.int32/np.float64 arrays — what anydist.HNSW
produces — are the one form the Cython implementation consumes with no copy;
everything else is converted on the way in. The same holds for the (i, j, dist) triples a source returns from add_recording, so a source of your own
may hand back whatever is natural to build.
add_edges is the primitive; add is the same thing with a source asked for
the triples first. Nodes are the integer ids in the edges: a node exists as
soon as an edge names it, and an id never named is isolated and comes out as
noise. With no source, the id space is yours and len() grows to cover the
largest id seen. With a source, the source owns the ids and pushed edges may
only relate elements it has already issued — supplementary information about
existing points (a second modality, a known relation, an exact distance for a
pair the ANN only approximated). A larger id is refused rather than absorbed,
because it would desync the count from the source's and corrupt later adds.
Two things to know. Give every node at least min_samples neighbours: fewer
leaves its core distance infinite, so it can only cluster as noise, and
cluster() warns when that happens — pushing a k-nearest-neighbour graph with
k < min_samples degenerates every node at once. And feed each unordered
pair once: dedup=True (the default) makes a repeat harmless, but kNN graphs
naturally carry both (i, j) and (j, i). FISHDBC.from_metric sets
dedup=False, since an HNSW cannot report the same pair twice; turn it off
yourself only if
you are generating the pairs and know they are unique, which saves an
O(min_samples) scan on each accepted neighbour.
Extraction-time parameters
cluster() also accepts hdbscan's extraction-time knobs —
cluster_selection_epsilon, cluster_selection_persistence,
max_cluster_size, cluster_selection_epsilon_max — alongside
min_cluster_size, cluster_selection_method, allow_single_cluster.
These parameters can be tuned cheaply without rebuilding: changing them and
re-running cluster() extracts a new clustering from the existing data, so
you can experiment with different parameter values at a fraction of the cost.
Return values
cluster() returns a FISHDBCResult named tuple — still a plain tuple in
the same order as hdbscan.hdbscan(), so it unpacks positionally, but its
fields are also accessible by name. As documented in the
HDBSCAN source code:
- labels —
ndarray, shape (n_samples,). Cluster labels for each point. Noisy samples are given the label -1. - probabilities —
ndarray, shape (n_samples,). Cluster membership strengths for each point. Noisy samples are assigned 0. - cluster_persistence —
array, shape (n_clusters,). A score of how persistent each cluster is. A score of 1.0 represents a perfectly stable cluster that persists over all distance scales, while a score of 0.0 represents a perfectly ephemeral cluster. These scores can gauge the relative coherence of the clusters output by the algorithm. - condensed_tree —
record array. The condensed cluster hierarchy used to generate clusters. - single_linkage_tree —
ndarray, shape (n_samples - 1, 4). The single linkage tree produced during clustering, in the scipy hierarchical clustering format (see the scipy docs). - minimum_spanning_tree —
ndarray, shape (n_samples - 1, 3). The minimum spanning tree as an edge list.
Using hdbscan's tree tools
The trees come back as plain arrays, but hdbscan's own wrappers accept exactly
those arrays, so everything in
Advanced HDBSCAN
— dendrogram and icicle plots, to_networkx(), to_pandas(), get_clusters()
— works on a FISHDBC result once you wrap it yourself. Where hdbscan would
give you clusterer.condensed_tree_, construct the wrapper directly:
from hdbscan.plots import CondensedTree, SingleLinkageTree
result = clusterer.cluster()
# hdbscan's condensed_tree_ takes the tree *and* the per-point labels
ct = CondensedTree(result.condensed_tree, result.labels)
ct.plot(select_clusters=True)
graph = ct.to_networkx()
SingleLinkageTree(result.single_linkage_tree).plot()
This needs hdbscan installed (and matplotlib for the plots) — FISHDBC itself does not require either.
minimum_spanning_tree is the exception. hdbscan.plots.MinimumSpanningTree
takes (mst, data) and plots the nodes at their own coordinates, projecting
with t-SNE when the data has more than two dimensions, so it only makes sense
when you clustered numeric vectors and can hand it that array:
from hdbscan.plots import MinimumSpanningTree
MinimumSpanningTree(result.minimum_spanning_tree, X).plot()
With an arbitrary distance over non-vector objects there is no such X,
and hdbscan hits the same limit — it warns and returns None for
minimum_spanning_tree_ whenever the raw data is unavailable.
Saving and loading
A clusterer pickles like anything else, and most of the time that is the whole story:
with open("c.pkl", "wb") as f:
pickle.dump(clusterer, f)
Everything FISHDBC owns is ids and distances in plain arrays, and an
anydist.HNSW pickles too — a built-in name like 'euclidean' (what
FISHDBC.from_metric uses unless you say otherwise) or a module-level function
travels fine. Three kinds of distance function do not: a lambda, a closure,
and a C function pointer, where a raw address would be meaningless in the
loading process anyway.
That is what fishdbc.save/fishdbc.load add — pickle, plus the ability to
leave the distance function out and supply it on the way back in:
# the source is kept, its distance function is not
fishdbc.save(clusterer, "c.pkl", include_metric=False)
clusterer = fishdbc.load("c.pkl", metric=my_distance)
They handle the ordinary case as well: fishdbc.save(clusterer, 'c.pkl')
writes a self-contained file that fishdbc.load('c.pkl') — or plain
pickle.load — opens, and it raises rather than writing a file load could
not open, naming the way out, so you never get an artefact that only looks
self-contained.
save also calls flush() before writing, so the file holds the
retained edges rather than the candidate buffer behind them — measured over
600 elements, 5x smaller at the source's ef=20 and 12x at ef=200, since
the buffer grows with ef where the retained set stays at n - 1 edges. The
clustering is unaffected; it is the same flush cluster() already does.
Plain pickle.dump cannot do this for you (a __reduce__ with side effects
would be a trap), so call flush() yourself first if you pickle
directly.
include_metric=False is for the HNSW from_metric builds for you: it hands
the source to anydist.save and gives it back through anydist.load, so what
you pass as metric= must be the same distance the index was built with —
that cannot be checked, and a different one leaves the graph answering for a
distance it was not built for.
For a source of your own, include_source=False leaves the whole source out,
whatever it is, and load(f, source=...) puts it back; the source's length is
checked against the clusterer's, which catches a stale or a fresh one. Passing
source=fishdbc.NO_SOURCE instead loads the clustering without an index at
all — cluster() still answers for every min_samples it was built for and
add_edges() still works, but add() has nothing to compute distances with.
clusterer.drop_source() does the same thing in memory, without a round
trip through a file:
clusterer.drop_source() # keep the clustering, release the index
The source is usually the larger half of the pair — it holds the elements and
the graph over them, where the clusterer holds ids and distances — so once the
elements have stopped coming this is the cheap way to shed it. It is also what
makes an unpicklable distance stop mattering: with the index gone, the clusterer
pickles as it is. Take clusterer.source first if you want to save or keep it;
nothing is handed back, so that a drop is a drop.
Only load files you trust. save/load are built on pickle, and
unpickling any file runs code that the file chooses. That is pickle's design,
not something this package adds or can screen for: load sees what the file
contains only after the interpreter has already executed whatever the stream
asked for, and a saved clusterer normally carries a whole HNSW inside it, read
back the same way. Supplying the distance yourself does not help — the code
runs before your metric= is ever consulted. Treat a saved clusterer exactly
as you would a .py you were about to run; it is not a safe interchange
format for data from elsewhere.
Demo/Example
Look at examples/fishdbc_example.py for an interactive demo of incremental clustering and of walking the condensed tree to recover the hierarchy (it needs matplotlib and scikit-learn, which FISHDBC itself does not).
Author
Matteo Dell'Amico — della@linux.it
License
BSD 3-clause; see the LICENSE file.
Metadata
Release files for fishdbc 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fishdbc-1.0.0.tar.gz | 106.7 kB | Without provenance | Details for fishdbc-1.0.0.tar.gz |
Built distributions (wheels)
Total release size: 90.0 MB
Release files / fishdbc-1.0.0.tar.gz
| Download URL | fishdbc-1.0.0.tar.gz |
|---|---|
| Size | 106.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fdc0b5f2a0bace7d066b6936650a9ecb8fc10f2ae028442786c073e39266d1d6
|
|
BLAKE2b-256 checksum How to use checksums |
c8a7ea82dbee31d130bb2c423c9dbbd47676e0fde42727681f54024bea282890
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315t-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
f8ba5c03a4ec661e5c04afb40189685af0f02234cff7a51ac2579204ba40829d
|
|
BLAKE2b-256 checksum How to use checksums |
0e2288c57f9de18d30f51202be4ec6ecdccc50579a2d2a19699a380e1806bb38
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315t-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
9d69f02b0bd1db3b75a9692e7dea921376ab0777e47e1bdeb1864dcf6be671ad
|
|
BLAKE2b-256 checksum How to use checksums |
17750b04d87624653643f2001787c77ecbc74b6f711f8e263b80fdc2a4d9f8b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
dd78ebd98eb8adb9f7559fea814d76b6247d9590cc1085618eb3054971e86b4e
|
|
BLAKE2b-256 checksum How to use checksums |
1158b4d84e11e318952e90baddac8466a2e79ebf8c9cfe467f2a7015ea9b82dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
933ef3aacea7bb1e50bd357d7471fe0720ac3c96674dc64bb04671f3bf665f1d
|
|
BLAKE2b-256 checksum How to use checksums |
76bcbe42c6f82c15090f94fe72d094d156f0a8b08ad84a59412e821b9a565f91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315t-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315t-macosx_15_0_arm64.whl |
|---|---|
| Size | 478.8 kB |
| Tags | CPython 3.15 CPython 3.15 free-threading macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
254c3010fb90223ec48c3e531fcfa36f4581e2934033067b672593c1119b24ba
|
|
BLAKE2b-256 checksum How to use checksums |
6741d528f57d4330eddcd2f0eb0e0b87645b61cb8f92dd5d2e9652fcc3167cf6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.15 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
acf0cbf46596d0bf34ef952db638f2e41e3e27dbc565d479b9151605d43c527d
|
|
BLAKE2b-256 checksum How to use checksums |
788e5cf880da34acbce69de7a393ede25df3f5f93cbf33f69c0198066cfb1883
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.15 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
1dda36b32aa9791787163860092980b8cf3bc9683b859fdcad662129f551dc3d
|
|
BLAKE2b-256 checksum How to use checksums |
f232941aa44d9393d382d5abe55da4fbdae13afcf9df5a79856d9214df38a6b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.15 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
132a839415dd7fc0de617b946d1834548e84791eee3c924d37c3dec2e5d862fb
|
|
BLAKE2b-256 checksum How to use checksums |
367cc26e565b53324e827fe9bcb9c4abe4663e99c16299a8445e2fa3863ef23c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.15 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
3e1df883f4c03c39f488e32ce1a78e684ad931d06d300434fbba2abedb0ebe53
|
|
BLAKE2b-256 checksum How to use checksums |
8ea774f7ad5a213cc0e61de97b9162375a10017fe2e7f595f56a37f117ee6a02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp315-cp315-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp315-cp315-macosx_15_0_arm64.whl |
|---|---|
| Size | 452.8 kB |
| Tags | CPython 3.15 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9fa4e384c952dda2274610da42ff89e3570b0c22ee0a5ad35c14eb55cd4cd7d2
|
|
BLAKE2b-256 checksum How to use checksums |
662cd468ae5d01dd0dda4ef0d5eedd3370954b0ac75672b5f6a21ebd6be87435
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
ee8f90e468f49e5212de2e2e2ba48a371d4ba985c84d80b54a22ea4d1a5a2fc5
|
|
BLAKE2b-256 checksum How to use checksums |
4af99cfe6189f2b0951ad2417bf8f9bc16c655b67b3f697b43782b26b24538f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
56e6ce289fa54867e70e855bcaf2ef3e19eab20ed6e7de254fea66b3a6626ab7
|
|
BLAKE2b-256 checksum How to use checksums |
b45c363ad4b22ebd2636fa11a41a03d2f63b2586b24b52741481325908fbd67a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5fa82d8ab011d3e58410c4b9707e90fb459823b419e08d694b838b85f37cfaba
|
|
BLAKE2b-256 checksum How to use checksums |
5a689dc826ed4f1e36429240f00aa0b03544a07678b98bc0c1cab019fdae5c14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
eb97b8c12507155d74616ba019e6df86ff76172d7faeddb9cd832bfd1c0c1146
|
|
BLAKE2b-256 checksum How to use checksums |
6a01739e8618b409514576bc8c831896d0b820abc560850a243ce498e9ac2315
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314t-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314t-macosx_15_0_arm64.whl |
|---|---|
| Size | 480.7 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f5d87a2e8f21a5a819500926089e9541722158e94c19e357eb44fd41da6d50a7
|
|
BLAKE2b-256 checksum How to use checksums |
918534956c68ed5a4ab4bf479643ab2b33af17c1e9a21ad1ba5faddce6ef3041
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
29d522ce59e14a0ef48a5deedb76e97fbd4289e8868c4d1225fc0d6ca15ad2b3
|
|
BLAKE2b-256 checksum How to use checksums |
61d4f8fa745d15445326e9c639151ed3607430301d3e1ebca7bc35a66a9cff8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.14 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
19bb01ce0309eb6df521bc6ca169a91ec61a7a1d05c193409d3de75ff7ec49d1
|
|
BLAKE2b-256 checksum How to use checksums |
1f34bef9fc2d73c563f6c62771302437a98c42f39e3f5f7fb9faacd530805a8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0208da6d93a5847d17d4b5b23a8c8f6352826a94544628c2e42adbda2f009c60
|
|
BLAKE2b-256 checksum How to use checksums |
c1b2113b9fd0eb67339224366576d1388fabf4c08a7c3f42ff049747ee5cf711
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fe2435c408c8f504ba8b762a86dc8905aada74b63e9e8a1672f7adf59b0c7352
|
|
BLAKE2b-256 checksum How to use checksums |
665cb87c295920a9ef16c8aebd0a4ed19e7d59418b2ddbe4d5934ef3e9b1b9c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp314-cp314-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp314-cp314-macosx_15_0_arm64.whl |
|---|---|
| Size | 453.1 kB |
| Tags | CPython 3.14 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b01ec4371b07f7de266e7c97ab2b369042a847b9f904fee8eb4c2604bdb97264
|
|
BLAKE2b-256 checksum How to use checksums |
2df4345d6a797ce30a7e0f7aec3b9ecd70a1e2528ef0ddca9cbb62fe7f3c405a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
a48f1510902095bd839a0349682a619adcbd42eb7e96c1f571e7ba93cf6c41eb
|
|
BLAKE2b-256 checksum How to use checksums |
56b005eff1112ed34676ab92178b17ec2b71bc681b341c01630560605bee6def
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp313-cp313-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp313-cp313-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.13 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
af5f2d3f270630ce809f048827478d3ccfcb5f17547ae2537c6ef3158e62669c
|
|
BLAKE2b-256 checksum How to use checksums |
58e4aa66d642a07b72ea06c5ed5bec73a66f8f3bdacc00d0e48813221eb2738f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6932b10df349f1d0a47f3fef5596225141c1810f9ee2b1d9e4a073efff06fcd1
|
|
BLAKE2b-256 checksum How to use checksums |
962233555e2420d3d8c70890cf89b020749acd82905c49f7a1a4dc4e0a4dcf9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
a8661b163d914ce988487e97f2d3292cda6661f2cddf3562c8b4516b3478e32c
|
|
BLAKE2b-256 checksum How to use checksums |
773154e415f21661fb1ed2ecdf711eeaaf08f48a8d57f41559333bc241f63e1d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp313-cp313-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp313-cp313-macosx_15_0_arm64.whl |
|---|---|
| Size | 450.5 kB |
| Tags | CPython 3.13 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d01dd661129d58af19e02dc711b6a3ae95c19ef2aab4271e44a0cbbe696e44c4
|
|
BLAKE2b-256 checksum How to use checksums |
7b169a01943ca42537dd5672616e0647e21563552be52f3a0b5e9664d6caa51b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
2827e1361c9a6a4a4222c1446ed4b08200f97cd145f7445e4023533d10916347
|
|
BLAKE2b-256 checksum How to use checksums |
956226e773e55c3b013f0fe98eba01f1359d0f7229d06dcea0217a7b11a31e1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp312-cp312-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
df2a9d50ebbd495505bc654942bd39de52c2dde05f4b42f405ce8324aaa15ea1
|
|
BLAKE2b-256 checksum How to use checksums |
db8077fb6c1d5be180b9fc74f1477d4902b523d09594baba503a17c02c1d964c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c222fde0dc4d505d43b3e526cc852023f0f9c63d0b0610abb09ed0da2295d8e2
|
|
BLAKE2b-256 checksum How to use checksums |
1d170f31d369a468054fe3b96c563da95f60cd9b5d6c24a224f2832fb6f185da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
de06f7ee11027fa49805f5f7cbd9ee4431d97922e83374f0f89bb9bdbfc2532f
|
|
BLAKE2b-256 checksum How to use checksums |
75024eb011e22466cac8d8a3130b86b8142f6b59c732b6fefc5c3c8da41771c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp312-cp312-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp312-cp312-macosx_15_0_arm64.whl |
|---|---|
| Size | 450.4 kB |
| Tags | CPython 3.12 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
54e14956454d052de509a8674b20d39ce4b183c24f956ef9d955b7573485623a
|
|
BLAKE2b-256 checksum How to use checksums |
5681b9630bf4dd4879af8f289d0cf054c28af9d4182c7e3c90ed2e31e0660e17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
fb30db39a991a37df6b4f741ef4d420c0e300da0e99bafa97764948ad5e355d3
|
|
BLAKE2b-256 checksum How to use checksums |
5028bd6349f57adf29d02f5edc02d990daad115644caba0dfecdf963846c2f2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp311-cp311-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp311-cp311-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
7a98631feb982dad00cfaf15d036ec32f04b92f97fd30628afd19eb69726943f
|
|
BLAKE2b-256 checksum How to use checksums |
f19d8c5b4a65f82b7ab90043313b8da832e1f0a33ff86d777ded81b758124f5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2361b16bc2aa0efa1170ae4966e0ac3a9a4ee38f5836e8b4be816b6c05c1a3cf
|
|
BLAKE2b-256 checksum How to use checksums |
d546e3f45a687ad233638f32187eebe1a5b8c6f13ea7ff8955b5ad26ffcd48b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
71d1cea444fa3f2e1c22a0c37bba578e5ebdd6d5168db9d5b74ccd19c742d0d0
|
|
BLAKE2b-256 checksum How to use checksums |
f774f13262ffcda29dfd7c97959b8b41e40dc0e354389e65ea3016dd505c83bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp311-cp311-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp311-cp311-macosx_15_0_arm64.whl |
|---|---|
| Size | 449.9 kB |
| Tags | CPython 3.11 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
aff8daa6a667591439be42ebdb9e0697cf48ef02dcf3a296891cf7d7000cf55b
|
|
BLAKE2b-256 checksum How to use checksums |
4d0e93ace024845058705d11f0123fd527cd496934e2d916371c7a92d3f8e82d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | fishdbc-1.0.0-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
c35b001b4a7cfd27a599d45c288725fa90bf14273bf73d0412282adb71841b82
|
|
BLAKE2b-256 checksum How to use checksums |
b9146810664158355b1528b11a17f8fe128e534394a878d3ab403b2e031d5eac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp310-cp310-musllinux_1_2_aarch64.whl
| Download URL | fishdbc-1.0.0-cp310-cp310-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
4cd8f0177d7b032b9d6674e19f55c920ba2cdeb003063b185278e237c0f25e2d
|
|
BLAKE2b-256 checksum How to use checksums |
a208cc65f3ec84d9714b737f946b59f400eb9fc71b5db023f0044160e2629ffc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fishdbc-1.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ba63597b44011c521d5eb92cad34cb381d3a987c0b7ed1537f4f94cb7d2fa76f
|
|
BLAKE2b-256 checksum How to use checksums |
18726e4a5559fc017cf634512d56679f6094b788993571c4fdd973e874af90c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fishdbc-1.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
835730828dd7d6fcc76cb7d5409b2a9922bc8d3c87d35867095b865584689b47
|
|
BLAKE2b-256 checksum How to use checksums |
d11523dae6c542811562fdf59e42d1b93ac61f4353ecd5ff4e75f32bc2d7e961
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / fishdbc-1.0.0-cp310-cp310-macosx_15_0_arm64.whl
| Download URL | fishdbc-1.0.0-cp310-cp310-macosx_15_0_arm64.whl |
|---|---|
| Size | 455.9 kB |
| Tags | CPython 3.10 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
cfec13b623d2266b18d28f330e66895f2124e22f9b574e99e2b6c7fc5c6564a2
|
|
BLAKE2b-256 checksum How to use checksums |
b8f0fa4128b94145949357581d47ee6c7195a0adb4a661f94535ba2f41dc0508
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Security for fishdbc 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.