Python FFI to y-scope/log-surgeon.
Project description
log-surgeon-ffi
Python FFI bindings for log-surgeon, a high-performance library for parsing unstructured log messages into structured data.
Overview
log-surgeon-ffi provides a Pythonic interface to the log-surgeon C++ library, enabling efficient extraction of structured information from unstructured log files. It uses schema-based pattern matching to:
- Extract variables from log messages using regex patterns with named capture groups
- Generate log types (templates) automatically for log analysis
- Parse streams efficiently for large-scale log processing
- Export data to pandas DataFrames and PyArrow Tables
Installation
pip install log-surgeon-ffi
For optional DataFrame/Arrow support:
pip install log-surgeon-ffi[dataframe]
Quick Start
Basic Parsing
import io
from log_surgeon import Parser
# Create a parser and define extraction patterns
parser = Parser()
parser.add_var(
"memoryStore",
r"MemoryStore started with capacity (?<memory_store_capacity_GiB>\d+\.\d+) GiB"
)
parser.compile()
# Parse a log event
log_line = " INFO [main] MemoryStore: MemoryStore started with capacity 7.0 GiB\n"
event = parser.parse_event(log_line)
# Access extracted data
print(f"Message: {event.get_log_message()}")
print(f"LogType: {event.get_log_type()}")
print(f"Capacity: {event['memory_store_capacity_GiB']}")
Multiple Capture Groups
parser = Parser()
# Extract platform information (level, thread, component)
parser.add_var(
"platform",
r"(?<platform_level>(INFO)|(WARN)|(ERROR)) \[(?<platform_thread>.+)\] (?<platform_component>.+):"
)
# Extract application-specific metrics
parser.add_var(
"memoryStore",
r"MemoryStore started with capacity (?<memory_store_capacity_GiB>\d+\.\d+) GiB"
)
parser.compile()
event = parser.parse_event(" INFO [main] MemoryStore: MemoryStore started with capacity 7.0 GiB\n")
print(f"Level: {event['platform_level']}")
print(f"Thread: {event['platform_thread']}")
print(f"Component: {event['platform_component']}")
print(f"Capacity: {event['memory_store_capacity_GiB']}")
Stream Parsing
from log_surgeon import Parser
parser = Parser()
parser.add_var("metric", r"value=(?<value>\d+)")
parser.compile()
# Parse from string (automatically wrapped in StringIO)
log_data = """
2024-01-01 INFO: Processing metric value=42
2024-01-01 INFO: Processing metric value=100
2024-01-01 INFO: Processing metric value=7
"""
for event in parser.parse(log_data):
print(f"Value: {event['value']}")
# Or parse from file object directly
with open("logs.txt", "r") as f:
for event in parser.parse(f):
print(f"Value: {event['value']}")
Using Pattern Constants
from log_surgeon import Parser, Pattern
parser = Parser()
parser.add_var("network", rf"IP: (?<ip>{Pattern.IPV4}) UUID: (?<id>{Pattern.UUID})")
parser.add_var("metrics", rf"value=(?<value>{Pattern.FLOAT})")
parser.compile()
log_line = "IP: 192.168.1.1 UUID: 550e8400-e29b-41d4-a716-446655440000 value=42.5"
event = parser.parse_event(log_line)
print(f"IP: {event['ip']}")
print(f"UUID: {event['id']}")
print(f"Value: {event['value']}")
Export to DataFrame
from log_surgeon import Parser, Query
parser = Parser()
parser.add_var(
"metric",
r"metric=(?<metric_name>\w+) value=(?<value>\d+)"
)
parser.compile()
log_data = """
2024-01-01 INFO: metric=cpu value=42
2024-01-01 INFO: metric=memory value=100
2024-01-01 INFO: metric=disk value=7
"""
# Create a query and export to DataFrame
query = (
Query(parser)
.select(["metric_name", "value"])
.from_(log_data)
.validate_query()
)
df = query.to_dataframe()
print(df)
Filtering Events
from log_surgeon import Parser, Query
parser = Parser()
parser.add_var("metric", r"metric=(?<metric_name>\w+) value=(?<value>\d+)")
parser.compile()
log_data = """
2024-01-01 INFO: metric=cpu value=42
2024-01-01 INFO: metric=memory value=100
2024-01-01 INFO: metric=disk value=7
2024-01-01 INFO: metric=cpu value=85
"""
# Filter events where value > 50
query = (
Query(parser)
.select(["metric_name", "value"])
.from_(log_data)
.filter(lambda event: int(event['value']) > 50)
.validate_query()
)
df = query.to_dataframe()
print(df)
# Output:
# metric_name value
# 0 memory 100
# 1 cpu 85
API Reference
Parser
High-level parser for extracting structured data from unstructured log messages.
Constructor
Parser(delimiters: str = r" \t\r\n:,!;%@/\(\)\[\]")- Initialize a parser with optional custom delimiters
- Default delimiters include space, tab, newline, and common punctuation
Methods
-
add_var(name: str, regex: str, hide_var_name_if_named_group_present: bool = True) -> Parser- Add a variable pattern to the parser's schema
- Supports named capture groups using
(?<name>)syntax - Returns self for method chaining
-
add_timestamp(name: str, regex: str) -> Parser- Add a timestamp pattern to the parser's schema
- Returns self for method chaining
-
compile(enable_debug_logs: bool = False) -> None- Build and initialize the parser with the configured schema
- Must be called after adding variables and before parsing
- Set
enable_debug_logs=Trueto output debug information to stderr
-
load_schema(schema: str, group_name_resolver: GroupNameResolver) -> None- Load a pre-built schema string to configure the parser
-
parse(input: str | TextIO | BinaryIO | io.StringIO | io.BytesIO) -> Generator[LogEvent, None, None]- Parse all log events from a string, file object, or stream
- Accepts strings, text/binary file objects, StringIO, or BytesIO
- Yields LogEvent objects for each parsed event
-
parse_event(payload: str) -> LogEvent | None- Parse a single log event from a string (convenience method)
- Wraps
parse()and returns the first event - Returns LogEvent or None if no event found
LogEvent
Represents a parsed log event with extracted variables.
Methods
-
get_log_message() -> str- Get the original log message
-
get_log_type() -> str- Get the generated log type (template) with logical group names
-
get_capture_group(logical_capture_group_name: str, raw_output: bool = False) -> str | list | None- Get the value of a capture group by its logical name
- If
raw_output=False(default), single values are unwrapped from lists - Returns None if capture group not found
-
get_capture_group_str_representation(field: str, raw_output: bool = False) -> str- Get the string representation of a capture group value
-
get_resolved_dict() -> dict[str, str | list]- Get a dictionary with all capture groups using logical (user-defined) names
- Physical names (CGPrefix*) are converted to logical names
- Timestamp fields are consolidated under "timestamp" key
- Single-value lists are unwrapped to scalar values
- "@LogType" is excluded from the output
-
__getitem__(key: str) -> str | list- Access capture group values by name (e.g.,
event['field_name']) - Shorthand for
get_capture_group(key, raw_output=False)
- Access capture group values by name (e.g.,
-
__str__() -> str- Get formatted JSON representation of the log event with logical group names
- Uses
get_resolved_dict()internally
Query
Query builder for parsing log events into structured data formats.
Constructor
Query(parser: Parser)- Initialize a query with a configured parser
Methods
-
select(fields: list[str]) -> Query- Select fields to extract (use
["*"]for all fields) - Returns self for method chaining
- Select fields to extract (use
-
filter(predicate: Callable[[LogEvent], bool]) -> Query- Filter log events using a predicate function
- Predicate receives a LogEvent and returns True to include it, False to exclude
- Returns self for method chaining
- Example:
query.filter(lambda event: int(event['value']) > 50)
-
from_(input: str | TextIO | BinaryIO | io.StringIO | io.BytesIO) -> Query- Set the input source to parse
- Accepts strings, text/binary file objects, StringIO, or BytesIO
- Strings are automatically wrapped in StringIO
- Returns self for method chaining
-
select_from(input: str | TextIO | BinaryIO | io.StringIO | io.BytesIO) -> Query- Alias for
from_() - Returns self for method chaining
- Alias for
-
from_stream(stream: io.StringIO | io.BytesIO) -> Query- Set the input stream to parse (legacy method)
- Consider using
from_()for more flexible input handling - Returns self for method chaining
-
validate_query() -> Query- Validate that the query is properly configured
- Returns self for method chaining
-
to_dataframe(drop_null_rows: bool = True) -> pd.DataFrame- Convert parsed events to a pandas DataFrame
- Requires pandas (install with
pip install log-surgeon-ffi[dataframe])
-
to_df(drop_null_rows: bool = True) -> pd.DataFrame- Alias for
to_dataframe()
- Alias for
-
to_arrow(drop_null_rows: bool = True) -> pa.Table- Convert parsed events to a PyArrow Table
- Requires pyarrow (install with
pip install log-surgeon-ffi[dataframe])
-
to_pa(drop_null_rows: bool = True) -> pa.Table- Alias for
to_arrow()
- Alias for
-
get_rows(drop_null_rows: bool = True) -> list[list]- Extract rows of field values from parsed events
SchemaCompiler
Compiler for constructing log-surgeon schema definitions.
Constructor
SchemaCompiler(delimiters: str = DEFAULT_DELIMITERS)- Initialize a schema compiler with optional custom delimiters
Methods
-
add_var(name: str, regex: str, hide_var_name_if_named_group_present: bool = True) -> SchemaCompiler- Add a variable pattern to the schema
- Returns self for method chaining
-
add_timestamp(name: str, regex: str) -> SchemaCompiler- Add a timestamp pattern to the schema
- Returns self for method chaining
-
remove_var(var_name: str) -> SchemaCompiler- Remove a variable from the schema
- Returns self for method chaining
-
get_var(var_name: str) -> Variable- Get a variable by name
-
compile() -> str- Compile the final schema string
-
get_capture_group_name_resolver() -> GroupNameResolver- Get the resolver for mapping logical to physical capture group names
GroupNameResolver
Bidirectional mapping between logical (user-defined) and physical (auto-generated) group names.
Constructor
GroupNameResolver(physical_name_prefix: str)- Initialize with a prefix for auto-generated physical names
Methods
-
create_new_physical_name(logical_name: str) -> str- Create a new unique physical name for a logical name
- Each call generates a new physical name
-
get_physical_names(logical_name: str) -> set[str]- Get all physical names associated with a logical name
-
get_logical_name(physical_name: str) -> str- Get the logical name for a physical name
Pattern
Collection of common regex patterns for log parsing.
Class Attributes
-
Pattern.UUID- Pattern for UUID (Universally Unique Identifier) strings
-
Pattern.IP_OCTET- Pattern for a single IPv4 octet (0-255)
-
Pattern.IPV4- Pattern for IPv4 addresses
-
Pattern.INT- Pattern for integer numbers (with optional negative sign)
-
Pattern.FLOAT- Pattern for floating-point numbers (with optional negative sign)
Example Usage
from log_surgeon import Parser, Pattern
parser = Parser()
parser.add_var("ip", rf"IP: (?<ip_address>{Pattern.IPV4})")
parser.add_var("id", rf"ID: (?<uuid>{Pattern.UUID})")
parser.add_var("value", rf"value=(?<val>{Pattern.FLOAT})")
parser.compile()
Key Concepts
Delimiters
Delimiters are characters used to split log messages into tokens. The default delimiters include:
- Whitespace: space, tab (
\t), newline (\n), carriage return (\r) - Punctuation:
:,,,!,;,%,@,/,(,),[,]
You can customize delimiters when creating a Parser:
parser = Parser(delimiters=r" \t\n,:") # Custom delimiters
Named Capture Groups
Use named capture groups in regex patterns to extract specific fields:
parser.add_var("metric", r"metric=(?<metric_name>\w+) value=(?<value>\d+)")
The syntax (?<name>pattern) creates a capture group that can be accessed as event['name'].
Logical vs Physical Names
Internally, log-surgeon uses "physical" names (e.g., CGPrefix0, CGPrefix1) for capture groups, while you work with "logical" names (e.g., user_id, thread). The GroupNameResolver handles this mapping automatically.
Schema Format
The schema defines delimiters, timestamps, and variables for parsing:
// schema delimiters
delimiters: \t\r\n:,!;%@/\(\)\[\]
// schema timestamps
timestamp:<timestamp_regex>
// schema variables
variable_name:<variable_regex>
When using the fluent API (Parser.add_var() and Parser.compile()), the schema is built automatically.
Development
Building from Source
# Clone the repository
git clone https://github.com/y-scope/log-surgeon-ffi-py.git
cd log-surgeon-ffi-py
# Install development dependencies
pip install -e ".[dev]"
# Build the extension
cmake -S . -B build
cmake --build build
Running Tests
python -m pytest tests/
Requirements
- Python >= 3.9
- C++20 compatible compiler
License
Apache License 2.0 - See LICENSE for details.
Links
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
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 Distributions
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 log_surgeon_ffi-0.1.0b0-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6286d8131b279c16fa3e4c8fc342dc16337e86bc0e1eb8a1fd9b83446f9039eb
|
|
| MD5 |
199aac43c6bd1b6bf8620d31d6728fca
|
|
| BLAKE2b-256 |
dd0c486df07f3aa0bcd3a9da6996a6069dc364859f7a07d42703e6e25667267f
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp313-cp313-musllinux_1_2_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp313-cp313-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc5736d2db8e1a378309ae293fe2a94470ea1487b84df7f415ef68ead8d1da7a
|
|
| MD5 |
d605c91f3776d401c6d85a8baa97ecc8
|
|
| BLAKE2b-256 |
9ac8adf56ad7ebb3f680de31ae3f2cbcaba19a6cbe4645d72ed4bdc20e638384
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp313-cp313-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp313-cp313-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efd9c662283420252d8fad870605949fdd1955641c8d73aaf9aa395372f445f1
|
|
| MD5 |
c3ebf3c48decf553abe9e46512c0f728
|
|
| BLAKE2b-256 |
3ae3f5e23977b38112987e70612170d5f1b3a3cd98338636d6ae024cb00dc484
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 338.3 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b29883b70d46e6ee42bd9a228132cd86294cb8b160218995851191a6bf08f44
|
|
| MD5 |
f4eeee8f5c38319feeeb54b75e330c70
|
|
| BLAKE2b-256 |
d87f9ff6cbd1480f54ae036f9da5cf0a9587df68c1244e120a2912e4cc848b21
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 354.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
630e250a08f4d0e2d98754b38be1cc713b63b230313aee02534a563d6c6c70dc
|
|
| MD5 |
36c4467c81ee19af588784beb83b697c
|
|
| BLAKE2b-256 |
141694e37d2c2b8f34cc5e0c18ad2ae9966f30597c2ec4a2fc5919425ba2070a
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 326.5 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
476f1d3c8795c4e95e1416250f35b9f71ef1fecded8a82c7c5040c3814d4db6f
|
|
| MD5 |
56c5bfd1217c47d546852300abec7dd5
|
|
| BLAKE2b-256 |
e17885934a4c93472f55f109da2d35e1ad55ee91fb2542e61bc7f4cdbccfedd9
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ab9a5bd8229bb5f9ac8c9882234a4c2b7aa7279c1f50ad66a1748777e65ef25
|
|
| MD5 |
09b12a981775c1329bd5c7b96676dc83
|
|
| BLAKE2b-256 |
b7218a495f2454678436f9e3f09e1f12d97b6f194e441d1630df0f898213637d
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp312-cp312-musllinux_1_2_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp312-cp312-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b94c2aae80cebf7af028258f6b73ed002604deb20d82548fd53a5a05ab3a8c5
|
|
| MD5 |
78bf9441d98e1512e7dee2f8d485dbd6
|
|
| BLAKE2b-256 |
01efa2f656c3942a3247a657e2dc3dbe655a8b228c82073d3de773e78d6d9560
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp312-cp312-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp312-cp312-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b186e11b1e2f3aad12d2cf7d3ba2e6d2368bd7913ce240339159ce6bb1407ce
|
|
| MD5 |
17f08ee6a5f9d04c5f258e01b54249cd
|
|
| BLAKE2b-256 |
33298c0f70638ebe41d322696909bdf067ec87b6962bd4217032d1783161cfd2
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 338.2 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2ba6ad321fce6c312d31ecd8e558b61e68b6e50a1af56a0ce81ca29e6d109c3
|
|
| MD5 |
beafbf4e9b8bfc8a107c930c96825f1d
|
|
| BLAKE2b-256 |
4f29f5230ea3935b8f0a6b19dc88de218a6e412761acdd1a3332652c4103d456
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 354.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
179fab2e15af9c79465e321989bce19919d1de36bedf1adfc82823701d2cd759
|
|
| MD5 |
8d3e82ff2db9107302aea00ee419a5dd
|
|
| BLAKE2b-256 |
9f04b7d1513325a4e450efd79118e50a1fe75a5868d8e384d654c5a354a45962
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 326.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5100599087f657fe81417f2191a0a802315873574e57391793b7ec173eafbe84
|
|
| MD5 |
3067fa42e9e1156bb6de726a27a12646
|
|
| BLAKE2b-256 |
8bb5b60b5ff10b4d83d712ff1cdfe5b86e822b4371e6a696730fe4110be13268
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2444251a15e83df7332058cd758b6eb2e9eaf9a4177fd32d7175e3b81ff732a2
|
|
| MD5 |
e10f042bee3d06ecf27dc083d00ae722
|
|
| BLAKE2b-256 |
5f23273a1d74e3295062e7aa64611dc038a5f857983d78075a067cd809ffa58d
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp311-cp311-musllinux_1_2_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp311-cp311-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66aa87a7f6bcba89ae265cb4ac00fd2f6659d1fa1f93ec358a1801e5850da338
|
|
| MD5 |
a1f8ce59a6dac18cb25bdd1b14a539b1
|
|
| BLAKE2b-256 |
6d24d43bbc7d55692a84e71d344b5fbdee3bfe902941bcb0b28e31df5b2100d7
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp311-cp311-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp311-cp311-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a1f62703920ce9926f26636b2e4cf335dc4674f38b651904f7ae2c98ffcdc2d
|
|
| MD5 |
14fdf6cc2b876ea3fd8c9afbd9561816
|
|
| BLAKE2b-256 |
070c51aa2abc0affb47cfe1fdc9839c79a8b97b86e1a74737acc35e95fbeaebc
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 338.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b99c04b35167c98f8537b660ddecdd4f23b5e01bb1d26049cb8195e1956f2310
|
|
| MD5 |
f3d6280542452cf83c30b47da1543c54
|
|
| BLAKE2b-256 |
e5227e74ac4acfa053d4faa1d9e610169c8c94633dacbb0ca056f73b73fd488a
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 354.6 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a172ee4926c27bcb172bf7048cbebbd41e7ad95aefe395def87dcc1600bb255d
|
|
| MD5 |
a56fad075ce17c692bd2a5d1a63d1410
|
|
| BLAKE2b-256 |
b64f33fcb191e415ab326c5a86dde67dedd43d4d8408567b7a82568f29e719ee
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 326.5 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34e1fa873745b4a8857dbefb15d057b96359dcd27cfa243f9ebcfa76defa887c
|
|
| MD5 |
2c607716aaf87ebdd25e8a7487fe281f
|
|
| BLAKE2b-256 |
62906727efa0926640713421ec2561d9f1816143c94df2d970e497b592d5b354
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73375102b6637224073e1aecd3a87e01bb609cf828f79df1f256cd03553cbec0
|
|
| MD5 |
4003a745a4403fc022bb4ea3cc4c87f6
|
|
| BLAKE2b-256 |
7d54d00c48aedede4ce2b2a56f51f686e7a997db3882371f6344f86b93892faf
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp310-cp310-musllinux_1_2_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp310-cp310-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3001b9c92ed19f852dc38e891bcdb24b051214ebfaec93bf5c9900b54e2ab9e
|
|
| MD5 |
f298ac72f18764bd8c493a7c62316080
|
|
| BLAKE2b-256 |
46c2e0e4d8241989b4ed367a1d8f45a820dd8073b58c77204deb4db24c1263c1
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp310-cp310-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp310-cp310-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca72fd186efd1ea684a1729193acc800c408d79984849536580b8a21bdebc492
|
|
| MD5 |
ba0f22fa8f4a429e4a683b4741af0fd2
|
|
| BLAKE2b-256 |
02b6eb0594af6c5a18956b3a7a1916cf8f1d811f7843d1b95e1ef6185595bba5
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 338.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51637bf737c36d29cc25637f98de32c6352a1f46789101c075fe6ec660a8a2bb
|
|
| MD5 |
3df92cd15eeea1c3fae5f55a86a23e98
|
|
| BLAKE2b-256 |
ee971bc53ec55f6b1b1ba6e5fe8d1fc72abde441589ee3d9a974544963be013e
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 354.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9ce20f9bce85abb7d0330b89c260241bda47fdaf63bd8418e4f2a5361fa14ad
|
|
| MD5 |
dc7370c3eaecab3b9383e55bd708ead3
|
|
| BLAKE2b-256 |
df82a63dfd67008756a43826a9e725259dc016ad44c1d81563249a7fe19051c6
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 326.5 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc338bdaec86079b103b6d7f734f9421e2861294731cf17de92893642ce2c0f8
|
|
| MD5 |
54f9450876e1477f5c2f478c349f5579
|
|
| BLAKE2b-256 |
e6bb3bab6d82cc3eab780a6082665d5af32c7c19fe2cbc711417fb51063402ce
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp39-cp39-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp39-cp39-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ab43c8141f223f5371916ab3d8fe2ce522d532d71e42ef4f3cb5b65a4d15222
|
|
| MD5 |
bd67ec6d4f756476ac44defeca9969ca
|
|
| BLAKE2b-256 |
7f9eeb226fe1b7c5bf70498e70d8d3856bd5ce8259699b6b8933d3d6e175dc7d
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp39-cp39-musllinux_1_2_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp39-cp39-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.9, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e5864e8ad75ff56e8f5326e6137284616cc547a619db180381332f1fd829838
|
|
| MD5 |
14e2f32e3d6161ebb99e739bdb3a6e46
|
|
| BLAKE2b-256 |
edd8433a6ef1a60665c1eff94709bb21d2c834f12b2cf46e555bbc35eb3bd0b5
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp39-cp39-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp39-cp39-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.9, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
089bfa0015f9027b694a7ee4e852ce0bd18382853f16a1b93b8651993789adfb
|
|
| MD5 |
5935fdcf988aa08e16bb8bdfa3b27b0a
|
|
| BLAKE2b-256 |
aafaa0810484b589614440ae3153f24fa3602537fa587fa34730527a4b1131f9
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 338.2 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
448e40604d9bdb0549aee8caf9e2d09574163454e4afd9ca6fea0f589282f6ec
|
|
| MD5 |
3dc2f8f0260c2699a701c5fd8fc4ac51
|
|
| BLAKE2b-256 |
1da818ba3936bc31669ea534e85e48fcb0dfebcad3328ea456f747d0db2c9404
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 354.6 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38ccb98318c8d5e2c02fb74877c662db4b28254e150733a0748e10ebf4c8d718
|
|
| MD5 |
3b12eb588c8d504aa8fe7e9cf3c2ab1e
|
|
| BLAKE2b-256 |
a01eaa374ee0df51f4cbd74af784eece4f53d486c18a07c37a42f618528cfb40
|
File details
Details for the file log_surgeon_ffi-0.1.0b0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: log_surgeon_ffi-0.1.0b0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 326.5 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8156df2d45080e06e36ae6ad01e6494bda47396ddd00d4b64845f88c46414ae6
|
|
| MD5 |
097f92a091935354497dc5be1d26fd13
|
|
| BLAKE2b-256 |
9f5fee69a5c65cbd3fe3ea067311d94e548ff49c3f403f8d2e5c1ef0e02fc3b8
|