Files

126 lines
5.1 KiB
Markdown

# jeb Utils
Common utils for JEB client and server.
## Installation
You can install the library using `pip`:
```bash
pip install jeb-utils --index-url https://repo.jcloud-services.ddns.net/simple/ --extra-index-url https://pypi.org/simple/
```
## Functions and classes
### `auth_utils`: Utilities for the jeb authentication
- `load_cert_file`: Loads a certificate from a file
- `Identity`: An identity, based on a certificate
- `Verifier`: A verifier for the CA of an identity.
### `crypto_utils`: Utilities for cryptography
- `generate_keypair`: Generates a private and a public key
- `serialize_public_key`: Serializes a public key to bytes.
- `deserialize_public_key`: Deserializes a public key from bytes.
- `derive_aes_key`: Derives an AES key from a private key and the peer public key.
### `exceptions`: Common exceptions of the jeb library and server
- `UnknownProtocolError`: The protocol is unknown.
- `ProtocolSyntaxError`: The syntax is not valid for the protocol.
- `CRCInvalidError`: The CRC is invalid.
- `UnknownCreationError`: Unknown error creating an object.
- `UnknownSubscribingError`: Unknown error subscribing topics.
- `UnknownUnsubscribingError`: Unknown error unsubscribing topics.
- `TopicNotFoundError`: The topic was not found.
- `TopicExistsError`: The topic already exists.
- `TopicPartitionExistsError`: The partition of the topic already exists.
- `TopicPartitionNotFoundError`: The partition of the topic was not found.
- `TopicNotSubscribedError`: The topic is not subscribed.
- `InvalidTopicNameError`: The topic name is invalid.
- `FetchStartOutOfRangeError`: The fetch start is out of range.
- `FormatError`: The format is invalid.
- `CertificateNotTrustedError`: The certificate is not trusted.
### `jeb_utils`: Functions for jeb actions
- `format_topic_partitions`: Formats the topic partitions.
- `mktopic`: Creates a topic.
- `rmtopic`: Removes a topic.
- `mktopicpart`: Creates a partition of a topic.
- `rmtopicpart`: Removes a partition of a topic.
- `get_topics`: Returns all topics.
- `get_segment_base_timestamp`: Returns the base timestamp of a segment.
- `get_log_end_offsets`: Gets the end offsets.
- `init`: Initializes the module.
- `validate_topic_partition`: Validates a topic partition number format.
- `validate_topic_name`: Validates a topic name.
- `check_topic_exists`: Checks whether a topic exists.
- `pack_record_headers`: Packs the record header dictionary into bytes.
- `unpack_record_headers`: Unpacks the record headers from bytes.
- `create_record`: Creates a record.
- `fetch_records`: Fetches records from the topic.
- `Topic`: A topic.
- `Segment`: A segment of a topic.
- `FileCorruptWarning`: A warning for corrupt log files.
- `AttributesByte`: An attributes byte of a record.
### `jebp_utils`: Utilities for the jeb protocol
- `MessageFormatError`: If the message format is invalid.
- `sendmsg`: Sends a message.
- `readmsg`: Receives a message.
- `pack_fields`: Packs the fields into a compact bytestring.
- `unpack_fields`: Unpacks the field from a bytestring.
### `utils`: General utilities
- `is_number`: Checks whether the string is a number.
- `int_to_bytes`: Converts the integer into bytes (dynamic length).
- `bits_to_byte`: Converts the bits into a single byte.
- `byte_to_bits`: Converts the byte to a tuple of bits.
- `get_next_lower_integer_multiple`: Returns the next lower integer multiple.
- `find_nearest_lower_number`: Finds the nearest lower number to the target from the list.
- `create_file_if_not_exists`: Creates a file if it does not exist.
## Changelog
### Version 0.3.2
- Bug fix: `jeb_utils.utils.is_valid_host` returned `None` instead of `False` if the host is not valid
### Version 0.3.1
- Fatal bug fix: `typing.Union` in `jeb_utils.utils` was used but not imported
### Version 0.3.0
- Make library backward compatible: use `typing.Union` instead of the `|` operator
### Version 0.2.5
- Update type hint `Sequence` in `jeb_utils.utils.find_nearest_lower_number` to `Sequence[int | float]`
### Version 0.2.4
- Add support for `signed=True` in `jeb_utils.utils.int_to_bytes`
### Version 0.2.3
- Bug fix: `is_valid_host`, `is_valid_port` and `validate_address_port` in `jeb_utils.utils` were not included in `__all__`
### Version 0.2.2
- Bug fix: jeb_utils.utils.is_number could return `True` even if the base is `0` which is mathematically incorrect.
### Version 0.2.1
- Add feature for validating addresses.
### Version 0.2.0
- Remove all the functions and classes that are now in jeb-server-utils.
### Version 0.1.4
- Bug fix: Due to a refactoring, `jeb_utils.jebp_utils.unpack_fields` did not work.
### Version 0.1.3
- Fatal bug fix: `jeb_utils.jeb_utils.validate_topic_name` has not returned `True` if the topic name is valid, it returned `None` (falsy). Now it returns `True` if the topic name is valid.
### Version 0.1.2
- Bug fix: `jeb_utils.mktopicpart` has tried to raise `jeb_utils.exceptions.exceptions.TopicNotFoundError` instead of `jeb_utils.exceptions.TopicNotFoundError` if the topic does not exist.
### Version 0.1.1
- Support for custom data paths (`jeb_utils.init`)
### Version 0.1.0
- First release
- `auth_utils`
- `crypto_utils`
- `exceptions`
- `jeb_utils`
- `jebp_utils`
- `utils`