pulsar-app 0.15.14
Distributed job execution application built for Galaxy (http://galaxyproject.org/).
License: Apache License 2.0
Keywords: pulsar

.. figure:: https://galaxyproject.org/images/galaxy-logos/pulsar_transparent.png
   :alt: Pulsar Logo

.. image:: https://readthedocs.org/projects/pulsar/badge/?version=latest
   :target: http://pulsar.readthedocs.io/en/latest/?badge=latest
   :alt: Documentation Status
.. image:: https://badge.fury.io/py/pulsar-app.svg
   :target: https://pypi.python.org/pypi/pulsar-app/
   :alt: Pulsar on the Python Package Index (PyPI)
.. image:: https://travis-ci.org/galaxyproject/pulsar.png?branch=master
   :target: https://travis-ci.org/galaxyproject/pulsar
   :alt: Build Status
.. image:: https://coveralls.io/repos/galaxyproject/pulsar/badge.png?branch=master
   :target: https://coveralls.io/r/galaxyproject/pulsar?branch=master
   :alt: Test Coverage

This project is a Python server application that allows a `Galaxy
<http://galaxyproject.org>`_ server to run jobs on remote systems (including
Windows) without requiring a shared mounted file systems. Unlike traditional
Galaxy job runners - input files, scripts, and config files may be transferred
to the remote system, the job is executed, and the results are transferred back
to the Galaxy server - eliminating the need for a shared file system.

Full documentation for the project can be found on `Read The Docs
<https://pulsar.readthedocs.io/>`_.

------------------
Configuring Galaxy
------------------

Galaxy job runners are configured in Galaxy's ``job_conf.xml`` file. Some small
examples of how to configure this can be found `here
<https://pulsar.readthedocs.org/en/latest/galaxy_conf.html>`__, but be sure
to check out ``job_conf.xml.sample_advanced`` in your Galaxy code base or on
`Github
<https://github.com/galaxyproject/galaxy/blob/master/config/job_conf.xml.sample_advanced>`_
for complete information.

------------------
Quickstart
------------------

Full details on different ways to install Pulsar can be found in the `install
section <https://pulsar.readthedocs.org/en/latest/install.html>`__ of the
documentaiton, but if your machine has the proper Python dependencies
available it can be quickly download and a test job run with::

    $ mkdir pulsar
    $ cd pulsar
    $ python3 -m venv venv
    $ . venv/bin/activate    # venv\Scripts\activate.bat on Windows
    $ pip install 'pulsar-app[web]'
    $ pulsar-config
    $ pulsar --daemon        # just `pulsar` on Windows
    $ pulsar-check           # runs a test job

Please note that as of the 0.14.0 release, Pulsar no longer supports any version
of Python 2. The minimum supported Python version is 3.5.

The `configuration documentation
<https://pulsar.readthedocs.org/en/latest/configure.html>`__
has many details on securing your Pulsar server and enabling advanced features
such as cluster integration and message queue communication.

-----------------------
Development and Testing
-----------------------

The recommended approach to setting up a development environment for Pulsar on
Linux or macOS is rougly as follows::

    $ git clone https://github.com/galaxyproject/pulsar
    $ cd pulsar
    $ python3 -m venv .venv
    $ . .venv/bin/activate    # .venv\Scripts\activate on Windows
    $ pip install -e '.[web]'
    $ pip install -r dev-requirements.txt

The ``-e`` flag to ``pip`` installs Pulsar in "editable" mode, meaning that
changes you make to the source code will be reflected when running the pulsar
commands installed in the virtual environment.

This project is distributed with unit and integration tests (many of which will
not run under Windows), the following command will install the needed python
components to run these tests. The following command will then run these tests::

    $ make tests

The following command will then produce a coverage report corresponding to this
test and place it in the ``coverage_html_report`` subdirectory of this
project.::

    $ coverage html

Check out the `Contributing
<https://pulsar.readthedocs.org/en/latest/contributing.html>`_ documentation
for many more details on developing and contributing to Pulsar.

Please note that this project is released with a `Contributor Code of Conduct 
<https://pulsar.readthedocs.org/en/latest/conduct.html>`__. By participating
in this project you agree to abide by its terms.

-----------------------
Support
-----------------------

This documentation is an incomplete work in progress. There are more ways to
configure and use Pulsar than are documented, and a growing number of Pulsar
experts who would be more than happy to answer your questions and help with any
problems you may run in to while setting up a Pulsar deployment. Please do not
hesitate to reach out on the `Galaxy Admins Gitter Channel`_

.. _Galaxy Admins Gitter Channel: https://gitter.im/galaxyproject/admins




History
-------

.. to_doc

---------------------
0.15.14 (2025-01-20)
---------------------
* Fix install_wheel test by switching to docker and disabling
  ``outputs_to_working_directory`` (thanks to `@mvdbeek`_). `Pull Request 436`_
* Add no-op BaseAction.write_from_path for actions that don't need staging
  (thanks to `@mvdbeek`_). `Pull Request 435`_

---------------------
0.15.13 (2026-01-12)
---------------------
* Restrict collection of dynamic working dir output to specified directory
  (thanks to `@mvdbeek`_). `Pull Request 432`_
* Documentation fixes (thanks to `@nsoranzo`_). `Pull Request 433`_
* Implement pulsar-relay retry handling, improve message resume (thanks to
  `@mvdbeek`_). `Pull Request 421`_
* Better cleanup after external DRMAA and condor jobs (thanks to `@bernt-matthias`_).
  `Pull Request 429`_

---------------------
0.15.12 (2025-11-28)
---------------------

* Avoid pastescript for config file parsing (thanks to `@mvdbeek`_). `Pull Request 426`_
* Fix relay docs (thanks to `@mvdbeek`_). `Pull Request 420`_
* Add pulsar relay mode (thanks to `@mvdbeek`_). `Pull Request 419`_
* CI improvements and type annotations (thanks to `@nsoranzo`_). `Pull Request 418`_

---------------------
0.15.11 (2025-09-30)
---------------------

* Support collecting dirs via ``from_work_dir`` (thanks to `@mvdbeek`_). `Pull Request 410`_
* Enable dependabot version updates for GitHub actions (thanks to
  `@nsoranzo`_). `Pull Request 411`_
* Update release information docs. `Pull Request 409`_

---------------------
0.15.10 (2025-09-04)
---------------------

* Implement GCP Batch co-execution job runner.
  `Pull Request 404`_
* Customizable Pulsar test file server port and files endpoint
  (thanks to `@kysrpex`_). `Pull Request 406`_

---------------------
0.15.9 (2025-07-17)
---------------------
* Support HTCondor in CLUSTER_SLOTS_STATEMENT.sh (thanks to `@kysrpex`_).
  `Pull Request 405`_
* BasicAuth for PulsarTesRunner (thanks to `@BorisYourich`_). `Pull Request
  391`_
* Move `get_pulsar_app_config()` and `_ensure_manager_config()`  (thanks to
  `@jmchilton`_). `Pull Request 402`_

---------------------
0.15.8 (2025-06-09)
---------------------
* Add a deploy CI workflow (thanks to `@nsoranzo`_). `Pull Request 387`_
* Fix staging location of legacy tool files (thanks to `@mvdbeek`_). `Pull
  Request 398`_
* Add procps so we can inspect running processes from within pulsar (thanks to
  `@nuwang`_). `Pull Request 397`_
* Share docker group between pulsar and dind (thanks to `@nuwang`_). `Pull
  Request 396`_
* Add dind and apptainer support (thanks to `@nuwang`_). `Pull Request 395`_
* Docker image for kubernetes helm chart (thanks to `@nuwang`_). `Pull Request
  378`_

---------------------
0.15.7 (2025-03-13)
---------------------
* Fix transfer of remote directories (thanks to `@mvdbeek`_). `Pull Request 385`_
* Add health check endpoint (thanks to `@nuwang`_). `Pull Request 382`_
* Prepare dirs from Galaxy, to properly recover resubmitted jobs (thanks to
  `@natefoo`_). `Pull Request 380`_
* Replace obsolete package types-pkg-resources with types-setuptools (thanks
  to `@nuwang`_). `Pull Request 383`_
* Drop nose (thanks to `@neoformit`_). `Pull Request 333`_
* Open tool file contents in `rb` (thanks to `@mvdbeek`_). `Pull Request 372`_
* Do not attempt to complete pre- or post-process if jobs are cancelled in the
  middle of either stage (thanks to `@natefoo`_). `Pull Request 365`_
* Update job_managers.rst (thanks to `@peterg1t`_). `Pull Request 360`_
* Send accept-encoding: identity to get correct content-length on head …
  (thanks to `@mvdbeek`_). `Pull Request 361`_

---------------------
0.15.6 (2024-01-15)
---------------------
* Allow tus uploads to Galaxy.
  `Pull Request 351`_

---------------------
0.15.5 (2023-09-15)
---------------------
* Add catchall OSError to recoverable exceptions (thanks to `@mvdbeek`_).
  `Pull Request 338`_

---------------------
0.15.4 (2023-08-29)
---------------------
* Add .readthedocs.yaml (thanks to `@natefoo`_). `Pull Request 332`_
* Add explicit TimeoutError catching (thanks to `@mvdbeek`_). `Pull Request 337`_
* Update galaxy-job-metrics requirement (thanks to `@cat-bro`_). `Pull Request 334`_

---------------------
0.15.3 (2023-07-20)
---------------------
* Fix Pulsar consumer state after ``ConnectionResetError``. `Pull Request 331`_
* User auth plugins (thanks to `@SergeyYakubov`_). `Pull Request 321`_

---------------------
0.15.2 (2023-05-02)
---------------------
* Fix Pulsar and Pulsar client reconnection to AMQP server. `Pull Request 324`_
* Reduce verbosity of timeout exception catching. `Pull Request 325`_

---------------------
0.15.1 (2023-04-13)
---------------------
* No changes, working around pypi isssue.

---------------------
0.15.0 (2023-04-13)
---------------------

* Updated Galaxy+Pulsar container. `Pull Request 306`_
* Rework container execution - generalize Kubernetes execution to allow it to work without a
  message queue and to allow TES execution based on pydantic-tes (https://github.com/jmchilton/pydantic-tes). `Pull Request 302`_
* Add documentation and diagrams for container execution scenarios. `Pull Request 302`_
* Rework integration tests to use pytest more aggressively.
* Fixes to CI to run more tests that weren't being executed because Tox was not sending
  environment variables through to pytest.
* Add option ``amqp_key_prefix`` to direct task queue naming while retaining simple
  default manager names and such in container scheduling deployments. `Pull Request 315`_
* Various typing and CI fixes. `Pull Request 312`_, `Pull Request 319`_
* Fixes for extra_file handling. `Pull Request 318`_
* Separate tool_stdio and job_stdio handling. `Pull Request 318`_
* Re-import MEMORY_STATEMENT.sh from Galaxy. `Pull Request 297`_
* Add support for logging to sentry. `Pull Request 322`_

---------------------
0.14.16 (2022-10-04)
---------------------

* Fix small regression related to building URLs for client action mapping.

---------------------
0.14.15 (2022-10-03)
---------------------

* Fix small regressions bugs in 0.14.14 - updating runner util code was bigger swap over
  than it seemed.

---------------------
0.14.14 (2022-10-30)
---------------------

* Bring in updated Galaxy runner util code. `Pull Request 303`_
* Fix recovering "lost" jobs where the job directory does not exist at
  startup/recovery time (thanks to `@natefoo`_). `Pull Request 301`_
* Use urlencode to encode path (thanks to `@mvdbeek`_). `Pull Request 299`_
* Support the k8s_job_ttl_secs_after_finished option as in the Galaxy
  Kubernetes runner (thanks to `@natefoo`_). `Pull Request 287`_

---------------------
0.14.13 (2021-12-06)
---------------------

* Don't pass all environment variables to jobs launched by `Manager` (thanks
  to `@nsoranzo`_).
  `Pull Request 295`_
* Drop legacy job conf for Galaxy framework tests, test against
  ``metadata_strategy: extended`` (thanks to `@mvdbeek`_).
  `Pull Request 294`_

---------------------
0.14.12 (2021-11-10)
---------------------

* Fixes to bring HOME and temp directory handling closer to Galaxy native runners.
* Enable globbed from_work_dir outputs for remote metadata.

---------------------
0.14.11 (2021-07-19)
---------------------

* Fix and test for returncode handling in certain cases. `Pull Request 274`_
* Modernize tox. `Pull Request 271`_

---------------------
0.14.10 (2021-07-17)
---------------------

* Don't error out if annotated galaxy.json is absent. `Pull Request 270`_

---------------------
0.14.9 (2021-07-16)
---------------------

* Implement dynamic file sources abstraction for parsing files to transfer
  from ``galaxy.json`` files. `Pull Request 269`_
* Use tool classes to only test remote Galaxy tools. `Pull Request 266`_
* Run Galaxy framework tests against dev and master branches of Galaxy (thanks
  to `@mvdbeek`_). `Pull Request 264`_

---------------------
0.14.8 (2021-07-14)
---------------------

* Fix Galaxy composite input references. `Pull Request 262`_
* Run galaxy's tool framework tests against this repo's pulsar (thanks to
  `@mvdbeek`_). `Pull Request 259`_
    
---------------------
0.14.7 (2021-07-13)
---------------------

* Accept description of tool files to transfer from Galaxy.
  `Pull Request 261`_
* Support globs in from_work_dir outputs (thanks to `@natefoo`_).
  `Pull Request 257`_
* Fix loading the Galaxy dependency resolvers config, plus additional config
  directory fixes (thanks to `@natefoo`_). `Pull Request 256`_

---------------------
0.14.6 (2021-05-24)
---------------------

* Fix for newer Galaxy tool profiles having isolated home directories.

---------------------
0.14.5 (2021-04-15)
---------------------

* Potential fix for setting file actions via job destination parameters.

---------------------
0.14.4 (2021-04-14)
---------------------

* Re-attempt release process - published wrong branch with 0.14.3.

---------------------
0.14.3 (2021-04-13)
---------------------

* Allow transferring fewer files from Pulsar when using extended metadata with
  Galaxy.

---------------------
0.14.2 (2021-02-15)
---------------------

* Fix the use of requests, limits, and walltime with coexecution pods. `Pull Request 246`_

---------------------
0.14.1 (2021-02-02)
---------------------

* Fix the use of named managers with coexecution pods. `Pull Request 242`_

---------------------
0.14.0 (2020-09-17)
---------------------

* fix the PyYAML "load() deprecation" warning (thanks to `@gmauro`_). `Pull
  Request 232`_
* Set the DRMAA workingDirectory to the job's working directory
  `Pull Request 230`_
* Fix a unicode issue and polish a bit of variables (thanks to `@gmauro`_).
  `Pull Request 229`_
* Respond to MQ messages requesting status updates. `Pull Request 228`_
* Fix REST connections broken with Py3 using standard transport `Issue 227`_
  `Pull Request 231`_
* Drop Python 2.7 support in standard transport, drop Python 2.7 tests and fix
  Python 3.7 wheel install test, general test debugging enhancements.
  `Pull Request 231`_
* drop python 2.6 and add 3.7 and update the testing infrastructure to a more
  recent Ubuntu setup (thanks to `@bgruening`_). `Pull Request 226`_
* Use is_alive in favour of isAlive for Python 3.9 compatibility (thanks to
  `@tirkarthi`_). `Issue 224`_ `Pull Request 225`_
* Request and register ports for Galaxy ITs when using Kubernetes.
  `Pull Request 223`_
* Implement killing k8s jobs. `Pull Request 221`_
* Respond to MQ messages requesting status updates.
  `Pull Request 228`_
* Drop python 2.6 and add 3.7 and update the testing infrastructure to a more
  recent Ubuntu setup (thanks to `@bgruening`_). `Pull Request 226`_
* Add a more descriptive message in case of error parsing an external id
  (thanks to `@gmauro`_). `Pull Request 213`_
* Use requests (thanks to `@mvdbeek`_). `Pull Request 216`_
* Use is_alive in favour of isAlive for Python 3.9 compatibility (thanks to
  `@tirkarthi`_). `Pull Request 225`_
* Debug connection string for AMQP.
  `Pull Request 217`_
* Various small Kubernetes fixes and enhancements.
  `Pull Request 218`_, `Pull Request 219`_
* Improvements and fixes to container handling.
  `Pull Request 202`_
* Fix a typo in exception logging thanks to @erasche.
  `Pull Request 203`_
* Cleanup config file handling a bit by removing branch for very
  old Pulsar servers likely no longer supported.
  `Pull Request 201`_

---------------------
0.13.1 (2020-09-16)
---------------------

* Pinned all listed requirements. This is the final version of Pulsar to support Python 2.

---------------------
0.13.0 (2019-06-25)
---------------------

* Various improvements and simplifications to Kubernetes job execution.

---------------------
0.12.1 (2019-06-03)
---------------------

* Retry botched release that didn't include all relevant commits.

---------------------
0.12.0 (2019-06-03)
---------------------

* Revise Python Galaxy dependencies to use newer style Galaxy decomposition.
  galaxy-lib can no longer be installed in Pulsar's environment, so you will
  likely need to rebuild your Pulsar virtualenv for this release.
  `Pull Request 187`_
* Add a ``Dockerfile`` for Pulsar with CVMFS (thanks to `@nuwang`_ and `@afgane`).
  `Pull Request 166`_
* Various small improvements to Kubernetes pod execution environment.
  `Pull Request 190`_
* Improve readme linting.
  `Pull Request 186`_
* Update example docs for Condor (thanks to `@bgruening`_).
  `Pull Request 189`_

---------------------
0.11.0 (2019-05-16)
---------------------

* Implement staging Galaxy metadata input files in the client.
  39de377_
* Fix 'amqp_ack_republish_time' in sample (thanks to `@dannon`_).
  `Pull Request 185`_
* Updated amqp_url in job_conf_sample_mq_rsync.xml (thanks to `@AndreasSko`_).
  `Pull Request 184`_
* Use wildcard char for pulsar version (thanks to `@VJalili`_).
  `Pull Request 181`_
* Refactor toward more structured inputs. f477bc4_
* Refactor toward passing objectstore identifying information around.
  `Pull Request 180`_
* Rework imports for new Galaxy library structure. da086c9_
* Revert empty input testing, it really probably should cause a failure
  to transfer a non-existent file.
  8bd5511_
* Better client mapper documentation. b6278b4_

---------------------
0.10.0 (2019-05-06)
---------------------

* Implement support for Kubernetes two container pod jobs - staging and
  tool execution as separate containers in the same job's pod.
  `Pull Request 176`_, `Pull Request 178`_

---------------------
0.9.1 (2019-05-01)
---------------------

* Fix duplicate inputs being a problem when staging Galaxy files.
  `Pull Request 175`_
* Fix deprecated ``assertEquals()`` (thanks to @nsoranzo). `Pull Request 173`_
* Fix a method missing problem. `Pull Request 174`_
* Sync "recent" galaxy runner util changes. `Pull Request 177`_

---------------------
0.9.0 (2019-04-12)
---------------------
    
* Add configuration parameter to limit stream size read from disk. `Pull
  Request 157`_
* Pass full job status for failed and lost jobs. `Pull Request 159`_
* Improve message handling if problems occur during job setup/staging. `Pull
  Request 160`_
* Rework preprocessing job state to improve restartability and reduce job loss.
  **This change should be applied while no jobs are running.**
  `Pull Request 164`_
* Add support for overriding config through environment variables (thanks to
  @nuwang). `Pull Request 165`_
* Minor docs updates (thanks to @afgane). `Pull Request 170`_
* Python 3 fixes in Pulsar client (thanks to `@mvdbeek`_). `Pull Request 172`_

---------------------
0.8.3 (2018-02-08)
---------------------

* Create universal wheels to enable Python 3 support when installing from PyPI
  (thanks to @nsoranzo).
  `Pull Request 156`_

---------------------
0.8.1 (2018-02-08)
---------------------

* Update link for logo image. `Pull Request 145`_
* Minor error and log message typos (thanks to @blankenberg).
  `Pull Request 146`_, `Pull Request 153`_
* Fixes/improvements for catching quoted tool files. `Pull Request 148`_
* Fix config sample parsing so run.sh works out of the box.
  `Pull Request 149`_

---------------------
0.8.0 (2017-09-21)
---------------------

* Support new features in Galaxy job running/scripting so that Pulsar respects
  ``$GALAXY_VIRTUAL_ENV`` and ``$PRESERVE_GALAXY_ENVIRONMENT``. Fix remote
  metadata in cases where the tool environment changes the ``python`` on
  ``$PATH``. `Pull Request 137`_
* Precreate Galaxy tool outputs on the remote before executing (fixes a bug
  related to missing output files on stage out). `Pull Request 141`_
* Support the remote_transfer file action without setting the
  ``jobs_directory`` destination param `Pull Request 136`_
* Fix invalid character in job managers documentation (thanks to @mapa17).
  `Pull Request 130`_
* Fix ``conda_auto_*`` option resolution and include a sample
  ``dependency_resolvers_conf.xml`` (thanks to @mapa17). `Pull Request 132`_
* Fix tox/Travis tests. `Pull Request 138`_, `Pull Request 139`_,
  `Pull Request 140`_
* Fix a bug with AMQP acknowledgement. `Pull Request 143`_

---------------------
0.7.4 (2017-02-07)
---------------------

* Fix Conda resolution and add a test case. 11ce744_
* Style fixes for updated flake8 libraries. 93ab8a1_, 3573341_
* Remove unused script. 929bffa_
* Fixup README. 629fdea_
    

---------------------
0.7.3 (2016-10-31)
---------------------

* Fix  "AttributeError" when submitting a job as a real user.
  `Pull Request 124`_, `Issue 123`_

---------------------
0.7.2 (2016-08-31)
---------------------

* Fix bug causing loops on in response to preprocessing error conditions.

---------------------
0.7.1 (2016-08-29)
---------------------

* Do a release to circumvent a tool version logic error in Galaxy (
  released Galaxy versions think 0.7.0 < 0.7.0.dev3).

---------------------
0.7.0 (2016-08-26)
---------------------

* Update Makefile to allow release pulsar as an application and a library 
  for Galaxy at the same time.
* Small update to test scripts for TravisCI changes.
* Improvements for embedded Galaxy runner. (TODO: fill this out)
* Remove support for Python 2.6. 60bf962_
* Update docs to describe project goverance and reuse Galaxy's
  Code of Conduct. 7e23d43_, dc47140_
* Updated cluster slots detection for SLURM from Galaxy. cadfc5a_
* Various changes to allow usage within Galaxy as a library. ce9d4f9_
* Various changes to allow embedded Pulsar managers within Galaxy.
  ce9d4f9_, d262323_, 8f7c04a_
* Introduce a separate working and metadata directory as required for
  Galaxy 16.04 that requires this separation. 6f4328e_
* Improve logging and comments. 38953f3_, a985107_, ad33cb9_
* Add Tox target for Python 2.7 unit testing. d7c524e_
* Add ``Makefile`` command for setup.py develop. fd82d00_

---------------------
0.6.1 (2015-12-23)
---------------------

* Tweak release process that left 0.6.0 with an incorrect PyPI description page.

---------------------
0.6.0 (2015-12-23)
---------------------

* Pulsar now depends on the new ``galaxy-lib`` Python package instead of
  manually synchronizing Python files across Pulsar and Galaxy.
* Numerous build and testing improvements.
* Fixed a documentation bug in the code (thanks to @erasche). e8814ae_
* Remove galaxy.eggs stuff from Pulsar client (thanks to @natefoo). 00197f2_
* Add new logo to README (thanks to @martenson). abbba40_
* Implement an optional awknowledgement system on top of the message queue
  system (thanks to @natefoo). `Pull Request 82`_ 431088c_
* Documentation fixes thanks to @remimarenco. `Pull Request 78`_, `Pull Request 80`_
* Fix project script bug introduced this cycle (thanks to @nsoranzo). 140a069_
* Fix config.py on Windows (thanks to @ssorgatem). `Pull Request 84`_
* Add a job manager for XSEDE jobs (thanks to @natefoo). 1017bc5_
* Fix pip dependency installation (thanks to @afgane) `Pull Request 73`_

------------------------
0.5.0 (2015-05-08)
------------------------

* Allow cURL downloader to resume transfers during staging in (thanks to
  @natefoo). 0c61bd9_
* Fix to cURL downloaders status code handling (thanks to @natefoo). 86f95ce_
* Fix non-wheel installs from PyPI. `Issue 72`_
* Fix mesos imports for newer versions of mesos (thanks to @kellrott). fe3e919_
* More, better logging. 2b3942d_, fa2b6dc_

------------------------
0.4.0 (2015-04-20)
------------------------

* Python 3 support. `Pull Request 62`_
* Fix bug encountered when running ``pulsar-main`` and ``pulsar-config`` commands as scripts. 9d43ae0_
* Add ``pulsar-run`` script for issues commands against a Pulsar server (experimental). 3cc7f74_

------------------------
0.3.0 (2015-04-12)
------------------------

* Changed the name of project to Pulsar, moved to Github.
* New RESTful web services interface.
* SCP and Rsync file staging options added by E. Rasche. `Pull 
  Request <https://github.com/galaxyproject/pulsar/pull/34>`__
* Allow YAML based configuration.
* Support for more traditional ``pip``/``setup.py``-style
  installs.
* Dozens of smaller bugfixes and documentation updates.

---------------------
0.2.0
---------------------

* Last version named the LWR - found on `BitBucket <https://bitbucket.org/jmchilton/lwr>`__.
* Still supported in Galaxy as of 15.03 the release.
* Introduced support for submitting to various queueing systems,
  operation as a Mesos framework, Docker support, and
  various other advanced deployment options.
* Message queue support.
* Framework for configurable file actions introduced.

---------------------
0.1.0
---------------------

* Simple support for running jobs managed by the Python LWR
  web process.
* https://bitbucket.org/jmchilton/lwr/branch/0.1

---------------------
0.0.1
---------------------

* See the original `announcement <http://dev.list.galaxyproject.org/New-Remote-Job-Runner-td4138951.html>`__
  and `initial commit <https://github.com/galaxyproject/pulsar/commit/163ed48d5a1902ceb84c38f10db8cbe5a0c1039d>`__.


.. github_links
.. _Pull Request 436: https://github.com/galaxyproject/pulsar/pull/436
.. _Pull Request 435: https://github.com/galaxyproject/pulsar/pull/435
.. _Pull Request 432: https://github.com/galaxyproject/pulsar/pull/432
.. _Pull Request 433: https://github.com/galaxyproject/pulsar/pull/433
.. _Pull Request 421: https://github.com/galaxyproject/pulsar/pull/421
.. _Pull Request 431: https://github.com/galaxyproject/pulsar/pull/431
.. _Pull Request 430: https://github.com/galaxyproject/pulsar/pull/430
.. _Pull Request 429: https://github.com/galaxyproject/pulsar/pull/429
.. _Pull Request 426: https://github.com/galaxyproject/pulsar/pull/426
.. _Pull Request 420: https://github.com/galaxyproject/pulsar/pull/420
.. _Pull Request 419: https://github.com/galaxyproject/pulsar/pull/419
.. _Pull Request 418: https://github.com/galaxyproject/pulsar/pull/418
.. _Pull Request 411: https://github.com/galaxyproject/pulsar/pull/411
.. _Pull Request 409: https://github.com/galaxyproject/pulsar/pull/409
.. _Pull Request 410: https://github.com/galaxyproject/pulsar/pull/410
.. _Pull Request 404: https://github.com/galaxyproject/pulsar/pull/404
.. _Pull Request 406: https://github.com/galaxyproject/pulsar/pull/406
.. _Pull Request 405: https://github.com/galaxyproject/pulsar/pull/405
.. _Pull Request 391: https://github.com/galaxyproject/pulsar/pull/391
.. _Pull Request 402: https://github.com/galaxyproject/pulsar/pull/402
.. _Pull Request 387: https://github.com/galaxyproject/pulsar/pull/387
.. _Pull Request 398: https://github.com/galaxyproject/pulsar/pull/398
.. _Pull Request 397: https://github.com/galaxyproject/pulsar/pull/397
.. _Pull Request 396: https://github.com/galaxyproject/pulsar/pull/396
.. _Pull Request 395: https://github.com/galaxyproject/pulsar/pull/395
.. _Pull Request 378: https://github.com/galaxyproject/pulsar/pull/378
.. _Pull Request 385: https://github.com/galaxyproject/pulsar/pull/385
.. _Pull Request 382: https://github.com/galaxyproject/pulsar/pull/382
.. _Pull Request 380: https://github.com/galaxyproject/pulsar/pull/380
.. _Pull Request 383: https://github.com/galaxyproject/pulsar/pull/383
.. _Pull Request 333: https://github.com/galaxyproject/pulsar/pull/333
.. _Pull Request 372: https://github.com/galaxyproject/pulsar/pull/372
.. _Pull Request 365: https://github.com/galaxyproject/pulsar/pull/365
.. _Pull Request 360: https://github.com/galaxyproject/pulsar/pull/360
.. _Pull Request 361: https://github.com/galaxyproject/pulsar/pull/361

.. _Pull Request 351: https://github.com/galaxyproject/pulsar/pull/351
.. _Pull Request 338: https://github.com/galaxyproject/pulsar/pull/338
.. _Pull Request 332: https://github.com/galaxyproject/pulsar/pull/332
.. _Pull Request 337: https://github.com/galaxyproject/pulsar/pull/337
.. _Pull Request 334: https://github.com/galaxyproject/pulsar/pull/334
.. _Pull Request 331: https://github.com/galaxyproject/pulsar/pull/331
.. _Pull Request 321: https://github.com/galaxyproject/pulsar/pull/321
.. _Pull Request 325: https://github.com/galaxyproject/pulsar/pull/325
.. _Pull Request 324: https://github.com/galaxyproject/pulsar/pull/324
.. _Pull Request 322: https://github.com/galaxyproject/pulsar/pull/322
.. _Pull Request 318: https://github.com/galaxyproject/pulsar/pull/318
.. _Pull Request 319: https://github.com/galaxyproject/pulsar/pull/319
.. _Pull Request 312: https://github.com/galaxyproject/pulsar/pull/312
.. _Pull Request 315: https://github.com/galaxyproject/pulsar/pull/315
.. _Pull Request 306: https://github.com/galaxyproject/pulsar/pull/306
.. _Pull Request 297: https://github.com/galaxyproject/pulsar/pull/297
.. _Pull Request 302: https://github.com/galaxyproject/pulsar/pull/302
.. _Pull Request 303: https://github.com/galaxyproject/pulsar/pull/303
.. _Pull Request 301: https://github.com/galaxyproject/pulsar/pull/301
.. _Pull Request 299: https://github.com/galaxyproject/pulsar/pull/299
.. _Pull Request 295: https://github.com/galaxyproject/pulsar/pull/295
.. _Pull Request 294: https://github.com/galaxyproject/pulsar/pull/294
.. _Pull Request 287: https://github.com/galaxyproject/pulsar/pull/287
.. _Pull Request 271: https://github.com/galaxyproject/pulsar/pull/271
.. _Pull Request 274: https://github.com/galaxyproject/pulsar/pull/274
.. _Pull Request 270: https://github.com/galaxyproject/pulsar/pull/270
.. _Pull Request 269: https://github.com/galaxyproject/pulsar/pull/269
.. _Pull Request 266: https://github.com/galaxyproject/pulsar/pull/266
.. _Pull Request 264: https://github.com/galaxyproject/pulsar/pull/264
.. _Pull Request 262: https://github.com/galaxyproject/pulsar/pull/262
.. _Pull Request 259: https://github.com/galaxyproject/pulsar/pull/259
.. _Pull Request 261: https://github.com/galaxyproject/pulsar/pull/261
.. _Pull Request 257: https://github.com/galaxyproject/pulsar/pull/257
.. _Pull Request 256: https://github.com/galaxyproject/pulsar/pull/256
.. _Pull Request 246: https://github.com/galaxyproject/pulsar/pull/246
.. _Pull Request 242: https://github.com/galaxyproject/pulsar/pull/242
.. _Pull Request 232: https://github.com/galaxyproject/pulsar/pull/232
.. _Pull Request 230: https://github.com/galaxyproject/pulsar/pull/230
.. _Pull Request 229: https://github.com/galaxyproject/pulsar/pull/229
.. _Pull Request 228: https://github.com/galaxyproject/pulsar/pull/228
.. _Pull Request 231: https://github.com/galaxyproject/pulsar/pull/231
.. _Issue 227: https://github.com/galaxyproject/pulsar/issues/227
.. _Pull Request 226: https://github.com/galaxyproject/pulsar/pull/226
.. _Pull Request 225: https://github.com/galaxyproject/pulsar/pull/225
.. _Issue 224: https://github.com/galaxyproject/pulsar/issues/224
.. _Pull Request 228: https://github.com/galaxyproject/pulsar/pull/228
.. _Pull Request 226: https://github.com/galaxyproject/pulsar/pull/226
.. _Pull Request 213: https://github.com/galaxyproject/pulsar/pull/213
.. _Pull Request 216: https://github.com/galaxyproject/pulsar/pull/216
.. _Pull Request 225: https://github.com/galaxyproject/pulsar/pull/225
.. _Pull Request 223: https://github.com/galaxyproject/pulsar/pull/223
.. _Pull Request 217: https://github.com/galaxyproject/pulsar/pull/217
.. _Pull Request 218: https://github.com/galaxyproject/pulsar/pull/218
.. _Pull Request 219: https://github.com/galaxyproject/pulsar/pull/219
.. _Pull Request 221: https://github.com/galaxyproject/pulsar/pull/221
.. _Pull Request 202: https://github.com/galaxyproject/pulsar/pull/202
.. _Pull Request 203: https://github.com/galaxyproject/pulsar/pull/203
.. _Pull Request 201: https://github.com/galaxyproject/pulsar/pull/201
.. _Pull Request 190: https://github.com/galaxyproject/pulsar/pull/190
.. _Pull Request 166: https://github.com/galaxyproject/pulsar/pull/166
.. _Pull Request 186: https://github.com/galaxyproject/pulsar/pull/186
.. _Pull Request 187: https://github.com/galaxyproject/pulsar/pull/187
.. _Pull Request 189: https://github.com/galaxyproject/pulsar/pull/189
.. _Pull Request 185: https://github.com/galaxyproject/pulsar/pull/185
.. _Pull Request 184: https://github.com/galaxyproject/pulsar/pull/184
.. _Pull Request 181: https://github.com/galaxyproject/pulsar/pull/181
.. _Pull Request 180: https://github.com/galaxyproject/pulsar/pull/180
.. _da086c9: https://github.com/galaxyproject/pulsar/commit/da086c9
.. _8bd5511: https://github.com/galaxyproject/pulsar/commit/8bd5511
.. _b6278b4: https://github.com/galaxyproject/pulsar/commit/b6278b4
.. _39de377: https://github.com/galaxyproject/pulsar/commit/39de377
.. _f477bc4: https://github.com/galaxyproject/pulsar/commit/f477bc4
.. _Pull Request 178: https://github.com/galaxyproject/pulsar/pull/178
.. _Pull Request 176: https://github.com/galaxyproject/pulsar/pull/176
.. _Pull Request 173: https://github.com/galaxyproject/pulsar/pull/173
.. _Pull Request 174: https://github.com/galaxyproject/pulsar/pull/174
.. _Pull Request 175: https://github.com/galaxyproject/pulsar/pull/175
.. _Pull Request 177: https://github.com/galaxyproject/pulsar/pull/177
.. _Pull Request 172: https://github.com/galaxyproject/pulsar/pull/172
.. _Pull Request 170: https://github.com/galaxyproject/pulsar/pull/170
.. _Pull Request 165: https://github.com/galaxyproject/pulsar/pull/165
.. _Pull Request 164: https://github.com/galaxyproject/pulsar/pull/164
.. _Pull Request 160: https://github.com/galaxyproject/pulsar/pull/160
.. _Pull Request 159: https://github.com/galaxyproject/pulsar/pull/159
.. _Pull Request 157: https://github.com/galaxyproject/pulsar/pull/157
.. _Pull Request 156: https://github.com/galaxyproject/pulsar/pull/156
.. _Pull Request 145: https://github.com/galaxyproject/pulsar/pull/145
.. _Pull Request 146: https://github.com/galaxyproject/pulsar/pull/146
.. _Pull Request 148: https://github.com/galaxyproject/pulsar/pull/148
.. _Pull Request 149: https://github.com/galaxyproject/pulsar/pull/149
.. _Pull Request 153: https://github.com/galaxyproject/pulsar/pull/153
.. _Pull Request 143: https://github.com/galaxyproject/pulsar/pull/143
.. _Pull Request 141: https://github.com/galaxyproject/pulsar/pull/141
.. _Pull Request 136: https://github.com/galaxyproject/pulsar/pull/136
.. _Pull Request 137: https://github.com/galaxyproject/pulsar/pull/137
.. _Pull Request 140: https://github.com/galaxyproject/pulsar/pull/140
.. _Pull Request 139: https://github.com/galaxyproject/pulsar/pull/139
.. _Pull Request 138: https://github.com/galaxyproject/pulsar/pull/138
.. _Pull Request 132: https://github.com/galaxyproject/pulsar/pull/132
.. _Pull Request 130: https://github.com/galaxyproject/pulsar/pull/130
.. _11ce744: https://github.com/galaxyproject/pulsar/commit/11ce744
.. _3573341: https://github.com/galaxyproject/pulsar/commit/3573341
.. _93ab8a1: https://github.com/galaxyproject/pulsar/commit/93ab8a1
.. _929bffa: https://github.com/galaxyproject/pulsar/commit/929bffa
.. _629fdea: https://github.com/galaxyproject/pulsar/commit/629fdea
.. _Pull Request 124: https://github.com/galaxyproject/pulsar/pull/124
.. _Issue 123: https://github.com/galaxyproject/pulsar/issues/123
.. _ad33cb9: https://github.com/galaxyproject/pulsar/commit/ad33cb9
.. _d7c524e: https://github.com/galaxyproject/pulsar/commit/d7c524e
.. _fd82d00: https://github.com/galaxyproject/pulsar/commit/fd82d00
.. _a985107: https://github.com/galaxyproject/pulsar/commit/a985107
.. _38953f3: https://github.com/galaxyproject/pulsar/commit/38953f3
.. _6f4328e: https://github.com/galaxyproject/pulsar/commit/6f4328e
.. _8f7c04a: https://github.com/galaxyproject/pulsar/commit/8f7c04a
.. _cadfc5a: https://github.com/galaxyproject/pulsar/commit/cadfc5a
.. _d262323: https://github.com/galaxyproject/pulsar/commit/d262323
.. _ce0636a: https://github.com/galaxyproject/pulsar/commit/ce0636a
.. _ce9d4f9: https://github.com/galaxyproject/pulsar/commit/ce9d4f9
.. _dc47140: https://github.com/galaxyproject/pulsar/commit/dc47140
.. _7e23d43: https://github.com/galaxyproject/pulsar/commit/7e23d43
.. _60bf962: https://github.com/galaxyproject/pulsar/commit/60bf962
.. _Pull Request 73: https://github.com/galaxyproject/pulsar/pull/73
.. _1017bc5: https://github.com/galaxyproject/pulsar/commit/1017bc5
.. _Pull Request 84: https://github.com/galaxyproject/pulsar/pull/84
.. _140a069: https://github.com/galaxyproject/pulsar/commit/140a069
.. _Pull Request 78: https://github.com/galaxyproject/pulsar/pull/78
.. _Pull Request 80: https://github.com/galaxyproject/pulsar/pull/80
.. _Pull Request 82: https://github.com/galaxyproject/pulsar/pull/82
.. _abbba40: https://github.com/galaxyproject/pulsar/commit/abbba40
.. _00197f2: https://github.com/galaxyproject/pulsar/commit/00197f2
.. _431088c: https://github.com/galaxyproject/pulsar/commit/431088c
.. _e8814ae: https://github.com/galaxyproject/pulsar/commit/e8814ae
.. _fe3e919: https://github.com/galaxyproject/pulsar/commit/fe3e919
.. _2b3942d: https://github.com/galaxyproject/pulsar/commit/2b3942d
.. _fa2b6dc: https://github.com/galaxyproject/pulsar/commit/fa2b6dc
.. _0c61bd9: https://github.com/galaxyproject/pulsar/commit/0c61bd9
.. _86f95ce: https://github.com/galaxyproject/pulsar/commit/86f95ce
.. _Issue 72: https://github.com/galaxyproject/pulsar/issues/72
.. _3cc7f74: https://github.com/galaxyproject/pulsar/commit/3cc7f74
.. _9d43ae0: https://github.com/galaxyproject/pulsar/commit/9d43ae0
.. _Pull Request 62: https://github.com/galaxyproject/pulsar/pull/62
.. _@dannon: https://github.com/dannon
.. _@AndreasSko: https://github.com/AndreasSko
.. _@VJalili: https://github.com/VJalili
.. _@nuwang: https://github.com/nuwang
.. _@afgane: https://github.com/afgane
.. _@bgruening: https://github.com/bgruening
.. _@gmauro: https://github.com/gmauro
.. _@mvdbeek: https://github.com/mvdbeek
.. _@tirkarthi: https://github.com/tirkarthi
.. _@natefoo: https://github.com/natefoo
.. _@nsoranzo: https://github.com/nsoranzo
.. _@SergeyYakubov: https://github.com/SergeyYakubov
.. _@cat-bro: https://github.com/cat-bro
.. _@peterg1t: https://github.com/peterg1t
.. _@neoformit: https://github.com/neoformit
.. _@BorisYourich: https://github.com/BorisYourich
.. _@bernt-matthias: https://github.com/bernt-matthias
.. _@kysrpex: https://github.com/kysrpex
.. _@jmchilton: https://github.com/jmchilton