Core utilities and types for Spryx projects
Project description
spryx-core
A Python package providing core utilities and types for Spryx projects.
Installation
pip install spryx-core
Or with Poetry:
poetry add spryx-core
Features
spryx-core provides common utilities and type definitions used across Spryx projects, including:
Entity IDs
- ULID generation and validation (with UUID fallback)
- Custom
EntityIdtype
from spryx_core import EntityId, generate_entity_id, is_valid_ulid
# Generate a new ID
entity_id = generate_entity_id()
# Validate an ID
if is_valid_ulid(some_string):
# ...
Time Utilities
- ISO-8601 UTC formatting and parsing
- Common time operations (start/end of day, etc.)
from spryx_core import now_utc, to_iso, parse_iso, start_of_day
# Get current UTC time
now = now_utc()
# Format as ISO string
iso_string = to_iso(now)
# Parse ISO string
dt = parse_iso("2023-04-01T12:00:00.000Z")
# Get start of day
day_start = start_of_day(now)
Sentinel Values
NotGivensentinel and related utilitiesNOT_GIVENsingleton instance
from spryx_core import NOT_GIVEN, NotGivenOr, is_given
def my_function(optional_param: NotGivenOr[str] = NOT_GIVEN):
if is_given(optional_param):
# Handle provided value
else:
# Handle not provided case
Enumerations
- Common enum types (
Environment,SortOrder, etc.)
from spryx_core import Environment, SortOrder
# Environment types
if env == Environment.PRODUCTION:
# ...
# Sort order
order = SortOrder.ASC
Documentation
Module: spryx_core.id
Functions for generating and validating entity IDs:
generate_entity_id() -> EntityId: Generates a new ULID or UUIDis_valid_ulid(value: str) -> bool: Validates a ULID stringcast_entity_id(value: str) -> EntityId: Casts a string to an EntityId
Module: spryx_core.time
Date/time utilities with UTC focus:
now_utc() -> datetime: Gets current UTC timeto_iso(dt: datetime, milliseconds: bool = False) -> str: Formats as ISO-8601parse_iso(value: str) -> datetime: Parses ISO-8601 stringutc_from_timestamp(ts: int | float) -> datetime: Converts timestamp to datetimestart_of_day(dt: datetime | None = None) -> datetime: Gets day start (00:00:00)end_of_day(dt: datetime | None = None) -> datetime: Gets day end (23:59:59.999999)
Module: spryx_core.types
Type utilities:
is_given(obj: NotGivenOr[_T]) -> TypeGuard[_T]: Checks if value is not NotGivendefault_or_given(obj: NotGivenOr[_T], default: Any = None) -> Union[_T, None]: Gets value or default
Module: spryx_core.enums
Common enumerations:
SortOrder: ASC, DESCEnvironment: DEV, STAGING, PRODUCTION
Module: spryx_core.sentinels
Sentinel values:
NotGiven: Sentinel for unspecified values, distinct from None
Module: spryx_core.constants
Exported constants:
NOT_GIVEN: Singleton instance of NotGiven
License
This project is licensed under the MIT License - see the LICENSE file for details.
Requirements
- Python 3.11+
- Dependencies:
- python-ulid (>=3.0.0,<4.0.0)
- pydantic (>=2.11.3,<3.0.0)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spryx_core-0.1.2.tar.gz.
File metadata
- Download URL: spryx_core-0.1.2.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8977d990be9e2c46cc1d1891c9280a21e7c5b610a430dd131f53a7c538903cc3
|
|
| MD5 |
7cf673d0ade19378985fdeb2f5fa6972
|
|
| BLAKE2b-256 |
619b3733d96be0e84cc4a8f7888ae83796b90b0a85c66efb23cd5a06cf24f151
|
File details
Details for the file spryx_core-0.1.2-py3-none-any.whl.
File metadata
- Download URL: spryx_core-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db7ee0e104855e787b199e3fa791909f3fa63f59660660c7ee16b20b6ab3b0a1
|
|
| MD5 |
4d9b5f00fd775756f029c5c8ce6440ae
|
|
| BLAKE2b-256 |
0e242b9569b2d437f693e410007c06ba0777e8f7c894fab06f11aca3ec0f6904
|