Skip to main content

Standardized computer vision pipeline framework with a chainable API and procedurally defined model architecture.

Project description

linkedin github pypi vimeo alexgbraun

Introduction

Standardized computer vision pipeline framework with a chainable API and procedurally defined model architecture.

See documentation for details.

See pipeline notebook for a demo of pipelines.

See dataset notebook for a demo of the Dataset classes.

See logging notebook for a demo of the logging tools.

Installation for Developers

Docker

  1. Install docker-desktop
  2. Ensure docker-desktop has at least 4 GB of memory allocated to it.
  3. git clone git@github.com:theNewFlesh/flatiron.git
  4. cd flatiron
  5. chmod +x bin/flatiron
  6. bin/flatiron docker-start
    • If building on a M1 Mac run export DOCKER_DEFAULT_PLATFORM=linux/amd64 first.

The service should take a few minutes to start up.

Run bin/flatiron --help for more help on the command line tool.

Secret Env Setup

The secret-env file is a environment file which holds various secrets used by pyproject.toml and CI.

ZSH Setup

  1. bin/flatiron must be run from this repository's top level directory.

  2. Therefore, if using zsh, it is recommended that you paste the following line in your ~/.zshrc file:

    • alias flatiron="cd [parent dir]/flatiron; bin/flatiron"
    • Replace [parent dir] with the parent directory of this repository
  3. Consider adding the following line to your ~/.zshrc if you are using a M1 Mac:

    • export DOCKER_DEFAULT_PLATFORM=linux/amd64
  4. Running the zsh-complete command will enable tab completions of the cli commands, in the next shell session.

    For example:

    • flatiron [tab] will show you all the cli options, which you can press tab to cycle through
    • flatiron docker-[tab] will show you only the cli options that begin with "docker-"

Installation for Production

Python

Command Effect
pip install flatiron installs flatiron
pip install flatiron[tensorflow] installs flatiron with tensorflow
pip install flatiron[torch] installs flatiron with pytorch
pip install flatiron[all] installs flatiron with tensorflow and pytorch

If you are on Debian-based Linux and you run into C library issues such as with OpenEXR, the following may help:

apt update && \
apt install --fix-missing -y python3.12-dev && \
apt install -y \
    build-essential \
    g++ \
    gcc \
    zlib1g-dev

For OpenEXR you will also need this:

apt install -y \
    libopenexr-dev \
    openexr

Please see the prod.dockerfile for an official example of how to build a docker image with flatiron.

Docker

  1. Install docker-desktop
  2. docker pull theNewFlesh/flatiron:[mode]-[version]

Quickstart Guide

This repository contains a suite commands for the whole development process. This includes everything from testing, to documentation generation and publishing pip packages.

These commands can be accessed through:

  • The VSCode task runner
  • The VSCode task runner side bar
  • A terminal running on the host OS
  • A terminal within this repositories docker container

Running the zsh-complete command will enable tab completions of the CLI. See the zsh setup section for more information.

Command Groups

Development commands are grouped by one of 10 prefixes:

Command Description
build Commands for building packages for testing and pip publishing
docker Common docker commands such as build, start and stop
docs Commands for generating documentation and code metrics
library Commands for managing python package dependencies
session Commands for starting interactive sessions such as jupyter lab and python
state Command to display the current state of the repo and container
test Commands for running tests, linter and type annotations
version Commands for bumping project versions
quickstart Display this quickstart guide
zsh Commands for running a zsh session in the container and generating zsh completions

Common Commands

Here are some frequently used commands to get you started:

Command Description
docker-restart Restart container
docker-start Start container
docker-stop Stop container
docs-full Generate documentation, coverage report, diagram and code
library-add Add a given package to a given dependency group
library-graph-dev Graph dependencies in dev environment
library-remove Remove a given package from a given dependency group
library-search Search for pip packages
library-update Update dev dependencies
session-lab Run jupyter lab server
state State of
test-dev Run all tests
test-lint Run linting and type checking
zsh Run ZSH session inside container
zsh-complete Generate ZSH completion script

Development CLI

bin/flatiron is a command line interface (defined in cli.py) that works with any version of python 2.7 and above, as it has no dependencies. Commands generally do not expect any arguments or flags.

Its usage pattern is: bin/flatiron COMMAND [-a --args]=ARGS [-h --help] [--dryrun]

Commands

The following is a complete list of all available development commands:

Command Description
build-edit-prod-dockerfile Edit prod.dockefile to use local package
build-local-package Generate local pip package in docker/dist
build-package Build production version of repo for publishing
build-prod Publish pip package of repo to PyPi
build-publish Run production tests first then publish pip package of repo to PyPi
build-test Build test version of repo for prod testing
docker-build Build development image
docker-build-from-cache Build development image from registry cache
docker-build-no-cache Build development image without cache
docker-build-prod Build production image
docker-build-prod-no-cache Build production image without cache
docker-container Display the Docker container id
docker-destroy Shutdown container and destroy its image
docker-destroy-prod Shutdown production container and destroy its image
docker-image Display the Docker image id
docker-prod Start production container
docker-pull-dev Pull development image from Docker registry
docker-pull-prod Pull production image from Docker registry
docker-push-dev Push development image to Docker registry
docker-push-dev-latest Push development image to Docker registry with dev-latest tag
docker-push-prod Push production image to Docker registry
docker-push-prod-latest Push production image to Docker registry with prod-latest tag
docker-remove Remove Docker image
docker-restart Restart container
docker-start Start container
docker-stop Stop container
docs Generate sphinx documentation
docs-architecture Generate architecture.svg diagram from all import statements
docs-full Generate documentation, coverage report, diagram and code
docs-metrics Generate code metrics report, plots and tables
library-add Add a given package to a given dependency group
library-graph-dev Graph dependencies in dev environment
library-graph-prod Graph dependencies in prod environment
library-install-dev Install all dependencies into dev environment
library-install-prod Install all dependencies into prod environment
library-list-dev List packages in dev environment
library-list-prod List packages in prod environment
library-lock-dev Resolve dev.lock file
library-lock-prod Resolve prod.lock file
library-remove Remove a given package from a given dependency group
library-search Search for pip packages
library-sync-dev Sync dev environment with packages listed in dev.lock
library-sync-prod Sync prod environment with packages listed in prod.lock
library-update Update dev dependencies
library-update-pdm Update PDM
quickstart Display quickstart guide
session-lab Run jupyter lab server
session-python Run python session with dev dependencies
state State of repository and Docker container
test-coverage Generate test coverage report
test-dev Run all tests
test-fast Test all code excepts tests marked with SKIP_SLOWS_TESTS decorator
test-format Format all python files
test-lint Run linting and type checking
test-prod Run tests across all support python versions
version Full resolution of repo: dependencies, linting, tests, docs, etc
version-bump-major Bump pyproject major version
version-bump-minor Bump pyproject minor version
version-bump-patch Bump pyproject patch version
version-commit Tag with version and commit changes to master
zsh Run ZSH session inside Docker container
zsh-complete Generate oh-my-zsh completions
zsh-root Run ZSH session as root inside Docker container

Flags

Short Long Description
-a --args Additional arguments, this can generally be ignored
-h --help Prints command help message to stdout
--dryrun Prints command that would otherwise be run to stdout

Production CLI

flatiron comes with a command line interface defined in command.py.

Its usage pattern is: flatiron COMMAND [ARGS] [FLAGS] [-h --help]

Commands


bash-completion

Prints BASH completion code to be written to a _flatiron completion file

Usage: flatiron bash-completion


zsh-completion

Prints ZSH completion code to be written to a _flatiron completion file

Usage: flatiron zsh-completion

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

flatiron-0.26.0.tar.gz (43.6 kB view details)

Uploaded Source

Built Distribution

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

flatiron-0.26.0-py3-none-any.whl (51.2 kB view details)

Uploaded Python 3

File details

Details for the file flatiron-0.26.0.tar.gz.

File metadata

  • Download URL: flatiron-0.26.0.tar.gz
  • Upload date:
  • Size: 43.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.23.0 CPython/3.12.9 Linux/5.4.0-42-generic

File hashes

Hashes for flatiron-0.26.0.tar.gz
Algorithm Hash digest
SHA256 85af4baa8eb4dc551f1042cff0e536117c5e987971344b2a7041462bed5326ef
MD5 fe0ad1443f590de75ff0ab790226ac9f
BLAKE2b-256 4026ab9d33e3d979a4adf58b987ed475cfca32be5bc3024eecf02fed0c7cb9eb

See more details on using hashes here.

File details

Details for the file flatiron-0.26.0-py3-none-any.whl.

File metadata

  • Download URL: flatiron-0.26.0-py3-none-any.whl
  • Upload date:
  • Size: 51.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.23.0 CPython/3.12.9 Linux/5.4.0-42-generic

File hashes

Hashes for flatiron-0.26.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6d56e1785d5e2a230c0d0ffae19a0ca691fb2401127493584bf1ca184758543d
MD5 0fd4d759c8af7f80e7af3a1ae1b60fae
BLAKE2b-256 b9cbe3d98055ab12bb4ecfd43b43894ddb525471adbd7af7f225abe4bb7a80db

See more details on using hashes here.

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