Skip to main content

Welcome to fastcore

Python is a powerful, dynamic language. Rather than bake everything into the language, it lets the programmer customize it to make it work for them. fastcore uses this flexibility to add to Python features inspired by other languages we’ve loved, mixins from Ruby, and currying, binding, and more from Haskell. It also adds some “missing features” and cleans up some rough edges in the Python standard library, such as simplifying parallel processing, and bringing ideas from NumPy over to Python’s list type.

Here are some tips on using fastcore:

  • Use from fastcore.module import * freely. fastcore’s modules are built to be safe for wildcard imports.
  • Use L in place of list. L behaves like a list, with extra indexing options, method chaining and more methods.
  • Add methods to existing classes, including built-ins, with the @patch decorator instead of subclassing.
  • In __init__ methods, call store_attr() to set multiple attributes at once instead of assigning each one.
  • Apply the delegates decorator to show a function’s real parameters in place of **kwargs, for IDEs and generated documentation.
  • Use fastcore’s versions of ThreadPoolExecutor and ProcessPoolExecutor for simpler concurrent processing.
  • Prefer fastcore’s test functions, such as test_eq, test_ne and test_close, for assertions that read clearly and give informative failures.
  • fastcore extends pathlib.Path with methods such as ls() and read_json().
  • Convert between dictionaries and objects with attribute access using dict2obj and obj2dict.
  • Write in a functional style with tools such as compose, maps and filter_ex.
  • Document parameters and return values with docments, using source comments or Annotated metadata for generated APIs. MarkdownRenderer shows the effective signature and keeps usage sections such as Notes, Raises and Examples.
  • Apply the timed_cache decorator to add time-based expiry to the standard lru_cache.
  • Turn Python functions into command-line interfaces with fastcore.script.

For example, L is a drop-in replacement for list with extra superpowers:

x = L(1,2,3,4)
test_eq(x[[0,3]], [1,4])               # index with a collection
test_eq(x.map(lambda o:o*2), [2,4,6,8])
test_eq(x.filter(lambda o:o>2), [3,4])
x += [5]
test_eq(x.unique(), [1,2,3,4,5])

Tutorials

Getting started

To install fastcore run: conda install fastcore -c fastai (if you use Anaconda, which we recommend) or pip install fastcore. For an editable install, clone this repo and run: pip install -e ".[dev]". fastcore is tested to work on Ubuntu, macOS and Windows (versions tested are those shown with the -latest suffix here).

fastcore contains many features, including:

  • fastcore.test: Simple testing functions
  • fastcore.foundation: Mixins, delegation, composition, and more
  • fastcore.xtras: Utility functions to help with functional-style programming, parallel processing, and more
  • fastcore.xml: HTML with ft, and case-preserving, namespace-aware XML with E factories

To get started, we recommend you read through the fastcore tour.

Contributing

After you clone this repository, please run nbdev_install_hooks in your terminal. This sets up git hooks, which clean up the notebooks to remove the extraneous stuff stored in the notebooks (e.g. which cells you ran) which causes unnecessary merge conflicts.

To run the tests in parallel, launch nbdev_test.

Before submitting a PR, check that the local library and notebooks match.

  • If you made a change to the notebooks in one of the exported cells, you can export it to the library with nbdev_prepare.
  • If you made a change to the library, you can export it back to the notebooks with nbdev_update.

Metadata

Release files for fastcore 2.2.34

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

Source distribution (sdist)

Source distribution for fastcore 2.2.34
File Size Uploaded Provenance Actions
fastcore-2.2.34.tar.gz 145.2 kB Without provenance Details for fastcore-2.2.34.tar.gz

Built distribution (wheel)

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

Total release size: 297.2 kB

Release files / fastcore-2.2.34.tar.gz

Download URL fastcore-2.2.34.tar.gz
Size 145.2 kB
Tags Source
SHA-256 checksum
How to use checksums
93d22ba56674d1fede618f6b43f3452031bf838416a348a2aed7f3a34de46220
BLAKE2b-256 checksum
How to use checksums
a85cf98b70de6d0052fc1821ac9a63f2571e4cd71e64974a1c858d6fa4cb7666
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / fastcore-2.2.34-py3-none-any.whl

Download URL fastcore-2.2.34-py3-none-any.whl
Size 151.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f436405b39fbef29c7b842f3c60bf440d37fe8649b072eba6c39ba0fb23324f
BLAKE2b-256 checksum
How to use checksums
75b95525065126807cca1ba08f84d43659d701653d62723a015c9a924e7961a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Security for fastcore 2.2.34

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.2.34 This release

2 release files No provenance

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