Metadata-Version: 2.1
Name: datacube
Version: 1.7
Summary: An analysis environment for satellite and other earth observation data
Home-page: https://github.com/opendatacube/datacube-core
Author: Open Data Cube
Maintainer: Open Data Cube
Maintainer-email: 
License: Apache License 2.0
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: BSD
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.5.2
Requires-Dist: affine
Requires-Dist: cachetools
Requires-Dist: click (>=5.0)
Requires-Dist: cloudpickle (>=0.4)
Requires-Dist: dask[array]
Requires-Dist: gdal (>=1.9)
Requires-Dist: jsonschema
Requires-Dist: netcdf4
Requires-Dist: numpy
Requires-Dist: psycopg2
Requires-Dist: pypeg2
Requires-Dist: lark-parser (>=0.6.7)
Requires-Dist: python-dateutil
Requires-Dist: pyyaml
Requires-Dist: rasterio (>=1.0.2)
Requires-Dist: singledispatch
Requires-Dist: sqlalchemy
Requires-Dist: toolz
Requires-Dist: xarray (>=0.9)
Provides-Extra: all
Requires-Dist: SharedArray ; extra == 'all'
Requires-Dist: Sphinx ; extra == 'all'
Requires-Dist: boto3 ; extra == 'all'
Requires-Dist: bottleneck ; extra == 'all'
Requires-Dist: celery (>=4) ; extra == 'all'
Requires-Dist: ciso8601 ; extra == 'all'
Requires-Dist: compliance-checker ; extra == 'all'
Requires-Dist: dask[distributed] ; extra == 'all'
Requires-Dist: distributed ; extra == 'all'
Requires-Dist: fiona ; extra == 'all'
Requires-Dist: hypothesis ; extra == 'all'
Requires-Dist: matplotlib ; extra == 'all'
Requires-Dist: mock ; extra == 'all'
Requires-Dist: moto ; extra == 'all'
Requires-Dist: paramiko ; extra == 'all'
Requires-Dist: pathos ; extra == 'all'
Requires-Dist: pycodestyle ; extra == 'all'
Requires-Dist: pylint ; extra == 'all'
Requires-Dist: pytest ; extra == 'all'
Requires-Dist: pytest-cov ; extra == 'all'
Requires-Dist: pytest-httpserver ; extra == 'all'
Requires-Dist: pytest-timeout ; extra == 'all'
Requires-Dist: redis ; extra == 'all'
Requires-Dist: setuptools ; extra == 'all'
Requires-Dist: sshtunnel ; extra == 'all'
Requires-Dist: tqdm ; extra == 'all'
Requires-Dist: zstandard ; extra == 'all'
Provides-Extra: celery
Requires-Dist: celery (>=4) ; extra == 'celery'
Requires-Dist: redis ; extra == 'celery'
Provides-Extra: distributed
Requires-Dist: distributed ; extra == 'distributed'
Requires-Dist: dask[distributed] ; extra == 'distributed'
Provides-Extra: doc
Requires-Dist: Sphinx ; extra == 'doc'
Requires-Dist: setuptools ; extra == 'doc'
Provides-Extra: interactive
Requires-Dist: matplotlib ; extra == 'interactive'
Requires-Dist: fiona ; extra == 'interactive'
Provides-Extra: performance
Requires-Dist: ciso8601 ; extra == 'performance'
Requires-Dist: bottleneck ; extra == 'performance'
Provides-Extra: replicas
Requires-Dist: paramiko ; extra == 'replicas'
Requires-Dist: sshtunnel ; extra == 'replicas'
Requires-Dist: tqdm ; extra == 'replicas'
Provides-Extra: s3
Requires-Dist: boto3 ; extra == 's3'
Requires-Dist: SharedArray ; extra == 's3'
Requires-Dist: pathos ; extra == 's3'
Requires-Dist: zstandard ; extra == 's3'
Provides-Extra: test
Requires-Dist: compliance-checker ; extra == 'test'
Requires-Dist: hypothesis ; extra == 'test'
Requires-Dist: mock ; extra == 'test'
Requires-Dist: pycodestyle ; extra == 'test'
Requires-Dist: pylint ; extra == 'test'
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: pytest-timeout ; extra == 'test'
Requires-Dist: pytest-httpserver ; extra == 'test'
Requires-Dist: moto ; extra == 'test'

Open Data Cube Core
===================

|Build Status| |Coverage Status| |Documentation Status|

Overview
========

Open Data Cube Core provides an integrated gridded data
analysis environment for decades of analysis ready earth observation
satellite and related data from multiple satellite and other acquisition
systems.

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

See the `user guide <http://datacube-core.readthedocs.io/en/latest/>`__ for
installation & usage of the datacube, and for documentation of the API.

`Join our Slack <http://slack.opendatacube.org>`__ if you need help
setting up or using Data Cube Core.

Requirements
============

System
~~~~~~

-  PostgreSQL 9.5+
-  Python 3.5+

Developer setup
===============

1. Clone:

   -  ``git clone https://github.com/opendatacube/datacube-core.git``

2. Create a Python environment to use ODC within, we recommend `conda <https://docs.conda.io/en/latest/miniconda.html>`__ as the
   easiest way to handle Python dependencies.

::

   conda create -n odc -c conda-forge python=3.7 datacube pre_commit
   conda activate odc

3. Install a develop version of datacube-core.

::

   cd datacube-core
   pip install --upgrade -e .

4. Install the `pre-commit <https://pre-commit.com>`__ hooks to help follow ODC coding
   conventions when committing with git.

::

   pre-commit install

4. Run unit tests + PyLint

   ``./check-code.sh``

   (this script approximates what is run by Travis. You can
   alternatively run ``pytest`` yourself)

5. **(or)** Run all tests, including integration tests.

   ``./check-code.sh integration_tests``

   -  Assumes a password-less Postgres database running on localhost called

   ``agdcintegration``

   -  Otherwise copy ``integration_tests/agdcintegration.conf`` to
      ``~/.datacube_integration.conf`` and edit to customise.

Docker
======

Docker for Open Data Cube is in the early stages of development, and more documentation and examples of how 
to use it will be forthcoming soon. For now, you can build and run this Docker image from 
this repository as documented below.

Example Usage
~~~~~~~~~~~~~
There are a number of environment variables in use that can be used to configure the OpenDataCube.
Some of these are built into the application itself, and others are specific to Docker, and will 
be used to create a configuration file when the container is launched.

You can build the image with a command like this: 

``docker build --tag opendatacube:local .``

And it can then be run with this command:

``docker run --rm opendatacube:local``

If you don't need to build (and you shouldn't) then you can run it from a pre-built image with:

``docker run --rm opendatacube/datacube-core``

An example of starting a container with environment variables is as follows:

.. code-block:: bash

   docker run \
      --rm \
      -e DATACUBE_CONFIG_PATH=/opt/custom-config.conf \
      -e DB_DATABASE=mycube \
      -e DB_HOSTNAME=localhost \
      -e DB_USERNAME=postgres \
      -e DB_PASSWORD=secretpassword \
      -e DB_PORT=5432 \
      opendatacube/datacube-core


Additionally, you can run an Open Data Cube Docker container along with Postgres using the Docker Compose file.
For example, you can run ``docker-compose up`` and it will start up the Postgres server and Open Data Cube next to it. 
To run commands in ODC, you can use ``docker-compose run odc datacube -v system init`` or ``docker-compose run odc datacube --version``.


Environment Variables
~~~~~~~~~~~~~~~~~~~~~
Most of the below environment variables should be self explanatory, and none are required (although
it is recommended that you set them).

- ``DATACUBE_CONFIG_PATH`` - the path for the config file for writing (also used by ODC for reading)
- ``DB_DATABASE`` - the name of the postgres database
- ``DB_HOSTNAME`` - the hostname of the postgres database
- ``DB_USERNAME`` - the username of the postgres database
- ``DB_PASSWORD`` - the password to used for the postgres database
- ``DB_PORT`` - the port that the postgres database is exposed on


.. |Build Status| image:: https://travis-ci.org/opendatacube/datacube-core.svg?branch=develop
   :target: https://travis-ci.org/opendatacube/datacube-core
.. |Coverage Status| image:: https://coveralls.io/repos/opendatacube/datacube-core/badge.svg?branch=develop&service=github
   :target: https://coveralls.io/github/opendatacube/datacube-core?branch=develop
.. |Documentation Status| image:: https://readthedocs.org/projects/datacube-core/badge/?version=latest
   :target: http://datacube-core.readthedocs.org/en/latest/


