Metadata-Version: 2.1
Name: deepomatic-oef
Version: 0.10.1
Summary: Open Experiment Format
Home-page: https://github.com/Deepomatic/open-experiment-format
Author: Deepomatic
Author-email: support@deepomatic.com
License: MIT License
Project-URL: Product, https://deepomatic.com
Project-URL: Source, https://github.com/deepomatic/open-experiment-format
Project-URL: Tracker, https://github.com/deepomatic/open-experiment-format/issues
Platform: UNKNOWN
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
Description-Content-Type: text/markdown
Requires-Dist: protobuf (>=3.8)
Requires-Dist: requests (>=2.19.1)

# open-experiment-format
Open Experiment Format is a collection of protobufs that allows you to serialize an Experiment.

## Documentation

See https://deepomatic.github.io/open-experiment-format/

## Building and testing

Requirements:
- `protoc`: See http://google.github.io/proto-lens/installing-protoc.html
- `pytest`: run `pip3 install pytest` to install it.

Those requirements are already installed if you develop via `dmake shell oef`.

Then, simply run `make test` to launch tests.

## Structure

The code is divided into multiple subsections:
- [API](deepomatic/oef/api/README.md): contains abstract classes for DL architectures interfacing OEF with Thoth, as well as the `launch_experiment` function definition for launching a new training on Deepomatic Studio
- [Configuration](deepomatic/oef/configs/README.md): contains all the default configuration for all available DL architectures
- [Platform](deepomatic/oef/platform/README.md): interface between OEF and Deepomatic Studio
- [Protos](deepomatic/oef/protos/README.md): contains all the protobuf files
- [Utils](deepomatic/oef/utils/README.md): contains the `ExperimentBuilder` class and other utility functions

## How to deploy
This should be done after your pull request has been merged to master.

### Bump the version in `deepomatic/oef/__init__.py`

If you break the protobuf format since the last release, you need to:
- provide a migration file
- bump and commit the major version number and reset other numbers to 0.
- commit your changes

### Tag the commit
Once the pull request is merged, tag the (last) corresponding commit by doing:

```bash
git checkout commit_id
version=0.1.2
git tag -m "Release open-experiment-format v${version}" v${version}
git push origin v${version}
```

### Create a github release

- Start by doing `git fetch --tags --quiet --force` as a workaround for a bug in `dmake release`.
- Run `dmake release open-experiment-format` and select the tag you just released
- Dmake displays the URL of you release: you can edit the description to hide unnecessary commits

### Release the packages for this version on pypi

Open `dmake shell oef`, and simply run `make publish`. You will need to be admin on PyPi for it to work. If on MacOS, you should be
inside the ubuntu docker container to make sure you build a linux package (maybe not necessary, this has not been verified).

You  can check the release here: https://pypi.org/project/deepomatic-oef/#files

### Create a maintenance branch after release of a minor version

After a release of a minor version, create a new maintenance branch with name `maintenance-0.2.x`, where `0.2` should be replaced with the current major and minor version. This is the default branch from where patches should be released. All hotfixes on the master branch should also be merged on the maintenance branch.

### Bump the version in `deepomatic/oef/__init__.py`

You now bump the minor / patch version number to prepare for the next release:
- if you a on the master branch, modify the minor version number
- if you are on a maintenance branch, change the patch version.


