Skip to main content

noxcollections

simple, clean, pure python collections

noxcollections is pure Python implementation of basic data structures and a few basic algorithms operating on them.

Disclaimer

This project’s main purpose is to get myself acquainted to the process of developing a proper python package with the common tooling used for testing, linting, type checking, and building in python.

Additionally I hope to refresh and better structure my knowledge about the implemented data structures and algorithms.

For the reasons stated above this project is mainly meant for educational purposes. If you need performance built-in package collections as well as some other packages from PyPI will probably serve you better (due to better optimization as well as the fact that most of them are implemented as C extensions).

Goals

Following goals are most important to this project:

  • Clean, modern code

  • Full test coverage

  • Fully typed public API

Current state

The following lists contain planned features and their state current state.

This package is currently before its first release.

Data structures

  • [ ] Linked lists and other data structures that can be based on them
    • [x] Linked list

    • [ ] Doubly linked list

    • [x] Stack

    • [ ] Queues

  • [ ] Other list types

  • [ ] Tree based structures

  • [ ] Graphs based structures

Algorithms

  • [x] Search Algorithms
    • [x] Binary search

    • [x] Linear search

  • [ ] Sorting Algorithms
    • [x] Bubble sort

    • [x] Merge sort

    • [ ] Quick sort

  • [ ] Graph algorithms (TBD)

How to use

For use only Python(3.8+) interpreter is needed. To run test/linters/mypy use of Poetry is recommended. Further instructions will assume you have it installed.

Installation

Install using pip

You can install last release version of this package from PyPI using pip.

pip install noxcollections

Using Poetry

First install the package in the environment manage by Poetry:

poetry install  # build, from main repository directory

And then call your script from the main repository’s directory prefacing it with poetry for example if your file is int same directory and as called main.py:

poetry python main.py

Testing and linting

Testing uses the pytest package for testing and tox to run the test suite against multiple versions of Python:

  • 3.8

  • 3.9

  • 3.10

Tox configurations also does linting (using black and flake8) and type checking (using mypy)

To run all of the aforementioned tools using tox (after installing all of the dependencies and package using poetry install):

poetry run tox

To run those tools more selectively check the tox.ini file to check the names of the environments you wish to run.

Metadata

Release files for noxcollections 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for noxcollections 0.2.0
File Size Uploaded
noxcollections-0.2.0.tar.gz 10.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for noxcollections 0.2.0
File Interpreter ABI Platform
noxcollections-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.6 kB

Release files / noxcollections-0.2.0.tar.gz

Download URL noxcollections-0.2.0.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
903d90d7e56a152ed3b9e405836352b1d001e9d0069361a2622abeb6ccf50e3e
BLAKE2b-256 checksum
How to use checksums
4ad482bc9e460d176fb3992721caea33f58a6a771955e18bc0275fef40409774
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.8.13 Linux/5.17.15-1-MANJARO

Release files / noxcollections-0.2.0-py3-none-any.whl

Download URL noxcollections-0.2.0-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2b499fc2ba2d21b9c7c34f9b60895ebbdcf7215a31cfc27ddcf8b9b3debb8aeb
BLAKE2b-256 checksum
How to use checksums
cb7599248c3d5fc04bcc7131220891472da915c13a83719fde073e9bd6189918
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.8.13 Linux/5.17.15-1-MANJARO
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page