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.35

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.35
File Size Uploaded Provenance Actions
fastcore-2.2.35.tar.gz 145.3 kB Without provenance Details for fastcore-2.2.35.tar.gz

Built distribution (wheel)

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

Total release size: 297.2 kB

Release files / fastcore-2.2.35.tar.gz

Download URL fastcore-2.2.35.tar.gz
Size 145.3 kB
Tags Source
SHA-256 checksum
How to use checksums
491e6d8527e1f0f9b5f43ec476991b7484e8254741f3143d96827fa4738ba9ec
BLAKE2b-256 checksum
How to use checksums
5c1945837ad449e435da74522340502bafeb66961baccc046df2e4b364a06076
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.35-py3-none-any.whl

Download URL fastcore-2.2.35-py3-none-any.whl
Size 152.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bec75b32e7f2c78cf1c652c75f065e8e6ed94a7a92183ef11509daaf726eab00
BLAKE2b-256 checksum
How to use checksums
65699de386c759a02efd21c852f26d265455f6b63613dc7ce2ad38e28d555c81
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.35

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.35 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