XLOFT
(XLOFT) X-Library of tools.
The collection is represented by three modules of `NamedTuple`, `AliasDict`, `Converters`, `ItIs`.
In the future, new tools can be added.
Installation
uv add xloft
Usage
- NamedTuple
"""This class imitates the behavior of the `named tuple`."""
from xloft import NamedTuple
nt = NamedTuple(x=10, y="Hello", _id="507c7f79bcf86cd7994f6c0e")
# or
d = {"x": 10, "y": "Hello", "_id": "507c7f79bcf86cd7994f6c0e"}
nt = NamedTuple(**d)
nt.x # => 10
nt.y # => Hello
nt._id # => 507c7f79bcf86cd7994f6c0e
nt.z # => raise: KeyError
nt["x"] # => 10
nt["y"] # => Hello
nt["_id"] # => 507c7f79bcf86cd7994f6c0e
nt["z"] # => KeyError
nt.get("x") # => 10
nt.get("y") # => Hello
nt.get("_id") # => 507c7f79bcf86cd7994f6c0e
nt.get("z") # => None
len(nt) # => 3
list(nt.keys()) # => ["x", "y", "_id"]
list(nt.values()) # => [10, "Hello", "507c7f79bcf86cd7994f6c0e"]
nt.has_key("x") # => True
nt.has_key("y") # => True
nt.hsa_key("_id") # => True
nt.has_key("z") # => False
nt.has_value(10) # => True
nt.has_value("Hello") # => True
nt.has_value("507c7f79bcf86cd7994f6c0e") # => True
nt.has_value([1, 2, 3]) # => False
d = nt.to_dict()
d["x"] # => 10
d.get("y") # => Hello
d.get("z") # => None
for key, val in nt.items():
print(f"Key: {key}, Value: {val}")
nt.update("x", 20)
nt.update("y", "Hi")
nt.update("_id", "new_id")
nt.x # => 20
nt.y # => Hi
nt._id # => new_id
nt["x"] = 20 # => TypeError
nt["y"] = "Hi" # => TypeError
nt["_id"] = "new_id" # => TypeError
nt["z"] = [1, 2, 3] # => TypeError
nt.x = 20 # => raise: AttributeDoesNotSetValueError
nt.y = "Hi" # => raise: AttributeDoesNotSetValueError
nt._id = "new_id" # => raise: AttributeDoesNotSetValueError
nt.z = [1, 2, 3] # => raise: AttributeDoesNotSetValueError
del nt.x # => raise: AttributeCannotBeDeleteError
del nt.y # => raise: AttributeCannotBeDeleteError
del nt._id # => raise: AttributeCannotBeDeleteError
- AliasDict
"""Pseudo dictionary with supports aliases for keys."""
from xloft import AliasDict
d = AliasDict()
# or
d = AliasDict(
({"English", "en"}, "lemmatize_en_all"),
({"Russian", "ru"}, "lemmatize_ru_all"),
({"German", "de"}, "lemmatize_de_all"),
)
# or
data = [
({"English", "en"}, "lemmatize_en_all"),
({"Russian", "ru"}, "lemmatize_ru_all"),
({"German", "de"}, "lemmatize_de_all"),
({"four", "Four", 4}, "I'm fourth"),
]
d = AliasDict(*data)
len(d) # => 4
#
d["English"] # => "lemmatize_en_all"
d["en"] # => "lemmatize_en_all"
d["EN"] # => KeyError
#
d["English"] = "Hi"
d["en"] # => "Hi"
d["en"] = "lemmatize_en_all"
d["English"] # => "lemmatize_en_all"
#
d["five"] = "I'm fifth"
d["five"] # => "I'm fifth"
#
del d["five"]
d["five"] # => KeyError
#
d.get("English") # => "lemmatize_en_all"
d.get("en") # => "lemmatize_en_all"
d.get("EN") # => None
#
d.add({"Turkish", "tr"}, "libstemmer_tr")
d.get("Turkish") # => "libstemmer_tr"
d.get("tr") # => "libstemmer_tr"
#
d.update(4, "Hello world!")
d.get("four") # => "Hello world!"
d.get(4) # => "Hello world!"
#
d.add_alias(4, "four stars")
d.get("four stars") # => "Hello world!"
#
d.delete_alias("four stars")
d.get("four stars") # => None
#
d.delete(four)
d.get("four") # => None
d.get(4) # => None
#
d.has_key("English") # => True
d.has_key("en") # => True
d.has_key("EN") # => False
#
d.has_value("lemmatize_en_all") # True
d.has_value(6) # False
#
# items() -> `Generator[tuple[list[str | int | float], Any]]`
for aliases, value in d.items():
print(f"Aliases of key: {aliases}, Value: {value}")
#
list(d.keys()) # => ["English", "en", "Russian", "ru", "German", "de", "Turkish", "tr"]
#
list(d.values()) # => ["lemmatize_en_all", "lemmatize_ru_all", "lemmatize_de_all", "libstemmer_tr"]
- Converters
"""Convert the number of bytes into a human-readable format."""
from xloft import to_human_size
# from xloft.converters import to_human_size
to_human_size(200) # => 200 bytes
to_human_size(1048576) # => 1 MB
to_human_size(1048575) # => 1023.999 KB
#
int_to_roman(1994) # => MCMXCIV
roman_to_int("MCMXCIV") # => 1994
"""Convert an integer to Roman and vice versa."""
from xloft import int_to_roman, roman_to_int
# from xloft.converters import int_to_roman, roman_to_int
int_to_roman(1994) # => MCMXCIV
roman_to_int("MCMXCIV") # => 1994
"""Convert text to a hexadecimal color code."""
from xloft import word_to_color
# from xloft.converters import word_to_color
word_to_color("xloft") # => #09cacd
word_to_color("Hello World!") # => #1db63c
word_to_color(" ") # => #200000
word_to_color("") # => #000000
- ItIs
"""Check if a string is a number."""
from xloft import is_number
# from xloft.itis import is_number
is_number("") # => False
is_number(" ") # => False
is_number("1230.") # => False
is_number("0x5") # => False
is_number("0o5") # => False
is_number("-5.0") # => True
is_number("+5.0") # => True
is_number("5.0") # => True
is_number(".5") # => True
is_number("5.") # => True
is_number("3.4E+38") # => True
is_number("3.4E-38") # => True
is_number("1.7E+308") # => True
is_number("1.7E-308") # => True
is_number("-1.7976931348623157e+308") # => True
is_number("1.7976931348623157e+308") # => True
is_number("72028601076372765770200707816364342373431783018070841859646251155447849538676") # => True
is_number("-72028601076372765770200707816364342373431783018070841859646251155447849538676") # => True
Metadata
Release files for xloft 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xloft-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / xloft-1.1.1-py3-none-any.whl
| Download URL | xloft-1.1.1-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3c6998ee96a498860d36e81cd521cc59de6cca0b80d4d61337a87dba7b58e843
|
|
BLAKE2b-256 checksum How to use checksums |
6ed9ebb5982c5431192a8e94895f462acfc23bb9efc6433ec8714d4f56afa0a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|