High Performance DataFrame library written in C++ and wrapped with Python.
Project description
grizzlars
A Python DataFrame library backed by a multithreaded C++ engine — built for speed.
grizzlars wraps hmdf, a high-performance C++ DataFrame, with a clean Python API. Columns are stored as typed std::vector<T> buffers — no GIL-bound Python object overhead. Sort, filter, groupby, join, and aggregate operations run in parallel across all CPU cores automatically.
Installation
Requires Python 3.10 or higher
pip install grizzlars
Quick Start
import grizzlars
df = grizzlars.DataFrame({
"symbol": ["AAPL", "GOOGL", "MSFT", "AMZN", "META"],
"price": [189.3, 175.1, 415.2, 185.0, 502.7],
"volume": [52_000_000, 18_000_000, 22_000_000, 31_000_000, 14_000_000],
"active": [True, True, True, False, True],
})
print(df)
# Load from CSV
df = grizzlars.read_csv("prices.csv")
Column Types
| Python / NumPy type | grizzlars type | C++ storage |
|---|---|---|
float / float64 |
"double" |
std::vector<double> |
int / int64 |
"int64" |
std::vector<int64_t> |
bool |
"bool" |
std::vector<bool> |
str |
"string" |
std::vector<std::string> |
The index is always uint64 and defaults to 0..N-1.
API Reference
I/O
grizzlars.read_csv(path, index_col=None, dtype=None)
Read a CSV file into a DataFrame. Uses a multithreaded native C++ reader by default.
df = grizzlars.read_csv("data.csv")
# Promote a column to the index
df = grizzlars.read_csv("data.csv", index_col="Id")
# Force a column to a specific type (triggers slower Python fallback)
df = grizzlars.read_csv("data.csv", dtype={"code": str})
df.to_csv(path, index=True)
Write the DataFrame to a CSV file.
df.to_csv("output.csv")
df.to_csv("output.csv", index=False) # omit index column
Construction
grizzlars.DataFrame(data=None, index=None)
Build a DataFrame from a dict of lists or NumPy arrays.
df = grizzlars.DataFrame({
"x": [1, 2, 3],
"y": [4.0, 5.0, 6.0],
})
# Custom index
df = grizzlars.DataFrame({"x": [10, 20, 30]}, index=[100, 200, 300])
Inspection
df.shape # (rows, cols) — tuple
len(df) # row count
df.columns # list of column names
df.index # numpy uint64 array of index values
df.dtypes() # {"col": "double" | "int64" | "bool" | "string", ...}
Column Access & Mutation
# Read a column — returns numpy array (numeric/bool) or list (string)
prices = df["price"]
# Add or overwrite a column in-place
df["log_price"] = np.log(df["price"])
df["label"] = ["cheap", "expensive", "mid"]
# Check membership
"price" in df # True / False
# Non-mutating variants
df2 = df.with_column("log_price", np.log(df["price"]))
df2 = df.assign(log_price=np.log(df["price"]), rank=[1, 2, 3])
# Select a subset of columns
df2 = df.select(["symbol", "price"])
# Rename columns in-place
df.rename({"symbol": "ticker", "price": "close"})
# Drop a column in-place
df.drop("log_price")
Slicing
df.head(10) # first 10 rows
df.tail(10) # last 10 rows
df.iloc[0] # single row as DataFrame
df.iloc[10:50] # slice (step=1 only)
df.iloc[-1] # last row
Filtering
filter() is lazy — the boolean mask is stored and data is only copied when a materialising operation is called. len() and .shape are always O(1).
# Mask mode (recommended — compose with numpy operators)
cheap = df.filter(df["price"] < 200)
active = df.filter(df["active"] == True)
# String operator mode
cheap = df.filter("price", "<", 200)
# Operators: ">" ">=" "<" "<=" "==" "!="
# Combine conditions
mask = (df["price"] < 200) & (df["volume"] > 10_000_000)
df.filter(mask)
# len() and shape are free (no materialisation)
print(len(cheap)) # instant
print(cheap.shape) # instant
# Materialises on first real operation
print(cheap["symbol"])
cheap.sort("price")
Sorting
All sort operations are non-mutating and return a new DataFrame.
df.sort("price") # ascending
df.sort("price", ascending=False) # descending
df.sort_values("volume", ascending=False) # alias for sort()
df.sort_index() # sort by index ascending
df.sort_index(ascending=False) # sort by index descending
Statistics
All scalar stats operate on a single column and return a Python float or int.
df.mean("price") # arithmetic mean
df.std("price") # sample standard deviation (n-1)
df.sum("price") # total
df.min("price") # minimum value
df.max("price") # maximum value
df.count("price") # non-null count
df.quantile("price", 0.5) # median (q in [0, 1])
df.corr("price", "volume") # Pearson correlation
df.cov("price", "volume") # sample covariance
df.nunique("symbol") # number of distinct values
df.unique("symbol") # sorted array of distinct values
df.n_missing("price") # count of NaN / empty-string values
# Frequency table — returns DataFrame with ["value", "count"]
df.value_counts("symbol")
df.describe()
Returns a DataFrame with count / mean / std / min / max / sum for every numeric column.
stats = df.describe()
# statistic | price | volume
# -----------+---------+---------
# count | 5.0 | 5.0
# mean | ... | ...
# std | ... | ...
# min | ... | ...
# max | ... | ...
# sum | ... | ...
GroupBy
groupby() returns a _GroupBy object. Chain .agg() or a shorthand method.
# agg() accepts a dict of {column: function}
# Functions: "mean", "sum", "min", "max", "count", "std"
result = df.groupby("sector").agg({"price": "mean", "volume": "sum"})
# Shorthand methods
df.groupby("sector").mean("price")
df.groupby("sector").sum("volume")
df.groupby("sector").min("price")
df.groupby("sector").max("price")
df.groupby("sector").count("price")
df.groupby("sector").std("price")
GroupBy uses string_view keys internally — zero string copies during bucketing.
Join
Joins operate on the DataFrame index. Load CSVs with index_col= to set the join key.
left = grizzlars.read_csv("orders.csv", index_col="order_id")
right = grizzlars.read_csv("products.csv", index_col="order_id")
inner = left.join(right, how="inner") # default
left_j = left.join(right, how="left") # unmatched right → NaN / ""
right_j = left.join(right, how="right")
outer = left.join(right, how="outer")
The join uses a hash table probe — O(n + m) with parallel column scatter.
Concat
Vertically stack two DataFrames (append rows). The index resets to 0..N-1.
combined = df_a.concat(df_b)
# Stack many frames
from functools import reduce
all_data = reduce(lambda a, b: a.concat(b), frames)
Only columns present in both frames with the same type are kept.
Window Functions
All window functions return a NumPy array (not a new DataFrame).
df.rolling_mean("price", window=20) # 20-period moving average
df.rolling_sum("volume", window=5)
df.rolling_std("price", window=20)
df.rolling_min("price", window=10)
df.rolling_max("price", window=10)
# Generic form
df.rolling("price", window=20, func="mean")
# func: "mean" | "sum" | "std" | "min" | "max"
Cumulative Functions
df.cumsum("volume") # cumulative sum
df.cumprod("factor") # cumulative product
df.cummin("price") # running minimum
df.cummax("price") # running maximum
Shift & Percent Change
df.shift("price", n=1) # lag by 1 period; NaN at boundary
df.shift("price", n=-1) # lead by 1 period
df.pct_change("price") # (price[i] - price[i-1]) / price[i-1]; first element NaN
Data Cleaning
# Remove rows with duplicate values in a column (keep first)
df.drop_duplicates("symbol")
# Remove rows where a column is NaN or empty string
df.drop_na("price")
# Fill NaN / empty values in-place (returns self)
df.fillna("price", 0.0)
df.fillna("label", "unknown")
Threading
grizzlars automatically enables multithreading on import using all logical CPU cores. You can adjust it at runtime.
import grizzlars
grizzlars.set_optimum_thread_level() # auto-detect (called on import)
grizzlars.set_thread_level(4) # pin to 4 threads
grizzlars.get_thread_level() # returns current thread count
Performance
grizzlars is built for analytical workloads on large datasets:
- CSV load — memory-mapped file read, multithreaded chunk parsing, move semantics for string columns
- Filter — lazy evaluation; boolean mask stored until a materialising operation;
len()is always O(1) via SIMDcount_nonzero - Sort —
string_viewcomparison keys (zero heap allocation per comparison); parallel permutation scatter - GroupBy —
unordered_map<string_view>bucketing (zero string copies); parallel aggregation - Join — hash table probe O(n + m); parallel column scatter across all cores
- Aggregate / describe — direct C++ vector reduction, no Python loop overhead
Benchmark against polars on a 100 000-row customer dataset (12 columns, mixed string/numeric):
| Operation | grizzlars |
|---|---|
| read_csv | 2.41× faster |
| sort | 1.33× faster |
| filter | 24.93× faster |
| groupby | 2.69× faster |
| aggregate | 20.39× faster |
| describe | 61.97× faster |
| join inner | 2.15× slower |
| join left | 4.07× slower |
Full test result:
===============================================================================
Customer data benchmark — grizzlars vs polars
Dataset: customers-100000.csv (16912 KiB)
===============================================================================
Rows: 100,000 Columns: 12
── Load ──────────────────────────────────────────────────────────────
read_csv (customers) polars 76.13 ms grizzlars 31.53 ms → grizzlars is 2.41× faster
── Memory ────────────────────────────────────────────────────────────
RSS delta after load polars N/A grizzlars N/A
In-process data size polars 15.5 MiB grizzlars 15.9 MiB
── Operations ────────────────────────────────────────────────────────
sort(Last Name asc) polars 45.97 ms grizzlars 34.67 ms → grizzlars is 1.33× faster
filter(Index > 50) → 99,950 rows polars 26.17 ms grizzlars 1.05 ms → grizzlars is 24.93× faster
groupby Country → 243 groups polars 13.79 ms grizzlars 5.13 ms → grizzlars is 2.69× faster
agg(mean/sum/std/min/max) polars 5.72 ms grizzlars 280.4 µs → grizzlars is 20.39× faster
describe polars 23.60 ms grizzlars 380.9 µs → grizzlars is 61.97× faster
── Joins (customers ⋈ people-100000.csv) ───────────────────────────
join inner → 100,000 rows polars 20.54 ms grizzlars 44.12 ms → polars is 2.15× faster
join left → 100,000 rows (~50 000 unmatched) polars 9.90 ms grizzlars 40.30 ms → polars is 4.07× faster
===============================================================================
Project Structure
grizzlars/
├── grizzlars/ Python package
│ └── __init__.py DataFrame class + read_csv
├── src/
│ └── grizzlars_bindings.cpp pybind11 C++ extension
├── DataFrame/ hmdf C++ library (header-only + DateTime.cc)
├── tests/
│ ├── text_benchmark_test.py customer data benchmark
│ ├── numeric_benchmark_test.py stock data benchmark
│ └── mixed_benchmark_test.py warehouse data benchmark
├── CMakeLists.txt
└── pyproject.toml
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file grizzlars-0.1.0.tar.gz.
File metadata
- Download URL: grizzlars-0.1.0.tar.gz
- Upload date:
- Size: 20.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
702438d83d3a94630519a46c3748f5c4a5695537ba6128cd7d2eb65bbed915cf
|
|
| MD5 |
cdccf9b1533cc0d5c4b60944c9c8a82b
|
|
| BLAKE2b-256 |
646c4df40e31931f5233b3ae59b56e6ec1500fd0ac6bc2080035d6913c5f0b37
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0.tar.gz:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0.tar.gz -
Subject digest:
702438d83d3a94630519a46c3748f5c4a5695537ba6128cd7d2eb65bbed915cf - Sigstore transparency entry: 1475418285
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 277.7 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a586929ea359a7ac1351ab4d38475cc8743b887474899001a6d3032b90511668
|
|
| MD5 |
dec1190a101b8b66196efe7a1cd0644f
|
|
| BLAKE2b-256 |
4989ffd3f232e7133556aa414503c162f0f5e12bf0a6f1337971de6260b1c21d
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp312-cp312-win_amd64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp312-cp312-win_amd64.whl -
Subject digest:
a586929ea359a7ac1351ab4d38475cc8743b887474899001a6d3032b90511668 - Sigstore transparency entry: 1475418690
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 312.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c107f84e10e9fc4605f640e52e34aed2cda6a13d1619ef15fdab92c4d5fa3633
|
|
| MD5 |
45746c90f0f463f484e5d1e164682083
|
|
| BLAKE2b-256 |
c113df398b87baed061b5a1b8e5155f114ff5a2763a237f678a869995778380a
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
c107f84e10e9fc4605f640e52e34aed2cda6a13d1619ef15fdab92c4d5fa3633 - Sigstore transparency entry: 1475418449
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp312-cp312-macosx_15_0_arm64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp312-cp312-macosx_15_0_arm64.whl
- Upload date:
- Size: 310.5 kB
- Tags: CPython 3.12, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a509fed7e0ef7ae5a57cd70bdf74a777e3cf4710177d270a2dec68224a4ff300
|
|
| MD5 |
ed53a14289380ab652f435694566e4c8
|
|
| BLAKE2b-256 |
56a5834ae4eeb7784072f7e00ccf51d6be06f8671058d13a1bbecb4426028aa5
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp312-cp312-macosx_15_0_arm64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp312-cp312-macosx_15_0_arm64.whl -
Subject digest:
a509fed7e0ef7ae5a57cd70bdf74a777e3cf4710177d270a2dec68224a4ff300 - Sigstore transparency entry: 1475418846
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp312-cp312-macosx_14_0_arm64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp312-cp312-macosx_14_0_arm64.whl
- Upload date:
- Size: 321.5 kB
- Tags: CPython 3.12, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43b1939e4de124d41ab7a8126c35ca758ff28b7cdb979b2e8c9e6ae83e59d786
|
|
| MD5 |
ae5b515659b6d10f89611773fc7547ed
|
|
| BLAKE2b-256 |
63318385229458a275208771a18befb8cb74d36f7d8f51fbcc4fe378ab1a4414
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp312-cp312-macosx_14_0_arm64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp312-cp312-macosx_14_0_arm64.whl -
Subject digest:
43b1939e4de124d41ab7a8126c35ca758ff28b7cdb979b2e8c9e6ae83e59d786 - Sigstore transparency entry: 1475418492
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 275.6 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7839ae29d187bbdd94484abfb9a54928229a851eb2ee1b844186fe4ac36acb52
|
|
| MD5 |
815066707e6298b457db1660f1eb3350
|
|
| BLAKE2b-256 |
7cd8128eb440cc51e60a612e934bcf6d8287c3981875a5e5f22248ec925a13f0
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp311-cp311-win_amd64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp311-cp311-win_amd64.whl -
Subject digest:
7839ae29d187bbdd94484abfb9a54928229a851eb2ee1b844186fe4ac36acb52 - Sigstore transparency entry: 1475418743
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 312.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9980cc09cb9a7a2a99a00e5769c9c1e6c903653b35970b03988de73fb8b5b75
|
|
| MD5 |
46cab4260442860bbf13a4d2512e0d19
|
|
| BLAKE2b-256 |
bd509b704153e368cf200a51a933305cf26d7377f28c32ceb27e91bfec450ce5
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
a9980cc09cb9a7a2a99a00e5769c9c1e6c903653b35970b03988de73fb8b5b75 - Sigstore transparency entry: 1475418641
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp311-cp311-macosx_15_0_arm64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp311-cp311-macosx_15_0_arm64.whl
- Upload date:
- Size: 309.1 kB
- Tags: CPython 3.11, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccb8ccbe3ffdd015db3acf08ebdeb29297290a7505e812716bc001a39f162f26
|
|
| MD5 |
12c043397a135d7bf0e72f33a54d85e8
|
|
| BLAKE2b-256 |
4e29ea502312bae1fd99c4cdf9527d8baaf3304ce5d554096fa41ba28ad4aa4c
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp311-cp311-macosx_15_0_arm64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp311-cp311-macosx_15_0_arm64.whl -
Subject digest:
ccb8ccbe3ffdd015db3acf08ebdeb29297290a7505e812716bc001a39f162f26 - Sigstore transparency entry: 1475418785
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp311-cp311-macosx_14_0_arm64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp311-cp311-macosx_14_0_arm64.whl
- Upload date:
- Size: 319.4 kB
- Tags: CPython 3.11, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41bb961baa4c4e505e576ba27fbbd2324cf759a40297137742c32c2a578f6cdf
|
|
| MD5 |
d363a754f9269bb013debaa9f9ad6b3e
|
|
| BLAKE2b-256 |
37a71ee719782e03ce54252c3098763df0edec6bf4345c0b8f5eca91934687bb
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp311-cp311-macosx_14_0_arm64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp311-cp311-macosx_14_0_arm64.whl -
Subject digest:
41bb961baa4c4e505e576ba27fbbd2324cf759a40297137742c32c2a578f6cdf - Sigstore transparency entry: 1475418402
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 274.9 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abdae4ca6a9ef69fd63793840fa8a476b6bdd7ce0ce7a15804ea2f054207918a
|
|
| MD5 |
d069be8989a185dbfff9b58640546080
|
|
| BLAKE2b-256 |
592eabec443528a6071b8a4969045004501fcb021fb74696bfe8cffd8e6dfe7e
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp310-cp310-win_amd64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp310-cp310-win_amd64.whl -
Subject digest:
abdae4ca6a9ef69fd63793840fa8a476b6bdd7ce0ce7a15804ea2f054207918a - Sigstore transparency entry: 1475418550
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 312.8 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1c70d64c0199842ac8ff13a87a7b018fe9f307dd7d5f22a230e8178195fb308
|
|
| MD5 |
56c92de32481c8de13b470f27346cdbd
|
|
| BLAKE2b-256 |
f7be91e5e51eb27ea2b13da31125952bea56eabcd7eb81ded2778ebc57662204
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
d1c70d64c0199842ac8ff13a87a7b018fe9f307dd7d5f22a230e8178195fb308 - Sigstore transparency entry: 1475418593
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp310-cp310-macosx_15_0_arm64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp310-cp310-macosx_15_0_arm64.whl
- Upload date:
- Size: 308.2 kB
- Tags: CPython 3.10, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe8fed11b09cd687ad64738699c0d29f5cb3058ce1ad8f594832e8f7bb2e3c93
|
|
| MD5 |
35fb970de1628c0705afcd1530475667
|
|
| BLAKE2b-256 |
030a59f9166fe796640261102d2f6e2251141c65e7911b800f29028b041b08ad
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp310-cp310-macosx_15_0_arm64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp310-cp310-macosx_15_0_arm64.whl -
Subject digest:
fe8fed11b09cd687ad64738699c0d29f5cb3058ce1ad8f594832e8f7bb2e3c93 - Sigstore transparency entry: 1475418323
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grizzlars-0.1.0-cp310-cp310-macosx_14_0_arm64.whl.
File metadata
- Download URL: grizzlars-0.1.0-cp310-cp310-macosx_14_0_arm64.whl
- Upload date:
- Size: 318.5 kB
- Tags: CPython 3.10, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baab19a2aa1c85e89daaa5ac23c6700aac3a87c63cd99a5a9823f78956f308b2
|
|
| MD5 |
dadf0544f5b87978ac6fc67cd45d750d
|
|
| BLAKE2b-256 |
154b7c96ed0806f431b03e17570107344361671c15769857607f52a6e927a32a
|
Provenance
The following attestation bundles were made for grizzlars-0.1.0-cp310-cp310-macosx_14_0_arm64.whl:
Publisher:
build.yml on NavodPeiris/grizzlars
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grizzlars-0.1.0-cp310-cp310-macosx_14_0_arm64.whl -
Subject digest:
baab19a2aa1c85e89daaa5ac23c6700aac3a87c63cd99a5a9823f78956f308b2 - Sigstore transparency entry: 1475418348
- Sigstore integration time:
-
Permalink:
NavodPeiris/grizzlars@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/NavodPeiris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@3f75cd3751f1ace33c87728d285e3d2b04153401 -
Trigger Event:
push
-
Statement type: