Containers for the python sages 🏺✨📦
pyxides
is a python library for working with array-like object containers.
The name "pyxides" is the plural form of the Greek word "pyxis" (πυξίς), the
name for the decorated cylindrical containers from
antiquity. The name felt
appropriate for a python
library involving containers!
pip install pyxides
The containers
module contains some ready-made container classes that can be
used directly:
from pyxides.containers import ArrayLike1D
a = ArrayLike1D([1, 2, 3])
# it has the usual list-like methods for editing, and expanding
three = a.pop(-1)
a.append(id)
a.extend(['some', 'other', object])
# multi-indexing works
a[[0, 3, 5]]
[1, <function id(obj, /)>, 'other']
To construct a container that only allows certain types of objects:
from pyxides.type_check import OfType
class Twinkie:
"""Yum!"""
class Box(list, OfType(Twinkie)):
"""So much YUM!"""
twinkies = Box()
twinkies.append(Twinkie()) # OK!
Object other than Twinkie
s, are not allowed in the container:
twinkies.append(0)
TypeError: Items in container class 'Box' must derive from <class '__main__.Twinkie'>. Item 1 is of type <class 'int'>.
TODO
TODO
Contributions are welcome!
- Fork it!
- Create your feature branch
git checkout -b feature/rad
- Commit your changes
git commit -am 'Add some cool feature 😎'
- Push to the branch
git push origin feature/rad
- Create a new Pull Request
- e-mail: hannes@saao.ac.za
- see LICENSE