Skip to main content

Ordering enumeration and protocols.

Project description

orderings

License Version Downloads Discord

Documentation Check Test Coverage

Ordering enumeration and protocols.

Installation

Python 3.8 or above is required.

pip

Installing the library with pip is quite simple:

$ pip install orderings

Alternatively, the library can be installed from source:

$ pip install git+https://github.com/nekitdev/orderings.git

Or via cloning the repository:

$ git clone https://github.com/nekitdev/orderings.git
$ cd orderings
$ pip install .

poetry

You can add orderings as a dependency with the following command:

$ poetry add orderings

Or by directly specifying it in the configuration like so:

[tool.poetry.dependencies]
orderings = "^1.5.0"

Alternatively, you can add it directly from the source:

[tool.poetry.dependencies.orderings]
git = "https://github.com/nekitdev/orderings.git"

Motivation

Sometimes it's simpler to handle ordering in one method, for example when comparing iterators; then it's trivial to implement the regular ordering methods using the compare method.

Examples

Core

The core of orderings is the Ordering enumeration and the Compare protocol:

from typing import Generic, TypeVar

from attrs import frozen
from orderings import Compare, Ordering, StrictOrdered
from typing_extensions import Self

T = TypeVar("T", bound=StrictOrdered)


@frozen()
class Wrap(Compare, Generic[T]):
    value: T

    def compare(self, other: Self) -> Ordering:
        self_value = self.value
        other_value = other.value

        if self_value < other_value:
            return Ordering.LESS

        if self_value > other_value:
            return Ordering.GREATER

        return Ordering.EQUAL

Compare implements all ordering operations (==, !=, <, >, <=, >=) using the compare method.

Documentation

You can find the documentation here.

Support

If you need support with the library, you can send an email or refer to the official Discord server.

Changelog

You can find the changelog here.

Security Policy

You can find the Security Policy of orderings here.

Contributing

If you are interested in contributing to orderings, make sure to take a look at the Contributing Guide, as well as the Code of Conduct.

License

orderings is licensed under the MIT License terms. See License for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orderings-1.5.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

orderings-1.5.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file orderings-1.5.0.tar.gz.

File metadata

  • Download URL: orderings-1.5.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for orderings-1.5.0.tar.gz
Algorithm Hash digest
SHA256 744ca0459e5a0ab72ea14a48d96a4fe1931c982ae47354c66ca8e879cebbc1ce
MD5 6f004094f11a700adad8daf808d5d66a
BLAKE2b-256 3f1a282be8c7c90ddcfe9e7ae3648561e184718ec5fe978e706d62864f7929a7

See more details on using hashes here.

File details

Details for the file orderings-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: orderings-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for orderings-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4227af5249cd1b66ecb0362169232172d5bd7126cf32bf266a09dd2d55697020
MD5 2c03e3ff3ca72bd627e568ae78bccd61
BLAKE2b-256 c8a2ebb7f36eee4f4231cc40a6448d46e265f5bf0c5d365ddfbc3e516ce1abb7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page