Skip to main content

Flot is a simple tool to easily build multiple packages (wheel and sdist) from a single repo without having to create a subdir or another repo for each package, and by simply listing which files to include.

Project description

flot is an easy tool to build Python packages (wheel and sdist) with no magic and guesswork. Flot can also create one or more Python packages from a single code tree, just by listing which files you want to include.

Because “Explicit is better than implicit” and “Simple is better than complex”

flot takes the magic and guesswork away of which files are included in a Python package: you just specify a list of paths or glob patterns for the files you want to include or exclude in your package. No more mystery! Include data files, multiple modules or any files as easily as listing their paths.

With flot you can also have multiple pyproject.toml files to enjoy the benefits of a simpler monolithic code repo and still be able to easily share and package multiple Pypi packages and foster the reuse of subsets of your larger project, without having some imposed directory structure.

Unlike flot, other Python build tools assume that you can only build a single Python package from a given directory or repository and use a lot of magic to find which module or file to include in your package.

Also, while flot promotes declarative builds, it is also possible to run arbitrary Python scripts when you need more power.

See also Why use Flot?

Flot is derived from and based on a modified Flit https://github.com/pypa/flit/ by Thomas Kluyver @takluyver

It was started following this discussion https://github.com/pypa/flit/discussions/669

Install

pip install flot

Usage

Say you’re writing a module foobar - either as a single file foobar.py, or as a directory - and you want to distribute it.

  1. Create a pyproject.toml file. It will look something like this:

    [build-system]
    requires = ["flot"]
    build-backend = "flot.buildapi"
    
    [project]
    name = "foobar"
    version = "1.0.0"
    description = "foobar frobinator"
    
    [tool.flot]
    includes = ["foobar.py"]

    You can edit this file to add other metadata, like URL for example to set up command line scripts or add your dependencies. See the pyproject.toml documentation at https://github.com/nexB/flot/blob/main/docs/pyproject_toml.rst

  2. Run this command to build your wheel in the dist/ directory:

    flot

Once your package is published to PyPI (I use the standard twine tool for this), people can install it using pip or any other Python packaging tool just like any other package.

  1. Say you’re writing a second module baz as a single file baz.py. Just create a second file named for instance baz-pyproject.toml. It will look something like this:

    [build-system]
    requires = ["flot"]
    build-backend = "flot.buildapi"
    
    [project]
    name = "baz"
    version = "1.0.0"
    description = "baz frobinator"
    
    [tool.flot]
    includes = ["baz.py"]
  2. Run this command to build a second wheel in the dist/ directory:

    flot --pyproject baz-pyproject.toml

You now have a second wheel built from the same tree with different content.

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

flot-0.7.3.tar.gz (44.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flot-0.7.3-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file flot-0.7.3.tar.gz.

File metadata

  • Download URL: flot-0.7.3.tar.gz
  • Upload date:
  • Size: 44.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flot-0.7.3.tar.gz
Algorithm Hash digest
SHA256 f6d1e9f2a11fa290eccaf7f1518050503586f66e96e2023062881c4108a3c6cc
MD5 131a3f453a94ee46845c55b23e9a110d
BLAKE2b-256 72c81f7c75d22248655f63556575392ab75b6747bdeb4a79d43499148f50d64b

See more details on using hashes here.

Provenance

The following attestation bundles were made for flot-0.7.3.tar.gz:

Publisher: pypi-release.yml on aboutcode-org/flot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flot-0.7.3-py3-none-any.whl.

File metadata

  • Download URL: flot-0.7.3-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flot-0.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b864b194a0fe8893eec7fe62c6b06f4c988da0bdf93b42fe522b728b29ca35bf
MD5 b58d37e36cf7adc22d13d3ab630fea50
BLAKE2b-256 1586e52a111a3a30b172f46f03edc64be95b559f03f7bfda4aaa2f47ed847033

See more details on using hashes here.

Provenance

The following attestation bundles were made for flot-0.7.3-py3-none-any.whl:

Publisher: pypi-release.yml on aboutcode-org/flot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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