* 2.5.1 (05/06/2023)
  * `wop build`: Remove annoying `BetaConfiguration` warning  
  * `wop pull <source_id>`: Fix bug pull source not working

* 2.5.0 (16/05/2023) 
  * `wop merge <source_id>`: Now only import the source analysis disciplines in the current 
  analysis on WhatsOpt (previously was also doing the fetching).
  * `wop pull`: 
    * Now default is package mode (before `--package` option was required). 
    Old plain mode is still available with `--plain` option. 
    * `wop pull <source_id>`: was previously `wop merge <source_id>`. 
    Now `wop pull <source_id>` is equivalent of `wop merge <source_id>` + `wop fetch <source_id>`
  * `wop fetch`: Fixed when there is no package an error is raised, now just no-op.  

* 2.4.0 (15/05/2023)
  * `wop fetch <source_id>`: this command gets disciplines source code from source analysis and extract 
  it within the current analysis Python module. The current analysis is untouched on WhatsOpt.
  * `wop merge <source_id>`: this command import the source analysis discipline within the current one 
  on WhatsOpt fetch source analysis code and finally update the code.

* 2.3.0 (08/04/2023)
  * `wop build`: Add command to build Python package with the analysis code.
  * `wop publish`: Add command to build and publish the package on WhatsOpt.

* 2.2.1 (20/03/2023)
  * `wop upload mda_init.py`: Fix the upload of the parameter values of the analysis.

* 2.2.0 (17/08/2022)
  * requires: Python 3.7+, openmdao_extensions 1.1.0+
  * `wop push`: When creating pseudo-variables related to connections created with OpenMDAO connect()
  method, variable name length is now limited to 255.

* 2.1.2 (30/06/2022)
  * `wop upload`: Add checking on to-be-uploaded file existence and 
  file content (have to contain design variables and output records)

* 2.1.1 (23/06/2022)
  * Fix `wop upload --parallel`: bad file extension check which prevents from uploading 
  * Fix `wop convert <.sqlite_\d+>`: bad error message when used with sqlite generated in parallel  

* 2.1.0 (19/06/2022)
  * Refactor optimization REST API to use mixed-integer multi-objective ONERA in-house optimizer (WhatsOpt 1.23+)
  
* 2.0.2 (14/05/2022)
  * Fix login handling in remote optimization
  
* 2.0.1 (12/04/2022)
  * Fix login edge case logic and remote servers handling

* 2.0.0 (14/03/2022)
  * Now `wop` stores successful remote servers (a.k.a remotes) login infos. For instance, after a successful login sequence with `wop login https://remote.example.com` and API key input, next login to this url will be simply done automatically with `wop login remote`.
  * New command options:
    * `wop list/logout -r`: lists known remotes.
    * `wop logout -r <name>`: remove remote info specified by its name.
    * `wop logout --all`: remove all remotes infos. 
  * API change: 
    * `whatsopt_client.WhatsOpt()`: `login` keyword argument is deprecated. 
      `WhatsOpt(login=False)` should be replaced by `WhatsOpt()` with further wop versions.
  * **Breaking changes**: 
    * Now `WhatsOpt()` does not "log in" automatically: 
      * `WhatsOpt()` or `WhatsOpt(login=True)` has to be replaced by `WhatsOpt.login()`
    * Remove `PROD_URL`, `INTRANET_SERVER_URL` constants
    * Remove `default_url` property

* 1.21.2 (12/02/2022)
  * Fix `wop update` performance issue: avoid requesting package name when not required
  * **wop versions < 1.21 are deprecated**, support will be removed with WhatsOpt 1.22

* 1.21.1 (28/01/2022)
  * Add short options `-h` and `-v` for respectively `--help` and `--version`
  * Fixes:
    - On update, when removed do not regenerate scripts and discipline unit tests 
    unless relevant option (respectively `-r` or `-t`) is present. 
    - On update, when removed do not regenerate user files: setup.py, README, .gitignore 

* 1.21.0 (04/01/2022)
  - `wop pull --package <id>`: allows to generate code in _package mode_ meaning 
  generate proper directory structure and `setup.py` to allow code distribution as a Python package
  (only available with OpenMDAO framework at the moment). 

* 1.20.1 (15/12/2021)
  - Creation of dedicated file `.wop` which contains wop pull/update state
  (eg. whatsopt url, analysis id, etc.)  

* 1.20.0 (22/11/2021)
  - `wop push`: `--old` option triggering old deprecated implementation is removed  
  - `wop pull / wop update -r`: with WhatsOpt > 1.18.0, pull / update `run_mda.py`, `run_mdo.py`, `mda_init.py` 
    (`run_analysis.py`, `run_optimization.py`, `run_parameters_init.py` are removed). 
  - `wop upload mda_init.py`: upload analysis variables initialization.

* 1.19.0 (07/10/2021)
  - `wop update --egmdo`: generate code and scripts related to EGMDO method.
  - `wop convert <sqlite_filename>`: convert given OpenMDAO sqlite to csv file format  

* 1.18.0 (06/08/2021)
  - `wop pull --json --project-id <ident>`: pull project given its identifier as json on stdout
  - `wop push --json <project.json>`: create project from project json file  

* 1.17.0 (18/08/2021)
  - `wop upload <datafile.hdf5>`: upload data generated from GEMSEO scenario execution. 

* 1.16.1 (20/07/2021)
  - Fix `push` command to take into account value-to-val renaming in `meta` dict in OpenMDAO 3.10

* 1.16.0 (07/07/2021)
  - Change `wop upload` by using case outputs (instead of objective and constraints)
  to get all recorded responses. 

* 1.15.4 (05/07/2021)
  - Fix regexp using `import` keyword to detect execution framework 

* 1.15.3 (01/07/2021)
  - Fix `wop update` bug when the analysis is nested: server subdirectories were not updated

* 1.15.2 (01/07/2021)
  - Fix `wop update` bug when the analysis is nested: base files in subdirectories were not updated

* 1.15.1 (21/06/2021)
  - Fix `wop show [-a]` bug related to new source parameter used to be displayed in HTML footer
  - deprecate PROD_URL constant, replaced by INTRANET_SERVER_URL (selene)
  - add EXTRANET_SERVER_URL constant (ether)

* 1.15.0 (18/06/2021)
  - wop show -f <openmdao_problem.py> works without logging in WhatsOpt server

* 1.14.0 (15/06/2021)
  - Refactor push command:
    - default becomes old: wop push --old <openmdao_problem.py> (--old is temporary and will be removed in a future release)
    - experimental becomes default: -x/--experimental removed

* 1.13.1 (28/05/2021)
  - wop pull --dry-run <analysis_id>: list pull actions but do not execute
  - wop update --gemseo/--openmdao: to switch between the two frameworks
  - wop status: display detected framework, remove notes

* 1.13.0 (25/05/2021)
  - wop pull --gemseo <analysis_id>: to generate GEMSEO code instead of OpenMDAO one (default)
  - wop serve -p <port_number>: to run analysis server on port port_number

* 1.12.0 (05/10/2020)
  - wop list: list analyses owned by the user
  - wop list -a: list all analyses available for the user
  - wop list -p project: list all analyses available for the user of the given project substring
  - remove wop url (not really used and not relevant anymore with wop status)
  - fix OpenMDAO 3.4 compatibility
  - require OpenMDAO >= 3.4, xdsmjs>=1.0.0

* 1.11.0 (23/09/2020)
  - wop pull: add --json option to dump pushable analysis json format 
  - wop push: add --json option to import analysis from json format 

* 1.10.0 (18/06/2020)
  - new wop status command: returns the current server and pulled analysis status
  - wop push: default depth change from 3 to 2
  - wop show: add --experimental option to allow showing any openmdao code

* 1.9.0 (08/06/2020)
  - wop push: 
    - add --experimental (-x) push option allowing to push any code for reverse-engineering only
    - add --depth <n> push only n levels of sub-analyses (0 means no limit, default is 3)
    - Know bug: -d option using -x experimental push can lead to duplicate variables
  - wop show:
    - add --depth option (see push command above)  

* 1.8.0 (20/04/2020)
  - wop show: display XDSM of given analysis :
    - either an existing on the remote server (-a option)
    - or by specifying an openmdao problem python file (-f option)
    - otherwise use current analysis from code (previously generated with wop pull)
  - require openmdao_extensions >= 1.0.0, openmdao >= 3.0.0

* 1.7.0 (15/04/2020)
  - wop push: add -c component option allowing to push one OpenMDAO component

* 1.6.0 (05/04/2020)
  - add API for WhatsOpt SEGOMOE optimization

* 1.5.0 (18/03/2020)
  - fix upload and push commands using OpenMDAO >= 2.10 hooks
  - drop Python 2.7 support

* 1.4.0 (27/02/2020)
  - wop upload: work with WhatsOpt >= 1.6
  - wop upload: -p option to upload sqlite files generated by parallel doe run
  - wop upload: user can upload run_parameter_init 
  - wop upload: user can upload parallel doe results
  - add short name options
  - add message coloring
  - refactoring and automated tests

* 1.3.0 (04/10/2019)
  - wop pull/update: download file as required by analysis definition
  (e.g. download optimization script if an objective is defined or 
  pull new files if a new discipline is defined, etc.)
  - higlight messages according to their log level (info, warn or error)

* 1.2.0 (24/09/2019)
  - wop upload: filter nan and inf, add --only-success option

* 1.1.0 (28/08/2019)
  - add csv data upload as DOE execution of an existing analysis
  - add csv data upload without any existing analysis (an ad hoc one is created)
  - add --outvar-count upload option used to pass output variable number when uploading
  data in csv format (default is 1).
  - remove upload --cleanup option

* 1.0.0 (20/06/2019)
  - version for AIAA Aviation 2019 (17-21th Dallas TX)
