Metadata-Version: 2.1
Name: forml
Version: 0.91
Summary: A development framework and MLOps platform for the lifecycle management of data science projects.
Project-URL: Homepage, http://forml.io/
Project-URL: Source, https://github.com/formlio/forml/
Project-URL: Documentation, https://docs.forml.io/
Project-URL: Issues, https://github.com/formlio/forml/issues/
Project-URL: Changelog, https://github.com/formlio/forml/blob/master/CHANGELOG.md
Author-email: ForML Development Team <info@forml.io>
License: Apache License 2.0
License-File: LICENSE
License-File: NOTICE
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.9
Requires-Dist: click
Requires-Dist: cloudpickle
Requires-Dist: jinja2
Requires-Dist: numpy
Requires-Dist: packaging>=20.0
Requires-Dist: pandas
Requires-Dist: pip
Requires-Dist: scikit-learn
Requires-Dist: setuptools
Requires-Dist: toml
Requires-Dist: tomli
Provides-Extra: all
Requires-Dist: forml[dask,graphviz,mlflow,rest,sql]; extra == 'all'
Provides-Extra: dask
Requires-Dist: distributed; extra == 'dask'
Provides-Extra: dev
Requires-Dist: black[jupyter]; extra == 'dev'
Requires-Dist: flake8-bugbear; extra == 'dev'
Requires-Dist: flake8-colors; extra == 'dev'
Requires-Dist: flake8-typing-imports; extra == 'dev'
Requires-Dist: isort; extra == 'dev'
Requires-Dist: pip-tools; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pycln; extra == 'dev'
Requires-Dist: pylint; extra == 'dev'
Requires-Dist: pytest-asyncio; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest-xdist; extra == 'dev'
Requires-Dist: starlette[full]; extra == 'dev'
Provides-Extra: docs
Requires-Dist: jupyter-client; extra == 'docs'
Requires-Dist: nbsphinx; extra == 'docs'
Requires-Dist: sphinx; extra == 'docs'
Requires-Dist: sphinx-copybutton; extra == 'docs'
Requires-Dist: sphinx-immaterial; extra == 'docs'
Requires-Dist: sphinxcontrib-details-directive; extra == 'docs'
Requires-Dist: sphinxcontrib-napoleon; extra == 'docs'
Requires-Dist: sphinxcontrib-spelling; extra == 'docs'
Provides-Extra: graphviz
Requires-Dist: graphviz; extra == 'graphviz'
Provides-Extra: mlflow
Requires-Dist: mlflow; extra == 'mlflow'
Provides-Extra: rest
Requires-Dist: starlette; extra == 'rest'
Requires-Dist: uvicorn; extra == 'rest'
Provides-Extra: sql
Requires-Dist: duckdb-engine; extra == 'sql'
Requires-Dist: pandas[parquet]; extra == 'sql'
Requires-Dist: sqlalchemy; extra == 'sql'
Requires-Dist: trino[sqlalchemy]; extra == 'sql'
Description-Content-Type: text/markdown

<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->

ForML
=====

[![GitHub Build](https://img.shields.io/github/actions/workflow/status/formlio/forml/ci.yml?branch=main)](https://github.com/formlio/forml/actions/)
[![Coverage Status](https://img.shields.io/codecov/c/github/formlio/forml/main)](https://app.codecov.io/github/formlio/forml/tree/main)
[![Code Style: black](https://img.shields.io/badge/code%20style-black-000000)](https://github.com/psf/black)
[![Lines of Code](https://img.shields.io/tokei/lines/github/formlio/forml)](https://github.com/formlio/forml)

[![Documentation Status](https://readthedocs.org/projects/forml/badge/?version=latest)](https://docs.forml.io/en/latest/)
[![License](https://img.shields.io/pypi/l/forml)](http://www.apache.org/licenses/LICENSE-2.0.txt)
[![Gitter](https://img.shields.io/gitter/room/formlio/community)](https://app.gitter.im/#/room/#formlio_community:gitter.im)

![Python Versions](https://img.shields.io/pypi/pyversions/forml)
[![PyPI Version](https://img.shields.io/pypi/v/forml)](https://pypi.org/project/forml/)
[![PyPI Downloads](https://img.shields.io/pypi/dm/forml)](https://pypi.org/project/forml/)

[![Stars](https://img.shields.io/github/stars/formlio/forml)](https://github.com/formlio/forml/stargazers)
[![Forks](https://img.shields.io/github/forks/formlio/forml)](https://github.com/formlio/forml/fork)
[![Issues](https://img.shields.io/github/issues/formlio/forml)](https://github.com/formlio/forml/issues)
[![Pull Requests](https://img.shields.io/github/issues-pr/formlio/forml)](https://github.com/formlio/forml/pulls)
[![Contributors](https://img.shields.io/github/contributors/formlio/forml)](https://github.com/formlio/forml/graphs/contributors)
[![Last Commit](https://img.shields.io/github/last-commit/formlio/forml)](https://github.com/formlio/forml/commits/main)

ForML is a development framework for researching and implementing data science projects as well
as an MLOps platform capable of managing their entire life cycles.

Use ForML to formally describe a data science problem as a composition of high-level operators.
ForML expands your project into a task dependency graph specific to the given life-cycle phase and
executes it using any of its supported technologies while taking care of all of its operational
requirements.

Solutions built on ForML are naturally easy to reuse, extend, reproduce, or share and
collaborate on.


Not Just Another DAG
--------------------

Despite DAG (directed acyclic graph) being at the heart of ForML operations, it stands out among
the many other task dependency processing systems due to its:

1. Specialization in machine learning problems wired right into the flow topology.
2. Concept of high-level operator composition helping to wrap complex ML techniques into simple
   reusable units.
3. Abstraction of runtime dependencies allowing to implement fully portable projects that can be
   operated interchangeably using different technologies.


History
-------

ForML started as a response addressing the notoriously painful process of transitioning any
data science research into production. The framework was initially developed by a group of
data scientists and ML engineers seeking to minimize the effort traditionally required to
productionize any typical ML solution. Becoming increasingly useful to its original authors,
ForML has been released as a community-driven project.


Resources
---------

* [Documentation](https://docs.forml.io/en/latest/)
* [Source Code](https://github.com/formlio/forml/)
* [Chat Room](https://gitter.im/formlio/community/)
* [Issue Tracker](https://github.com/formlio/forml/issues/)
* [PyPI Repository](https://pypi.org/project/forml/)
