Skip to main content

CI CI CI PyPI Number of PyPI downloads

Acsylla

A composition of async + cassandra + scylla words.

A high performance Python Asyncio client library for Cassandra and ScyllaDB

Under the hood acsylla has modern, feature-rich and shard-aware C/C++ client library for Cassandra and ScyllaDB.

Table of Contents

Features

  • Shard-Awareness
  • Asynchronous API
  • Simple, Prepared, and Batch statements
  • Asynchronous I/O, parallel execution, and request pipelining
  • Connection pooling
  • Automatic node discovery
  • Automatic reconnection
  • Configurable load balancing
  • Works with any cluster size
  • Authentication
  • SSL
  • Latency-aware routing
  • Performance metrics
  • Tuples and UDTs
  • Nested collections
  • Retry policies
  • Client-side timestamps
  • Data types
  • Idle connection heartbeats
  • Support for materialized view and secondary index metadata
  • Support for clustering key order, frozen<> and Cassandra version metadata
  • Whitelist/blacklist DC, and whitelist/blacklist hosts load balancing policies
  • Custom authenticators
  • Reverse DNS with SSL peer identity verification support
  • Randomized contact points
  • Speculative execution

Compatibility

This driver works exclusively with the Cassandra Query Language v3 (CQL3) and Cassandra's native protocol. The current version works with:

  • Scylla and Scylla Enterprise
  • Apache Cassandra® versions 2.1, 2.2 and 3.0+
  • Python 3.9, 3.10, 3.11, 3.12, 3.13, 3.14 and 3.15 for Linux and MacOS, the free-threaded 3.14t and 3.15t run it with the GIL enabled

Install

Use the following command for installing it:

pip install acsylla

Build your own package

You can build your own package for any supported python version for x86_64 and aarch64 Linux.

Example for build wheel for Python 3.15 x86_64 from master branch

git clone https://github.com/acsylla/acsylla.git
cd acsylla
docker run -v `pwd`:/io -e PYTHON_VERSION=3.15  quay.io/pypa/manylinux_2_28_x86_64  /io/bin/build_manylinux_2_28_wheel.sh

Example for build wheel for Python 3.15 aarch64 from master branch

git clone https://github.com/acsylla/acsylla.git
cd acsylla
docker run --platform linux/arm64 -v `pwd`:/io -e PYTHON_VERSION=3.15  quay.io/pypa/manylinux_2_28_aarch64  /io/bin/build_manylinux_2_28_wheel.sh

Example for build musllinux wheel for Python 3.15 x86_64 from master branch

git clone https://github.com/acsylla/acsylla.git
cd acsylla
docker run -v `pwd`:/io -e PYTHON_VERSION=3.15  quay.io/pypa/musllinux_1_2_x86_64  /io/bin/build_musllinux_1_2_wheel.sh

Example for build musllinux wheel for Python 3.15 aarch64 from master branch

git clone https://github.com/acsylla/acsylla.git
cd acsylla
docker run --platform linux/arm64 -v `pwd`:/io -e PYTHON_VERSION=3.15  quay.io/pypa/musllinux_1_2_aarch64  /io/bin/build_musllinux_1_2_wheel.sh

Basic usage

import acsylla
import asyncio


async def main():
    cluster = acsylla.create_cluster(["localhost"])
    session = await cluster.create_session()
    await session.query(
        """
        CREATE KEYSPACE IF NOT EXISTS acsylla WITH REPLICATION = { 
            'class': 'SimpleStrategy', 'replication_factor': 1
        }
        """
    )
    await session.use_keyspace("acsylla")
    await session.query(
        """
        CREATE TABLE IF NOT EXISTS test (
            id tinyint PRIMARY KEY,
            value int
        );
        """
    )
    insert = await session.prepared_query("INSERT INTO test (id, value) VALUES (?, ?)")
    await asyncio.gather(*[insert([i, i]) for i in range(100)])
    select = await session.prepared_query("SELECT * FROM test WHERE id IN :id")
    async for row in select([(1, 4, 7, 90)]):
        print(row.as_tuple())

    non_prepared = session.query("SELECT * FROM test WHERE id=:id")
    async for row in non_prepared([7], value_types=[acsylla.ValueType.TINY_INT]):
        print(dict(row))
        print(row.as_dict())
        print(row.as_list())
        print(row.as_tuple())
        print(row.id)
        print(row.value)
        print(row[0])
        print(row[1])
        print(row[:1])
        print(row[1:])

asyncio.run(main())

Cluster

The Cluster object describes a Cassandra/ScyllaDB cluster’s configuration. The default cluster object is good for most clusters and only requires a single or multiple list of contact points in order to establish a session connection.
For example:
cluster = acsylla.create_cluster('127.0.0.1, 127.0.0.2')

Once a session is connected using a cluster object its configuration is constant.

Modifying the cluster object configuration once a session is established does not alter the session’s configuration.

Configuration options

List of named arguments to configure cluster with acsylla.create_cluster helper.

  • contact_points: Sets contact points. This MUST be set. White space is striped from the contact points.
    Examples: “127.0.0.1”, “127.0.0.1,127.0.0.2”, “server1.domain.com”

  • port: Sets the port.
    Default: 9042

  • local_address: Sets the local address to bind when connecting to the cluster, if desired. IP address to bind, or empty string for no binding. Only numeric addresses are supported; no resolution is done.

  • local_port_range_min: Sets the range of outgoing port numbers (ephemeral ports) to be used when establishing the shard-aware connections. This is applicable when the routing of connection to shard is based on the client-side port number.
    When application connects to multiple CassCluster-s it is advised to assign mutually non-overlapping port intervals to each. It is assumed that the supplied range is allowed by the OS (e.g. it fits inside /proc/sys/net/ipv4/ip_local_port_range on *nix systems)
    Default: 49152

  • local_port_range_max: See local_port_range_min
    Default: 65535

  • username: Set username for plain text authentication.

  • password: Set password for plain text authentication.

  • connect_timeout: Sets the timeout for connecting to a node.
    Default: 5 seconds

  • request_timeout: Sets the timeout for waiting for a response from a node. Use 0 for no timeout.
    Default: 12 seconds

  • resolve_timeout: Sets the timeout for waiting for DNS name resolution.
    Default: 2 seconds

  • log_level: Sets the log level. Available levels:

    • disabled
    • critical
    • error
    • warn
    • info
    • debug
    • trace

    Default: warn

  • logging_callback: Sets a callback function to catch log messages.
    Default: An internal logger with "acsylla" name. logging.getLogger('acsylla')

  • ssl_enable: Enable SSL connection
    Default: False

  • ssl_cert: Set client-side certificate chain. This is used to authenticate the client on the server-side. This should contain the entire Certificate chain starting with the certificate itself

  • ssl_private_key: Set client-side private key. This is used to authenticate the client on the server-side.

  • ssl_private_key_password: Password for ssl_private_key

  • ssl_trusted_cert: Adds a trusted certificate. This is used to verify the peer’s certificate.

  • ssl_verify_flags: Sets verification performed on the peer’s certificate.

    • NONE No verification is performed
    • PEER_CERT Certificate is present and valid
    • PEER_IDENTITY IP address matches the certificate’s common name or one of its subject alternative names. This implies the certificate is also present.
    • PEER_IDENTITY_DNS Hostname matches the certificate’s common name or one of its subject alternative names. This implies the certificate is also present.
      Default: PEER_CERT
  • protocol_version: Sets the protocol version. The driver will automatically downgrade to the lowest supported protocol version.
    Default: acsylla.ProtocolVersion.V4 or acsylla.ProtocolVersion.DSEV1 when using the DSE driver with DataStax Enterprise.

  • use_beta_protocol_version: Use the newest beta protocol version. This currently enables the use of protocol version cyacsylla.ProtocolVersion.V5 or cyacsylla.ProtocolVersion.DSEV2 when using the DSE driver with DataStax Enterprise.
    Default: False

  • consistency: Sets default consistency level of statement. acsylla.Consistency
    Default: LOCAL_ONE

  • serial_consistency: Sets default serial consistency level of statement. acsylla.Consistency
    Default: ANY

  • queue_size_io: Sets the size of the fixed size queue that stores pending requests.
    Default: 8192

  • num_threads_io: Sets the number of IO threads. This is the number of threads that will handle query requests.
    Default: 1

  • core_connections_per_host: Sets the number of connections made to each server in each IO thread.
    Default: 1

  • constant_reconnect_delay_ms: Configures the cluster to use a reconnection policy that waits a constant time between each reconnection attempt. Time in milliseconds to delay attempting a reconnection; 0 to perform a reconnection immediately.
    Default: Not set

  • exponential_reconnect_base_delay_ms: The base delay (in milliseconds) to use for scheduling reconnection attempts. Configures the cluster to use a reconnection policy that waits exponentially longer between each reconnection attempt; however will maintain a constant delay once the maximum delay is reached.
    Note: A random amount of jitter (+/- 15%) will be added to the pure exponential delay value. This helps to prevent situations where multiple connections are in the reconnection process at exactly the same time. The jitter will never cause the delay to be less than the base delay, or more than the max delay.
    Default: 2000

  • exponential_reconnect_max_delay_ms: The maximum delay to wait between two reconnection attempts. See exponential_reconnect_max_delay_ms
    Default: 60000

  • coalesce_delay_us: Sets the amount of time, in microseconds, to wait for new requests to coalesce into a single system call. This should be set to a value around the latency SLA of your application’s requests while also considering the request’s roundtrip time. Larger values should be used for throughput bound workloads and lower values should be used for latency bound workloads.
    Default: 200 us

  • new_request_ratio: Sets the ratio of time spent processing new requests versus handling the I/O and processing of outstanding requests. The range of this setting is 1 to 100, where larger values allocate more time to processing new requests and smaller values allocate more time to processing outstanding requests.
    Default: 50

  • max_schema_wait_time_ms: Sets the maximum time to wait for schema agreement after a schema change is made (e.g. creating, altering, dropping a table/keyspace/view/index etc).
    Default: 10000 milliseconds

  • tracing_max_wait_time_ms: Sets the maximum time to wait for tracing data to become available.
    Default: 15 milliseconds

  • tracing_retry_wait_time_ms: Sets the amount of time to wait between attempts to check to see if tracing is available.
    Default: 3 milliseconds

  • tracing_consistency: Sets the consistency level to use for checking to see if tracing data is available.
    Default: ONE

  • load_balance_round_robin: Configures the cluster to use round-robin load balancing. The driver discovers all nodes in a cluster and cycles through them per request. All are considered local.

  • load_balance_dc_aware: The primary data center to try first. Configures the cluster to use DC-aware load balancing. For each query, all live nodes in a primary ‘local’ DC are tried first, followed by any node from other DCs.
    Note: This is the default, and does not need to be called unless switching an existing from another policy or changing settings. Without further configuration, a default local_dc is chosen from the first connected contact point, and no remote hosts are considered in query plans. If relying on this mechanism, be sure to use only contact points from the local DC.

  • load_balance_rack_aware_dc: Configures the cluster to use Rack-aware load balancing. For each query, all live nodes in a primary 'local' rack are tried first, followed by nodes from local DC and then nodes from other DCs. With empty local_rack and local_dc, default local_dc and local_rack is chosen from the first connected contact point, and no remote hosts are considered in query plans. If relying on this mechanism, be sure to use only contact points from the local rack.

  • load_balance_rack_aware_rack: Configures the cluster to use Rack-aware load balancing. For each query, all live nodes in a primary 'local' rack are tried first, followed by nodes from local DC and then nodes from other DCs. With empty local_rack and local_dc, default local_dc and local_rack is chosen from the first connected contact point, and no remote hosts are considered in query plans. If relying on this mechanism, be sure to use only contact points from the local rack.

  • token_aware_routing: Configures the cluster to use token-aware request routing or not. This routing policy composes the base routing policy, routing requests first to replicas on nodes considered ‘local’ by the base load balancing policy.
    Important: Token-aware routing depends on keyspace metadata. For this reason enabling token-aware routing will also enable retrieving and updating keyspace schema metadata.
    Default: True (enabled).

  • token_aware_routing_shuffle_replicas: Configures token-aware routing to randomly shuffle replicas. This can reduce the effectiveness of server-side caching, but it can better distribute load over replicas for a given partition key.
    Note: Token-aware routing token_aware_routing must be enabled for the setting to be applicable.
    Default: True (enabled).

  • latency_aware_routing: Configures the cluster to use latency-aware request routing or not. This routing policy is a top-level routing policy. It uses the base routing policy to determine locality (dc-aware) and/or placement (token-aware) before considering the latency.
    Default: False (disabled).

  • latency_aware_routing_settings: Configures the settings for latency-aware request routing. Instance of acsylla.LatencyAwareRoutingSettings
    Default:

    • exclusion_threshold 2.0 Controls how much worse the latency be compared to the average latency of the best performing node before it penalized.
    • scale_ms 100 milliseconds Controls the weight given to older latencies when calculating the average latency of a node. A bigger scale will give more weight to older latency measurements.
    • retry_period_ms 10,000 milliseconds The amount of time a node is penalized by the policy before being given a second chance when the current average latency exceeds the calculated threshold (exclusion_threshold * best_average_latency).
    • update_rate_ms 100 milliseconds The rate at which the best average latency is recomputed.
    • min_measured 50 The minimum number of measurements per-host required to be considered by the policy
  • whitelist_hosts: Sets whitelist hosts. The first call sets the whitelist hosts and any subsequent calls appends additional hosts. Passing an empty string will clear and disable the whitelist. White space is striped from the hosts.
    This policy filters requests to all other policies, only allowing requests to the hosts contained in the whitelist. Any host not in the whitelist will be ignored and a connection will not be established. This policy is useful for ensuring that the driver will only connect to a predefined set of hosts.
    Examples: “127.0.0.1”, “127.0.0.1,127.0.0.2”

  • blacklist_hosts: Sets blacklist hosts. The first call sets the blacklist hosts and any subsequent calls appends additional hosts. Passing an empty string will clear and disable the blacklist. White space is striped from the hosts.
    This policy filters requests to all other policies, only allowing requests to the hosts not contained in the blacklist. Any host in the blacklist will be ignored and a connection will not be established. This policy is useful for ensuring that the driver will not connect to a predefined set of hosts.
    Examples: “127.0.0.1”, “127.0.0.1,127.0.0.2”

  • whitelist_dc: Same as whitelist_hosts, but whitelist all hosts of a dc
    Examples: “dc1”, “dc1,dc2”

  • blacklist_dc: Same as blacklist_hosts, but blacklist all hosts of a dc
    Examples: “dc1”, “dc1,dc2”

  • tcp_nodelay: Enable/Disable Nagle’s algorithm on connections.
    Default: True

  • tcp_keepalive_sec: Set keep-alive delay in seconds.
    Default: disabled

  • timestamp_gen: "server_side" or "monotonic" Sets the timestamp generator used to assign timestamps to all requests unless overridden by setting the timestamp on a statement or a batch.
    Default: Monotonically increasing, client-side timestamp generator.

  • heartbeat_interval_sec: Sets the amount of time between heartbeat messages and controls the amount of time the connection must be idle before sending heartbeat messages. This is useful for preventing intermediate network devices from dropping connections.
    Default: 30 seconds

  • idle_timeout_sec: Sets the amount of time a connection is allowed to be without a successful heartbeat response before being terminated and scheduled for reconnection.
    Default: 60 seconds

  • retry_policy: May be set to default or fallthrough Sets the retry policy used for all requests unless overridden by setting a retry policy on a statement or a batch.

    • default This policy retries queries in the following cases:
      • On a read timeout, if enough replicas replied but data was not received.
      • On a write timeout, if a timeout occurs while writing the distributed batch log
      • On unavailable, it will move to the next host
      • In all other cases the error will be returned. This policy always uses the query’s original consistency level.
    • fallthrough This policy never retries or ignores a server-side failure. The error is always returned.

    Default: default This policy will retry on a read timeout if there was enough replicas, but no data present, on a write timeout if a logged batch request failed to write the batch log, and on a unavailable error it retries using a new host. In all other cases the default policy will return an error.

  • retry_policy_logging: This policy logs the retry decision of its child policy. Logging is done using INFO level.
    Default: False

  • use_schema: Enable/Disable retrieving and updating schema metadata. If disabled this is allows the driver to skip over retrieving and updating schema metadata and session.get_metadata() will always return an empty object. This can be useful for reducing the startup overhead of short-lived sessions.
    Default: True (enabled)

  • hostname_resolution: Enable retrieving hostnames for IP addresses using reverse IP lookup. This is useful for authentication (Kerberos) or encryption (SSL) services that require a valid hostname for verification.
    Default: False (disabled)

  • randomized_contact_points: Enable/Disable the randomization of the contact points list.
    Important: This setting should only be disabled for debugging or tests.
    Default: True (enabled)

  • speculative_execution_policy: Enable constant speculative executions with the supplied settings acsylla.SpeculativeExecutionPolicy.

  • max_reusable_write_objects: Sets the maximum number of “pending write” objects that will be saved for re-use for marshalling new requests. These objects may hold on to a significant amount of memory and reducing the number of these objects may reduce memory usage of the application.
    The cost of reducing the value of this setting is potentially slower marshalling of requests prior to sending.
    Default: Max unsigned integer value

  • prepare_on_all_hosts: Prepare statements on all available hosts.
    Default: True

  • no_compact: Enable the NO_COMPACT startup option. This can help facilitate uninterrupted cluster upgrades where tables using COMPACT_STORAGE will operate in “compatibility mode” for BATCH, DELETE, SELECT, and UPDATE CQL operations.
    Default: False

  • host_listener_callback: Sets a callback for handling host state changes in the cluster. Note: The callback is invoked only when state changes in the cluster are applicable to the configured load balancing policy(s).

  • application_name: Set the application name. This is optional; however it provides the server with the application name that can aid in debugging issues with larger clusters where there are a lot of client (or application) connections.

  • application_version: Set the application version. This is optional; however it provides the server with the application version that can aid in debugging issues with large clusters where there are a lot of client (or application) connections that may have different versions in use.

  • client_id: Set the client id. This is optional; however it provides the server with the client ID that can aid in debugging issues with large clusters where there are a lot of client connections.
    Default: UUID v4 generated

  • monitor_reporting_interval_sec: Sets the amount of time between monitor reporting event messages.
    Default: 300 seconds.

  • cloud_secure_connection_bundle: Absolute path to DBaaS credentials file.
    Sets the secure connection bundle path for processing DBaaS credentials. This will pre-configure a cluster using the credentials format provided by the DBaaS cloud provider.
    Note: contact_points and ssl_enable should not used in conjunction with cloud_secure_connection_bundle.

    Example: "/path/to/secure-connect-database_name.zip"
    Default: None

  • dse_gssapi_authenticator: Enables GSSAPI authentication for DSE clusters secured with the DseAuthenticator. Instance of acsylla.DseGssapiAuthenticator

  • dse_gssapi_authenticator_proxy: Enables GSSAPI authentication with proxy authorization for DSE clusters secured with the DseAuthenticator. Instance of acsylla.DseGssapiAuthenticatorProxy

  • dse_plaintext_authenticator: Enables plaintext authentication for DSE clusters secured with the DseAuthenticator. Instance of acsylla.DsePlaintextAuthenticator

  • dse_plaintext_authenticator_proxy: Enables plaintext authentication with proxy authorization for DSE clusters secured with the DseAuthenticator. Instance of acsylla.DsePlaintextAuthenticatorProxy

Configuration methods

For full list of methods to configure Cluster see base.py

Session

A session object is used to execute queries and maintains cluster state through the control connection. The control connection is used to auto-discover nodes and monitor cluster changes (topology and schema). Each session also maintains multiple pools of connections to cluster nodes which are used to query the cluster.

import acsylla
    
cluster = acsylla.create_cluster(['localhost'])
session = await cluster.create_session(keyspace="acsylla")

Methods of Session object

  • async def close(self):
    Closes the session instance, outputs a close future which can be used to determine when the session has been terminated. This allows in-flight requests to finish.

  • async def set_keyspace(self, keyspace: str) -> "Result":
    Sets the keyspace for session

  • def get_client_id(self) -> str:
    Get the client id.

  • def get_metadata(self):
    Returns Metadata instance class for retrieving metadata from cluster.

  • async def create_prepared(self, statement: str, timeout: Optional[float] = None) -> PreparedStatement:
    Create a prepared statement.
    By providing a timeout all requests built by the prepared statement will use it, otherwise timeout provided during the Cluster instantantation will be used. Value expected is seconds.

  • async def execute(self, statement: "Statement") -> Result
    Executes an statement and returns the Result instance.

  • async def execute_batch(self, batch: Batch) -> Result:
    Executes a batch of statements.

  • def metrics(self) -> SessionMetrics:
    Returns the metrics related to the session.

  • def speculative_execution_metrics(self) -> SpeculativeExecutionMetrics:
    Returns speculative execution performance metrics gathered by the driver.

Statement

A statement object is an executable query. It represents either a regular (adhoc) statement or a prepared statement. It maintains the queries’ parameter values along with query options (consistency level, paging state, etc.)

Methods of Statement object

  • def add_key_index(self, index: int) -> None:
    Adds a key index specifier to this a statement. When using token-aware routing, this can be used to tell the driver which parameters within a non-prepared, parameterized statement are part of the partition key.
    Use consecutive calls for composite partition keys.
    This is not necessary for prepared statements, as the key parameters are determined in the metadata processed in the prepare phase.

  • def reset_parameters(self, count: int) -> None:
    Clear and/or resize the statement’s parameters.

  • def bind(self, index: int, value: SupportedType) -> None:
    Binds the value to a specific index parameter.
    If an invalid type is used for a prepared statement this will raise immediately an error. If a none prepared exception is used error will be raised later during the execution statement.
    If an invalid index is used this will raise immediately an error

  • def bind_by_name(self, name: str, value: SupportedType) -> None:
    Binds the the value to a specific parameter by name.
    If an invalid type is used for this will raise immediately an error. If an invalid name is used this will raise immediately an error

  • def bind_list(self, values: Sequence[SupportedType]) -> None:
    Binds the values into all parameters from left to right.
    For types supported and errors that this function might raise take a look at the Statement.bind function.

  • def bind_dict(self, values: Mapping[str, SupportedType]) -> None:
    Binds the values into all parameter names. Names are the keys of the mapping provided. For types supported and errors that this function might raise take
    look at the Statement.bind_dict function. Note: This method are only allowed for statements created using prepared statements

  • def set_page_size(self, page_size: int) -> None:
    Sets the statement's page size.

  • def set_page_state(self, page_state: bytes) -> None:
    Sets the statement's paging state. This can be used to get the next page of data in a multi-page query.
    Warning: The paging state should not be exposed to or come from untrusted environments. The paging state could be spoofed and potentially used to gain access to other data.

  • def set_timeout(self, timeout: float) -> None:
    Sets the statement's timeout in seconds for waiting for a response from a node.
    Default: Disabled (use the cluster-level request timeout)

  • def set_consistency(self, timeout: float) -> None:
    Sets the statement’s consistency level.
    Default: LOCAL_ONE

  • def set_serial_consistency(self, timeout: float) -> None:
    Sets the statement’s serial consistency level.
    Default: Not set

  • def set_timestamp(self, timestamp: int):
    Sets the statement’s timestamp.

  • def set_is_idempotent(self, is_idempotent: bool):
    Sets whether the statement is idempotent. Idempotent statements are able to be automatically retried after timeouts/errors and can be speculatively executed.

  • def set_retry_policy(self, retry_policy: str, retry_policy_logging: bool = False):
    Sets the statement’s retry policy.
    May be set to default or fallthrough

    • default This policy retries queries in the following cases:
      • On a read timeout, if enough replicas replied but data was not received.
      • On a write timeout, if a timeout occurs while writing the distributed batch log
      • On unavailable, it will move to the next host
      • In all other cases the error will be returned. This policy always uses the query’s original consistency level.
    • fallthrough This policy never retries or ignores a server-side failure. The error is always returned.
      Default: default This policy will retry on a read timeout if there was enough replicas, but no data present, on a write timeout if a logged batch request failed to write the batch log, and on a unavailable error it retries using a new host. In all other cases the default policy will return an error.
    • retry_policy_logging If set to True, this policy logs the retry decision of its child policy. Logging is done using INFO level. Default: False
  • def set_tracing(self, enabled: bool = None):
    Sets whether the statement should use tracing.

  • def set_host(self, host: str, port: int = 9042):
    Sets a specific host that should run the query.
    In general, this should not be used, but it can be useful in the following situations:
    To query node-local tables such as system and virtual tables.
    To apply a sequence of schema changes where it makes sense for all the changes to be applied on a single node.

  • def set_execution_profile(self, name: str) -> None:
    Sets the execution profile to execute the statement with. Note: Empty string will clear execution profile from statement

  • def set_execute_as(self, name: str) -> None:
    Sets the name of the user to execute the statement as.

PreparedStatement

A statement that has been prepared cluster-side (It has been pre-parsed and cached).

Methods of PreparedStatement object

Use the session.create_prepared() coroutine for creating a new instance of PreparedStatement.

prepared = await session.create_prepared("SELECT id, value FROM test")
statement = prepared.bind(page_size=10)
  • def bind(self, page_size: Optional[int] = None, page_state: Optional[bytes] = None, execution_profile: Optional[str] = None,) -> Statement:
    Returns a new Statement using the prepared.

  • def set_execution_profile(self, statement: Statement, name: str) -> None:
    Sets the execution profile to execute the statement with.
    Note: Empty string will clear execution profile from statement

Batch

A group of statements that are executed as a single batch.

Methods of Batch object

Use the acsylla.create_batch_logged(), acsylla.create_batch_unlogged() and acsylla.create_batch_counter() factories for creating a new instance.

  • def set_consistency(self, consistency: int):
    Sets the batch’s consistency level

  • def set_serial_consistency(self, consistency: int):
    Sets the batch’s serial consistency level.

  • def set_timestamp(self, timestamp: int):
    Sets the batch’s timestamp.

  • def set_request_timeout(self, timeout_ms: int):
    Sets the batch’s timeout for waiting for a response from a node.
    Default: Disabled (use the cluster-level request timeout)

  • def set_is_idempotent(self, is_idempotent):
    Sets whether the statements in a batch are idempotent. Idempotent batches are able to be automatically retried after timeouts/errors and can be speculatively executed.

  • def set_retry_policy(self, retry_policy: str, retry_policy_logging: bool = False):
    Sets the batch’s retry policy.
    May be set to default or fallthrough

    • default This policy retries queries in the following cases:
      • On a read timeout, if enough replicas replied but data was not received.
      • On a write timeout, if a timeout occurs while writing the distributed batch log
      • On unavailable, it will move to the next host
      • In all other cases the error will be returned. This policy always uses the query’s original consistency level.
    • fallthrough This policy never retries or ignores a server-side failure. The error is always returned.
      Default: default This policy will retry on a read timeout if there was enough replicas, but no data present, on a write timeout if a logged batch request failed to write the batch log, and on a unavailable error it retries using a new host. In all other cases the default policy will return an error.
    • retry_policy_logging If set to True, this policy logs the retry decision of its child policy. Logging is done using INFO level. Default: False
  • def set_tracing(self, enabled: bool):
    Sets whether the batch should use tracing.

  • def add_statement(self, statement: Statement) -> None:
    Adds a new statement to the batch.

  • def set_execution_profile(self, name: str) -> None:
    Sets the execution profile to execute the statement with.
    Note: Empty string will clear execution profile from statement

Result

The result of a query.

Methods of Result object

Provides a result instance class. Use the session.execute() coroutine for getting the result from a query

  • def count(self) -> int:
    Returns the total rows of the result

  • def column_count(self) -> int:
    Returns the total columns returned

  • def columns_names(self):
    Returns the columns names

  • def first(self) -> Optional["Row"]:
    Return the first result, if there is no row returns None.

  • def all(self) -> Iterable["Row"]:
    Return the all rows using of a result, using an iterator.
    If there is no rows iterator returns no rows.

  • def has_more_pages(self) -> bool:
    Returns true if there is still pages to be fetched

  • def page_state(self) -> bytes:
    Returns a token with the page state for continuing fetching new results.
    Before calling this method you must first checks if there are more results using the has_more_pages function, and if there are use the token returned by this function as an argument of the factories for creating an statement for returning the next page.

Row

A collection of column values.

Methods of Row object

Provides access to a row of a Result.

result = await session.execute(statement)
for row in result:
    print(row.as_dict())
  • def as_dict(self) -> dict:
    Returns the row as dict.

  • def as_list(self) -> list:
    Returns the row as list.

  • def as_tuple(self) -> tuple:
    Returns the row as tuple.

  • def as_named_tuple(self) -> tuple:
    Returns the row as named tuple.

  • def column_count(self) -> int:
    Returns column count.

  • def column_value(self, name: str) -> SupportedType:
    Returns the row column value called by name.
    Raises a CassException derived exception if the column can not be found
    Type is inferred by using the Cassandra driver and converted, if supported, to a Python type or one of the extended types provided by Acsylla.

  • def column_value_by_index(self, index):
    Returns the column value by column index. Raises an exception if the column can not be found

Logger

The driver’s logging system.

Methods of Logger object

Use the acsylla.get_logger() for acces to Logger instance.

logger = acsylla.get_logger()
  • def set_log_level(self, level: str) -> None:
    Sets the log level.
    Available levels: disabled, critical, error, warn, info, debug, trace

  • set_logging_callback(self, callback: Callable) -> None:
    Sets a callback function to catch log messages.
    Default: An internal logger with "acsylla" name.

  • def get_logger(self) -> None:
    Returns python logger.

Examples

The driver includes several examples in the examples directory.

Basic usage

The following snippet shows the minimal stuff that would be needed for creating a new Session object for the keyspace acsylla and then peform a query for reading a set of rows. For more info see base.py and factories.py Acsylla supports all native datatypes including Collections and UDT

import asyncio
import acsylla

async def main():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")    
    statement = acsylla.create_statement("SELECT id, value FROM test")
    async for row in statement:
        ...

    prepared = await session.create_prepared("SELECT id, value FROM test")    
    async for row in prepared.bind(page_size=10):
        ...
    


asyncio.run(main())
import asyncio
import acsylla
    
async def main():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    statement = acsylla.create_statement("SELECT id, value FROM test WHERE id=100")
    result = await session.execute(statement)
    row = result.first()
    value = row.column_value("value")
    await session.close()

asyncio.run(main())

Binding Parameters

The ‘?’ marker is used to denote the bind variables in a query string. This can be used for both regular and prepared parameterized queries.

Non Prepared Statement

In addition to adding the bind marker to your query string your application must also provide the number of bind variables to acsylla.create_statement() via parameters kwargs when constructing a new statement.

import asyncio
import acsylla


async def bind_by_index():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    statement = acsylla.create_statement(
        "INSERT INTO test (id, value) VALUES (?, ?)", parameters=2)
    statement.bind(0, 1)
    statement.bind(1, 1)
    await session.execute(statement)


async def bind_list():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    statement = acsylla.create_statement(
        "INSERT INTO test (id, value) VALUES (?, ?)", parameters=2)
    statement.bind_list([1, 1])
    await session.execute(statement)
    
asyncio.run(bind_by_index())
asyncio.run(bind_list())

Prepared Statement

Bind variables can be bound by the marker’s index or by name and must be supplied for all bound variables.

import asyncio
import acsylla


async def bind_by_index():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    prepared = await session.create_prepared("INSERT INTO test (id, value) VALUES (?, ?)")
    statement = prepared.bind()
    statement.bind(0, 1)
    statement.bind(1, 1)
    await session.execute(statement)


async def bind_by_name():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    prepared = await session.create_prepared(
        "INSERT INTO test (id, value) VALUES (?, ?)")
    statement = prepared.bind()
    statement.bind_by_name("id", 1)
    statement.bind_by_name("value", 1)
    await session.execute(statement)


async def bind_list():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    prepared = await session.create_prepared(
        "INSERT INTO test (id, value) VALUES (?, ?)")
    statement = prepared.bind()
    statement.bind_list([0, 1])
    await session.execute(statement)


async def bind_dict():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    prepared = await session.create_prepared(
        "INSERT INTO test (id, value) VALUES (?, ?)")
    statement = prepared.bind()
    statement.bind_dict({'id': 1, 'value': 1})
    await session.execute(statement)


async def bind_named_parameters():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    prepared = await session.create_prepared(
        "INSERT INTO test (id, value) VALUES (:test_id, :test_value)")
    statement = prepared.bind()
    statement.bind_dict({'test_id': 1, 'test_value': 1})
    await session.execute(statement)


asyncio.run(bind_by_index())
asyncio.run(bind_by_name())
asyncio.run(bind_list())
asyncio.run(bind_dict())
asyncio.run(bind_named_parameters())

Use prepared statement and paging

import asyncio
import acsylla

async def main():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    prepared = await session.create_prepared("SELECT id, value FROM test")
    statement = prepared.bind(page_size=10)
    while True:
        result = await session.execute(statement)
        print(result.columns_names())
        # ['id', 'value']
        for row in result:
            print(dict(row))
            # {'id': 1, 'value': 'test'}
            print(list(row))
            # [('id', 1), ('value', 'test')]
            print(row.as_list())
            # [1, 'test']
            print(row.as_tuple())
            # (1, 'test')
        if result.has_more_pages():
            statement.set_page_size(100) # you can change statement settings on the fly
            statement.set_page_state(result.page_state())
        else:
            break

asyncio.run(main())

Example for pagging result with async generator

import asyncio
import acsylla

class AsyncResultGenerator:
    def __init__(self, session, statement):
        self.session = session
        self.statement = statement

    async def __aiter__(self):
        result = await self.session.execute(self.statement)
        while True:
            if result.has_more_pages():
                self.statement.set_page_state(result.page_state())
                future_result = asyncio.create_task(
                    self.session.execute(self.statement))
                await asyncio.sleep(0)
            else:
                future_result = None
            for row in result:
                yield dict(row)
            if future_result is not None:
                result = await future_result
            else:
                break
def find(session, statement):
    return AsyncResultGenerator(session, statement)

async def main():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    prepared = await session.create_prepared("SELECT id, value FROM test")

    statement = prepared.bind(page_size=10)

    async for res in find(session, statement):
        print(res)

asyncio.run(main())

Configure Shard-Awareness connection to ScyllaDB cluster

import acsylla

cluster = acsylla.create_cluster(['node1', 'node2', 'node3'],
    port=19042,                 # default: 9042
    core_connections_per_host=8,# default: 1
    local_port_range_min=49152, # default: 49152
    local_port_range_max=65535  # default: 65535
)

SSL Example

import acsylla

with open('./certs/client.cert.pem') as f:
    ssl_cert = f.read()
with open('./certs/client.key.pem') as f:
    ssl_private_key = f.read()
with open('./certs/trusted.cert.pem') as f:
    ssl_trusted_cert = f.read()

cluster = acsylla.create_cluster(
    ['localhost'],
    ssl_enabled=True,
    ssl_cert=ssl_cert,
    ssl_private_key=ssl_private_key,
    ssl_trusted_cert=ssl_trusted_cert,
    ssl_verify_flags=acsylla.SSLVerifyFlags.PEER_IDENTITY)

Retrieving metadata

import asyncio
import acsylla

async def main():
    cluster = acsylla.create_cluster(['localhost'])
    session = await cluster.create_session(keyspace="acsylla")
    metadata = session.get_metadata()
    for keyspace in metadata.get_keyspaces():
        keyspace_metadata = metadata.get_keyspace_meta(keyspace)
        print('\n\n'.join(keyspace_metadata.as_cql_query(formatted=True)))
    await session.close()

asyncio.run(main())

Configure logging

Set log level

Available levels: disabled critical error warn info debug trace

import logging
import asyncio
import acsylla

logging.basicConfig(format="[%(levelname)1.1s %(asctime)s] (%(name)s) %(message)s")

async def main():
    cluster = acsylla.create_cluster(['localhost'], log_level='trace')
    session = await cluster.create_session(keyspace="acsylla")
    cluster.set_log_level('info')
    await session.close()

asyncio.run(main())

Set callback for capture log messages

import asyncio
import acsylla

def on_log_message(msg):
    print(msg.time_ms, 
          msg.log_level, 
          msg.file, 
          msg.line, 
          msg.function, 
          msg.message)

async def main():
    cluster = acsylla.create_cluster(['localhost'], 
                                     log_level='debug', 
                                     logging_callback=on_log_message)
    session = await cluster.create_session(keyspace="acsylla")
    await session.close()

asyncio.run(main())

Execution profiles

import asyncio
import acsylla

async def main():
    cluster = acsylla.create_cluster(['localhost'])
    cluster.create_execution_profile(
        'test_profile',
        request_timeout=200,
        load_balance_round_robin=True,
        whitelist_hosts='localhost',
        retry_policy='default',
        retry_policy_logging=True,
    )    
    session = await cluster.create_session(keyspace="acsylla")
    # For statement
    statement = acsylla.create_statement("SELECT id, value FROM test WHERE id=100", execution_profile="test_profile")
    # or 
    statement.set_execution_profile('statement')
    await session.execute(statement)
    # For prepared statement
    prepared = await session.create_prepared("SELECT id, value FROM test")
    statement = prepared.bind(execution_profile='test_profile')
    # or 
    statement.set_execution_profile('test_profile')
    await session.execute(statement)
    # For batch
    batch = acsylla.create_batch(execution_profile="test_profile")
    # or 
    batch.set_execution_profile("test_profile")
    await session.close()

asyncio.run(main())

Tracing

import acsylla
import asyncio


async def pint_tracing_result(session, tracing_id):
    print('*' * 10, tracing_id, '*' * 10)
    statement = acsylla.create_statement(
        "SELECT * FROM system_traces.sessions WHERE session_id = ?", 1)
    statement.bind(0, tracing_id)
    result = await session.execute(statement)
    for row in result:
        print("\n".join([f"\033[1m{k}:\033[0m {v}" for k, v in list(row)]))


async def tracing_example():
    cluster = acsylla.create_cluster(["localhost"])
    session = await cluster.create_session()
    # Statement tracing
    statement = acsylla.create_statement(
        "SELECT release_version FROM system.local")
    statement.set_tracing(True)
    result = await session.execute(statement)
    await pint_tracing_result(session, result.tracing_id)
    # Batch tracing
    batch_statement1 = acsylla.create_statement(
        "INSERT INTO acsylla.test (id, value) VALUES (1, 1)")
    batch_statement2 = acsylla.create_statement(
        "INSERT INTO acsylla.test (id, value) VALUES (2, 2)")
    batch = acsylla.create_batch_logged()
    batch.add_statement(batch_statement1)
    batch.add_statement(batch_statement2)
    batch.set_tracing(True)
    result = await session.execute_batch(batch)
    await pint_tracing_result(session, result.tracing_id)


asyncio.run(tracing_example())

Host State Changes

The status and membership of a node can change within the life-cycle of the cluster. A host listener callback can be used to detect these changes.

import acsylla
import asyncio


def host_listener_callback(event: acsylla.HostListenerEvent, host: str):
    if event == acsylla.HostListenerEvent.UP:
        print('Host', host, 'is UP')
    else:
        print(event.name, host)


async def main():
    cluster = acsylla.create_cluster(["localhost"], host_listener_callback=host_listener_callback)
    session = await cluster.create_session(keyspace="acsylla")
    await session.close()


asyncio.run(main())

Developing

For developing you must clone the respository and first compile the CPP Cassandra driver, please follow the instructions for installing any dependency that you would need for compiling the driver:

NOTE: The driver depends on libuv and openssl. To install on Mac OS X, do brew install libuv and brew install openssl respectively. Additionally, you may need to export openssl lib locations: export LDFLAGS="-L/opt/homebrew/lib" and export CPPFLAGS="-I/opt/homebrew/include".

git clone git@github.com:acsylla/acsylla.git
make install-driver

Set up the environment and compile the package using the following commands:

python -m venv venv
source venv/bin/activate
make compile
make install-dev

And finally run the tests:

make certs
docker-compose up -d
make test

Metadata

Release files for acsylla 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for acsylla 1.2.0
File
acsylla-1.2.0-cp315-cp315t-musllinux_1_2_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp315-cp315t-musllinux_1_2_aarch64.whl CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
acsylla-1.2.0-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details
acsylla-1.2.0-cp315-cp315t-macosx_10_15_universal2.whl CPython 3.15 CPython 3.15 free-threading macOS 10.15+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp315-cp315-musllinux_1_2_x86_64.whl CPython 3.15 CPython 3.15 Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp315-cp315-musllinux_1_2_aarch64.whl CPython 3.15 CPython 3.15 Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
acsylla-1.2.0-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details
acsylla-1.2.0-cp315-cp315-macosx_10_15_universal2.whl CPython 3.15 CPython 3.15 macOS 10.15+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
acsylla-1.2.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details
acsylla-1.2.0-cp314-cp314t-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
acsylla-1.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
acsylla-1.2.0-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
acsylla-1.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
acsylla-1.2.0-cp313-cp313-macosx_10_13_universal2.whl CPython 3.13 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
acsylla-1.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
acsylla-1.2.0-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
acsylla-1.2.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
acsylla-1.2.0-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
acsylla-1.2.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
acsylla-1.2.0-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details
acsylla-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
acsylla-1.2.0-cp39-cp39-musllinux_1_2_aarch64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ ARM64 Details
acsylla-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
acsylla-1.2.0-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details
acsylla-1.2.0-cp39-cp39-macosx_10_9_universal2.whl CPython 3.9 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64) Details

Total release size: 315.3 MB

Release files / acsylla-1.2.0-cp315-cp315t-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp315-cp315t-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3ee21a26f2bf690b89153b66c0a315206ff99f4cb363dfb4af041cb503a3ba46
BLAKE2b-256 checksum
How to use checksums
108bf19fc1313291cd5524d32ab9971432367558d46bccf8afab9f475ba60106
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315t-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp315-cp315t-musllinux_1_2_aarch64.whl
Size 8.7 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
db24fc3e778db0e2aa09a85704ffeb3359ede060aee7b889d1598944624b20fd
BLAKE2b-256 checksum
How to use checksums
8dc5b8310e50157064150596fe2453da21572f6f8d32bbd2def94914be016b83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
61afa17589c830bacd0d7e8718eccdec3eca1d61c6380d0711010b820f43dba4
BLAKE2b-256 checksum
How to use checksums
b0ad8cd4ab54a3736df8e102597c4c6999d5e8dab67c90c18acfb77911cb5100
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.7 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f0c3c6685cc06fde77b848cef19ec5c4b793194d3f6080fc193d18d130eba097
BLAKE2b-256 checksum
How to use checksums
c4b57948ac9ba7272a9c8183dafaf18abfb9616a233879d19f9e031de22d26a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315t-macosx_10_15_universal2.whl

Download URL acsylla-1.2.0-cp315-cp315t-macosx_10_15_universal2.whl
Size 4.2 MB
Tags CPython 3.15 CPython 3.15 free-threading macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
804ad87b33c6e03ebbc845ef287a1b174369552c840c2ad2a75a4dcbc558096f
BLAKE2b-256 checksum
How to use checksums
e956702726d2b4edb7ba464f175a8b2a9e27f646d733672bb22e9f332ce281ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp315-cp315-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.15 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e018167b26e453bdd97ebcb3aa55b2f88bba7ae7b00437e6b5f456dc50fa7fb2
BLAKE2b-256 checksum
How to use checksums
f9ec704af3b708fc0f0c1eaa27f7ddba299407eb67e701a24cbe3d47cb7bf5fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp315-cp315-musllinux_1_2_aarch64.whl
Size 8.6 MB
Tags CPython 3.15 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
1a5833572436d438c3e52e28e32d10a45e7def58ef9a247b40717c10fd7fe3d5
BLAKE2b-256 checksum
How to use checksums
75a2f3b66f2bbd63e2d6fa415bd3eca3fea454f5942f465829485888faa94097
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.15 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3c0c3e3e300c1abd07cdf672912fd9e417a0c2cc04dc4444759f0fb50deba7b8
BLAKE2b-256 checksum
How to use checksums
5db33a16d5589eccd91c61f4a91b88dac0cf6aef6c808da3fd7cfb0d7bac5bd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.6 MB
Tags CPython 3.15 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ea1ffa265d237bba6cbab42345eefc09e516d074f3aae52baa7e35e994f70b06
BLAKE2b-256 checksum
How to use checksums
c237aa3ef3b17f164e36f4f9c362be92ed11103b963fbff148f7f0450d58b55b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp315-cp315-macosx_10_15_universal2.whl

Download URL acsylla-1.2.0-cp315-cp315-macosx_10_15_universal2.whl
Size 4.2 MB
Tags CPython 3.15 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
066d2c47ac8e3e2cfcc8d4318d25faf51f00c71fcc71a2cb4fcb347456767f35
BLAKE2b-256 checksum
How to use checksums
41499f30734f0106ad5dbd5572f85f333288364a6a39cc72e1413e67a2e00a5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ea8a1329e2ed1c3366a3b275af19f9181692c7f22ff229eaa96a4f2bef78c4c3
BLAKE2b-256 checksum
How to use checksums
43f606f33c4c6508cdd722b9a0c498dc99884888103fdecd200f3223bbba73f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 8.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
8724661f52f5972c82ad70b7c9124cc706470b989613ed779221bc781a415ca8
BLAKE2b-256 checksum
How to use checksums
7c0c11e4c4ad780be8a6999b332547f48d4545c99323a298ef1a92cb2aa98721
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1336046bdcc292578452a8f2d864680b93cbbf0af8ac46e2e8e2512727d0b7c8
BLAKE2b-256 checksum
How to use checksums
9a99c3fb7a1ec967c4e4cd220e5afd14e965d5b29a4e4a524f88682fee5ddb3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2815a1b0bd430a8e834c1ff0b4a4d775213b7dc844ab07d218d0df26505351ae
BLAKE2b-256 checksum
How to use checksums
ee6999b3376fd11e223d773f06092e9408b6478b68c4a8ef6bdc9bdc8ad342ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314t-macosx_10_15_universal2.whl

Download URL acsylla-1.2.0-cp314-cp314t-macosx_10_15_universal2.whl
Size 4.2 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
edc9b8fcf23de9440bbacb65a8296f5d34dd0cd760e973231e3208a6cfce4ed5
BLAKE2b-256 checksum
How to use checksums
ae2fe3d56973c9d4ae8219aa2eb1f95f5a784934cb6ec3873f8c43925c90483b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
dc5b94e152afa8764b511b93aa713931445f9479c181a84ad8484801cdc929f6
BLAKE2b-256 checksum
How to use checksums
56ab20d88308f1463c0f335e7822e8b5f442af43dc9b93960291cf7eab581215
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl
Size 8.6 MB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
363cc6231627f1f4a7073d7dc7cca6cd80cce8b1ccca949bb3e3c26e20b6a08f
BLAKE2b-256 checksum
How to use checksums
7d86850d4a04537569c7964dc95b2c852203cff1b618a3cb0b75dcec677c42cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0b80f881fe74ed874e62d838aee665540bef98a0dc91b84ce151077839fdeb1a
BLAKE2b-256 checksum
How to use checksums
79d4ead17c0c52c0b4edef0e865edd9b55b78eff9fa505a95f5872e8300d65b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.6 MB
Tags CPython 3.14 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0573914ba9c941d3e6142f914f1f4dca8b3c3e13b786e50b83cab928125778cf
BLAKE2b-256 checksum
How to use checksums
14849a3df6d9e58b329198029fcddd12985629b0223848048f0702bf2f42d6e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp314-cp314-macosx_10_15_universal2.whl

Download URL acsylla-1.2.0-cp314-cp314-macosx_10_15_universal2.whl
Size 4.2 MB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
23db2a486a886cffe53059434bb56e360d2fa9ff849cbba605f5e84aedd6ffee
BLAKE2b-256 checksum
How to use checksums
0065ee251cb1951ae7b5b029e99033f1edd482a8188a86a905a481e2a174d454
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9bc9dd4a6140ba69fe035873263ad0a1efadc77bf1535a384800b7eab65a02aa
BLAKE2b-256 checksum
How to use checksums
367380cc3b76e658700b9df5a93f4389b8a25f0b58a35b8913862415c584bc84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl
Size 8.6 MB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
99b2e3c88d31c00e841fa11e34b7728ea44fecfbf75d0b53f5112fe6d5920d9b
BLAKE2b-256 checksum
How to use checksums
a28595d7c7139491c563b3667935d4eef38fafa5b38d3eb0b33777abb2bfcbad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7270dde66476ad9a874d7a86f4c50e86e2ea04c388629cb451f7fab92c328fa2
BLAKE2b-256 checksum
How to use checksums
598013ef74a2da8b6ae49e8a41c99453d945132180d6a75fd9a9bb42d8c349f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.6 MB
Tags CPython 3.13 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c698c68f88b006f80138e3134d4a135780e4880280300de2923b81594c719ad6
BLAKE2b-256 checksum
How to use checksums
69fef45001f71973e0003b67882a2c62de2f0a6a7a76d113756a21c09ef65469
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp313-cp313-macosx_10_13_universal2.whl

Download URL acsylla-1.2.0-cp313-cp313-macosx_10_13_universal2.whl
Size 4.2 MB
Tags CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
6c4ee18fad43bb0ce62e97c2c94c684863550a3a36ec39728a7fe33df54da9b7
BLAKE2b-256 checksum
How to use checksums
bfb8fa94fccd177b2d4a55e75e82c44f5d33d72dca5394a9f81d114fd03e6a69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6baf1c65d68a1910792ea9821da2339eea3346bb805b3b0da3f530c6bda55f1c
BLAKE2b-256 checksum
How to use checksums
04d595f391f22626cc881dadefdd02becb81db4f54b1a774cc541ac97be55084
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl
Size 8.6 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
d9a26ed85d7fc13c41c1520856f61ab1c0b98892e16e7b79b62a118e41d02398
BLAKE2b-256 checksum
How to use checksums
375e9d5f9e716aa8930c8be71a6d006c34a920ef477ce0c12fba1537e22e96fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6a2e467c630580b7b7ab44b0f9ebc8ab7715805c9b78b4c150d2f3c6967da2b9
BLAKE2b-256 checksum
How to use checksums
d6e11f2476ca9578d4f2cc80ed8f5b882d33b4146cf8296967194f0b5b6ca464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.6 MB
Tags CPython 3.12 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a7bad7b26d34f7c076380c444846be628030ca47f00c7e736e31e0c39946f603
BLAKE2b-256 checksum
How to use checksums
60a624589b306e84f746dad2e245097bcff665c2298286b5586ca7ae4ef0016e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp312-cp312-macosx_10_13_universal2.whl

Download URL acsylla-1.2.0-cp312-cp312-macosx_10_13_universal2.whl
Size 4.2 MB
Tags CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
cea1862c2e6ac9c1193f7f3081c228f27272a23ae461a238ba059d7cab97061b
BLAKE2b-256 checksum
How to use checksums
102b97b71340f3d3715f72abff3f3e56af2b0f2ec06c5b9b9187e7ca6f983e6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e20742aab3d08a2d4648f0d98e7eef6ca5c786b1f371ccdeca25fc0098838b23
BLAKE2b-256 checksum
How to use checksums
192e30f1db908cc3f08bbb2f6daa8abfc35afbc788932a72c8fe16bebed34d58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl
Size 8.6 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
dbafe0f7c63c9b7838ae88fc494afdfcd31f9bf86f6dffa2826843cf5659601d
BLAKE2b-256 checksum
How to use checksums
88c96439a30b74cb8cd773f43888984a9d8967352682f8a30c487eefd5ee11d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
361c55c5344c14b70d491f6416aab2434f2c1abed5c0425f876edb44d35e3396
BLAKE2b-256 checksum
How to use checksums
4342830c9ad28aad7e25975fed91c82dc7303c697233ac0b7c11d541a9d33ce3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.7 MB
Tags CPython 3.11 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c596f9720880026e9bc6e58bf867005787e7ad2d8424f1a1ee1c2f8777a0901f
BLAKE2b-256 checksum
How to use checksums
3c2dce5c5b7789a63ff62deaf1b1b540c58bee077bfa5ee0d4c8dc1fafae26ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp311-cp311-macosx_10_9_universal2.whl

Download URL acsylla-1.2.0-cp311-cp311-macosx_10_9_universal2.whl
Size 4.2 MB
Tags CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
9a349c6fdc04237b293e0b4e3c557cba906774ad497623d27991d76cced6a6c9
BLAKE2b-256 checksum
How to use checksums
cfdaa53a02e9fa83fad9c6e7a15b62ca3f5606309f31a3160bc8c2ada82834ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9ff3f8b955f3d7424d6a8eee34173a37d26d5ec9b9bc7846d5c35818401cee53
BLAKE2b-256 checksum
How to use checksums
873cda8bc67d70931f544ff7ddf788989c0463bea87f8b7241e213b24ff0737b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl
Size 8.6 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
c86b4bb3750ca3a82f7c73bd9795168998aa5caf511fdd5c3de7aa2e78f191dc
BLAKE2b-256 checksum
How to use checksums
72643277f617929dca05aa3abd9e44a09b10b06b2d2a2f7aee175314ee9d0d44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
42178dffafaffe1d8844110387864fa24bb53b54236777d2f59774f2137a2742
BLAKE2b-256 checksum
How to use checksums
cededbb9f19f94a993b3ab699ed26b573a843c1f92fa461d8498362a8351ec4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.6 MB
Tags CPython 3.10 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
84bf837d455ad56145da102e452e1366cf64f5e7b716bca61ea0448308bc6a89
BLAKE2b-256 checksum
How to use checksums
54db027c97d537b99c48c70c70a7ed2600b361cc908f8c6b43e98efc31ab7382
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp310-cp310-macosx_10_9_universal2.whl

Download URL acsylla-1.2.0-cp310-cp310-macosx_10_9_universal2.whl
Size 4.2 MB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
e9f2eeea8a3e821d2087cdd7f5e2027dd1acc510e917e45cf8034266da242838
BLAKE2b-256 checksum
How to use checksums
3ef42e470a25e95aa99c625498c7353ea7b0295be3adbd7aaa3396976cda173b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL acsylla-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
Size 8.6 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
10a452ba455a9f5255169cda43be3c00b5fc27182cdfa5d218065d716f14bf7a
BLAKE2b-256 checksum
How to use checksums
1b2fe2664b384750314f154618668fbd944c5ea098f4f71c0e923f6b8e9dd0ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp39-cp39-musllinux_1_2_aarch64.whl

Download URL acsylla-1.2.0-cp39-cp39-musllinux_1_2_aarch64.whl
Size 8.6 MB
Tags CPython 3.9 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
88701bb0536f1983af65f2c033aecfbfea043c97c53b3ba892acb0e924b09ed1
BLAKE2b-256 checksum
How to use checksums
c7c9571cd943cfbe2da2341f4fbc3648d19598f8acbd39f620dfc609ef6037f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL acsylla-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 6.9 MB
Tags CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
dce4fad21e0673bd468bfdb65cd9e33a2e72e35e94a7b8dd8b73db2e686057b8
BLAKE2b-256 checksum
How to use checksums
a677057ad49c1a09486f2108d19f0821c873f437c90cee9f496a936080306cf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL acsylla-1.2.0-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 6.6 MB
Tags CPython 3.9 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2cb493c56c3f2a80f2d69516b3ceb85931deab394633c1bac826a8ccdcfc0f78
BLAKE2b-256 checksum
How to use checksums
7cea6276c57abcab3889df295e2428fcc272d5fba28c959a19aa34610d87e9dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / acsylla-1.2.0-cp39-cp39-macosx_10_9_universal2.whl

Download URL acsylla-1.2.0-cp39-cp39-macosx_10_9_universal2.whl
Size 4.2 MB
Tags CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
480f1f02ef839492ef8f84fefa89fbb415eb564fd8d4265c1a3e5c83812bc07f
BLAKE2b-256 checksum
How to use checksums
3c1dac68bc06961ee93cb021230042ab3209f6fb229a8849985ed06f366b5006
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Security for acsylla 1.2.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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page