---------------------
Added
~~~~~
* Query keywords with interval ranges now also support single-sided ranges by using ``None`` or ``'*'`` to denote no bound,
for example ``query(date=(None, 'NOW-1YEAR'))``. If both bounds are set to unlimited, the keyword will be removed
from the query. (`210 <https://github.com/sentinelsat/sentinelsat/issues/210>`_)
* Raise an exception in case of duplicate keywords present in a query. Case is ignored to match the server-side behavior. (`210 <https://github.com/sentinelsat/sentinelsat/issues/210>`_)
* Support for Python 3.7
* Support for GeoJSON files with a single ``Feature`` without a ``FeatureCollection.`` (`224 <https://github.com/sentinelsat/sentinelsat/issues/224>`_ `scottstanie <https://github.com/scottstanie>`_)
* Added support for Unicode symbols in search queries. (`230 <https://github.com/sentinelsat/sentinelsat/issues/230>`_)
* Raise ValueError exception if longitude is outside [-180, 180] or latitude is outside [-90, 90] (`236 <https://github.com/sentinelsat/sentinelsat/issues/236>`_, `#218 <https://github.com/sentinelsat/sentinelsat/issues/218>`_ `Andrey-Raspopov <https://github.com/Andrey-Raspopov>`_)
* optional ``timeout`` attribute to avoid indefinite wait on response from the server (`256 <https://github.com/sentinelsat/sentinelsat/issues/256>`_, `viktorbahr <https://github.com/viktorbahr>`_)
* Parsing the ``Online``, ``CreationDate`` and ``IngestionDate`` fields of an OData response
* Trying to download an offline product from the Copernicus Open Access Hub triggers its retrieval from the long term archive.
Downloading of the product is **not** scheduled.
* Added support for downloading Sentinel 5P data in the CLI via the '--sentinel 5' flag
Changed
~~~~~~~
* Add support in the CLI for reading credentials from `~/.netrc` and document existing functionality in the API (`90 <https://github.com/sentinelsat/sentinelsat/issues/90>`_)
Fixed
~~~~~
* Spaces in query parameter values are now handled correctly be escaping them with a backslash, where appropriate. (`169 <https://github.com/sentinelsat/sentinelsat/issues/169>`_, `#211 <https://github.com/sentinelsat/sentinelsat/issues/211>`_)
* Fixed some CLI errors not returning a non-zero exit code. (`209 <https://github.com/sentinelsat/sentinelsat/issues/209>`_)
* Fixed typo for ``area_relation`` query parameter documentation from ``'Intersection'`` to ``'Intersects'``. (`225 <https://github.com/sentinelsat/sentinelsat/issues/225>`_ `scottstanie <https://github.com/scottstanie>`_)
* Updated ``check_query_length()`` logic to match the changed server-side behavior. (`230 <https://github.com/sentinelsat/sentinelsat/issues/230>`_)
* Clarify usage of GeoJSON files with CLI in docs (`229 <https://github.com/sentinelsat/sentinelsat/issues/229>`_ `psal93 <https://github.com/psal93>`_)
* ``to_geopandas()`` now returns an empty GeoDataFrame for an empty product list input.
Development Changes
~~~~~~~~~~~~~~~~~~~
* Replaced ``[test]`` and ``[docs]`` with a single ``[dev]`` installation extras target. (`208 <https://github.com/sentinelsat/sentinelsat/issues/208>`_)
* Adapted `.travis.yml` to build `fiona` and `pyproj` from source for Python 3.7.
* Minimum pytest version ``pytest >= 3.6.3`` required by ``pytest-socket``.
* The existing practice of not accessing the network from unit tests, unless running with ``--vcr record_new`` or
``--vcr reset``, is now enforced by throwing a ``SocketBlockedError`` in such cases. (`207 <https://github.com/sentinelsat/sentinelsat/issues/207>`_)