# TX Engine
This library provides a Python interface for building BitcoinSV scripts and transactions.
For documentation of the Python Classes see below.
# Python Installation
As this library is hosted on PyPi (https://pypi.org/project/tx-engine/) and is installed using:
```bash
pip install tx-engine
```
## Example Tx class usage
So to parse a hex string to Tx:
```python
from tx_engine import Tx
src_tx = "0100000001c7151ebaf14dbfe922bd90700a7580f6db7d5a1b898ce79cb9ce459e17f12909000000006b4830450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41210395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4cffffffff0103000000000000001976a91496795fb99fd6c0f214f7a0e96019f642225f52d288ac00000000"
tx = tx.parse_hexstr(src_tx)
print(tx)
> PyTx { version: 1, tx_ins: [PyTxIn { prev_tx: "0929f1179e45ceb99ce78c891b5a7ddbf680750a7090bd22e9bf4df1ba1e15c7", prev_index: 0, sequence: 4294967295, script_sig: [0x48 0x30450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41 0x21 0x0395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4c] }], tx_outs: [PyTxOut { amount: 3, script_pubkey: [OP_DUP OP_HASH160 0x14 0x96795fb99fd6c0f214f7a0e96019f642225f52d2 OP_EQUALVERIFY OP_CHECKSIG] }], locktime: 0 }
```
# Overview of the tx-engine Classes
The tx-engine provides the following classes:
![tx-engine classes](docs/diagrams/python_classes.png)
# Python Classes
This provides an overview of the Python Classes their properties and methods,
including:
* [Script](#script)
* [Stack](#stack)
* [Context](#context)
* [Tx](#tx)
* [TxIn](#txin)
* [TxOut](#txout)
* [Wallet](#wallet)
* [Interface Factory](#interface-factory)
* [Blockchain Interface](#blockchain-interface)
* [Other Functions](#other-functions)
## Script
The Script class represents bitcoin script.
For more details about bitcoin script see https://wiki.bitcoinsv.io/index.php/Script.
Script has the following property:
* `cmds` - byte arrary of bitcoin operations
Script has the following methods:
* `__init__(self, cmds: bytes=[]) -> Script` - Constructor that takes an array of bytes
* `append_byte(self, byte: byte)` - Appends a single opcode or data byte
* `append_data(self, data: bytes)` - Appends data (without OP_PUSHDATA)
* `append_pushdata(self, data: bytes)` - Appends the opcodes and provided data that push it onto the stack
* `raw_serialize(self) -> bytes` - Return the serialised script without the length prepended
* `serialize(self) -> bytes` - Return the serialised script with the length prepended
* `get_commands(self) -> bytes` - Return a copy of the commands in this script
* `__add__(self, other: Script) -> Script` - Enable script addition e.g. `c_script = a_script + b_script`
* `to_string(self) -> String` - return the script as a string, that can be parsed by `parse_string()`. Note also that you can just print the script (`print(script)`)
* `is_p2pkh(self) -> bool` - returns True if script is a Pay to Public Key Hash script
* `append_integer(self, i64)` - adds an integer to the stack (assumes base 10)
* `append_big_integer(self, arbitrary_sized_integer)` - adds an arbitrary sized integer to the stack (assumes base 10)
Script has the following class methods:
* `Script.parse_string(in_string: str) -> Script` - Converts a string of OP_CODES into a Script
* `Script.parse(in_bytes: bytes) -> Script` - Converts an array of bytes into a Script
## Stack
The 'Stack' python class provides the python user direct access to the Stack structures used by the intepreter
Stack has the following methods:
* `__init__(self, items: List[List[bytes]]) -> Stack` - Constructor that takes a List of List of bytes
* `push_bytes_integer(self, List[bytes])` - push a arbitrary number in bytes onto the stack
* `decode_element(self, index: option<Int>)` - returns the item at stack location index. Assumption is its an arbitrary sized number
* `size(self)` - returns the size of the stack
* `__getitem__(self, index: int)` - allows array subscript syntax e.g. stack[i]
* `__eq__(&self, other: Stack)` - allows an equality test on Stack objects
## Context
The `context` is the environment in which bitcoin scripts are executed.
Context has the following properties:
* `cmds` - the commands to execute
* `ip_start` - the byte offset of where to start executing the script from (optional)
* `ip_limit` - the number of commands to execute before stopping (optional)
* `z` - the hash of the transaction
* `stack` - main data stack
* `alt_stack` - seconary stack
Context has the following methods:
* `__init__(self, script: Script, cmds: Commands = None, ip_limit: int , z: bytes)` - constructor
* `evaluate_core(self, quiet: bool = False) -> bool` - evaluates the script/cmds using the the interpreter and returns the stacks (`tack`, `alt_stack`). if quiet is true, dont print exceptions
* `evaluate(self, quiet: bool = False) -> bool` - executes the script and decode stack elements to numbers (`stack`, `alt_stack`). Checks `stack` is true on return. if quiet is true, dont print exceptions.
* `get_stack(self) -> Stack` - Return the `stack` as human readable
* `get_altstack(self) -> Stack`- Return the `alt_stack` as human readable
* `set_ip_start(self, start: int)` - sets the start location for the intepreter.
* `set_ip_limit(self, limit: int)` - sets the end location for the intepreter
Example from unit tests of using `evaluate_core` and `raw_stack`:
```python
script = Script([OP_PUSHDATA1, 0x01, b"\x85", OP_4, OP_NUM2BIN])
context_py_stack = Context_PyStack(script=script)
self.assertTrue(context_py_stack.evaluate_core())
self.assertEqual(context_py_stack.get_stack(), Stack([[0x85, 0x00, 0x00, 0x00]]))
script1 = Script.parse_string('19 1 0 0 1 OP_DEPTH OP_1SUB OP_PICK 0x13 OP_EQUALVERIFY OP_ROT OP_ADD OP_TOALTSTACK OP_ADD OP_DEPTH OP_1SUB OP_ROLL OP_TUCK OP_MOD OP_OVER OP_ADD OP_OVER OP_MOD OP_FROMALTSTACK OP_ROT OP_TUCK OP_MOD OP_OVER OP_ADD OP_SWAP OP_MOD 1 OP_EQUALVERIFY 1 OP_EQUAL')
context_py_stack = Context_PyStack(script=script1)
self.assertTrue(context_py_stack.evaluate_core())
self.assertEqual(context_py_stack.get_stack(), Stack([[1]])
script = Script([OP_1, OP_2, OP_3, OP_4, OP_5, OP_6, OP_2ROT])
context_py_stack = Context_PyStack(script=script)
self.assertTrue(context_py_stack.evaluate())
self.assertEqual(context_py_stack.get_stack(), Stack([[3], [4], [5], [6], [1], [2]]))
```
### Quiet Evalutation
Both `evaluate` and `evaluate_core` have a parameter `quiet`.
If the `quiet` parameter is set to `True` the `evaluate` function does not print out exceptions when executing code. This `quiet` parameter is currently only used in unit tests.
## Tx
Tx represents a bitcoin transaction.
Tx has the following properties:
* `version` - unsigned integer
* `tx_ins` - array of `TxIn` classes,
* `tx_outs` - array of `TxOut` classes
* `locktime` - unsigned integer
Tx has the following methods:
* `__init__(version: int, tx_ins: [TxIn], tx_outs: [TxOut], locktime: int=0) -> Tx` - Constructor that takes the fields
* `id(self) -> str` - Return human-readable hexadecimal of the transaction hash
* `hash(self) -> bytes` - Return transaction hash as bytes
* `is_coinbase(self) -> bool` - Returns true if it is a coinbase transaction
* `serialize(self) -> bytes` - Returns Tx as bytes
* `to_hexstr(self) -> str` - Returns Tx as hex string
* `copy(self) -> Tx` - Returns a copy of the Tx
* `to_string(self) -> String` - return the Tx as a string. Note also that you can just print the tx (`print(tx)`).
* `validate(self, [Tx]) -> Result` - provide the input txs, returns None on success and throws a RuntimeError exception on failure. Note can not validate coinbase or pre-genesis transactions.
Tx has the following class methods:
* `Tx.parse(in_bytes: bytes) -> Tx` - Parse bytes to produce Tx
* `Tx.parse_hexstr(in_hexstr: String) -> Tx` - Parse hex string to produce Tx
So to parse a hex string to Tx:
```Python
from tx_engine import Tx
src_tx = "0100000001c7151ebaf14dbfe922bd90700a7580f6db7d5a1b898ce79cb9ce459e17f12909000000006b4830450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41210395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4cffffffff0103000000000000001976a91496795fb99fd6c0f214f7a0e96019f642225f52d288ac00000000"
tx = tx.parse_hexstr(src_tx)
print(tx)
PyTx { version: 1, tx_ins: [PyTxIn { prev_tx: "0929f1179e45ceb99ce78c891b5a7ddbf680750a7090bd22e9bf4df1ba1e15c7", prev_index: 0, sequence: 4294967295, script_sig: [0x48 0x30450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41 0x21 0x0395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4c] }], tx_outs: [PyTxOut { amount: 3, script_pubkey: [OP_DUP OP_HASH160 0x14 0x96795fb99fd6c0f214f7a0e96019f642225f52d2 OP_EQUALVERIFY OP_CHECKSIG] }], locktime: 0 }
```
## TxIn
TxIn represents is a bitcoin transaction input.
TxIn has the following properties:
* `prev_tx` - Transaction Id as hex string
* `prev_index` - unsigned int
* `script_sig` - Script
* `sequence` - int
TxIn has the following constructor method:
* `__init__(prev_tx: String, prev_index: int, script_sig: Script=[], sequence: int=0xFFFFFFFF) -> TxIn` - Constructor that takes the fields
Note txin can be printed using the standard print, for example:
```Python
print(txin)
PyTxIn { prev_tx: "5c866b70189008586a4951d144df93dcca4d3a1b701e3786566f819450eca9ba", prev_index: 0, sequence: 4294967295, script_sig: [] }
```
## TxOut
TxOut represents a bitcoin transaction output.
TxOut has the following properties:
* `amount` - int
* `script_pubkey` - Script
TxOut has the following constructor method:
* `__init__(amount: int, script_pubkey: Script) -> TxOut` - Constructor that takes the fields
Note txin can be printed using the standard print, for example:
```Python
print(txout)
PyTxOut { amount: 100, script_pubkey: [OP_DUP OP_HASH160 0x14 0x10375cfe32b917cd24ca1038f824cd00f7391859 OP_EQUALVERIFY OP_CHECKSIG] }
```
## Wallet
This class represents the Wallet functionality, including handling of private and public keys and signing transactions.
Wallet class has the following methods:
* `__init__(wif_key: str) -> Wallet` - Constructor that takes a private key in WIF format
* `sign_tx(self, index: int, input_tx: Tx, tx: Tx) -> Tx` - Sign a transaction input with the provided previous tx and sighash flags, Returns new signed tx
* `sign_tx_sighash(self, index: int, input_tx: Tx, tx: Tx, sighash_type: int) -> Tx` - Sign a transaction input with the provided previous tx and sighash flags, Returns new signed tx
* `get_locking_script(self) -> Script` - Returns a locking script based on the public key
* `get_public_key_as_hexstr(self) -> String` - Return the public key as a hex string
* `get_address(self) -> String` - Return the address based on the public key
* `to_wif(self) -> String` - Return the private key in WIF format
* `get_network(self) -> String` - Returns the current network associated with this keypair
* `to_int(self) -> Integer` - Returns the scaler value of the private key as a python integer
* `to_hex(self) -> String` - Returns the scaler value of the private key as a string in hex format
* `Wallet.generate_keypair(network) -> Wallet` - Given network (BSV_Testnet) return a keypair in Wallet format
* `Wallet.from_hexstr(network, hexstr) -> Wallet` - Given a network identifier and scalar value as a hex string, return a keypair in Wallet format
* `Wallet.from_bytes(network, bytes) -> Wallet` - Given a network identifier and a scalar value as a byte array, return a keypair in Wallet format
* `Wallet.from_int(network, integer) -> Wallet` - Given a network identifier and a scaler value as an integer, return a keypair in Wallet format
The library provides some additional helper functions to handle keys in different formats.
* `wif_to_bytes(wif: string) -> bytes` - Given a key in WIF format, it returns a byte array of the scalar value of the private key
* `bytes_to_wif(key_bytes, network) -> String` - Given a byte array and a network identifier, returns the WIF format for the private key
* `wif_from_pw_nonce(password, nonce, optional<network>) -> WIF` - Given a password, nonce (strings) return a WIF format for the private key. The default for the network is BSV_Mainnet. For a testnet format, please use BSv_Testnet
![Bitcoin Keys](docs/diagrams/keys.png)
## Interface Factory
The InterfaceFactory is class for creating interfaces to the BSV blockchain (`BlockchainInterface`).
The InterfaceFactory class one method:
* `set_config(self, config: ConfigType) -> BlockchainInterface` - This reads the configuration `interface_type` field and returns the configured `BlockchainInterface`
## Blockchain Interface
The BlockchainInterface class provides an interface to the BSV network.
BlockchainInterface class has the following methods:
* `__init__(self)` - Constructor that takes no parameters
* `set_config(self, config)` - configures the interface based on the provide config
* `get_addr_history(self, address)` - Return the transaction history with this address
* `is_testnet(self) -> bool` - Return true if this interface is connected to BSV Testnet
* `get_utxo(self, address)` - Return the utxo associated with this address
* `get_balance(self, address)` - Return the balance associated with this address
* `get_block_count(self)` - Return the height of the chain
* `get_best_block_hash(self)` - Return the hash of the latest block
* `get_merkle_proof(self, block_hash: str, tx_id: str) -> str` - Given the block hash and tx_id return the merkle proof
* `get_transaction(self, txid: str)` - Return the transaction (as Dictionary) associated with this txid
* `get_raw_transaction(self, txid: str) -> Optional[str]` - Return the transaction (as kexstring) associated with this txid, use cached copy if available.
* `broadcast_tx(self, transaction: str)` - broadcast this tx to the network
* `get_block(self, blockhash: str) -> Dict` - Return the block given the block hash
* `get_block_header(self, blockhash: str) -> Dict` - Returns te block_header for a given block hash
### WoC Interface
The `WoCInterface` is a `BlockchainInterface` that communicates with the WhatsOnChain API.
Note that if you are using this you will need to install the python library `requests`.
### Mock Interface
The `Mock Interface` is a `BlockchainInterface` that is used for unit testing.
### RPC Interface
The `RPC Interface` is a `BlockchainInterface` that is used for connecting to the RPC interface of mining nodes.
### SIGHASH Functions
* `sig_hash(tx: Tx, index: int, script_pubkey: Script, satoshi: int, sighash_flags: int)` - Return the transaction digest/hash
* `sig_hash_preimage(tx: Tx, index: int, script_pubkey: Script, satoshi: int, sighash_flags: int)` - Return the transaction data prior to the hash function
Given:
* `tx` - Spending transaction
* `index` - Spending input index
* `script_pubkey` - The lock_script of the output being spent
* `satoshis` - The satoshi amount in the output being spent
* `sighash_flags` - Sighash flags
Note the sighash flags can be obtained from the `SIGHASH` class which supports the following flags:
```
ALL
NONE
SINGLE
ANYONECANPAY
FORKID
ALL_FORKID = ALL | FORKID
NONE_FORKID = NONE | FORKID
SINGLE_FORKID = SINGLE | FORKID
ALL_ANYONECANPAY_FORKID = ALL_FORKID | ANYONECANPAY
NONE_ANYONECANPAY_FORKID = NONE_FORKID | ANYONECANPAY
SINGLE_ANYONECANPAY_FORKID = SINGLE_FORKID | ANYONECANPAY
```
For further details see https://wiki.bitcoinsv.io/index.php/SIGHASH_flags
Example usage:
```Python
sig_hash_value = sig_hash(own_tx, 0, script_pubkey, 99904, SIGHASH.ALL_FORKID)
```
# Other Functions
These are public key and address functions that are likely to be used if you don't have the private key and
are not using the Wallet class.
* `address_to_public_key_hash(address: str) -> bytes` - Given the address return the hash160 of the public key
* `hash160(data: bytes) -> bytes` - Returns the hash160 of the provided data (usually the public key)
* `p2pkh_script(h160: bytes) -> Script` - Takes the hash160 of the public key and returns the locking script
* `public_key_to_address(public_key: bytes, network: str) -> String` - Given the public key and the network (either `BSV_Mainnet` or `BSV_Testnet`) return the address
Raw data
{
"_id": null,
"home_page": null,
"name": "tx-engine",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "bitcoin, sv, cash, crypto",
"author": "Arthur Gordon <a.gordon@nchain.com>",
"author_email": "Arthur Gordon <a.gordon@nchain.com>",
"download_url": "https://files.pythonhosted.org/packages/4e/e0/de043ce592c0531e2b643aeb93cc4d4d828a93d1b9883a70f03a4aeaf191/tx_engine-0.6.8.tar.gz",
"platform": null,
"description": "# TX Engine\n\nThis library provides a Python interface for building BitcoinSV scripts and transactions.\n\nFor documentation of the Python Classes see below.\n\n# Python Installation\nAs this library is hosted on PyPi (https://pypi.org/project/tx-engine/) and is installed using:\n\n```bash\npip install tx-engine\n```\n\n## Example Tx class usage\nSo to parse a hex string to Tx:\n\n```python\nfrom tx_engine import Tx\n\nsrc_tx = \"0100000001c7151ebaf14dbfe922bd90700a7580f6db7d5a1b898ce79cb9ce459e17f12909000000006b4830450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41210395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4cffffffff0103000000000000001976a91496795fb99fd6c0f214f7a0e96019f642225f52d288ac00000000\"\n\ntx = tx.parse_hexstr(src_tx)\nprint(tx)\n\n> PyTx { version: 1, tx_ins: [PyTxIn { prev_tx: \"0929f1179e45ceb99ce78c891b5a7ddbf680750a7090bd22e9bf4df1ba1e15c7\", prev_index: 0, sequence: 4294967295, script_sig: [0x48 0x30450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41 0x21 0x0395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4c] }], tx_outs: [PyTxOut { amount: 3, script_pubkey: [OP_DUP OP_HASH160 0x14 0x96795fb99fd6c0f214f7a0e96019f642225f52d2 OP_EQUALVERIFY OP_CHECKSIG] }], locktime: 0 }\n```\n\n\n# Overview of the tx-engine Classes\nThe tx-engine provides the following classes:\n\n![tx-engine classes](docs/diagrams/python_classes.png)\n\n# Python Classes\n\nThis provides an overview of the Python Classes their properties and methods, \nincluding:\n\n* [Script](#script)\n* [Stack](#stack)\n* [Context](#context)\n* [Tx](#tx)\n* [TxIn](#txin)\n* [TxOut](#txout)\n* [Wallet](#wallet)\n* [Interface Factory](#interface-factory)\n* [Blockchain Interface](#blockchain-interface)\n* [Other Functions](#other-functions)\n\n## Script\n\nThe Script class represents bitcoin script.\nFor more details about bitcoin script see https://wiki.bitcoinsv.io/index.php/Script.\n\nScript has the following property:\n* `cmds` - byte arrary of bitcoin operations\n\nScript has the following methods:\n\n* `__init__(self, cmds: bytes=[]) -> Script` - Constructor that takes an array of bytes \n* `append_byte(self, byte: byte)` - Appends a single opcode or data byte\n* `append_data(self, data: bytes)` - Appends data (without OP_PUSHDATA)\n* `append_pushdata(self, data: bytes)` - Appends the opcodes and provided data that push it onto the stack\n* `raw_serialize(self) -> bytes` - Return the serialised script without the length prepended\n* `serialize(self) -> bytes` - Return the serialised script with the length prepended\n* `get_commands(self) -> bytes` - Return a copy of the commands in this script\n* `__add__(self, other: Script) -> Script` - Enable script addition e.g. `c_script = a_script + b_script`\n* `to_string(self) -> String` - return the script as a string, that can be parsed by `parse_string()`. Note also that you can just print the script (`print(script)`)\n* `is_p2pkh(self) -> bool` - returns True if script is a Pay to Public Key Hash script\n* `append_integer(self, i64)` - adds an integer to the stack (assumes base 10)\n* `append_big_integer(self, arbitrary_sized_integer)` - adds an arbitrary sized integer to the stack (assumes base 10)\n\n\nScript has the following class methods:\n* `Script.parse_string(in_string: str) -> Script` - Converts a string of OP_CODES into a Script\n* `Script.parse(in_bytes: bytes) -> Script` - Converts an array of bytes into a Script\n\n## Stack\n\nThe 'Stack' python class provides the python user direct access to the Stack structures used by the intepreter\n\nStack has the following methods:\n\n* `__init__(self, items: List[List[bytes]]) -> Stack` - Constructor that takes a List of List of bytes\n* `push_bytes_integer(self, List[bytes])` - push a arbitrary number in bytes onto the stack\n* `decode_element(self, index: option<Int>)` - returns the item at stack location index. Assumption is its an arbitrary sized number\n* `size(self)` - returns the size of the stack\n* `__getitem__(self, index: int)` - allows array subscript syntax e.g. stack[i] \n* `__eq__(&self, other: Stack)` - allows an equality test on Stack objects\n\n## Context\n\nThe `context` is the environment in which bitcoin scripts are executed.\n\nContext has the following properties:\n* `cmds` - the commands to execute\n* `ip_start` - the byte offset of where to start executing the script from (optional)\n* `ip_limit` - the number of commands to execute before stopping (optional)\n* `z` - the hash of the transaction \n* `stack` - main data stack\n* `alt_stack` - seconary stack\n\nContext has the following methods:\n\n* `__init__(self, script: Script, cmds: Commands = None, ip_limit: int , z: bytes)` - constructor\n* `evaluate_core(self, quiet: bool = False) -> bool` - evaluates the script/cmds using the the interpreter and returns the stacks (`tack`, `alt_stack`). if quiet is true, dont print exceptions\n* `evaluate(self, quiet: bool = False) -> bool` - executes the script and decode stack elements to numbers (`stack`, `alt_stack`). Checks `stack` is true on return. if quiet is true, dont print exceptions.\n* `get_stack(self) -> Stack` - Return the `stack` as human readable\n* `get_altstack(self) -> Stack`- Return the `alt_stack` as human readable\n* `set_ip_start(self, start: int)` - sets the start location for the intepreter. \n* `set_ip_limit(self, limit: int)` - sets the end location for the intepreter\n\nExample from unit tests of using `evaluate_core` and `raw_stack`:\n```python\nscript = Script([OP_PUSHDATA1, 0x01, b\"\\x85\", OP_4, OP_NUM2BIN])\ncontext_py_stack = Context_PyStack(script=script)\nself.assertTrue(context_py_stack.evaluate_core())\nself.assertEqual(context_py_stack.get_stack(), Stack([[0x85, 0x00, 0x00, 0x00]]))\n\nscript1 = Script.parse_string('19 1 0 0 1 OP_DEPTH OP_1SUB OP_PICK 0x13 OP_EQUALVERIFY OP_ROT OP_ADD OP_TOALTSTACK OP_ADD OP_DEPTH OP_1SUB OP_ROLL OP_TUCK OP_MOD OP_OVER OP_ADD OP_OVER OP_MOD OP_FROMALTSTACK OP_ROT OP_TUCK OP_MOD OP_OVER OP_ADD OP_SWAP OP_MOD 1 OP_EQUALVERIFY 1 OP_EQUAL')\ncontext_py_stack = Context_PyStack(script=script1)\nself.assertTrue(context_py_stack.evaluate_core())\nself.assertEqual(context_py_stack.get_stack(), Stack([[1]])\n\nscript = Script([OP_1, OP_2, OP_3, OP_4, OP_5, OP_6, OP_2ROT])\ncontext_py_stack = Context_PyStack(script=script)\nself.assertTrue(context_py_stack.evaluate())\nself.assertEqual(context_py_stack.get_stack(), Stack([[3], [4], [5], [6], [1], [2]]))\n```\n\n### Quiet Evalutation\n Both `evaluate` and `evaluate_core` have a parameter `quiet`.\n If the `quiet` parameter is set to `True` the `evaluate` function does not print out exceptions when executing code. This `quiet` parameter is currently only used in unit tests.\n\n\n## Tx\n\nTx represents a bitcoin transaction.\n\nTx has the following properties:\n* `version` - unsigned integer\n* `tx_ins` - array of `TxIn` classes,\n* `tx_outs` - array of `TxOut` classes\n* `locktime` - unsigned integer\n\nTx has the following methods:\n\n* `__init__(version: int, tx_ins: [TxIn], tx_outs: [TxOut], locktime: int=0) -> Tx` - Constructor that takes the fields \n* `id(self) -> str` - Return human-readable hexadecimal of the transaction hash\n* `hash(self) -> bytes` - Return transaction hash as bytes\n* `is_coinbase(self) -> bool` - Returns true if it is a coinbase transaction\n* `serialize(self) -> bytes` - Returns Tx as bytes\n* `to_hexstr(self) -> str` - Returns Tx as hex string\n* `copy(self) -> Tx` - Returns a copy of the Tx\n* `to_string(self) -> String` - return the Tx as a string. Note also that you can just print the tx (`print(tx)`).\n* `validate(self, [Tx]) -> Result` - provide the input txs, returns None on success and throws a RuntimeError exception on failure. Note can not validate coinbase or pre-genesis transactions.\n\n \nTx has the following class methods:\n\n* `Tx.parse(in_bytes: bytes) -> Tx` - Parse bytes to produce Tx\n* `Tx.parse_hexstr(in_hexstr: String) -> Tx` - Parse hex string to produce Tx\n\nSo to parse a hex string to Tx:\n```Python\nfrom tx_engine import Tx\n\nsrc_tx = \"0100000001c7151ebaf14dbfe922bd90700a7580f6db7d5a1b898ce79cb9ce459e17f12909000000006b4830450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41210395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4cffffffff0103000000000000001976a91496795fb99fd6c0f214f7a0e96019f642225f52d288ac00000000\"\n\ntx = tx.parse_hexstr(src_tx)\nprint(tx)\n\nPyTx { version: 1, tx_ins: [PyTxIn { prev_tx: \"0929f1179e45ceb99ce78c891b5a7ddbf680750a7090bd22e9bf4df1ba1e15c7\", prev_index: 0, sequence: 4294967295, script_sig: [0x48 0x30450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41 0x21 0x0395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4c] }], tx_outs: [PyTxOut { amount: 3, script_pubkey: [OP_DUP OP_HASH160 0x14 0x96795fb99fd6c0f214f7a0e96019f642225f52d2 OP_EQUALVERIFY OP_CHECKSIG] }], locktime: 0 }\n```\n\n\n## TxIn\nTxIn represents is a bitcoin transaction input.\n\nTxIn has the following properties:\n\n* `prev_tx` - Transaction Id as hex string\n* `prev_index` - unsigned int\n* `script_sig` - Script\n* `sequence` - int\n\nTxIn has the following constructor method:\n* `__init__(prev_tx: String, prev_index: int, script_sig: Script=[], sequence: int=0xFFFFFFFF) -> TxIn` - Constructor that takes the fields \n\nNote txin can be printed using the standard print, for example: \n```Python\nprint(txin)\nPyTxIn { prev_tx: \"5c866b70189008586a4951d144df93dcca4d3a1b701e3786566f819450eca9ba\", prev_index: 0, sequence: 4294967295, script_sig: [] }\n```\n\n\n## TxOut\nTxOut represents a bitcoin transaction output.\n\nTxOut has the following properties:\n\n* `amount` - int\n* `script_pubkey` - Script\n\n\nTxOut has the following constructor method:\n\n* `__init__(amount: int, script_pubkey: Script) -> TxOut` - Constructor that takes the fields \n\nNote txin can be printed using the standard print, for example: \n```Python\nprint(txout)\nPyTxOut { amount: 100, script_pubkey: [OP_DUP OP_HASH160 0x14 0x10375cfe32b917cd24ca1038f824cd00f7391859 OP_EQUALVERIFY OP_CHECKSIG] }\n```\n\n## Wallet\nThis class represents the Wallet functionality, including handling of private and public keys and signing transactions.\n\nWallet class has the following methods:\n\n* `__init__(wif_key: str) -> Wallet` - Constructor that takes a private key in WIF format\n* `sign_tx(self, index: int, input_tx: Tx, tx: Tx) -> Tx` - Sign a transaction input with the provided previous tx and sighash flags, Returns new signed tx\n* `sign_tx_sighash(self, index: int, input_tx: Tx, tx: Tx, sighash_type: int) -> Tx` - Sign a transaction input with the provided previous tx and sighash flags, Returns new signed tx\n* `get_locking_script(self) -> Script` - Returns a locking script based on the public key\n* `get_public_key_as_hexstr(self) -> String` - Return the public key as a hex string\n* `get_address(self) -> String` - Return the address based on the public key\n* `to_wif(self) -> String` - Return the private key in WIF format\n* `get_network(self) -> String` - Returns the current network associated with this keypair\n* `to_int(self) -> Integer` - Returns the scaler value of the private key as a python integer\n* `to_hex(self) -> String` - Returns the scaler value of the private key as a string in hex format\n\n* `Wallet.generate_keypair(network) -> Wallet` - Given network (BSV_Testnet) return a keypair in Wallet format\n* `Wallet.from_hexstr(network, hexstr) -> Wallet` - Given a network identifier and scalar value as a hex string, return a keypair in Wallet format\n* `Wallet.from_bytes(network, bytes) -> Wallet` - Given a network identifier and a scalar value as a byte array, return a keypair in Wallet format\n* `Wallet.from_int(network, integer) -> Wallet` - Given a network identifier and a scaler value as an integer, return a keypair in Wallet format\n\nThe library provides some additional helper functions to handle keys in different formats. \n* `wif_to_bytes(wif: string) -> bytes` - Given a key in WIF format, it returns a byte array of the scalar value of the private key\n* `bytes_to_wif(key_bytes, network) -> String` - Given a byte array and a network identifier, returns the WIF format for the private key\n* `wif_from_pw_nonce(password, nonce, optional<network>) -> WIF` - Given a password, nonce (strings) return a WIF format for the private key. The default for the network is BSV_Mainnet. For a testnet format, please use BSv_Testnet\n\n\n![Bitcoin Keys](docs/diagrams/keys.png)\n\n\n## Interface Factory\nThe InterfaceFactory is class for creating interfaces to the BSV blockchain (`BlockchainInterface`).\n\nThe InterfaceFactory class one method:\n\n* `set_config(self, config: ConfigType) -> BlockchainInterface` - This reads the configuration `interface_type` field and returns the configured `BlockchainInterface`\n\n## Blockchain Interface\n\nThe BlockchainInterface class provides an interface to the BSV network.\n\nBlockchainInterface class has the following methods:\n\n* `__init__(self)` - Constructor that takes no parameters\n* `set_config(self, config)` - configures the interface based on the provide config\n* `get_addr_history(self, address)` - Return the transaction history with this address\n* `is_testnet(self) -> bool` - Return true if this interface is connected to BSV Testnet\n* `get_utxo(self, address)` - Return the utxo associated with this address\n* `get_balance(self, address)` - Return the balance associated with this address\n* `get_block_count(self)` - Return the height of the chain\n* `get_best_block_hash(self)` - Return the hash of the latest block\n* `get_merkle_proof(self, block_hash: str, tx_id: str) -> str` - Given the block hash and tx_id return the merkle proof\n* `get_transaction(self, txid: str)` - Return the transaction (as Dictionary) associated with this txid\n* `get_raw_transaction(self, txid: str) -> Optional[str]` - Return the transaction (as kexstring) associated with this txid, use cached copy if available.\n* `broadcast_tx(self, transaction: str)` - broadcast this tx to the network\n* `get_block(self, blockhash: str) -> Dict` - Return the block given the block hash\n* `get_block_header(self, blockhash: str) -> Dict` - Returns te block_header for a given block hash\n\n### WoC Interface\nThe `WoCInterface` is a `BlockchainInterface` that communicates with the WhatsOnChain API. \nNote that if you are using this you will need to install the python library `requests`.\n\n### Mock Interface \nThe `Mock Interface` is a `BlockchainInterface` that is used for unit testing.\n\n### RPC Interface \nThe `RPC Interface` is a `BlockchainInterface` that is used for connecting to the RPC interface of mining nodes.\n\n\n### SIGHASH Functions\n\n* `sig_hash(tx: Tx, index: int, script_pubkey: Script, satoshi: int, sighash_flags: int)` - Return the transaction digest/hash\n* `sig_hash_preimage(tx: Tx, index: int, script_pubkey: Script, satoshi: int, sighash_flags: int)` - Return the transaction data prior to the hash function\n\nGiven:\n * `tx` - Spending transaction\n * `index` - Spending input index\n * `script_pubkey` - The lock_script of the output being spent\n * `satoshis` - The satoshi amount in the output being spent\n * `sighash_flags` - Sighash flags\n\nNote the sighash flags can be obtained from the `SIGHASH` class which supports the following flags:\n``` \n ALL\n NONE\n SINGLE\n ANYONECANPAY\n FORKID\n ALL_FORKID = ALL | FORKID\n NONE_FORKID = NONE | FORKID\n SINGLE_FORKID = SINGLE | FORKID\n ALL_ANYONECANPAY_FORKID = ALL_FORKID | ANYONECANPAY\n NONE_ANYONECANPAY_FORKID = NONE_FORKID | ANYONECANPAY\n SINGLE_ANYONECANPAY_FORKID = SINGLE_FORKID | ANYONECANPAY\n```\nFor further details see https://wiki.bitcoinsv.io/index.php/SIGHASH_flags\n\nExample usage:\n```Python\nsig_hash_value = sig_hash(own_tx, 0, script_pubkey, 99904, SIGHASH.ALL_FORKID)\n```\n\n\n# Other Functions\nThese are public key and address functions that are likely to be used if you don't have the private key and \nare not using the Wallet class.\n\n* `address_to_public_key_hash(address: str) -> bytes` - Given the address return the hash160 of the public key\n* `hash160(data: bytes) -> bytes` - Returns the hash160 of the provided data (usually the public key)\n* `p2pkh_script(h160: bytes) -> Script` - Takes the hash160 of the public key and returns the locking script\n* `public_key_to_address(public_key: bytes, network: str) -> String` - Given the public key and the network (either `BSV_Mainnet` or `BSV_Testnet`) return the address\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "This library provides a Python interface for building BitcoinSV scripts and transactions.",
"version": "0.6.8",
"project_urls": null,
"split_keywords": [
"bitcoin",
" sv",
" cash",
" crypto"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9176cc0b1be64aada65983eeed9dd7966f6ef9c5dcbfb168361b6966d8ccd14b",
"md5": "f3f21743bcd37f846139263145e73559",
"sha256": "8c14dd12c1285ea1481fe737d0636e7b226078816f8e5eed0162112ed48ee14f"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "f3f21743bcd37f846139263145e73559",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 945982,
"upload_time": "2024-11-13T10:31:28",
"upload_time_iso_8601": "2024-11-13T10:31:28.367142Z",
"url": "https://files.pythonhosted.org/packages/91/76/cc0b1be64aada65983eeed9dd7966f6ef9c5dcbfb168361b6966d8ccd14b/tx_engine-0.6.8-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "86e6198125c16de3dd3cacec5f0957c902ea907e1ad7d6620b79f69101010f22",
"md5": "658fdfbc358b288fd2fe3ef2abaca5bb",
"sha256": "d40f24b99fe0a032bdc2b263fffe8b028d6e32e04fdab780457eb49cf97171a8"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "658fdfbc358b288fd2fe3ef2abaca5bb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 889258,
"upload_time": "2024-11-13T10:31:22",
"upload_time_iso_8601": "2024-11-13T10:31:22.757815Z",
"url": "https://files.pythonhosted.org/packages/86/e6/198125c16de3dd3cacec5f0957c902ea907e1ad7d6620b79f69101010f22/tx_engine-0.6.8-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "77fd82872af530cc08936cde215db7251a7fcc0760d32c8fccff6a63d09b3323",
"md5": "9bbe6427ecbd049832d4c689ac52335d",
"sha256": "50963d3b692a6a3801cef6ccde0456456b251f93d6b7c88627105ac703d4c025"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "9bbe6427ecbd049832d4c689ac52335d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 968578,
"upload_time": "2024-11-13T10:30:14",
"upload_time_iso_8601": "2024-11-13T10:30:14.572388Z",
"url": "https://files.pythonhosted.org/packages/77/fd/82872af530cc08936cde215db7251a7fcc0760d32c8fccff6a63d09b3323/tx_engine-0.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "86b60e7f132b4e05a7e4dd59da6e9728ee38116844905eb197d429b53b717144",
"md5": "7e37952326dda9d0c88949b95dce758d",
"sha256": "a818c66f5d0ca308e647ec1093f2e1a7f6cf069bfcfacf7145d333bd89daa71d"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "7e37952326dda9d0c88949b95dce758d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 954565,
"upload_time": "2024-11-13T10:30:27",
"upload_time_iso_8601": "2024-11-13T10:30:27.195814Z",
"url": "https://files.pythonhosted.org/packages/86/b6/0e7f132b4e05a7e4dd59da6e9728ee38116844905eb197d429b53b717144/tx_engine-0.6.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5a28654e0b10d7e7e0771a6a85c8fb1a66ad62fc83b28d2dc724aeda15094d3e",
"md5": "d79e8c5f832280c1791e3d4a7d1c8237",
"sha256": "0e842fdb30136e0658b963734a84f28c2e629e3b403a7f19131c308e4829f000"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "d79e8c5f832280c1791e3d4a7d1c8237",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1026395,
"upload_time": "2024-11-13T10:30:39",
"upload_time_iso_8601": "2024-11-13T10:30:39.319080Z",
"url": "https://files.pythonhosted.org/packages/5a/28/654e0b10d7e7e0771a6a85c8fb1a66ad62fc83b28d2dc724aeda15094d3e/tx_engine-0.6.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c544cb41eace395d8a7e84b0d2bb5c64c103aee63c9e905c6df9c9d19eed22dc",
"md5": "63ea12b1cae74360e19e9df3e050b3cc",
"sha256": "35bdd7684ed2029ea3ecf1a035bd1a4316239c2c02051ac7d9d56d5f920f19fd"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "63ea12b1cae74360e19e9df3e050b3cc",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1066079,
"upload_time": "2024-11-13T10:30:52",
"upload_time_iso_8601": "2024-11-13T10:30:52.649437Z",
"url": "https://files.pythonhosted.org/packages/c5/44/cb41eace395d8a7e84b0d2bb5c64c103aee63c9e905c6df9c9d19eed22dc/tx_engine-0.6.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "570227458c8a95d709d65580bfb849016deae2aea15a3f25eb3d370f50611095",
"md5": "706ef2e9903f72ef6605bc83834016a6",
"sha256": "1c2701379b158f93d71a3ab90865e2b341672ebb40b13ec7eff8104a1ab8cdbd"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "706ef2e9903f72ef6605bc83834016a6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1009403,
"upload_time": "2024-11-13T10:31:14",
"upload_time_iso_8601": "2024-11-13T10:31:14.479534Z",
"url": "https://files.pythonhosted.org/packages/57/02/27458c8a95d709d65580bfb849016deae2aea15a3f25eb3d370f50611095/tx_engine-0.6.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5f6200b28cab4d4dbd5c7171078b3de39b96e9be55fc696f7ed943534ab09ce9",
"md5": "d72d483accf087242ee889c8effd4ee8",
"sha256": "f5835b6cc2e36375eaa3de5ef8b3a9e4727bf26f8819ec6a785e67037696af06"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "d72d483accf087242ee889c8effd4ee8",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 976517,
"upload_time": "2024-11-13T10:31:05",
"upload_time_iso_8601": "2024-11-13T10:31:05.453775Z",
"url": "https://files.pythonhosted.org/packages/5f/62/00b28cab4d4dbd5c7171078b3de39b96e9be55fc696f7ed943534ab09ce9/tx_engine-0.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c0d004d4c8ee696b7c895b42a4cde022e515b341a2f3d3c2d1cf551451ac844a",
"md5": "7f41c713a6b594cedae0fd56d6ea924a",
"sha256": "151fa6b1b3df88547d716ae5528398cba25f4f2f09124acfe08d957bc5694cdb"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-none-win32.whl",
"has_sig": false,
"md5_digest": "7f41c713a6b594cedae0fd56d6ea924a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 738351,
"upload_time": "2024-11-13T10:31:46",
"upload_time_iso_8601": "2024-11-13T10:31:46.014417Z",
"url": "https://files.pythonhosted.org/packages/c0/d0/04d4c8ee696b7c895b42a4cde022e515b341a2f3d3c2d1cf551451ac844a/tx_engine-0.6.8-cp310-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f7aaa2c24ac0c139fa3ea588a795283f118c8877bea8704a0aa0abb3c51b252a",
"md5": "697fa44255ec223cd166110a2edeac1a",
"sha256": "9fb2331f0c5d90b47257eed76b899af80839251ddf7eda7ae59d77b95c2b26f3"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "697fa44255ec223cd166110a2edeac1a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 827490,
"upload_time": "2024-11-13T10:31:34",
"upload_time_iso_8601": "2024-11-13T10:31:34.944617Z",
"url": "https://files.pythonhosted.org/packages/f7/aa/a2c24ac0c139fa3ea588a795283f118c8877bea8704a0aa0abb3c51b252a/tx_engine-0.6.8-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3be65eeeb43c9e4573986fdd85cfb38fa44885811a00f068c1b6850d289f1f61",
"md5": "f79edc636eea1d46bac0a9ed25274be3",
"sha256": "5595849f38c4aa9f32fb98aae864ca4aa8160d2dd540808c20d6bfe294b99b85"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "f79edc636eea1d46bac0a9ed25274be3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 945992,
"upload_time": "2024-11-13T10:31:29",
"upload_time_iso_8601": "2024-11-13T10:31:29.772487Z",
"url": "https://files.pythonhosted.org/packages/3b/e6/5eeeb43c9e4573986fdd85cfb38fa44885811a00f068c1b6850d289f1f61/tx_engine-0.6.8-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f475ef77594d9cc115c30a3033d4b3f34f2946f2978a5891dc41409f9c96e736",
"md5": "02b7082518728e6f3b522653a06a421d",
"sha256": "6f5c4a9b5b230bc587e9312cfe2995bf5fdc2a6e9d34aa0cfdddfb9d8e83cecb"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "02b7082518728e6f3b522653a06a421d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 889671,
"upload_time": "2024-11-13T10:31:24",
"upload_time_iso_8601": "2024-11-13T10:31:24.299436Z",
"url": "https://files.pythonhosted.org/packages/f4/75/ef77594d9cc115c30a3033d4b3f34f2946f2978a5891dc41409f9c96e736/tx_engine-0.6.8-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d36ee11db82f45c0d8a6cf284001147597264e51881ae03b7ec62cd2528eb452",
"md5": "8ca64981603e622907e79980e99a7b44",
"sha256": "fee852461c1d222c33acfa16d7931a807ac05151e1dc25bc379fa2717b75efee"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "8ca64981603e622907e79980e99a7b44",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 968618,
"upload_time": "2024-11-13T10:30:17",
"upload_time_iso_8601": "2024-11-13T10:30:17.151847Z",
"url": "https://files.pythonhosted.org/packages/d3/6e/e11db82f45c0d8a6cf284001147597264e51881ae03b7ec62cd2528eb452/tx_engine-0.6.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4dbacc22a3e5de44c5512a03d4bd7da90402aa43a5dd7aecb5af644d25a8d5e5",
"md5": "b78e742076df1b988041f89d8ea1d31c",
"sha256": "29c77e1186bf50c4787037fdeb60d5d5716c792c821567ff1f25b07e35260625"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "b78e742076df1b988041f89d8ea1d31c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 954420,
"upload_time": "2024-11-13T10:30:28",
"upload_time_iso_8601": "2024-11-13T10:30:28.660967Z",
"url": "https://files.pythonhosted.org/packages/4d/ba/cc22a3e5de44c5512a03d4bd7da90402aa43a5dd7aecb5af644d25a8d5e5/tx_engine-0.6.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1d45d742a44ad96cbf20aa66d11bc47081bc3b3ac3ca06240a602685e55f00b9",
"md5": "390bcf6077c3e166aa6e301715594c3b",
"sha256": "65f5facaccd87d6ceac39c0c2416b19c577d568cb84f2acb366a184a1d9171b6"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "390bcf6077c3e166aa6e301715594c3b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1025729,
"upload_time": "2024-11-13T10:30:40",
"upload_time_iso_8601": "2024-11-13T10:30:40.833874Z",
"url": "https://files.pythonhosted.org/packages/1d/45/d742a44ad96cbf20aa66d11bc47081bc3b3ac3ca06240a602685e55f00b9/tx_engine-0.6.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6e053f909282dfae6edb63bad6890ddcb44f6b87b8b30ec4677d131648f24e88",
"md5": "89b8aa24ca03284022380293ed615d62",
"sha256": "1e8a47d29bd17365379b2ad11483b1e3bce67652bfd171cea3665c19ea237f2b"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "89b8aa24ca03284022380293ed615d62",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1066176,
"upload_time": "2024-11-13T10:30:54",
"upload_time_iso_8601": "2024-11-13T10:30:54.046564Z",
"url": "https://files.pythonhosted.org/packages/6e/05/3f909282dfae6edb63bad6890ddcb44f6b87b8b30ec4677d131648f24e88/tx_engine-0.6.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6ca50ca7bf88d0c5fafef27b37239aa64452bcdb192014b71195f142ce0f1bfa",
"md5": "83a00f9e3bfad097e25b29b85379517c",
"sha256": "f96a9d0b796bf76c5d2e3c5fce5b5924c019f07522bbbebcdf65926399d885f1"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "83a00f9e3bfad097e25b29b85379517c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1009206,
"upload_time": "2024-11-13T10:31:15",
"upload_time_iso_8601": "2024-11-13T10:31:15.888165Z",
"url": "https://files.pythonhosted.org/packages/6c/a5/0ca7bf88d0c5fafef27b37239aa64452bcdb192014b71195f142ce0f1bfa/tx_engine-0.6.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0e3bc8b8f638a53ccfc108e5bc2ffef248abe90dd099412a9e9210e3bb5c7fec",
"md5": "cbd3b8b5a3faab553784de7a45b124a5",
"sha256": "0a27dd531f4bb6d1f7302e00ba1579eb9019b9dcb6379e0aedb1b2a495e11b19"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "cbd3b8b5a3faab553784de7a45b124a5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 976700,
"upload_time": "2024-11-13T10:31:07",
"upload_time_iso_8601": "2024-11-13T10:31:07.240967Z",
"url": "https://files.pythonhosted.org/packages/0e/3b/c8b8f638a53ccfc108e5bc2ffef248abe90dd099412a9e9210e3bb5c7fec/tx_engine-0.6.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b8a8bd674513b6b4eb6e89222b76d8a967e9ab3e550208229f87e58aefacbfd8",
"md5": "7207178683c4a7f754a6a1a09d743304",
"sha256": "5fd010d94a71106fb0ddb86be3d2b233ac0a3e205ec196450d475f68a866ac98"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-none-win32.whl",
"has_sig": false,
"md5_digest": "7207178683c4a7f754a6a1a09d743304",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 738388,
"upload_time": "2024-11-13T10:31:47",
"upload_time_iso_8601": "2024-11-13T10:31:47.403675Z",
"url": "https://files.pythonhosted.org/packages/b8/a8/bd674513b6b4eb6e89222b76d8a967e9ab3e550208229f87e58aefacbfd8/tx_engine-0.6.8-cp311-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f473be5ab49eec65963c50f5bd8ae7affd3f4dfffa2077cd6ddab468143af852",
"md5": "e63bf440e39eeff7c627c0f985ec9d26",
"sha256": "b9664cea7c268c60d852b8d79dabab44356dd2a1034bdfe53106078e81306361"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "e63bf440e39eeff7c627c0f985ec9d26",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 827384,
"upload_time": "2024-11-13T10:31:36",
"upload_time_iso_8601": "2024-11-13T10:31:36.364829Z",
"url": "https://files.pythonhosted.org/packages/f4/73/be5ab49eec65963c50f5bd8ae7affd3f4dfffa2077cd6ddab468143af852/tx_engine-0.6.8-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8321c91e56e0d142a8d87707f9656ce5a766dfa446ecd22efc2bced70c43bfc1",
"md5": "ed761a84e22805a1ca9e71e4f7360cde",
"sha256": "a4d576683a2153a0cac2d38cb6f545a1b338e312cc6e0b04a1d495011adadf20"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "ed761a84e22805a1ca9e71e4f7360cde",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 944360,
"upload_time": "2024-11-13T10:31:31",
"upload_time_iso_8601": "2024-11-13T10:31:31.085340Z",
"url": "https://files.pythonhosted.org/packages/83/21/c91e56e0d142a8d87707f9656ce5a766dfa446ecd22efc2bced70c43bfc1/tx_engine-0.6.8-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5d2ccc638c4d7728e8af8b7e1e3377222f9c13a68e1a6367cddc08c632343202",
"md5": "a607bd58fddf32a17fda4f80efa4263d",
"sha256": "3a6e367f9776773d00af3af91f6d3693ad2b5b7507856cb9ef4ca2a01805d605"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a607bd58fddf32a17fda4f80efa4263d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 888751,
"upload_time": "2024-11-13T10:31:25",
"upload_time_iso_8601": "2024-11-13T10:31:25.642381Z",
"url": "https://files.pythonhosted.org/packages/5d/2c/cc638c4d7728e8af8b7e1e3377222f9c13a68e1a6367cddc08c632343202/tx_engine-0.6.8-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9680abcf2baf3672c7767c0151fe59d40ee7661fc9875c385435872910c4272d",
"md5": "c44b21bc50bff151d958b8d99bec1140",
"sha256": "b38be597bc4baad2992bde7e80e460a5b0cc9d11688bfff16f33a93c7e649c35"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "c44b21bc50bff151d958b8d99bec1140",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 966749,
"upload_time": "2024-11-13T10:30:18",
"upload_time_iso_8601": "2024-11-13T10:30:18.514578Z",
"url": "https://files.pythonhosted.org/packages/96/80/abcf2baf3672c7767c0151fe59d40ee7661fc9875c385435872910c4272d/tx_engine-0.6.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "908b7e986c87473abe28f191df1fcda945ed1846e6876916f11044b13126cba4",
"md5": "f52cde197b946bbc2136fbe9facd867a",
"sha256": "e15181f4b0527dd268bf9b5ed5d6420739d9a84976ca885c8c50bbbe1fa6617e"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "f52cde197b946bbc2136fbe9facd867a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 952417,
"upload_time": "2024-11-13T10:30:29",
"upload_time_iso_8601": "2024-11-13T10:30:29.957332Z",
"url": "https://files.pythonhosted.org/packages/90/8b/7e986c87473abe28f191df1fcda945ed1846e6876916f11044b13126cba4/tx_engine-0.6.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "da4d4e464b4f64e73968add7de719ad8647238d7e490b1af3ad98267a0ef0d6e",
"md5": "6ca2291f26c196281211b8ef9337607a",
"sha256": "f1aca117862a9b7174a10f5724662a6b19e639d0633569ab8da23ecce472d278"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "6ca2291f26c196281211b8ef9337607a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1024122,
"upload_time": "2024-11-13T10:30:42",
"upload_time_iso_8601": "2024-11-13T10:30:42.252381Z",
"url": "https://files.pythonhosted.org/packages/da/4d/4e464b4f64e73968add7de719ad8647238d7e490b1af3ad98267a0ef0d6e/tx_engine-0.6.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9d6c3f0ecb1e4736d2ffa05da132bf0253cb165926c4be0269ca791420964491",
"md5": "95c3bf39cce018d475770a1412a7ad81",
"sha256": "29356e41d2794d04636c8116564ab46e379ceea1e51db99d19337c60f3fab48a"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "95c3bf39cce018d475770a1412a7ad81",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1065740,
"upload_time": "2024-11-13T10:30:56",
"upload_time_iso_8601": "2024-11-13T10:30:56.037277Z",
"url": "https://files.pythonhosted.org/packages/9d/6c/3f0ecb1e4736d2ffa05da132bf0253cb165926c4be0269ca791420964491/tx_engine-0.6.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1a0ded5e5ca0f55658dd487fb7c70a9121046c3cce0651b26f15c8dc3365825f",
"md5": "7d9ac2070a8923c2f868f1e4dd0d0bd8",
"sha256": "7efd7131b2ba59e4d45f4fe34b3995757b73b89cb065b7c54fd84cb14507528d"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "7d9ac2070a8923c2f868f1e4dd0d0bd8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1008550,
"upload_time": "2024-11-13T10:31:17",
"upload_time_iso_8601": "2024-11-13T10:31:17.221757Z",
"url": "https://files.pythonhosted.org/packages/1a/0d/ed5e5ca0f55658dd487fb7c70a9121046c3cce0651b26f15c8dc3365825f/tx_engine-0.6.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "77f7286179da25284744cc3fdd2fd2a5319a949555b322df73b01edd41487229",
"md5": "aebf0a2195bc58cfcdb5f3943192f8fe",
"sha256": "b6ac3b48be8aa01167f710d106265dc3e6e7f608809300909fd4cae3277a48af"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "aebf0a2195bc58cfcdb5f3943192f8fe",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 976242,
"upload_time": "2024-11-13T10:31:08",
"upload_time_iso_8601": "2024-11-13T10:31:08.627797Z",
"url": "https://files.pythonhosted.org/packages/77/f7/286179da25284744cc3fdd2fd2a5319a949555b322df73b01edd41487229/tx_engine-0.6.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "255706b42d4ad4a294c91fc4ea3575827c7c11b0bd25f2af60d7b5f53abb6a48",
"md5": "7260ee70473e906844b2e4221ba03e0c",
"sha256": "96a9d5f17dad0a1896f042201fce999552827bfbe5971af1eefd4b7db49cf3c4"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-none-win32.whl",
"has_sig": false,
"md5_digest": "7260ee70473e906844b2e4221ba03e0c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 737534,
"upload_time": "2024-11-13T10:31:48",
"upload_time_iso_8601": "2024-11-13T10:31:48.946306Z",
"url": "https://files.pythonhosted.org/packages/25/57/06b42d4ad4a294c91fc4ea3575827c7c11b0bd25f2af60d7b5f53abb6a48/tx_engine-0.6.8-cp312-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ab077b53039a06c81ddf520257085f924cf7c80359aac6e8f7f53d079e4b00bb",
"md5": "a2b6171c14aa80b9ab9b6d95b381bb95",
"sha256": "8351337c6602dc8eadde026c138f2378fae2aa42f6add5f5ed4aec5a1b7d7017"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "a2b6171c14aa80b9ab9b6d95b381bb95",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 826840,
"upload_time": "2024-11-13T10:31:38",
"upload_time_iso_8601": "2024-11-13T10:31:38.385849Z",
"url": "https://files.pythonhosted.org/packages/ab/07/7b53039a06c81ddf520257085f924cf7c80359aac6e8f7f53d079e4b00bb/tx_engine-0.6.8-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0a6098e758434cd5ccd3f218aafb7394948390a9f7954021cf15770958b586f4",
"md5": "c8d1d5f0d9c0b3007d2859e4b30dc6bf",
"sha256": "e29311bcb9bc47e214fef1e656418aaf6fe405cca293af79a75fdb281ea557ba"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "c8d1d5f0d9c0b3007d2859e4b30dc6bf",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 969306,
"upload_time": "2024-11-13T10:30:20",
"upload_time_iso_8601": "2024-11-13T10:30:20.014968Z",
"url": "https://files.pythonhosted.org/packages/0a/60/98e758434cd5ccd3f218aafb7394948390a9f7954021cf15770958b586f4/tx_engine-0.6.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9dcd6c81c292f5f380f7113b435ce1acdf4ffec3bb65b5f5e7722f795d12455d",
"md5": "637589fca6f09213c197bbedd390023e",
"sha256": "ba1a7cb5c339a75b14e72fa0390b394ef8562cb0ff48af7cdcb61e4883c2f51a"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "637589fca6f09213c197bbedd390023e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 955531,
"upload_time": "2024-11-13T10:30:31",
"upload_time_iso_8601": "2024-11-13T10:30:31.354339Z",
"url": "https://files.pythonhosted.org/packages/9d/cd/6c81c292f5f380f7113b435ce1acdf4ffec3bb65b5f5e7722f795d12455d/tx_engine-0.6.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "23bfa7ef3791c310eb3c8983eb0391f1b666b18196bbc17980fbec844ae00ecc",
"md5": "961a2cb855633759a3307fa394de0fa9",
"sha256": "70d9b94e2a50c7fd7bcd6f1c674e778424a97b2736318ea4abba2d28f6f312a6"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "961a2cb855633759a3307fa394de0fa9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1027115,
"upload_time": "2024-11-13T10:30:44",
"upload_time_iso_8601": "2024-11-13T10:30:44.374603Z",
"url": "https://files.pythonhosted.org/packages/23/bf/a7ef3791c310eb3c8983eb0391f1b666b18196bbc17980fbec844ae00ecc/tx_engine-0.6.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a0263cbe77564339dbf5b37187b5b246336b59cfb37bba74099c121d25cd0d44",
"md5": "0545319d7cdc436268a752100b3cfeaf",
"sha256": "d9767629067a0678e5da1a5bd49477af956e7f4ea4d4497bde73ce848354ca7c"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "0545319d7cdc436268a752100b3cfeaf",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1066962,
"upload_time": "2024-11-13T10:30:57",
"upload_time_iso_8601": "2024-11-13T10:30:57.451289Z",
"url": "https://files.pythonhosted.org/packages/a0/26/3cbe77564339dbf5b37187b5b246336b59cfb37bba74099c121d25cd0d44/tx_engine-0.6.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d89f84820e94b32f4432670a268080e90388c4ff6ae4de27f8d9518e83d0e601",
"md5": "9c0adda40b717fe0f65403510c5d31d1",
"sha256": "3dd869cf0b8d3d6192ccf368ae4952725888ada82dca542d70f611ef97097b1b"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9c0adda40b717fe0f65403510c5d31d1",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1010303,
"upload_time": "2024-11-13T10:31:18",
"upload_time_iso_8601": "2024-11-13T10:31:18.629461Z",
"url": "https://files.pythonhosted.org/packages/d8/9f/84820e94b32f4432670a268080e90388c4ff6ae4de27f8d9518e83d0e601/tx_engine-0.6.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4582cdf88d2799b73c3fdb5ebb74e9a374dc028ae5cfc4a56ed4f5532d061d76",
"md5": "6d13b257eb981b169e9a09b297d09132",
"sha256": "948e2caae3f75e1b6156b7e0234e614a8ea398aa80a19bf59b508fe2f3563865"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "6d13b257eb981b169e9a09b297d09132",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 977359,
"upload_time": "2024-11-13T10:31:10",
"upload_time_iso_8601": "2024-11-13T10:31:10.017932Z",
"url": "https://files.pythonhosted.org/packages/45/82/cdf88d2799b73c3fdb5ebb74e9a374dc028ae5cfc4a56ed4f5532d061d76/tx_engine-0.6.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4a1ea865a839a0c4ef9c93b7a30caba18045f3a5953ead2c040ae7c2d032eb58",
"md5": "5ceb4280604b343eccb6f9e779e0bd50",
"sha256": "4a5b168c83a07e2740c73998e42cbd77623896ce1b1fc85588962fdebd4eadda"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-none-win32.whl",
"has_sig": false,
"md5_digest": "5ceb4280604b343eccb6f9e779e0bd50",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 738799,
"upload_time": "2024-11-13T10:31:50",
"upload_time_iso_8601": "2024-11-13T10:31:50.260207Z",
"url": "https://files.pythonhosted.org/packages/4a/1e/a865a839a0c4ef9c93b7a30caba18045f3a5953ead2c040ae7c2d032eb58/tx_engine-0.6.8-cp38-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "15116d88de8d1ce0a013ee42539b09acd42cbf5ebe23157c4a798038c1a6fa98",
"md5": "fe1a66cd248618914a8e8059bbfee670",
"sha256": "a803a6934fc8dc14c24eff7bf5588e4b2bb8632f11404e52affbca34559ef867"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp38-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "fe1a66cd248618914a8e8059bbfee670",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 827950,
"upload_time": "2024-11-13T10:31:43",
"upload_time_iso_8601": "2024-11-13T10:31:43.135169Z",
"url": "https://files.pythonhosted.org/packages/15/11/6d88de8d1ce0a013ee42539b09acd42cbf5ebe23157c4a798038c1a6fa98/tx_engine-0.6.8-cp38-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "91182e13fed5a9661289e5e32f808f8ebf2443b4d5ce806707f22c0c906b7a3b",
"md5": "295b66e076f4e994900018efc4849d21",
"sha256": "a3e9af6140eb06b9100184d167c965bd846e7115ea1a810d1eaeb6645d2f551d"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "295b66e076f4e994900018efc4849d21",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 947055,
"upload_time": "2024-11-13T10:31:32",
"upload_time_iso_8601": "2024-11-13T10:31:32.435174Z",
"url": "https://files.pythonhosted.org/packages/91/18/2e13fed5a9661289e5e32f808f8ebf2443b4d5ce806707f22c0c906b7a3b/tx_engine-0.6.8-cp39-cp39-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "031a8ced16a4fd46416e0f854e2a1c5a8b4e772076c52853fb0755f695b4c80c",
"md5": "a3b8d4a02abdaadda6581f0af4404e24",
"sha256": "9e4dc2e85c5b9a361fca6c629bd8bfa2fb536bffde419d468579053d99933d5f"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a3b8d4a02abdaadda6581f0af4404e24",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 890354,
"upload_time": "2024-11-13T10:31:27",
"upload_time_iso_8601": "2024-11-13T10:31:27.048860Z",
"url": "https://files.pythonhosted.org/packages/03/1a/8ced16a4fd46416e0f854e2a1c5a8b4e772076c52853fb0755f695b4c80c/tx_engine-0.6.8-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8d948a5bbedeb7e8dd1592f2f048dde54e383abadb81dcad8e602b401a54d1a4",
"md5": "d16bba209721ae39cd5ed7e7e0818542",
"sha256": "b7601784738499f02af2313fdb77f1143976062d171fca9119f486083ffa640e"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "d16bba209721ae39cd5ed7e7e0818542",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 969287,
"upload_time": "2024-11-13T10:30:21",
"upload_time_iso_8601": "2024-11-13T10:30:21.532070Z",
"url": "https://files.pythonhosted.org/packages/8d/94/8a5bbedeb7e8dd1592f2f048dde54e383abadb81dcad8e602b401a54d1a4/tx_engine-0.6.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "790284acf2923bd0c3ac710bd873b708d660470fa3d5ed81391c3f2ed85f04f7",
"md5": "bd051054c7bb3837021b1d69c96b367f",
"sha256": "f07188902a59c20a039e4f8132d93f2a7c677c11e8d9274076f8a491234f572d"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "bd051054c7bb3837021b1d69c96b367f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 955336,
"upload_time": "2024-11-13T10:30:32",
"upload_time_iso_8601": "2024-11-13T10:30:32.897573Z",
"url": "https://files.pythonhosted.org/packages/79/02/84acf2923bd0c3ac710bd873b708d660470fa3d5ed81391c3f2ed85f04f7/tx_engine-0.6.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7bd47d50067dace30cfc57e32cd982d8205d8b80f917abedac00da272bbc8eea",
"md5": "72d0b36594b19a92325f2c04fb684a18",
"sha256": "3321087481e52983b027c2cd8f48af4e0ad9b5f5990bc18a2b3605f30d53a039"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "72d0b36594b19a92325f2c04fb684a18",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1027618,
"upload_time": "2024-11-13T10:30:45",
"upload_time_iso_8601": "2024-11-13T10:30:45.968004Z",
"url": "https://files.pythonhosted.org/packages/7b/d4/7d50067dace30cfc57e32cd982d8205d8b80f917abedac00da272bbc8eea/tx_engine-0.6.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3f5907e43d1a9a5805dd821ffbd5ac5ab105a78bd57c8f566608f14e63a8c131",
"md5": "b5b161321bff12a98753612947ef4edc",
"sha256": "bb05d3765b33eddcbcf783c2cbea8aa81feaab49737d9970e7b7a6faf5c4089b"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "b5b161321bff12a98753612947ef4edc",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1067099,
"upload_time": "2024-11-13T10:30:58",
"upload_time_iso_8601": "2024-11-13T10:30:58.920788Z",
"url": "https://files.pythonhosted.org/packages/3f/59/07e43d1a9a5805dd821ffbd5ac5ab105a78bd57c8f566608f14e63a8c131/tx_engine-0.6.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4f903342533c8e970d6568b3b3d673a934e67efbd6990de06933c24d20841991",
"md5": "ecb3d7f6e3c565bcb8837781fefc74d5",
"sha256": "e8dfc9ab27731552d1aac9bff42117ec9f514d301ae2b8b8f57482b9d1ae8a18"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ecb3d7f6e3c565bcb8837781fefc74d5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1010376,
"upload_time": "2024-11-13T10:31:19",
"upload_time_iso_8601": "2024-11-13T10:31:19.992022Z",
"url": "https://files.pythonhosted.org/packages/4f/90/3342533c8e970d6568b3b3d673a934e67efbd6990de06933c24d20841991/tx_engine-0.6.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8fa6bd682f8ccfebec011a3adab581c24cf636d0b42cd0347612917c9ab9a090",
"md5": "6b7de5e941da40ec0abea592c12f4ead",
"sha256": "549be84997d1dde6e0a69ee7dd79ff13b6f3aef403dfc27708142f3f0be94a47"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "6b7de5e941da40ec0abea592c12f4ead",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 977197,
"upload_time": "2024-11-13T10:31:11",
"upload_time_iso_8601": "2024-11-13T10:31:11.364030Z",
"url": "https://files.pythonhosted.org/packages/8f/a6/bd682f8ccfebec011a3adab581c24cf636d0b42cd0347612917c9ab9a090/tx_engine-0.6.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8228ef21e27ed525c74735d8d513daa4b47098cf985ca108c3aba8fa88d1a629",
"md5": "903fec927f02cf28dc02e0fba0b740fa",
"sha256": "495dda6bc56654c44baf9cca6f6e9e1679228b9f24f5299cdf229c084fee8935"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-none-win32.whl",
"has_sig": false,
"md5_digest": "903fec927f02cf28dc02e0fba0b740fa",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 738808,
"upload_time": "2024-11-13T10:31:51",
"upload_time_iso_8601": "2024-11-13T10:31:51.672870Z",
"url": "https://files.pythonhosted.org/packages/82/28/ef21e27ed525c74735d8d513daa4b47098cf985ca108c3aba8fa88d1a629/tx_engine-0.6.8-cp39-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2b9523009c4ee8a1510043173422c1ce2ba03d0eb7c2509c10888a1b6a191762",
"md5": "afd3dc6f8265808d17d3e3616c985b67",
"sha256": "c62fa856827b3e838551d8164307a4c62b38305d01945715f28af69378cec841"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "afd3dc6f8265808d17d3e3616c985b67",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 827900,
"upload_time": "2024-11-13T10:31:44",
"upload_time_iso_8601": "2024-11-13T10:31:44.618937Z",
"url": "https://files.pythonhosted.org/packages/2b/95/23009c4ee8a1510043173422c1ce2ba03d0eb7c2509c10888a1b6a191762/tx_engine-0.6.8-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0950cf1a428ca28b5c16d17a2394c869ce2dc2fd0442ed6632058d594fe326ca",
"md5": "ef538b7161658b9df0c8375f2c037870",
"sha256": "19410e23484337a854dff50ab6c8e10a67d71894c3c18dab6c148ede45a9b5ff"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "ef538b7161658b9df0c8375f2c037870",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 968706,
"upload_time": "2024-11-13T10:30:22",
"upload_time_iso_8601": "2024-11-13T10:30:22.947017Z",
"url": "https://files.pythonhosted.org/packages/09/50/cf1a428ca28b5c16d17a2394c869ce2dc2fd0442ed6632058d594fe326ca/tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "458276138a86f2bddf9bc536eff307ad144d9f2c703a38908962038a9959a5b9",
"md5": "9a6249e5706f2a739cf8a44599b5d4a2",
"sha256": "53941264de70a3ca5bbf2c685f7bf05b55f0c03dfc3849ae6aa12b617c1f57af"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "9a6249e5706f2a739cf8a44599b5d4a2",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 954450,
"upload_time": "2024-11-13T10:30:34",
"upload_time_iso_8601": "2024-11-13T10:30:34.978933Z",
"url": "https://files.pythonhosted.org/packages/45/82/76138a86f2bddf9bc536eff307ad144d9f2c703a38908962038a9959a5b9/tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3acaa455798fe0124be3674f7b3161becf5454808c0e1aa4b44266b5431b5d0a",
"md5": "f83899c2c42a21590a41fc8d0ff35909",
"sha256": "bb3b5254dd34cccbdbc65254dc397c6ac374e66ab63f865c2f2403271bdedcba"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "f83899c2c42a21590a41fc8d0ff35909",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 1025917,
"upload_time": "2024-11-13T10:30:47",
"upload_time_iso_8601": "2024-11-13T10:30:47.942320Z",
"url": "https://files.pythonhosted.org/packages/3a/ca/a455798fe0124be3674f7b3161becf5454808c0e1aa4b44266b5431b5d0a/tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "32e8f7f8e19a8adbf1cfbf0392a03fcf2e37f3326a208e5b52383d27735976b0",
"md5": "e7b16d679985e1c14776bb70cd3041a5",
"sha256": "aae7ce147ada7dd1e1e73433e26a1e07813bcfc6b9d34df4d4444520210b944d"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "e7b16d679985e1c14776bb70cd3041a5",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 1065827,
"upload_time": "2024-11-13T10:31:00",
"upload_time_iso_8601": "2024-11-13T10:31:00.405633Z",
"url": "https://files.pythonhosted.org/packages/32/e8/f7f8e19a8adbf1cfbf0392a03fcf2e37f3326a208e5b52383d27735976b0/tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "26fabf2b67d7926804db74f9e57c6c46ad96fe280b0459cfdbe10bb79a5e71fb",
"md5": "ad87ca8116ee12f4d8dc6090f5b08df5",
"sha256": "340365075b573ce05fc84c8001ed9b847888da225da9f79fb17b0f86ddf963b8"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ad87ca8116ee12f4d8dc6090f5b08df5",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 1009347,
"upload_time": "2024-11-13T10:31:21",
"upload_time_iso_8601": "2024-11-13T10:31:21.394682Z",
"url": "https://files.pythonhosted.org/packages/26/fa/bf2b67d7926804db74f9e57c6c46ad96fe280b0459cfdbe10bb79a5e71fb/tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "13093f972667deb9a811ca2fcc33edfd5eaabf8747108f61e699be9307f9ffd1",
"md5": "207f89f9e7fb538cbe714d5b3bddd988",
"sha256": "63590502e9125a88d315c2497458bc2461a3d55d1327bde88b72fde20fd1776a"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "207f89f9e7fb538cbe714d5b3bddd988",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 976733,
"upload_time": "2024-11-13T10:31:12",
"upload_time_iso_8601": "2024-11-13T10:31:12.805675Z",
"url": "https://files.pythonhosted.org/packages/13/09/3f972667deb9a811ca2fcc33edfd5eaabf8747108f61e699be9307f9ffd1/tx_engine-0.6.8-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fddc703cc0b46a9e33e7cb8dffd6d28430193c9eddd6a8b11372fab60d2f6940",
"md5": "fa0227c5152038b9943a9ebb90c91330",
"sha256": "66e72834cd4c4920d7b29638afc93ca250b53edd8e360a7935d7ac81527a1266"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "fa0227c5152038b9943a9ebb90c91330",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 969219,
"upload_time": "2024-11-13T10:30:24",
"upload_time_iso_8601": "2024-11-13T10:30:24.263628Z",
"url": "https://files.pythonhosted.org/packages/fd/dc/703cc0b46a9e33e7cb8dffd6d28430193c9eddd6a8b11372fab60d2f6940/tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "21c2e4d2a395ec69098667c8298feabefdecae7634a004ce4dbb8a95e6bb38f4",
"md5": "6012be513da569009194484c6f0a2377",
"sha256": "0ab0a55e90446f80111caaad101a40e877bc528211096241fc0184d242225701"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "6012be513da569009194484c6f0a2377",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 954753,
"upload_time": "2024-11-13T10:30:36",
"upload_time_iso_8601": "2024-11-13T10:30:36.613183Z",
"url": "https://files.pythonhosted.org/packages/21/c2/e4d2a395ec69098667c8298feabefdecae7634a004ce4dbb8a95e6bb38f4/tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0e8873c325862b700db300682b0e620a1b19b61d33c897749e17ca89fab773dd",
"md5": "f46eeb664584881dca1205a2e18b26bb",
"sha256": "74534126d10b2bb9ee5ef4dd206187bf917f8c785c7d171517725c7ee5d0c747"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "f46eeb664584881dca1205a2e18b26bb",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 1026816,
"upload_time": "2024-11-13T10:30:49",
"upload_time_iso_8601": "2024-11-13T10:30:49.278365Z",
"url": "https://files.pythonhosted.org/packages/0e/88/73c325862b700db300682b0e620a1b19b61d33c897749e17ca89fab773dd/tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f4a70f8dba667fc57e00eedea67e501e0c854f1a3fbf216b54e30fcbd4955edc",
"md5": "85cee9d26fb85b9a23a959cb30d59a2c",
"sha256": "a8bc3fe60fbbbe9bacc1e6f44a49a5e7a4c7212c6421a0fbff59be16556bfd7e"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "85cee9d26fb85b9a23a959cb30d59a2c",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 1066557,
"upload_time": "2024-11-13T10:31:02",
"upload_time_iso_8601": "2024-11-13T10:31:02.038694Z",
"url": "https://files.pythonhosted.org/packages/f4/a7/0f8dba667fc57e00eedea67e501e0c854f1a3fbf216b54e30fcbd4955edc/tx_engine-0.6.8-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "64c5c5a359288e136d8e1790434aaf605a99eb864d78eea83022f9edc804fc29",
"md5": "7e45c40ccf6eedcf988e0ef4a1d4e80d",
"sha256": "7391335a96a051a859bffdfb6ca142bd03857dc56071150c15c63a8703811799"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "7e45c40ccf6eedcf988e0ef4a1d4e80d",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 969141,
"upload_time": "2024-11-13T10:30:25",
"upload_time_iso_8601": "2024-11-13T10:30:25.579201Z",
"url": "https://files.pythonhosted.org/packages/64/c5/c5a359288e136d8e1790434aaf605a99eb864d78eea83022f9edc804fc29/tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "49f3d1d6dee66ec2339d5d2225c4f699e03ae6f783449efce6ba22cf3e5d38c8",
"md5": "ebcf30465aed1b8b4c3669edac56fc22",
"sha256": "6d20fd17cbdae92b96565b8b7db4f9bf365c3a590a0896e66d38bb2160405859"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "ebcf30465aed1b8b4c3669edac56fc22",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 954653,
"upload_time": "2024-11-13T10:30:38",
"upload_time_iso_8601": "2024-11-13T10:30:38.007164Z",
"url": "https://files.pythonhosted.org/packages/49/f3/d1d6dee66ec2339d5d2225c4f699e03ae6f783449efce6ba22cf3e5d38c8/tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5964369f596cde73ed180a7421c290576b54c1a21851e6daf2c4916ca454651e",
"md5": "3d43f25ef7a8cf78b929bd15bb5f7c76",
"sha256": "aee9e18bf584f649d30a65791bf27c433faf8bc53a1329e8c3776c02d161de6e"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "3d43f25ef7a8cf78b929bd15bb5f7c76",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 1026471,
"upload_time": "2024-11-13T10:30:51",
"upload_time_iso_8601": "2024-11-13T10:30:51.329133Z",
"url": "https://files.pythonhosted.org/packages/59/64/369f596cde73ed180a7421c290576b54c1a21851e6daf2c4916ca454651e/tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "25cac3122cbf097d1f6e28c71d4ef53f499aa7746bf85e22b0af83411987f710",
"md5": "8a9e6552cc31df30594fae93a7039e99",
"sha256": "63eac1b101a260028184c892835b3ac7311806d50e7da950a0c246ce84e8cc3d"
},
"downloads": -1,
"filename": "tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "8a9e6552cc31df30594fae93a7039e99",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 1066339,
"upload_time": "2024-11-13T10:31:03",
"upload_time_iso_8601": "2024-11-13T10:31:03.470930Z",
"url": "https://files.pythonhosted.org/packages/25/ca/c3122cbf097d1f6e28c71d4ef53f499aa7746bf85e22b0af83411987f710/tx_engine-0.6.8-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4ee0de043ce592c0531e2b643aeb93cc4d4d828a93d1b9883a70f03a4aeaf191",
"md5": "62534f6d444c85377dc07d64e67fd491",
"sha256": "3ef524a0c97926c8df8e5a3d7222cc63263d2baa9f4c965a04c5e6f2323df1e4"
},
"downloads": -1,
"filename": "tx_engine-0.6.8.tar.gz",
"has_sig": false,
"md5_digest": "62534f6d444c85377dc07d64e67fd491",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 545568,
"upload_time": "2024-11-13T10:31:33",
"upload_time_iso_8601": "2024-11-13T10:31:33.773079Z",
"url": "https://files.pythonhosted.org/packages/4e/e0/de043ce592c0531e2b643aeb93cc4d4d828a93d1b9883a70f03a4aeaf191/tx_engine-0.6.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-13 10:31:33",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "tx-engine"
}