Metadata-Version: 2.1
Name: hangar
Version: 0.2.0
Summary: Hangar is version control for tensor data. Commit, branch, merge, revert, and collaborate in the data-defined software era.
Home-page: https://github.com/tensorwerk/hangar-py
Author: Richard Izzo
Author-email: rick@tensorwerk.com
License: Apache 2.0
Project-URL: Documentation, https://hangar-py.readthedocs.io/
Project-URL: Changelog, https://hangar-py.readthedocs.io/en/latest/changelog.html
Project-URL: Issue Tracker, https://github.com/tensorwerk/hangar-py/issues
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Database
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Utilities
Requires-Python: >= 3.6.0
Requires-Dist: blosc
Requires-Dist: click
Requires-Dist: grpcio
Requires-Dist: h5py (==2.9.0)
Requires-Dist: lmdb (<=0.96,>=0.94)
Requires-Dist: msgpack (==0.6.1)
Requires-Dist: numpy
Requires-Dist: pyyaml
Requires-Dist: tqdm
Requires-Dist: wrapt
Provides-Extra: all
Requires-Dist: grpcio-tools ; extra == 'all'
Requires-Dist: mypy (>=0.701) ; extra == 'all'
Requires-Dist: mypy-protobuf ; extra == 'all'
Provides-Extra: dev
Requires-Dist: grpcio-tools ; extra == 'dev'
Requires-Dist: mypy (>=0.701) ; extra == 'dev'
Requires-Dist: mypy-protobuf ; extra == 'dev'

========
Overview
========

.. start-badges

.. list-table::
    :stub-columns: 1

    * - docs
      - |docs|
    * - tests
      - | |travis| |appveyor|
        | |codecov|
    * - package
      - | |version| |wheel| |supported-versions| |supported-implementations|
        | |commits-since|
.. |docs| image:: https://readthedocs.org/projects/hangar-py/badge/?style=flat
    :target: https://readthedocs.org/projects/hangar-py
    :alt: Documentation Status

.. |travis| image:: https://travis-ci.org/tensorwerk/hangar-py.svg?branch=master
    :alt: Travis-CI Build Status
    :target: https://travis-ci.org/tensorwerk/hangar-py

.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/tensorwerk/hangar-py?branch=master&svg=true
    :alt: AppVeyor Build Status
    :target: https://ci.appveyor.com/project/rlizzo/hangar-py

.. |codecov| image:: https://codecov.io/gh/tensorwerk/hangar-py/branch/master/graph/badge.svg
   :alt: Code Coverage
   :target: https://codecov.io/gh/tensorwerk/hangar-py

.. |version| image:: https://img.shields.io/pypi/v/hangar.svg
    :alt: PyPI Package latest release
    :target: https://pypi.org/project/hangar

.. |commits-since| image:: https://img.shields.io/github/commits-since/tensorwerk/hangar-py/v0.2.0.svg
    :alt: Commits since latest release
    :target: https://github.com/tensorwerk/hangar-py/compare/v0.2.0...master

.. |wheel| image:: https://img.shields.io/pypi/wheel/hangar.svg
    :alt: PyPI Wheel
    :target: https://pypi.org/project/hangar

.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/hangar.svg
    :alt: Supported versions
    :target: https://pypi.org/project/hangar

.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/hangar.svg
    :alt: Supported implementations
    :target: https://pypi.org/project/hangar


.. end-badges

Hangar is version control for tensor data. Commit, branch, merge, revert, and
collaborate in the data-defined software era.

* Free software: Apache 2.0 license

What is Hangar?
===============

Hangar is based off the belief that too much time is spent collecting, managing,
and creating home-brewed version control systems for data. At it's core Hangar
is designed to solve many of the same problems faced by traditional code version
control system (ie. ``Git``), just adapted for numerical data:

* Time travel through the historical evolution of a dataset.
* Zero-cost Branching to enable exploratory analysis and collaboration
* Cheap Merging to build datasets over time (with multiple collaborators)
* Completely abstracted organization and management of data files on disk
* Ability to only retrieve a small portion of the data (as needed) while still
  maintaining complete historical record
* Ability to push and pull changes directly to collaborators or a central server
  (ie a truly distributed version control system)

The ability of version control systems to perform these tasks for codebases is
largely taken for granted by almost every developer today; However, we are
in-fact standing on the shoulders of giants, with decades of engineering which
has resulted in these phenomenally useful tools. Now that a new era of
"Data-Defined software" is taking hold, we find there is a strong need for
analogous version control systems which are designed to handle numerical data at
large scale... Welcome to Hangar!


The Hangar Workflow:

::

       Checkout Branch
              |
              ▼
     Create/Access Data
              |
              ▼
    Add/Remove/Update Samples
              |
              ▼
           Commit

Log Style Output:

.. code-block:: text

   *   5254ec (master) : merge commit combining training updates and new validation samples
   |\
   | * 650361 (add-validation-data) : Add validation labels and image data in isolated branch
   * | 5f15b4 : Add some metadata for later reference and add new training samples received after initial import
   |/
   *   baddba : Initial commit adding training images and labels


Learn more about what Hangar is all about at https://hangar-py.readthedocs.io/


Installation
============

Hangar is in early alpha development release!

::

    pip install hangar

Documentation
=============

https://hangar-py.readthedocs.io/


Development
===========

To run the all tests run::

    tox

Note, to combine the coverage data from all the tox environments run:

.. list-table::
    :widths: 10 90
    :stub-columns: 1

    - - Windows
      - ::

            set PYTEST_ADDOPTS=--cov-append
            tox

    - - Other
      - ::

            PYTEST_ADDOPTS=--cov-append tox


