Changelog

2019-06-05  Jan Snigula  <snigula@mpe.mpg.de>

        * ocd/auto_schedule.py: Log warnings from autoschedule

2018-12-25  Jan Snigula  <snigula@mpe.mpg.de>

        * tests/*: Updates for the image quality update
        * setup.py: Added more dependencies
        * ocd/static/ocd.cfg: Added image_quality and valid_image_quality
        parameters
        * ocd/storage.py: Update to use moffat base image_quality
        metrology event

2018-12-14  Jan Snigula  <snigula@mpe.mpg.de>

        * ocd/static/ocd.cfg: Same
        * ocd/storage.py: use photometry_trans key from config
        * tests/*: More updates for the transparency update

2018-12-14  Jan Snigula  <snigula@mpe.mpg.de>

        * tests/*: Updates
        * ocd/config.py: Minor fix for testing
        * ocd/static/ocd.cfg: Added key for transparency
        * ocd/storage.py: Use PAS supplied transparency

2018-06-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/contributions.rst: update contribution docs with information
          about the new pytest option; resolves issue #2608

2018-06-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: add --force-tcs option to avoid using IPC; third part
          of issue #2608

2018-06-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: if the name is None or the path is longer that 105
          characters, use a TCP address; second part of issue #2608

2018-06-18  Francesco Montesano  <montefra@mpe.mpg.de>

        * tests/*py: replace ipc path creation with a fixture; first part of issue
          #2608

2018-06-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: now the illumination is included in the photometry.
          Resolves issue #2589
    * doc/source/ocd_decision.rst: update the docs accordingly
    * tests/test_storage.py: and the tests

2018-05-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ReleaseNotes.rst: update
    * doc/source/errors.rst: same
    * doc/source/storage.rst: same
    * doc/source/utils.rst: same
    * ReleaseNotes.md: delete

2018-05-17  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/metadata into ^trunk

2018-05-17  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^trunk into ^/branches/metadata

2018-05-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: all the database transactions need to be properly
          encapsulated

2018-05-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: use metadata instead of queue for uniformity
    * doc/source/ocd_decision.rst: same
    * tests/test_shots_db.py: same

2018-05-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: add metadata to the shot_dict. Resolves issue #2562
    * tests/test_auto_schedule.py: test it
    * tests/conftest.py: simplify the fixtures
    * tests/test_states.py: and use them

2018-05-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: add function to get the metadata
    * tests/test_shots_db.py: test it

2018-05-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: send the metadata in the subprocess running ``ocd
          run_shot``. Resolves issue #2565
    * tests/test_run_shot.py: update the tests

2018-05-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add the metadata command line option to ``ocd run_shot``
          command. Resolves issue #2564
    * tests/test_run_shot.py: test the new option
    * doc/source/ocd_executables.rst: update the docs

2018-05-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add metadata to the string formatting dict. Resolves
          issue #2567
    * ocd/static/ocd.cfg: add the info
    * tests/test_run_shot.py: test the formatting
    * tests/conftest.py: update 

2018-05-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: clear metadata. Resolves #2566
    * tests/test_run_shot.py: test it
    * doc/source/ocd_decision.rst: and document it

2018-05-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: update docs

2018-05-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: set the metadata. Implements issue #2563
    * tests/test_run_shot.py: test the new feature
    * tests/conftest.py: update the necessary fixtures

2018-05-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_inputs.rst: update documentation. Resolves issue #2561
    * ocd/shots_db.py: same

2018-05-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: load all the columns of the shot file. Implements issue
          #2561
    * tests/data/autoschedule.dat: add columns to the test file
    * tests/test_shots_db.py: test the changes

2018-05-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: add new SQlite3 table to store metadata. Resolves issue
          #2560
    * doc/source/shot_db.rst: update
    * doc/source/index.rst: fix typo
    * ocd/states.py: same
    * doc/source/ocd_inputs.rst: adjust references

2018-05-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ReleaseNotes.rst: renamed and updated
     doc/source/release_notes.rst: added. Resolves issue #2554
    * doc/source/index.rst: add it
        * doc/source/conf.py: use pyhetdex and tcs_lib intersphinx from readthedox

2018-05-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * readthedocs.yml: added for readthedocs deployment
    * requirements_rtd.txt: same

2018-05-09  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/emit_states into ^/trunk 

2018-05-09  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/emit_states 

2018-05-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: use tcs_lib >= 0.5
    * tox.ini: use the released tcs_lib

2018-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: document the TCS-like events emitted by
          ocd.states
    * ocd/states.py: add ref anchors

2018-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: when a TCS heartbeat event arrives, emit the current state;
          resolves issue #5212
    * tests/test_states.py: make Cure that events are send out
    * tests/data/TCS_test.db: update test database
    * tests/test_orchestrator.py: update the integration tests
    * tests/test_db_replay.py: update
    * doc/source/states.rst: update the docs
    * tests/conftest.py: revert changes introduced by r348

2018-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/states.py: add basic infrastructure to handle TCS heartbeat topics;
          first part of issue #5212
    * ocd/auto_schedule.py: adapt accordingly
    * ocd/orchestrator.py: update comments about OCD heartbeat
    * tests/test_states.py: test the modifications and prepare them for the next
          step
    * tests/test_auto_schedule.py: test the modifications
    * tests/conftest.py: make sure that ocd urls are unique
    * doc/source/states.rst: add the new topic

2018-05-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: emit events on state changes; resolves issue #2511
    * tests/test_states.py: test it
    * tests/test_auto_schedule.py: adapt to the changes
    * tests/test_orchestrator.py: same

2018-05-02  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/heart_beat.py: the next version of tcs_lib injects content in the
          output event
    * tests/test_heart_beat.py: same
    * tests/test_utils.py: same
    * tests/test_run_shot.py: use a generic executable to test playing sounds

2018-05-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add a callback function to send event via ZMQ; third part
          of #2511
    * tox.ini: use tcs_lib devel for now
    * doc/source/states.rst: update the docs

2018-05-02  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/states.py: MetrologyState use extra_msg to the transaction callback in
          instead of logging the information by itself; second part of #2511
    * tests/test_states.py: test the changes

2018-05-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add ``extra_msg`` to the method that log state transitions;
          first part of #2511

2018-05-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * LICENSE_fdl1.3: added
    * LICENSE_gpl3: added
    * doc/source/license.rst: added and add the above files
    * doc/source/index.rst: use proper name
    * ocd/*.py: add copyright notice. Resolves issue #2555

2018-05-04  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: use tcs_lib's SafeTCSEvent; resolves r2510
    * setup.py: require tcs_lib >= 0.4
    * ocd/orchestrator.py: remove ocd's SafeTCSEvent implementation
    * tests/test_orchestrator.py: remove its tests

2018-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/gauss_fwhm into ^/trunk

2018-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: estimate FWHM using the Gaussian fit; resolves #2545
    * tests/test_storage.py: test the changes
    * tests/conftest.py: add the new needed parameters to the test events
    * tests/test_states.py: same
    * doc/source/ocd_decision.rst: document the changes

2018-04-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: flip the sign of the dither offsets to get the correct
          behaviour

2018-04-23  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/config_update into ^/trunk

2018-04-23  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/config_update
        * : ReleaseNotes.md: update

2018-04-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add information whether options are modifiable or not.
          Resolves #2424

2018-04-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_executables.rst: document the ``ocd config send`` command.

2018-04-22  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add command line subcommand to send configuration options.
          Implements issue #2424
    * ocd/static/ocd.cfg: add the necessary configuration options
    * ocd/utils.py: and initialize the necessary server
    * tests/conftest.py: rename a variable
    * tests/test_config.py: test the new command
    * tests/test_utils.py: and the new server initialization

2018-04-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: update docs
    * ocd/auto_schedule.py: add method to update the configuration. Resolves
          issue #2492
    * ocd/orchestrator.py: same
    * ocd/states.py: same
    * tests/test_auto_schedule.py: test the changes
    * tests/test_orchestrator.py: same
    * tests/test_states.py: same

2018-04-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: PEP8
        * ocd/orchestrator.py: reformat the code and add the ConfigUpdater to the
          orchestrator (resolves in #2494)
        * tests/test_orchestrator.py: make sure that it is properly plugged and used

2018-04-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add class to handle configuration change requests. Resolves
          issue #2491
    * tests/test_config.py: test it
    * doc/source/config.rst: update the docs

2018-04-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: fix the y shifts of the guider offsets. Resolves issue
          #2526

2018-04-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: don't pipe stdout and sdterr when running a shot

2018-04-20  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/run_shot_updates into ^/trunk

2018-04-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ReleaseNotes.md: update

2018-04-20  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/run_shot.py: wait for readout instead of write. Resolves issue #2523
    * ocd/static/ocd.cfg: update the configuration option accordingly
    * ocd/config.py: automatically replace move the old into the new
          configuration option
    * tests/test_run_shot.py: update the tests
    * doc/source/ocd_decision.rst: and the docs

2018-04-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: skip the guide probe offset for the last exposure.
          Resolves issue #2522
    * tests/test_run_shot.py: update the tests
    * doc/source/ocd_decision.rst: and the docs

2018-04-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add a sound at the end of each exposure and if a failure
          happens (resolves issue #2509)
    * ocd/static/ocd.cfg: add the corresponding configuration
    * tests/test_run_shot.py: update the tests
    * doc/source/ocd_decision.rst: and the docs

2018-04-09  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/extra_commands/ into ^/trunk

2018-04-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ReleaseNotes.md: update

2018-03-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: Move "SetObjectAndMagnitudes" to after "go_next";
          resolves #2436.
    * doc/source/ocd_decision.rst: update the docs

2018-03-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: update the docs with the new commands
    * doc/source/run_shot.rst: update the document name
    * ocd/static/ocd.cfg: add some more info

2018-03-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add commands to start and stop saving probe frames and
          ACAM stuff (resolves issue #2423)
    * tests/test_run_shot.py: update the tests and relax tests with timing

2018-03-27  Francesco Montesano  <montefra@mpe.mpg.de>

   * ocd/run_shot.py: add function to play a sound
   * ocd/static/ocd.cfg: add options to play a sound
   * tests/conftest.py: test it
   * tests/test_run_shot.py: same
   * tests/data/silence.ogg: add short empty sound for testing

2018-03-27  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add some guider/wfs setup command (first part of #2423)
    * tests/test_run_shot.py: test the changes
    * ocd/docker_mysql.py: give explicit docker tag
    * tests/test_auto_schedule.py: autoschedule_main changed...

2018-03-01  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/bad_photometry into ^/trunk

2018-03-01  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/bad_photometry

2018-03-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: mask negative filter.magnitude. Resolves issue #2396
    * tests/test_storage.py: test the changes
    * doc/source/ocd_decision.rst: and document them

2018-03-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/timeout/ into ^/trunk

2018-02-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: update the documentation according to the
          changes of #2065. Resolves the issue
    * ocd/run_shot.py: fix variable type
    * ReleaseNotes.md: update

2018-02-23  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/static/ocd.cfg: add option to continue after the timeout; second part
          of #2065
    * ocd/run_shot.py: use the option as intended
    * tests/test_run_shot.py: test it

2018-02-22  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add a timeout option to use in tcs.wait_for_setup;
          first part of issue #2065
    * ocd/run_shot.py: use it (and add log message about waiting for the setup)
    * tests/test_run_shot.py: update the tests

>>>>>>> .merge-right.r309
2018-02-20  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/exposure_time/ into ^/trunk

2018-02-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: convert exposure time to seconds (resolves issue
          #2373)
    * tests/test_auto_schedule.py: test it

2018-02-13  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/corrupted_events into ^/trunk

2018-02-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: bump minimum tcs_lib required version
    * tox.ini: don't use devel tcs_lib

2018-02-13  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/corrupted_events

2018-02-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/log_messages into ^/trunk

2018-02-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: add log message with the parameters passed to
          autoschedule_main
    * tests/test_auto_schedule.py: update the tests
    * ocd/run_shot.py: update logging according to #2302

2018-02-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: use the new SafeTCSEvent to report exceptions (resolve issue
          #2313)
    * ocd/orchestrator.py: re-raise also TimeoutError to allow testing

2018-02-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: add a version of the TCSEvent class that log
          exceptions and then keep going (first part of issue #2313)
    * tests/test_orchestrator.py: test the changes
    * tox.ini: use the devel version of tcs_lib
    * doc/source/orchestrator.rst: fix warning

2018-02-09  Francesco Montesano  <montefra@mpe.mpg.de>
    
        * : merge ^/trunk into ^/branches/corrupted_events

2018-02-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: require pyhetdex 0.13
    * tests/conftest.py: update to make pytest >=3 happy
    * tests/test_auto_schedule.py: same
    * tests/test_run_shot.py: same
    * tests/test_shots_db.py: same

2018-02-07  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/cancel_trajectory into ^/trunk

2018-02-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: cancel a trajectory before starting a new one. Resolves
          issue #2342
    * tests/test_run_shot.py: test it

2018-02-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_inputs.rst: document that RA is in hours
    * ocd/shots_db.py: same

2018-01-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: reorganize the order of the log messages to make it
          less confusing

2018-01-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/errors.py: add new error for the shot file mismatch
    * ocd/shots_db.py: raise a more sensible error when the columns in the shot
          file are not to spec. Resolves issue #2311
    * tests/test_shots_db.py: update the test

2018-01-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/main.rst: added. Resolves #2285
    * doc/source/index.rst: add it to index
    * doc/source/ocd_executables.rst: rename from ocd_main.rst
    * doc/source/orchestrator.rst: update module name
    * ocd/main.py: update docstrings 
    * setup.py: bump version

2018-01-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: make logging events optional and off by default.
          Resolves issue #2303
    * ocd/static/ocd.cfg: add the corresponding configuration option
    * tests/test_orchestrator.py: test the changes

2018-01-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: order keys when logging the incoming events. Resolves
          issue #2280
    * tests/test_orchestrator.py: make sure that this is what happens

2018-01-11  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/test_auto_schedule.py: update tests after fixing issue #2281
    * tests/conftest.py: same

2017-12-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: set version 0.1

2017-12-21  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/event_keys into ^/trunk

2017-12-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add a container to compute the FWHM in arcsecond and plug
          this in the MetrologyVault. Resolves issue #2273
    * doc/source/ocd_decision.rst: update the documentation
    * tests/conftest.py: update the tests
    * tests/test_states.py: same
    * tests/test_storage.py: same

2017-12-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: change the meaning of the photometry_skymag and
          photometry_trans. Resolves #2270
    * ocd/storage.py: use the new keywords and update the docs
    * doc/source/ocd_decision.rst: update the docs
    * tests/test_orchestrator.py: update the tests
    * tests/test_states.py: same
    * tests/test_storage.py: same

2017-12-21  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/storage.py: pass the configuration to the ContainerTransparency in
          preparation for @2270
    * tests/test_storage.py: update the tests

2017-12-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/run_shot_and_shuffle/ into ^/trunk

2017-12-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: document the steps to run a shot. Resolves
          issue #2268

2017-12-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add the shot dict to the ocd.run_shot.setup_telescope
          event

2017-12-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: use also shot information from autoschedule when setting
          up the telescope. Resolves issue #2269
    * tests/test_run_shot.py: update the signature of the modified method

2017-12-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add absolute tolerance values for ra, dec, azimuth and
          track comparison. Resolves issue #2267
    * ocd/run_shot.py: use the tolerance from the configuration
    * tests/test_run_shot.py: test the changes

2017-12-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: reorganize the implementation of validate_shuffle_conf in
          preparation for issue #2267
    * tests/test_run_shot.py: distinguish the input configurations objects in
          the tests

2017-12-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/update_shot into ^/trunk

2017-12-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: add the explanation of what happens when a
          shot finishes or abort. Resolves issue #2057

2017-12-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: if the azimuth or the track are not set, set them to the
          shot_dict value. Third pare of issue #2057
    * doc/source/shot_db.rst: update docs
    * tests/test_shots_db.py: test the changes
    * tests/test_states.py: update the tests accordingly

2017-12-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: change the signature of update_shot. Second part of issue
          #2057
    * ocd/states.py: update accordingly and simplify log messages
    * tests/test_shots_db.py: test the changes
    * tests/test_states.py: update the tests

2017-12-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: all the transitions to idle contains the tcs_event
          dictionary. First part of issue #2057
    * tests/test_states.py: update the tests

2017-12-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/next_shot into ^/trunk

2017-12-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/trunk into ^/branches/next_shot

2017-12-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: finish the document. Resolves issue #2262
    * doc/source/ocd_notes.rst: add link anchor
    * ocd/states.py: fix documentation

2017-12-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_decision.rst: write the first part of the document
    * doc/source/index.rst: add the document to the index

2017-12-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: catch and log the exception raised when the maximum
          observation number is reached. Resolves issue #2230
    * tests/test_auto_schedule.py: test it
    * ocd/shots_db.py: fix error string

2017-12-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add maximum allowed observation number. First step of
          issue #2230
    * ocd/shots_db.py: raise an exception if the maximum is hit
    * ocd/errors.py: add the exception
    * tests/test_shots_db.py: test the change

2017-12-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add sleep after sending out the first
          ``ocd.run_shot.run`` events. Resolves issue #2228
    * tests/test_run_shot.py: test the changes

2017-12-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add options to skip shots or delay their start, first
          part of issue #2228
    * ocd/auto_schedule.py: use the new options
    * tests/conftest.py: update accordingly
    * tests/test_orchestrator.py: same
    * tests/test_auto_schedule.py: test the new feature

2017-12-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: use the skip_shot_submission option. Resolves issue
          #2241
    * ocd/static/ocd.cfg: update comment
    * tests/test_auto_schedule.py: test the changes

2017-12-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add option to skip running a shot. First part of issue
          #2241
    * ocd/config.py: check the option and replace in the configurations
    * tests/test_config.py: test the changes

2017-12-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_main.rst: add a note about the issue implemented in #2240
          and resolve it
    * ocd/static/ocd.cfg: add a similar note

2017-12-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: ``ocd run`` raises if both event_urls and ocd_db_replay are
          given. Resolves issue #2240
    * tests/test_ocd_main.py: test the changes

2017-12-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: fix type in message
    * tests/test_db_replay.py: ignore unnecessary warning
    * tests/test_ocd_main.py: same
    * tests/test_run_shot.py: same

2017-12-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: implement the function to check the urls necessary to
          implement issue #2240
    * ocd/errors.py: update the errors
    * tests/test_config.py: test the changes
    * ocd/static/ocd.cfg: remove ocd_db_replay url value
    * ocd/utils.py: make sure that the missing urls are properly handled
    * tests/test_utils.py: test the changes
    * tests/conftest.py: update tests accordingly to the changes
    * tests/test_allow_hetdex.py: same
    * tests/test_db_replay.py: same

2017-12-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: write prototype for the function implementing configuration
          value checks. First part of issue #2240
    * ocd/errors.py: add two warnings

2017-12-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/data/TCS_test.db: replace the database with something that allows
          full testing. Resolve issue #2078
    * tests/conftest.py: move fixtures around
    * tests/test_auto_schedule.py: same
    * tests/test_db_replay.py: use the new database (speedup replay)
    * tests/test_orchestrator.py: use the new database and test that something
          happens
    * scripts/db_manipulate.py: added. Saved in the repo for future reference
    * scripts/smaller_db.py: same
    * scripts/survey_to_shot_list.py: same

2017-12-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_notes.rst: add a note about mocking the times. Resolves
          issue #2242
    * ocd/run_shot.py: when running in a subprocess, returns also the command
          executed [because I need to support python 2.7 :(]
    * ocd/auto_schedule.py: update accordingly
    * tests/test_auto_schedule.py: same
    * tests/test_run_shot.py: same
    * ocd/utils.py: fix message

2017-12-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/test_docker_mysql.py: check that the configuration overriding works

2017-12-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: avoid failing tests if a previous run left some docker
          container around
    * tests/test_docker_mysql.py: use the first six characters of uuid4

2017-12-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: collect all the clear/reset fixture in clear_all
    * tests/test_allow_hetdex.py: adapt accordingly
    * tests/test_run_shot.py: same
    * tests/test_shots_db.py: same
    * tests/test_utils.py: same

2017-12-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: use the new get_time_jd function
    * ocd/main.py: initialize the times
    * tests/test_auto_schedule.py: make sure that all it's still fine
    * tests/test_ocd_main.py: test the initialization

2017-12-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add get_time_{utc,jd} to get time and to allows mocking it.
          First part of issue #2242
    * ocd/static/ocd.cfg: add the corresponding configuration option
    * tests/test_utils.py: test the changes
    * tests/conftest.py: add necessary cleanup

2017-12-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: if there are saved processes, log errors and clear
          the processes dictionary. Resolves #2239
    * ocd/run_shot.py: fix docs
    * tests/test_auto_schedule.py: test the changes

2017-12-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: use pytest >= 3.3 and drop pytest-catchlog
    * tox.ini: same
    * doc/source/install.rst: update the dependences

2017-12-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: add a warning if ``run_get_send_event`` fixture is
          called but not used
    * tests/data/get_send_event.py: print a message when starting
    * tests/test_allow_hetdex.py: increase timeout to allow connection on slower
          computer
    * tests/test_db_replay.py: same
    * tests/test_run_shot.py: same
    * tests/test_docker_mysql.py: make sure to trigger a connection error

2017-12-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: if a shot is already running, don't run a new one.
          Resolves issue #2058
    * tests/test_auto_schedule.py: test the changes

2017-12-04  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: dump the configuration object. Part two of #2058
    * ocd/run_shot.py: run a shot in a subprocess
    * ocd/auto_schedule.py: execute the subprocess
    * tests/test_auto_schedule.py: test the changes
    * tests/test_config.py: same
    * tests/test_run_shot.py: same

2017-12-04  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: move here the function to get a file with optional rotation
    * ocd/shots_db.py: use the above functionality
    * tests/test_shots_db.py: test the changes
    * tests/test_utils.py: same

2017-12-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: use the new ocd.utils.tmpdir function. Resolves issue
          #2233
    * ocd/static/ocd.cfg: update docs
    * ocd/utils.py: modify in order to simplify testing
    * tests/conftest.py: make fixture with temporary tmp directory, update other
          fixtures
    * tests/test_shots_db.py: adapt according to the changes

2017-12-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add temporary directory for ocd process. First part of issue
          #2233
    * setup.py: add py dependency
    * tests/test_utils.py: test the new function
    * tests/conftest.py: add fixture

2017-12-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: add interface for running a shot in a subprocess.
          First step of #2058
    * ocd/run_shot.py: reorganize variables to avoid repetitions
    * tests/test_auto_schedule.py: test the above interface

2017-11-29  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/next_shot into ^/trunk

2017-11-29  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/trunk into ^/branches/next_shot

2017-11-29  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: fix JD -> seconds conversion, update log message

2017-11-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: add a function that converts one line from
          autoschedule to a dictionary for ocd.run_shot.run. Resolves issue #2079
    * tests/test_auto_schedule.py: test it
    * tests/data/autoschedule_output.dat: add a file with the output of
          autoschedule_main
    * ocd/run_shot.py: fix typo


2017-11-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: returns 1 if no obsnum is found
    * tests/test_shots_db.py: test it

2017-11-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: Fix the obs_number/observation misunderstanding
    * tests/test_run_shot.py: update the tests
    * tests/conftest.py: and the corresponding fixtures
    * doc/source/ocd_main.rst: update the documentation

2017-11-24  Francesco Montesano  <montefra@mpe.mpg.de>

    * docker_mysql/README.md: update

2017-11-24  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/install.rst: update dependences
    * doc/source/ocd_main.rst: add ocd docker_mysql and update the rest.
          Resolves issue #2224
    * doc/source/ocd_inputs.rst: move notes from here
    * doc/source/ocd_notes.rst: to here and update the mysql information
    * doc/source/index.rst: add ocd_notes
    * ocd/docker_mysql.py: update and remove [database] override options
    * ocd/static/ocd.cfg: udpate
    * ocd/utils.py: same
    * setup.py: update dependences

2017-11-24  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: add functions to create and fill a vl_obsnum table
    * ocd/docker_mysql.py: finish implementing the ocd docker_mysql command.
          Resolves issue #2224
    * tests/conftest.py: update the fixtures
    * tests/test_docker_mysql.py: test the latest changes
    * tests/test_shots_db.py: some, plus remove old docker fixtures
    * tox.ini: remove unneeded dependences
    * tests/data/fill_vl_obsnum.sql: removed, its now in ocd.shots_db
    * tests/data/vl_obsnum.sql: same

2017-11-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: isolate the code to connect to the mysql database
    * doc/source/shot_db.rst: add it to the documentation
    * ocd/docker_mysql.py: wait for the mysql server to come to life, normalize
          some message. Second part of issue #2224
    * tests/conftest.py: update fixtures with the latest implementation stuff
    * tests/test_docker_mysql.py: test the changes

2017-11-22  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/docker_mysql.py: add a new docker_mysql command and implement the
      docker part of it. First part of issue #2224
    * ocd/main.py: add the new subcommand
    * ocd/static/ocd.cfg: and the necessary configuration
    * setup.py: add new 'docker' dependence
    * tests/conftest.py: update fixtures
    * tests/test_docker_mysql.py: test the new command
    * tests/test_shots_db.py: update to the changes
    * doc/source/docker_mysql.rst: add the command to the documentation
    * doc/source/index.rst: and to the index

2017-11-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: fix documentation. Resolves issue #2176
    * doc/source/shot_db.rst: add the function to the docs
    * doc/source/ocd_inputs.rst: add a not on MySQL

2017-11-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add option to avoid inserting new lines in the mysql
          database
    * ocd/shots_db.py: use it
    * tests/test_shots_db.py: test it

2017-11-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: fix query (it seems that all the arguments must be
          strings)
    * tests/test_shots_db.py: fix the tests to make them work properly; the
          function works

2017-11-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: implement the function to retrieve the observation
          number. Implements #2176
    * tests/conftest.py: add fixture to get time
    * tests/test_auto_schedule.py: use them
    * tests/test_shots_db.py: fix detail of the test

2017-11-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: add option to skip docker tests
    * tests/test_shots_db.py: use the skip option, fix test in python2

2017-11-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add mysql options
    * tests/conftest.py: same
    * tests/test_shots_db.py: finish writing the fixtures and test for the
          function to get the next observation number
    * tox.ini: add docker-compose dependency

2017-11-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * docker_mysql/README.md: update
        * tests/data/fill_vl_obsnum.sql: temporarily copy from docker_mysql
    * tests/data/vl_obsnum.sql: same
    * tests/test_shots_db.py: pull up the docker container, create and fill the
          necessary table
    * tox.ini: add necessary dependences

2017-11-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * docker_mysql/mysqld.cnf: no need for the configuration file
    * docker_mysql/Dockerfile: same
    * docker_mysql/docker-compose.yml: added
    * docker_mysql/docker-compose_build.yml: added
    * docker_mysql/README.md: add docker-compose info, update the readme

2017-11-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * docker_mysql/Dockerfile: the password is mandatory to create the htopx
          user. We are a step closer for solving #2176
    * docker_mysql/README.md: add lots of information
    * docker_mysql/mysqld.cnf: listen to all addresses (seems necessary)
    * docker_mysql/vl_obsnum.sql: create table
    * docker_mysql/fill_vl_obsnum.sql: add a row

2017-11-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * docker_mysql/Dockerfile: create docker file with a custom mysql server
    * docker_mysql/README.md: add readme

2017-11-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: add pymysql as dependency
    * ocd/shots_db.py: declare the function to query the mysql database
    * tests/test_shots_db.py: write its test
    * ocd/storage.py: fix docs

2017-11-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: make sure that the OCDVault topics are not updated. Fix
          bug #2211
    * tests/test_storage.py: regression tests
    * ocd/states.py: avoid catching spurious KeyError 
    * ocd/utils.py: clean comment

2017-11-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/db_replay.py: remove options to convert to numbers and bool. Resolves
          #2210
    * doc/source/ocd_main.rst: update the docs
    * ocd/storage.py: aesthetic change

2017-11-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: update docstring
    * ocd/storage.py: same

2017-11-21  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/config.py: remove auto move of filter name configuration. Resolves
          issue #2175

2017-11-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: remove auto move of shuffle configuration. Resolves issue
          #2160

2017-11-13  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/next_shot

2017-11-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: plug ShotRunner
    * ocd/auto_schedule.py: fix log message 
    * ocd/states.py: fix log message
    * tests/test_states.py: update the tests

2017-11-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: run autoschedule and log the result
    * tests/test_auto_schedule.py: test the changes

2017-11-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: if all is good, run autoschedule. Second part of
          #2183
    * ocd/errors.py: update error description
    * tests/test_auto_schedule.py: test new pieces

2017-11-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add an abstract base class to define the states interface.
          Resolves #2209
    * ocd/utils.py: add utilities
    * tests/test_states.py: test the changes
    * tests/test_utils.py: same
    * doc/source/states.rst: add the base class to the docs

2017-11-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: add a ShotRunner class. Main feature of issue #2183
    * tests/test_auto_schedule.py: test the init

2017-11-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: move here the fixture that loads the extra config file
    * tests/test_auto_schedule.py: from here it comes
    * tests/test_run_shot.py: use the fixture
    * tests/test_utils.py: same

2017-11-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: finish the function to dump the database and run
          autoschedule. Resolves issue #2183
    * tests/test_auto_schedule.py: test it
    * tests/conftest.py: update fixtures
    * setup.py, tox.ini: add pytest-freezegun test dependency

2017-11-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/auto_schedule.py: create module for all the scheduling code. Start of
          issue #2185
    * ocd/run_shot.py: move run_autoschedule to ocd.auto_schedule
    * tests/test_auto_schedule.py: add the test moduel
    * tests/test_run_shot.py: move the run_autoschedule tests to the correct
          place
    * doc/source/auto_schedule.rst: added
    * doc/source/index.rst: add it to the index

2017-11-08  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/next_shot

2017-11-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: plug the AzimuthVault. Resolves issue #2196
    * tests/test_orchestrator.py: update the tests accordingly

2017-11-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: rename MiscVault to AzimuthVault and save setup and
          non-setup azimuth values. Issue #2196 is almost done.
    * tests/conftest.py: add a mock event for the azimuth
    * tests/test_storage.py: update the tests

2017-11-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add Container that doesn't insert masked values and a
          Vault that uses it. This should solve issue #2196
    * tests/test_storage.py: begin testing the changes

2017-11-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add properties to get the lasted added value
    * tests/test_storage.py: test them

2017-11-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: convert OCDVault to a metaclass and move the container
          initialization to MetrologyVault. Second step of #1296
    * tests/test_states.py: update the tests

2017-11-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: fix typo

2017-10-26  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: rename Vault for #2196

2017-10-26  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/next_shot

2017-10-26  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: plug the MetaState. Resolves issue #2184
    * tests/test_orchestrator.py: update the test

2017-11-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/db_replay.py: correctly pass command line options

2017-11-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: log median metrology values and their reference values.
          Resolves issue #2208
    * tests/test_states.py: test the changes

2017-11-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: log transparency and set illumination to 0.86. Resolves
          issue #2207
    * tests/test_states.py: update the tests
    * tests/test_storage.py: same

2017-11-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: catch exceptions in Orchestrator.run. Resolves issue
          #2205
    * tests/test_orchestrator.py: test it

2017-11-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/db_replay/ into ^/trunk

2017-11-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/db_replay.py: implement the `ocd db_replay` command. Resolves issue
          #2198
    * ocd/main.py: plug it in
    * tests/test_db_replay.py: test it
    * tests/conftest.py: adapt fixtures
    * doc/source/ocd_main.rst: document the new command
    * doc/source/db_replay.rst: and it's implementation
    * doc/source/index.rst: add the new section

2017-11-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: add fixture to return the ocd main entry point
    * tests/test_allow_hetdex.py: use it
    * tests/test_config.py: use it

2017-11-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add urls and section in preparation of the 'ocd
          db_replay' command. First part of #2198
    * ocd/utils.py: initialize it
    * tests/test_utils.py: test the changes

2017-10-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add MetaState. Implements issue #2184
    * tests/test_states.py: test it
    * doc/source/states.rst: document it
    * doc/source/_static/meta_state.png: add its representation
    * scripts/states_graphs.py: add it to the list of things to create

2017-10-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: if a subcommand fails, raise an exception after the
          test has run

2017-10-24  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/forced_azimuth into ^/trunk

2017-10-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: add "forced_az" to the database and to the input/output
          shot files. Solves most of #2056
    * tests/conftest.py: add the extra forced_az columns
    * tests/data/autoschedule.dat: same
    * tests/test_shots_db.py: same
    * doc/source/ocd_inputs.rst: update the docs
    * doc/source/shot_db.rst: same

2017-10-17  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/next_tcs_lib0.2.0 into ^/trunk

2017-10-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: require tcs_lib >= 0.2
    * tox.ini: don't use tcs_lib dev version

2017-10-16  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/next_tcs_lib0.2.0

2017-10-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: remove
    * ocd/__init__.py: import tcs_lib.tcs_proxy and set the correct module name.
          Resolves issue: #2063
    * ocd/static/loggers.cfg: update the logger names
    * ocd/static/ocd.cfg: set the subsystem names
    * tests/conftest.py: update the tests
    * tests/test_run_shot.py: same
    * tests/test_states.py: same
    * tests/test_tcs_proxy.py: same
    * doc/source/tcs_proxy.rst: remove
    * doc/source/index.rst: remove from the index
    * tox.ini: use development version also in the doc

2017-09-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: remove the ZMQServer in favor of the tcs_lib one
    * ocd/heart_beat.py: adapt to the API changes
    * ocd/run_shot.py: same
    * ocd/states.py: same
    * tox.ini: use the devel tcs_lib
    * tests/conftest.py: same
    * tests/data/get_send_event.py: same
    * tests/test_utils.py: same

2017-10-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: add a proxy for errors in tcssubsystem
    * ocd/run_shot.py: explicitly handle "No active exposure" errors. Resolves
          issue #2179
    * tests/test_run_shot.py: test the changes
    * tests/test_tcs_proxy.py: same

2017-10-11  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: make sure that the arguments of
          Guider{1,2}_offset_fiducial are binary strings

2017-10-11  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/conf.py: add external link for issues
    * doc/source/ocd_inputs.rst: update the docs
    * ocd/shots_db.py: same
    * ocd/utils.py: use the external link

2017-10-11  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: copy only the guide probes magnitudes. Resolves issue
          #2163
    * ocd/static/ocd.cfg: update the magnitude name options to reflect this
    * ocd/config.py: temporarily move the magnitude name options to the new
          position
    * tests/test_config.py: test the changes
    * tests/test_run_shot.py: same

2017-10-10  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/filters into ^/trunk

2017-10-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/test_config.py: import the __future__ to make python2 happy

2017-10-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add mechanism to move options between sections and use it
          for the "paths" one. First part of issue #2156
    * tests/test_config.py: test the functionality
    * ocd/static/ocd.cfg: move the shuffle and acam options to run_shot
    * ocd/run_shot.py: use the new position
    * tests/conftest.py: update the tests
    * tests/test_run_shot.py: same

2017-10-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add the "observation" option and fix the meaning of
          obs_number. Resolves issue #2157
    * doc/source/ocd_main.rst: update the docs
    * tests/conftest.py: and the tests
    * tests/test_run_shot.py: same

2017-10-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add options in ``[run_shot]`` to map from shuffle to
          pas filter names. Resolves issue #2155
    * ocd/run_shot.py: check the number of elements and use the mapping
    * ocd/main.py: check the number of elements
    * tests/test_run_shot.py: update the tests
    * doc/Makefile: livehtml use a random port and open the browser
          automatically

2017-10-04  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: update to the new TCSSubSystem method names. Resolves
          issue #2154

2017-10-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: make sure that all keywords are not unicode in python2

2017-09-29  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: make sure that method names and parameters are correct.
          Resolves issue #2148
    * tests/test_run_shot.py: update the tests accordingly

2017-09-29  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: convert dictionary values to binary strings and dictionary
          keys to strings. Resolves issue #2147
    * ocd/run_shot.py: use the conversion
    * tests/test_utils.py: test the changes

2017-09-27  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_main.rst: update ``ocd run_shot`` documentation

2017-09-27  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/heartbeat into ^/trunk

2017-09-27  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: move TimeoutError from here
    * ocd/errors.py: to here
    * ocd/heart_beat.py: add HeartBeatQuery class methods to override the
          original ones
    * ocd/run_shot.py: use the heart beat to ensure a connection with ``ocd
          run``. Resolves issue #2137
    * tests/conftest.py: move around fixtures
    * tests/test_allow_hetdex.py: same
    * tests/test_heart_beat.py: test the new class methods
    * tests/test_run_shot.py: test the changes

2017-09-26  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/allow_hetdex.py: use the new ListenAndReply class, resolves issue
          #2130
    * ocd/utils.py: of course python2 has to miss-behave...
    * tests/test_allow_hetdex.py: adapt to the changes

2017-09-26  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/heart_beat.py: change the class name
    * ocd/orchestrator.py: plug the HeartBeatHandler into the orchestrator
    * tests/test_heart_beat.py: adapt the tests
    * tests/test_orchestrator.py: improve the orchestrator test
    * tests/test_states.py: rename RunShotState tests to be more descriptive
    * tests/conftest.py: move fixtures around
    * tests/test_storage.py: same

2017-09-26  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/heart_beat.py: module added. Add class to handle the heartbeat
          request. Third part of issue #2130
    * ocd/utils.py: move code into the above module
    * tests/test_heart_beat.py: test the new class
    * tests/conftest.py: move fixtures around
    * tests/test_utils.py: same
    * doc/source/heart_beat.rst: add new module to the documentation
    * doc/source/index.rst: same

2017-09-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add HeartBeat class. Second part of issue #2130
    * tests/test_utils.py: test it

2017-09-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add ``from_names`` constructor to allow building
          ``SendAndListen`` class from the initialized servers and urls
    * tests/test_utils.py: test the changes

2017-09-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add a class that sends TCS events in a thread and listen for
          other events (typically a reply) in the main process. First part of #2130.
    * tests/test_utils.py: test it
    * tests/data/get_send_event.py: add script that acts replies to incoming
          events

2017-09-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/errors.py: add OCDIndexError
    * ocd/utils.py: produce more informative error messages. Solves issue #2132
    * tests/test_utils.py: update the tests

2017-09-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: update the command line options
    * ocd/run_shot.py: same
    * ocd/static/ocd.cfg: update accordingly
    * doc/source/ocd_main.rst: same
    * tests/conftest.py: same
    * tests/test_allow_hetdex.py: test overriding the configuration
    * tests/test_ocd_main.py: same
    * tests/test_run_shot.py: same

2017-09-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: fix wrong url, improve descriptions. Resolves issue
          #2109

2017-09-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/trunk into ^/branches/allow_hetdex_state

2017-09-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add common epilogue
    * ocd/allow_hetdex.py: use it and override some more configuration entry
    * tests/test_allow_hetdex.py: update according to the changes
    * tests/test_utils.py: same
        * doc/source/ocd_main.rst: add allow_hetdex to the docs. Resolves issue
          #2114

2017-09-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_inputs.rst: add a note about ZeroMQ addresses
    * doc/source/ocd_main.rst: add placeholder for issue #2114
    * ocd/utils.py: fix docs

2017-09-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/allow_hetdex.py: use the new ZeroMQ server start functionality
    * ocd/static/ocd.cfg: add corresponding command line options
    * tests/test_allow_hetdex.py: adapt the tests
    * tests/test_utils.py: use test config file

2017-09-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add a temporary 1 second sleep in ``ocd run_shot`` to
          allow the server setup; fix command line option names.

2017-09-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: use the new interface to the ZeroMQ server initialization
    * ocd/run_shot.py: same
     ocd/static/ocd.cfg: update the configuration file
    * tests/conftest.py: create the needed server at the beginning of the test
    * tests/test_states.py: same

2017-09-15  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: create the servers only the first time they are required
    * tests/test_utils.py: test it

2017-09-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: start changing the logic used to load the zmq servers; the
          changes break the code and thus the tests. First part of issue #2114
        * ocd/static/ocd.cfg: update with the new server names
    * ocd/allow_hetdex.py: same
    * ocd/main.py: same
    * ocd/states.py: same
    * tests/conftest.py: same
    * tests/test_states.py: same
    * tests/test_utils.py: start testing the changes

2017-09-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: plug the HetdexAllowedState in the orchestrator.
          Resolves #2088 and #2085)
    * tests/test_allow_hetdex.py: test it
    * tests/conftest.py: expand a fixture to allow testing
    * ocd/utils.py: hack init_zmq_servers to be able to test the changes. This
          will need to be fixed properly (see bug #2113)
    * tests/test_utils.py: update the tests accordingly

2017-09-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/allow_hetdex.py: make sure that the timeout is positive to avoid locks
    * tests/test_allow_hetdex.py: finish testing the ``ocd allow_hetdex``
          command. Resolves issue #2087

2017-09-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: move timeout functions here
    * tests/conftest.py: use the now functions
    * ocd/allow_hetdex.py: create entry point to enable/disable hetdex
    * ocd/main.py: add the new subcommand
    * ocd/static/ocd.cfg: add ulr necessary to run the new entry point
    * tests/test_allow_hetdex.py: partially test the functionality
    * tests/test_utils.py: add the new ulr
    * doc/source/allow_hetdex.rst: added
    * doc/source/index.rst: add to the index
    * doc/source/utils.rst: little fix

2017-09-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: update the TCSLog mock class log_* signature to respect
          the original signature
    * ocd/orchestrator.py: use the correct signature
    * ocd/run_shot.py: same
    * ocd/states.py: same
    * tests/test_states.py: update the tests
    * tests/test_tcs_proxy.py: same

2017-09-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add callbacks that send TCS-like events after a
          HetdexAllowedState state change. Resolves issue #2086
    * tests/test_states.py: test the new mechanism
    * tests/conftest.py: move fixtures around
    * tests/test_run_shot.py: same
    * doc/source/states.rst: update the documentation accordingly

2017-09-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add url of zmq server that streams events from the OCD
          main loop. Piece needed by issue #2086
    * ocd/utils.py: initialize it
    * ocd/main.py: don't listen to the new ZMQ server
    * tests/conftest.py: update the tests
    * tests/test_utils.py: same

2017-09-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: rename ``ocd_internal`` ZMQ server to
          ``ocd_run_shot``. Resolves issue #2089
    * ocd/utils.py: update accordingly
    * ocd/run_shot.py: same
    * tests/conftest.py: same
    * tests/test_run_shot.py: same
    * tests/test_states.py: same
    * tests/test_utils.py: same

2017-09-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: update the doc
    * ocd/utils.py: the ocd servers urls/paths must be explicit
    * ocd/static/ocd.cfg: adapt to it
    * tests/test_utils.py: adapt to the changes
    * tests/conftest.py: make sure ipc connections are used when initializing
          servers, add fixture to clear all
    * tests/test_ocd_main.py: use the new fixture, to ensure tests success
    * tests/test_run_shot.py: make sure that all the tests run through

2017-08-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: fix docs
    * ocd/states.py: add HetdexAllowedState, first part of issue #2086
    * tests/test_states.py: test it
    * doc/source/states.rst: add it to the docs
    * doc/source/_static/hetdex_allowed_state.png: and add the corresponding
          graph
    * scripts/states_graphs.py: add the new state

2017-08-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/branches/next_pyhetdex into ^/trunk

2017-08-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * : merge ^/trunk into ^/branches/next_pyhetdex

2017-08-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: use pyhetdex=>0.12.0
    * tox.ini: don't use pyhetdex devel version

2017-07-31  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: use the file rotator. Resolves issue #2034
    * ocd/static/ocd.cfg: add relevant configuration options
    * tests/test_shots_db.py: update the tests
    * doc/source/ocd_inputs.rst: add output shot file info

2017-08-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: add the metrology state to the orchestrator. Resolves
          issue #2081

2017-08-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: handle events, updating the internal state. Resolves issue
          #2050
    * tests/test_states.py: test the changes
    * ocd/static/ocd.cfg: add configuration variables needed by the state
    * ocd/storage.py: update docs

2017-08-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add metrology state, create mixin class for common
          behaviour. First part of issue #2050
    * scripts/states_graphs.py: add the new state
    * tests/test_states.py: test the new state
    * doc/source/states.rst: update the documenantion
    * doc/source/_static/metrology_state.png: new state graph

2017-08-11  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: create section for run_shot configurations
    * ocd/run_shot.py: add ``ocd run_shot`` subcommand and modify the code for
          using with the new subcommand. Resolves issue #2075
    * ocd/main.py: plug the new subcommand
    * tests/test_run_shot.py: test the changes
    * tests/test_ocd_main.py: move fixtures around
    * tests/conftest.py: same
    * doc/source/ocd_main.rst: add the run_shot command
    * doc/source/run_shot.rst: add private members

2017-08-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: add the RunShotState to the Orchestrator. Resolves
          issue @2071
    * ocd/states.py: add "topics" attribute to reduce the number of possible
          future errors

2017-08-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * scripts/states_graphs.py: add script to create the graphs of the state
          machines
    * doc/source/contributions.rst: add a note to the documentation
    * doc/source/_static/run_shot_state.png: rename the file
    * doc/source/states.rst: same

2017-08-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: initialize the tcs_proxy, the database and the zmq servers.
          Resolves issue #2060
    * ocd/shots_db.py: fix docs
    * ocd/utils.py: same
    * setup.py: make pep8 happy
    * tests/data/autoschedule.dat: update the file
    * tests/data/test_ocd.cfg: update
    * tests/test_run_shot.py: same
    * tests/test_config.py: same
    * tests/test_ocd_main.py: tweak the configuration

2017-08-09  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/orchestrator.py: use auto_subscribe config entry. Resolves issue #2076
    * tests/test_orchestrator.py: adapt to the changes
    * setup.py: forgot to remove the tcs_replay entry point, ups!

2017-08-09  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add possibility to override the configuration entries with
          a Namespace. Resolves issue #2073
    * ocd/static/ocd.cfg: add the entries from the command line
    * tests/test_config.py: test it
    * ocd/main.py: make the command line argument override the configuration
    * ocd/states.py: adapt the new load_config signature
    * ocd/storage.py: same
    * tests/conftest.py: same
    * doc/source/ocd_main.rst: update the documentation with the new command
          line arguments

2017-08-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/conftest.py: add a fixture to add one row to the database
    * tests/test_states.py: the integration test now works

2017-08-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add on_enter_idle callback to allow updating the database
          when the ``idle`` state is reached. Implements issue #2072
    * ocd/tcs_proxy.py: fix documentation
    * tests/test_states.py: test the changes
    * tests/conftest.py: move fixtures around
    * tests/test_shots_db.py: same

2017-08-08  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: rename state machine, add guards against unknown exposure
          numbers. Resolves issue #2048
    * tests/test_states.py: update the tests
    * doc/source/states.rst: update the docs
    * tests/conftest.py: create fixture to run a shot in a thread, move fixtures
          around
    * tests/test_run_shot.py: move fixtures around

2017-08-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/states.py: add methods to handle events. Issue #2048 on its way to
          finish
    * tests/test_states.py: test the new methods

2017-08-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: use an enumerator-like to track the execution status
          instead of two boolean fields. Second part of issue #2048
    * tests/test_run_shot.py: update the tests
    * doc/source/run_shot.rst: adapt the documentation

2017-08-04  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: add ``transitions`` as dependency
        * ocd/states.py: implements the state and transitions that tracks the
          running shot. First part of issue #2048.
    * tests/test_states.py: test the class
    * tests/conftest.py: move around fixtures
    * tests/test_run_shot.py: same
    * doc/source/_static/run_shot_graph.png: add graph representing the model
    * doc/source/states.rst: add the documentation
    * doc/source/index.rst: add it to the index

2017-08-03  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/run_shot.py: use the internal ZMQServer to send execution information.
          Resolves issue #2052
    * tests/test_run_shot.py: test the changes
    * tests/test_utils.py: move fixtures
    * tests/conftest.py: same

2017-08-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add functionality to initialize zmq servers and get them.
          Resolves issue #2059
    * ocd/static/ocd.cfg: add the corresponding configuration entries
    * tests/test_utils.py: test the new implementation
    * doc/source/conf.py: add tcs_lib intersphinx

2017-08-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: make priority integer and update the documentation
          accordingly. Resolves issue #2054
    * doc/source/ocd_inputs.rst: update docs

2017-08-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: add pas subsystem
    * ocd/static/ocd.cfg: add corresponding configuration
    * ocd/static/loggers.cfg: add corresponding logger
    * ocd/run_shot.py: use pas to set object name and magnitude. Resolves issue
          #933
    * tests/conftest.py: update accordingly
    * tests/test_run_shot.py: same
    * tests/test_tcs_proxy.py: same

2017-07-31  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: use "fallback" when getting configuration option.
          Resolves issue #2044

2017-07-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: copy also the loggers.cfg
    * ocd/utils.py: move the master config file name here
    * tests/test_config.py: update the tests
    * doc/source/ocd_main.rst: and the docs

2017-07-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: use pyhetdex db_helpers. Resolves issue #2033
    * tests/test_shots_db.py: update the tests

2017-07-28  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/trunk into ^/branches/next_pyhetdex

2017-06-24  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_main.rst: update documentation for ``ocd config copy``

2017-06-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * MANIFEST.in: add the ocd/static directory
    * ocd/config.py: use pyhetdex.tools.io_helpers.copy_resources. Resolves
          issue #1965
    * ocd/utils.py: add static dir as variable
        * tests/test_config.py: replace copying tests with a single integration test

2017-06-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: don't use readfp
    * tox.ini: use devel pyhetdex

2017-07-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add {track_initial}. Resolves issue #2042
    * ocd/static/ocd.cfg: update the docstring

2017-07-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_inputs.rst: update documentation; resolves issue #1993

2017-07-27  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add function to run autoschedule and parse the output.
          Implements issue #1993
    * ocd/static/ocd.cfg: add the options necessary to run autoschedule
    * ocd/config.py: load the os.environ as defaults
    * ocd/errors.py: add custom error
    * tests/data/autoschedule.dat: added for testing purposes
    * tests/conftest.py: add corresponding fixture
    * tests/test_run_shot.py: test the changes
    * tox.ini: import CUREBIN

2017-07-26  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: make the parsing of the shot file stricter to force the
          shot id to be string. Resolves issue #2036
    * ocd/static/ocd.cfg: remove the shot list header option
    * tests/test_shots_db.py: adapt the tests
    * doc/source/ocd_inputs.rst: adapt the documentation

2017-07-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/ocd_inputs.rst: document the input files
    * doc/source/index.rst: add it to the index
    * doc/source/ocd_main.rst: add reference
    * ocd/shots_db.py: fix some docstring

2017-07-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/errors.py: add new exceptions
    * ocd/shots_db.py: add function to update a Shots database entry; make sure
          to use connect; fourth part of issue #2022
    * tests/test_shots_db.py: test it
    * doc/source/shot_db.rst: reorder the documentation

2017-07-24  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: add functionality to write a new shot file from the
          database entries
    * ocd/static/ocd.cfg: add new configuration entries
    * tests/test_shots_db.py: test the changes

2017-07-21  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/shots_db.py: add functionality to load a shot file into the database.
          Second part of issue #2022
    * ocd/static/ocd.cfg: add relevant configuration options
    * tests/test_shots_db.py: test the changes
    * ocd/config.py: fix docstring
    * ocd/storage.py: same
    * setup.py: add astropy
    * doc/source/conf.py: same

2017-07-20  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: update the transparency container to the latest
          information
    * tests/test_storage.py: adapt the tests

2017-07-20  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/shots_db.py: update the database table to reflect the latest version
          of autoschedule_main
    * tests/test_shots_db.py: use parameter in test

2017-07-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: add peewee as dependency
    * ocd/shots_db.py: setup the database and the model. Start of issue #2022
    * ocd/static/ocd.cfg: add database configuration entries
    * tests/test_shots_db.py: test test test
    * doc/source/conf.py: add peewee
    * doc/source/install.rst: same
    * doc/source/shot_db.rst: add the code documentation
    * doc/source/index.rst: same

2017-07-18  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/storage.py: plug the transparency container. Almost resolves issue
          #2008
    * ocd/static/ocd.cfg: fix interpolation
    * tests/test_storage.py: adapt the tests

2017-07-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add class to store transparency and reformat a bit the
          code. First part of issue #2008
    * tests/test_storage.py: test the changes
    * doc/source/conf.py: use mathjax

2017-07-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/ocd.cfg: add type of photometry to store
    * ocd/storage.py: use it. Resolves issue #2021
    * tests/test_storage.py: adapt the tests

2017-07-17  Francesco Montesano  <montefra@mpe.mpg.de>

        * : merge ^/branches/tcs_lib_dep/ into ^/trunk

2017-07-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * doc/source/index.rst: improve documentation
    * doc/source/authors.rst: add
    * doc/source/changelog.rst: same
    * doc/source/contributions.rst: same
    * doc/source/install.rst: same
    * doc/source/licence.rst: same
    * doc/source/todos.rst: same
    * AUTHORS: update

2017-07-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: introduce tcd_lib as dependency
    * doc/source/index.rst: remove the tcs_lib documentation
    * doc/source/string_helpers.rst: same
    * doc/source/tcs_{errors,event,replay,server}.rst: same
    * ocd/config.py: adjust the imports
    * ocd/main.py: same
    * ocd/orchestrator.py: same
    * tests/conftest.py: same
    * tests/test_orchestrator.py: same
    * tests/test_storage.py: same
    * ocd/tcs_lib: remove it
    * tests/test_tcs_lib: same

2017-07-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: cover all the TCSLog.log_* proxy methods. Resolves issue
          #2014
    * tests/test_tcs_proxy.py: extend the tests

2017-07-14  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: check the tcs commands. Resolves issue #1991
    * tests/data/shuffle_out.cfg: add equinox to the test configuration file
    * ocd/utils.py: add function to cast some dictionary values
    * tests/test_utils.py: test it

2017-07-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: update documentation and make public two init functions
    * tests/test_tcs_proxy.py: update the tests

2017-07-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: add a mock response that either returns the input
          parameters or the key. Resolves issue #1995
    * tests/test_tcs_proxy.py: test the changes

2017-07-13  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: the code to run the shot is almost ready and Issue #1991
          almost solved
    * ocd/static/ocd.cfg: add necessary command line options
    * tests/test_run_shot.py: test the changes

2017-07-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: convert the log call functionality to a class to allow
          mocking the response returned by the TCSSubSystem methods
    * tests/test_tcs_proxy.py: update to the changes
    * doc/source/tcs_proxy.rst: same

2017-07-12  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: pass all the information about the shot with a dictionary
    * tests/test_run_shot.py: update according to the changes

2017-07-11  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: add first part of the machinery to run the exposures
    * ocd/static/ocd.cfg: add relevant configuration entries
    * tests/test_run_shot.py: test changes

2017-07-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: add virus and pfip
    * ocd/static/ocd.cfg: add their URLS
    * ocd/static/loggers.cfg: add their loggers
    * tests/conftest.py: adapt the tests
    * tests/test_tcs_proxy.py: same

2017-07-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: make some function future proofed
    * tests/test_run_shot.py: update the tests

2017-07-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: setup the telescope
    * tests/test_run_shot.py: test it
    * tests/data/shuffle_out.cfg: update the sample shuffle configuration file

2017-07-10  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: initialize tcs subsystems
    * ocd/static/ocd.cfg: add tcs url and mock configuration path
    * ocd/static/loggers.cfg: add mock tcs subsystems logger
    * tests/test_tcs_proxy.py: test the changes
    * tests/conftest.py: update fixtures

2017-07-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: copy ACAM image to a destination. Second part of issue
          #1991
    * ocd/static/ocd.cfg: add necessary keys, update comments
    * tests/test_run_shot.py: test the changes
    * tests/data/shuffle_out.cfg: add test
    * tests/data/test.jpg: add empty file to use in tests
    * tests/conftest.py: move fixtures around
    * tests/test_tcs_proxy.py: same

2017-07-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/run_shot.py: log loading of shuffle config, adjust keywords
    * tests/data/shuffle_out.cfg: added
        * tests/conftest.py: add fixture to return the above file
    * tests/test_run_shot.py: integration test of the run function

2017-07-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * .: ignore build and dist
    * MANIFEST.in: add static dir

2017-07-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/static/loggers.cfg: added
    * tests/test_tcs_proxy.py: check that the loggers.cfg can be loaded
    * ocd/tcs_proxy.py: typo fixed
    * MANIFEST.in: add the configuration files

2017-07-07  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: add a generic mock class that logs calls. Resolves
          issue #1995
    * tests/test_tcs_proxy.py: test the changes

2017-07-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_proxy.py: added. First part of issue #1995
    * ocd/static/ocd.cfg: add configuration entries for TCSLog
    * tests/test_tcs_proxy.py: test the new module
    * doc/source/tcs_proxy.rst: add documentation
    * doc/source/index.rst: add to the index

2017-07-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * setup.py: add configparser dependency
    * ocd/run_shot.py: load and check shuffle output file. First part of issue
          #1991
    * tests/test_run_shot.py: test it
    * ocd/errors.py: add custom error
    * ocd/static/ocd.cfg: add entry with the shuffle output directory
    * ocd/utils.py: add isclose function
    * tests/test_utils.py: test it
    * doc/source/run_shot.rst: add new module
    * doc/source/index.rst: add to the index

2017-06-06  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: add option cast variably types when replaying the database 
    * ocd/tcs_lib/tcs_replay.py: add the corresponding command line options
    * tests/test_tcs_lib/test_server.py: test the changes
        * doc/source/tcs_replay.rst: update documentation

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: add option cast variably types when replaying the database 
    * ocd/tcs_lib/tcs_replay.py: add the corresponding command line options
    * tests/test_tcs_lib/test_server.py: test the changes

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add function to cast configuration entries to respecting
          ``None``
    * tests/test_config.py: test it
    * ocd/storage.py: use the maxlen and delta_timestamp from the configuration
          when initializing the container
    * tests/test_storage.py: adapt the tests

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>
        
    * ocd/static/ocd.cfg: begin adding values (first part of issue #1975)
    * ocd/config.py: improve documentation and add support for empty values
    * ocd/orchestrator.py: add the configuration file
    * ocd/main.py: pass the configuration to the orchestrator
    * ocd/storage.py: fix docstring
    * tests/data/test_ocd.cfg: update the test file
    * tests/conftest.py: add configuration object fixture
    * tests/test_config.py: update tests
    * tests/test_orchestrator.py: same
    * doc/source/conf.py: add pyhetdex intersphinx

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add fixed_skymag and kron_skymag containers for guider 1
          and 2. Resolves issue #1967
    * tests/test_storage.py: test the changes

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: add optional argument to avoid subscribing to topics
          in the Orchestrator class. Resolves issue #1966
    * ocd/main.py: add the corresponding command line argument
    * tests/test_orchestrator.py: test the changes

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: resolves issue #1971
    * tests/test_storage.py: test the changes

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/test_storage.py: finish testing and resolves Issue #1970

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: homogenize the masked and non-masked properties of
          @Containers@. Resolves issue #1972
    * tests/test_storage.py: test the changes
    * pytest.ini: ignore RuntimeWarnings (mean/median/std of empty lists)

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/storage.py: OCDVault: add function to mask fwhm values (fourth part of
          issue #1970). Need to fix #1972 before being able to test it properly.
    * tests/test_storage.py: add some test for the filtering

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add factory functions for comparison operations (third part
          of issue #1970)
    * ocd/tcs_lib/tcs_event.py: fix doctest
    * ocd/storage.py: same
    * ocd/tcs_lib/replay.py.bkp: rename to avoid loading it during tests
    * pytest.ini: enable doctest
    * doc/source/utils.rst: added
    * doc/source/index.rst: above added to the index

2017-05-31  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add support for deciding whether to mask the value of an
          event (second part of the issue #1970)
    * tests/test_storage.py: test it

2017-05-31  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add mask and masked mean/median/std (first part of issue
          #1970)
    * tests/test_storage.py: test it
    * doc/source/conf.py: add numpy intersphinx

2017-05-29  Francesco Montesano  <montefra@mpe.mpg.de>

        * doc/source/ocd_main.rst: update the documentation. Resolves issue #1950

2017-05-29  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add "config copy" subcommand (completes issue #1950)
    * tests/test_config.py: test the copying of the configuration file
    * ocd/main.py: add "run" subcommand (damn python2)
    * tests/test_ocd_main.py: update the tests

2017-05-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add subcommands for the configuration; need to implement
          them
    * ocd/main.py: use it

2017-05-24  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: configuration file argument and function to load it; first
          part of issue #1950
    * ocd/main.py: use them
    * ocd/static/ocd.cfg: add a placeholder for the configuration file
    * ocd/utils.py: add name of the default config file
    * setup.py: add pyhetdex as dependency
    * tests/test_config.py: test the new module
    * tests/data/test_ocd.cfg: test config file
    * doc/source/config.rst: add the new module to the documentation
    * doc/source/index.rst: add it

2017-05-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/test_ocd_main.py: add basic test of the main function
    * tests/conftest.py: move around fixtures
    * tests/test_tcs_lib/conftest.py: same
    * doc/source/ocd_main.rst: update documentation
        * tox.ini: fail if test coverage less than 100%

2017-05-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: initialize and use the OCDVault in the Orchestrator.
          Resolves issue #1947
    * ocd/main.py: add info about -t/--topics; convert times to floats
    * tests/test_orchestrator.py: test the orchestrator
    * pytest.ini: add integration marker

2017-05-22  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add a class to act as a proxy for Containers. Resolves
        issue #1941
    * tests/test_storage.py: test it

2017-05-22  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: add option to convert data and wire times to
          float. Resolves issue #1945
    * tests/test_tcs_lib/test_tcs_event.py: test it
    * ocd/orchestrator.py: use for loop on event listener
    * ocd/tcs_lib/server.py: invert data and wire times

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: add iterator support to the TCSEvent; update
          doc string; resolves issue #1944
    * tests/test_tcs_lib/test_tcs_event.py: test the for loop
    * doc/source/tcs_event.rst: add special methods in the documentation

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: pass the tcs event listener in the init
    * ocd/main.py: initialize the tcs event listener here
    * tests/test_ocd_main.py: add stub
    * tests/test_orchestrator.py: same
    * tox.ini: raise the coverage failure limit to 98%
    * doc/source/ocd_main.rst: added
    * doc/source/orchestrator.rst: same
    * doc/source/index.rst: add them
    * doc/source/storage.rst: some white spaces didn't behave

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: create subclass with a method to handle an event
    * tests/test_storage.py: test it

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add properties to return mean, median and stddev
    * setup.py: add numpy as dependency
    * tests/test_storage.py

2017-05-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: make sure that delta_timestamp is a positive number
    * ocd/errors.py: add OCD exceptions
    * tests/test_storage.py: test the changes
    * doc/source/errors.rst: added
    * doc/source/index.rst: update
    * doc/source/storage.rst: little fix

2017-05-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add a storage class, starting implementation of issue #1939
    * tests/test_storage.py: test the first part of the class
    * doc/source/storage.rst: add to the documentation
    * doc/source/index.rst: add to the index

2017-05-16 Daniel Farrow <dfarrow@mpe.mpg.de>

    Trivial grammar corrections: 
    * doc/source/tcs_replay.rst
    * ocd/main.py

2017-05-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: fix query to create TCS events
    * tests/data/TCS_test.db: update it to make sure the query works properly
    * ocd/tcs_lib/tcs_event.py: don't use setsockopt_string
    * tests/test_tcs_lib/test_tcs_event.py: update the tests

2017-05-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: add a close method
    * tests/test_tcs_lib/conftest.py: add fixture to run a function in a timeout
          context manager
    * tests/test_tcs_lib/test_tcs_replay.py: use the fixture
    * tests/test_tcs_lib/test_tcs_event.py: test tcs_event module

2017-05-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: renamed from tcsevent.py; add documentation and
          subscribe to topics on zmq to avid further filtering
    * ocd/tcs_lib/__init__.py: update the import accordingly
    * ocd/main.py: add topics
    * ocd/orchestrator.py: pass to the TCSEvent
    * tests/test_tcs_lib/conftest.py: add fixture to get an unused port
    * tests/test_tcs_lib/test_server.py: use the fixture
    * tests/test_tcs_lib/test_tcs_replay.py: same
    * doc/source/_templates/version.html: added
    * doc/source/conf.py: add a sensible side bar
    * doc/source/tcs_event.rst: added
    * doc/source/index.rst: add it
    * doc/source/string_helpers.rst: update
    * doc/source/tcs_errors.rst: update
    * doc/source/zmq_server.rst: update

2017-05-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: the ocd entry point goes here; command line added
    * ocd/__init__.py: move the main away
    * ocd/orchestrator.py: pass the url from the command line to the TCSEvent
    * ocd/tcs_lib/__init__.py: expose TCSEvent
    * ocd/tcs_lib/replay.py: use parent parsers
    * ocd/tcs_lib/tcs_replay.py: remove some more parts reimplemented
    * ocd/tcs_lib/tcsevent.py: return strings
    * ocd/utils.py: add parent parser
    * setup.py: adapt the ocd entry point

2017-05-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_replay.py: create the tcs_replay entry point
    * setup.py: add the executable
    * ocd/tcs_lib/errors.py: added
    * ocd/tcs_lib/server.py: move the exception definition to errors
    * ocd/tcs_lib/replay.py: remove the parts reimplemented
    * doc/source/tcs_replay.rst: added
        * doc/source/tcs_errors.rst: added
    * doc/source/index.rst: add to the index
    * tests/test_tcs_lib/conftest.py: add tcs_lib conftest
    * tests/test_tcs_lib/test_tcs_replay.py: test the main
    * tests/test_tcs_lib/test_server.py: use the new fixtures

2017-05-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: add iterator class to serve a mock event forever
    * tests/test_tcs_lib/test_server.py: test it

2017-05-04  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: add iterable class to replay the database
    * tests/test_tcs_lib/test_server.py: test it
    * tests/conftest.py: add some fixture
    * tests/data/TCS_test.db: added
    * doc/source/conf.py: add pyzmq intersphinx
    * doc/source/zmq_server.rst: add methods to the documentation

2017-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib: created and move here ocd/utils/*
    * ocd/tcsevent.py: move it into ocd/tcs_lib
    * ocd/utils: removed
    * ocd/orchestrator.py: update imports
    * pytest.ini: fix paths accordingly
    * setup.cfg: same
    * setup.py: make pre version
    * doc/source/index.rst: rename the section according to the above changes
    * doc/source/string_helpers.rst: update
    * doc/source/zmq_server.rst: same
    * tests/test_tcs_lib: move here test_utils

2017-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils/string_helpers.py: added
    * ocd/utils/server.py: use it
    * setup.py: add six as dependency
    * doc/source/string_helpers.rst: added
    * doc/source/index.rst: add it to the index
    * tests/test_utils/test_string_helpers.py: add
    * tests/test_utils/test_server.py: update tests

2017-05-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * svn:ignore: add new files and paths
    * ocd/utils/__init__.py: added
    * ocd/utils/replay.py: temporarily added; it will removed when we are done
          porting it
    * ocd/utils/server.py: first implementation of the servers of issue #1922
    * doc/Makefile: fix livehtml
    * doc/source/conf.py: add pyzmq intersphinx
    * doc/source/index.rst: update
    * doc/source/zmq_server.rst: add
    * pytest.ini: added
    * setup.cfg: add coverage conf
    * tests/conftest.py: added
    * tests/test_utils: added
    * tests/test_utils/test_server.py: simple test of the server
    * tox.ini: added

2017-04-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: added
    * ocd/__init__.py: initialize and start the orchestrator
    * ocd/tcsevent.py: add the future
    * setup.py: add zmq as dependency

2017-04-27  Francesco Montesano  <montefra@mpe.mpg.de>

    * svn:ignore: added
    * AUTHORS: same
        * doc: added
    * LICENCE: same
    * MANIFEST.in: same
    * ReleaseNotes.md: same
    * ocd/__init__.py: create fake entry point
    * setup.cfg: added
    * setup.py: added

2017-04-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcsevent.py: some edit, remove topic registration from the next()
          method

2017-04-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/__init__.py: added
    * ocd/tcsevent.py: added

2015-06-27  Francesco Montesano  <montefra@mpe.mpg.de>

        * first import

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add function to cast configuration entries to respecting
          ``None``
    * tests/test_config.py: test it
    * ocd/storage.py: use the maxlen and delta_timestamp from the configuration
          when initializing the container
    * tests/test_storage.py: adapt the tests

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>
        
    * ocd/static/ocd.cfg: begin adding values (first part of issue #1975)
    * ocd/config.py: improve documentation and add support for empty values
    * ocd/orchestrator.py: add the configuration file
    * ocd/main.py: pass the configuration to the orchestrator
    * ocd/storage.py: fix docstring
    * tests/data/test_ocd.cfg: update the test file
    * tests/conftest.py: add configuration object fixture
    * tests/test_config.py: update tests
    * tests/test_orchestrator.py: same
    * doc/source/conf.py: add pyhetdex intersphinx

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add fixed_skymag and kron_skymag containers for guider 1
          and 2. Resolves issue #1967
    * tests/test_storage.py: test the changes

2017-06-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: add optional argument to avoid subscribing to topics
          in the Orchestrator class. Resolves issue #1966
    * ocd/main.py: add the corresponding command line argument
    * tests/test_orchestrator.py: test the changes

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: resolves issue #1971
    * tests/test_storage.py: test the changes

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/test_storage.py: finish testing and resolves Issue #1970

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: homogenize the masked and non-masked properties of
          @Containers@. Resolves issue #1972
    * tests/test_storage.py: test the changes
    * pytest.ini: ignore RuntimeWarnings (mean/median/std of empty lists)

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

        * ocd/storage.py: OCDVault: add function to mask fwhm values (fourth part of
          issue #1970). Need to fix #1972 before being able to test it properly.
    * tests/test_storage.py: add some test for the filtering

2017-06-01  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils.py: add factory functions for comparison operations (third part
          of issue #1970)
    * ocd/tcs_lib/tcs_event.py: fix doctest
    * ocd/storage.py: same
    * ocd/tcs_lib/replay.py.bkp: rename to avoid loading it during tests
    * pytest.ini: enable doctest
    * doc/source/utils.rst: added
    * doc/source/index.rst: above added to the index

2017-05-31  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add support for deciding whether to mask the value of an
          event (second part of the issue #1970)
    * tests/test_storage.py: test it

2017-05-31  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add mask and masked mean/median/std (first part of issue
          #1970)
    * tests/test_storage.py: test it
    * doc/source/conf.py: add numpy intersphinx

2017-05-29  Francesco Montesano  <montefra@mpe.mpg.de>

        * doc/source/ocd_main.rst: update the documentation. Resolves issue #1950

2017-05-29  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add "config copy" subcommand (completes issue #1950)
    * tests/test_config.py: test the copying of the configuration file
    * ocd/main.py: add "run" subcommand (damn python2)
    * tests/test_ocd_main.py: update the tests

2017-05-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: add subcommands for the configuration; need to implement
          them
    * ocd/main.py: use it

2017-05-24  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/config.py: configuration file argument and function to load it; first
          part of issue #1950
    * ocd/main.py: use them
    * ocd/static/ocd.cfg: add a placeholder for the configuration file
    * ocd/utils.py: add name of the default config file
    * setup.py: add pyhetdex as dependency
    * tests/test_config.py: test the new module
    * tests/data/test_ocd.cfg: test config file
    * doc/source/config.rst: add the new module to the documentation
    * doc/source/index.rst: add it

2017-05-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * tests/test_ocd_main.py: add basic test of the main function
    * tests/conftest.py: move around fixtures
    * tests/test_tcs_lib/conftest.py: same
    * doc/source/ocd_main.rst: update documentation
        * tox.ini: fail if test coverage less than 100%

2017-05-23  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: initialize and use the OCDVault in the Orchestrator.
          Resolves issue #1947
    * ocd/main.py: add info about -t/--topics; convert times to floats
    * tests/test_orchestrator.py: test the orchestrator
    * pytest.ini: add integration marker

2017-05-22  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add a class to act as a proxy for Containers. Resolves
        issue #1941
    * tests/test_storage.py: test it

2017-05-22  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: add option to convert data and wire times to
          float. Resolves issue #1945
    * tests/test_tcs_lib/test_tcs_event.py: test it
    * ocd/orchestrator.py: use for loop on event listener
    * ocd/tcs_lib/server.py: invert data and wire times

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: add iterator support to the TCSEvent; update
          doc string; resolves issue #1944
    * tests/test_tcs_lib/test_tcs_event.py: test the for loop
    * doc/source/tcs_event.rst: add special methods in the documentation

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: pass the tcs event listener in the init
    * ocd/main.py: initialize the tcs event listener here
    * tests/test_ocd_main.py: add stub
    * tests/test_orchestrator.py: same
    * tox.ini: raise the coverage failure limit to 98%
    * doc/source/ocd_main.rst: added
    * doc/source/orchestrator.rst: same
    * doc/source/index.rst: add them
    * doc/source/storage.rst: some white spaces didn't behave

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: create subclass with a method to handle an event
    * tests/test_storage.py: test it

2017-05-19  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add properties to return mean, median and stddev
    * setup.py: add numpy as dependency
    * tests/test_storage.py

2017-05-18  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: make sure that delta_timestamp is a positive number
    * ocd/errors.py: add OCD exceptions
    * tests/test_storage.py: test the changes
    * doc/source/errors.rst: added
    * doc/source/index.rst: update
    * doc/source/storage.rst: little fix

2017-05-17  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/storage.py: add a storage class, starting implementation of issue #1939
    * tests/test_storage.py: test the first part of the class
    * doc/source/storage.rst: add to the documentation
    * doc/source/index.rst: add to the index

2017-05-16 Daniel Farrow <dfarrow@mpe.mpg.de>

    Trivial grammar corrections: 
    * doc/source/tcs_replay.rst
    * ocd/main.py

2017-05-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: fix query to create TCS events
    * tests/data/TCS_test.db: update it to make sure the query works properly
    * ocd/tcs_lib/tcs_event.py: don't use setsockopt_string
    * tests/test_tcs_lib/test_tcs_event.py: update the tests

2017-05-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: add a close method
    * tests/test_tcs_lib/conftest.py: add fixture to run a function in a timeout
          context manager
    * tests/test_tcs_lib/test_tcs_replay.py: use the fixture
    * tests/test_tcs_lib/test_tcs_event.py: test tcs_event module

2017-05-16  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_event.py: renamed from tcsevent.py; add documentation and
          subscribe to topics on zmq to avid further filtering
    * ocd/tcs_lib/__init__.py: update the import accordingly
    * ocd/main.py: add topics
    * ocd/orchestrator.py: pass to the TCSEvent
    * tests/test_tcs_lib/conftest.py: add fixture to get an unused port
    * tests/test_tcs_lib/test_server.py: use the fixture
    * tests/test_tcs_lib/test_tcs_replay.py: same
    * doc/source/_templates/version.html: added
    * doc/source/conf.py: add a sensible side bar
    * doc/source/tcs_event.rst: added
    * doc/source/index.rst: add it
    * doc/source/string_helpers.rst: update
    * doc/source/tcs_errors.rst: update
    * doc/source/zmq_server.rst: update

2017-05-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/main.py: the ocd entry point goes here; command line added
    * ocd/__init__.py: move the main away
    * ocd/orchestrator.py: pass the url from the command line to the TCSEvent
    * ocd/tcs_lib/__init__.py: expose TCSEvent
    * ocd/tcs_lib/replay.py: use parent parsers
    * ocd/tcs_lib/tcs_replay.py: remove some more parts reimplemented
    * ocd/tcs_lib/tcsevent.py: return strings
    * ocd/utils.py: add parent parser
    * setup.py: adapt the ocd entry point

2017-05-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/tcs_replay.py: create the tcs_replay entry point
    * setup.py: add the executable
    * ocd/tcs_lib/errors.py: added
    * ocd/tcs_lib/server.py: move the exception definition to errors
    * ocd/tcs_lib/replay.py: remove the parts reimplemented
    * doc/source/tcs_replay.rst: added
        * doc/source/tcs_errors.rst: added
    * doc/source/index.rst: add to the index
    * tests/test_tcs_lib/conftest.py: add tcs_lib conftest
    * tests/test_tcs_lib/test_tcs_replay.py: test the main
    * tests/test_tcs_lib/test_server.py: use the new fixtures

2017-05-05  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: add iterator class to serve a mock event forever
    * tests/test_tcs_lib/test_server.py: test it

2017-05-04  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib/server.py: add iterable class to replay the database
    * tests/test_tcs_lib/test_server.py: test it
    * tests/conftest.py: add some fixture
    * tests/data/TCS_test.db: added
    * doc/source/conf.py: add pyzmq intersphinx
    * doc/source/zmq_server.rst: add methods to the documentation

2017-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcs_lib: created and move here ocd/utils/*
    * ocd/tcsevent.py: move it into ocd/tcs_lib
    * ocd/utils: removed
    * ocd/orchestrator.py: update imports
    * pytest.ini: fix paths accordingly
    * setup.cfg: same
    * setup.py: make pre version
    * doc/source/index.rst: rename the section according to the above changes
    * doc/source/string_helpers.rst: update
    * doc/source/zmq_server.rst: same
    * tests/test_tcs_lib: move here test_utils

2017-05-03  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/utils/string_helpers.py: added
    * ocd/utils/server.py: use it
    * setup.py: add six as dependency
    * doc/source/string_helpers.rst: added
    * doc/source/index.rst: add it to the index
    * tests/test_utils/test_string_helpers.py: add
    * tests/test_utils/test_server.py: update tests

2017-05-02  Francesco Montesano  <montefra@mpe.mpg.de>

    * svn:ignore: add new files and paths
    * ocd/utils/__init__.py: added
    * ocd/utils/replay.py: temporarily added; it will removed when we are done
          porting it
    * ocd/utils/server.py: first implementation of the servers of issue #1922
    * doc/Makefile: fix livehtml
    * doc/source/conf.py: add pyzmq intersphinx
    * doc/source/index.rst: update
    * doc/source/zmq_server.rst: add
    * pytest.ini: added
    * setup.cfg: add coverage conf
    * tests/conftest.py: added
    * tests/test_utils: added
    * tests/test_utils/test_server.py: simple test of the server
    * tox.ini: added

2017-04-28  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/orchestrator.py: added
    * ocd/__init__.py: initialize and start the orchestrator
    * ocd/tcsevent.py: add the future
    * setup.py: add zmq as dependency

2017-04-27  Francesco Montesano  <montefra@mpe.mpg.de>

    * svn:ignore: added
    * AUTHORS: same
        * doc: added
    * LICENCE: same
    * MANIFEST.in: same
    * ReleaseNotes.md: same
    * ocd/__init__.py: create fake entry point
    * setup.cfg: added
    * setup.py: added

2017-04-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/tcsevent.py: some edit, remove topic registration from the next()
          method

2017-04-25  Francesco Montesano  <montefra@mpe.mpg.de>

    * ocd/__init__.py: added
    * ocd/tcsevent.py: added

2015-06-27  Francesco Montesano  <montefra@mpe.mpg.de>

        * first import