Enthought Application Manager

Enthought Application Manager (EAM) is a package used in the creation of EDM applications (see http://docs.enthought.com/edm/user/cli.html#edm-applications). Its inclusion in an EDM environment bundle identifies that bundle as an EDM application bundle, and provides capabilities required by EDM applications, notably one or more Python entry points (see https://setuptools.readthedocs.io/en/latest/setuptools.html#dynamic-discovery-of-services-and-plugins).

Setup

Create the development environment with the desired python version:

edm envs create eam-dev --version=2
edm install -e eam-dev haas enum34 mock testfixtures -y
edm run -e eam-dev -- pip install -e .
edm run -e eam-dev -- pip install -e examples/eam_example_app/

Note

  • Similarly a normal python or virtualenv environment can be used.
  • On Windows platforms one needs to also install comtypes
  • enum34 is only needed for python 2.7

Test

Run the tests in the development environment:

edm run -e eam-dev -- haas -v eam

Documentation

To build the documentation we need sphinx > 1.6.6 to be installed:

rm -rf docs/source/api
edm run -e eam-dev -- python setup.py build_sphinx --fresh-env

Using the ci console tool

The ci helper package in the source repository aids in setting up a development environment and running tests. It requires EDM, along with a Python bootstrap environment equipped with click.

To create a development environment, run:

python -m ci build

from the top-level of the repository, within the Python bootstrap environment.

To run tests for the eam EDM environment, do:

python -m ci test

To run tests under coverage:

python -m ci coverage

To run a style check:

python -m ci flake8

To build the documentation:

python -m ci doc

Release Workflow

To release a new version of EAM follow the steps below:

  1. Make a release PR, setting IS_RELEASED=True in setup.py and ensuring the changelog is updated. Wait for the tests to pass and merge the PR.
  2. Tag the release commit (using git tag -a) and push the new tag to github to create a new release.
  3. Make a tarball and upload it to sources.camuk.en (More details here https://github.com/enthought/buildsystem/wiki/Sources-storage-server)
  4. Request that the build team make a release by creating an issue at https://github.com/enthought/buildsystem/issues
  5. Make a followup PR that bumps the version to the next micro version, sets IS_RELEASED=FALSE, and updates the PREVIOUS_VERSION variable to the hash of the previous version in the master branch.
  6. When the build team releases the egg to EDM, build and publish any new documentation

History

Version 1.4.2

  • Fix issue where EAM failed to install applications (#142)
  • Fix issue where multi-word commands failed to launch via shortcut (#142)

Version 1.4.1

  • Fix broken shortcut bug (#138)

Version 1.4.0

  • Fix bug with shortcuts not activating app environment (#132)

Version 1.3.1

  • Update documentation for metadata changes (#116)
  • Adding documentation for execute command (#120)
  • Fix start command documentation (#124)

Version 1.3.0

  • Add support to create macos desktop shortcuts (#77)
  • Add support to create linux desktop shortcuts (#78)
  • Update command schema to designate application commands as CLI or GUI (#79)
  • Print valid JSON when no applications are registered (#81)
  • Fixing bug with osx shortcuts when an invalid icon path is set (#88)
  • Add default application metadata attribute (#92)
  • Fix ci command for building documentation (#96)
  • Adding version subcommand for python < 3.x (#98)
  • Writing info output to sys.stderr (#100)
  • building docs with enthought_sphinx_theme (#103)
  • fixing flake8 ci (#104)

Version 1.2.0

  • Update documentation for correct bundles upload command (#56)
  • Suppress tracebacks by default (#62)
  • Suppport passing arguments to registered eam start command (#49)
  • Add command eam execute (#48)
  • Better error reporting on missing application (#46)

Version 1.1.0

  • Update cli tests to be more robust when run on different consoles (#32).
  • Update tests to be more robust when more than the default eam_example_app entry point are installed (#33).
  • Support calling eam using python -m (#36).
  • rename package from ensetup to eam (#34).

Version 1.0.1

(bugfix release)

  • Fix test_logging tests (#28).
  • Add Examples to the sdist (#30).

Version 1.0.0

  • Update package license to enthought opensource (#15).
  • Add options for logging support (#7).
  • Add example egg for mayavi application bundle (#26).
  • Add cli commands for the shortcut group (#4).
  • Add cli commands for start, configure and remove (#6).
  • Add cli command for info (#2).
  • Define V1 of the application metadata (#2, #4)
  • Support auto-discovering application metadata using package_resources (#2)
  • Setup automatic test builds on travis and appveyor (#1, #9, #10)

Contributors

(alphabetically)

Andrew Collette Ioannis Tziakos (original author) Joe Rivera (maintainer)

LICENSE

This software is OSI Certified Open Source Software. OSI Certified is a certification mark of the Open Source Initiative.

Copyright (c) 2018, Enthought, Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of Enthought, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Indices and tables