Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fastenum

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fastenum

Faster drop-in replacement of Python's enum

  • 1.1.2
  • PyPI
  • Socket score

Maintainers
2

fastenum

A roughly 3x faster drop-in replacement of Python's enum.

Why

Python's enum type is a useful building block for creating semantic types and constants in your programs.

The problem is, if you're doing millions and millions of enum lookups (even simple expressions like Color.ORANGE) it's a little bit slow.

fastenum is a stripped-down enum implementation that's up to 3.5x faster than the standard library implementation. At Quantlane we use it in production code as a drop-in replacement. Read more, including benchmarks, on our blog: A 3x faster enum type for Python.

Installation

fastenum is available on PyPI and you can install it with:

pip install fastenum

or

poetry add fastenum

How to use it

Simply use fastenum.Enum instead of enum.Enum:

import fastenum

class Color(fastenum.Enum):
    RED = 0
    BLUE = 1
    GREEN = 2

assert isinstance(Color.RED, Color)
assert Color.RED is Color['RED']
assert Color.BLUE != 1
assert Color.GREEN.value == 2

def is_red(c: Color) -> bool:
    return c is Color.RED

There is also a mypy plugin that you'll want to enable in mypy.ini to help mypy understand fastenum just like it understands enum:

[mypy]
plugins = fastenum.mypy_plugin:plugin

Tradeoffs and disadvantages

There is no support for automatic values, unique value checks, aliases, custom __init__ implementations on members, IntEnum, Flag, or the functional API. If you require any of these features it's probably best to just use enum.

fastenum's mypy plugin may cause issues with your mypy cache (see above).

Running tests & benchmarks

poetry install
poetry run pytest

Contributing

Pull requests are welcome!

We will accept pull requests adding missing functionality provided they do not impact base fastenum performance (it's best to verify that with benchmarks).


fastenum was made by Quantlane <https://quantlane.com>_, a systematic trading firm. We design, build and run our own stock trading platform.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc