Changelog¶
8.17.5 (31 March 2025)¶
Announcement
Adapted to use the
tiered_debuglogging helper module. * Lots of replacements added to use tiered debug logging instead of logger.debug * With the tiered debug logging options, more verbose logging was added thatwill not be seen unless set to show more. See the
tiered_debugmodule for more information.Version bumped to
8.17.5.Updated tests to catch the new tiered debug logging.
All tests passing.
8.17.4 (18 March 2025)¶
Bugfix
Fixed a logging configuration bug to only assign a file handler if a log file is specified. Also fixed to ensure configuration goes to the root logger.
Changes
- Dependency version bumps in this release:
elasticsearch8==8.17.2
certifi>=2025.3.31
8.17.3 (6 March 2025)¶
Announcement
Logging changes¶
If you specify a log file in your configuration, it will now be used, and nothing should appear different for you. If, however, you do not specify a log file, the default behavior is to log to both STDOUT and STDERR, with the streams split. This is the new behavior. If you do not want this, you must specify a log file in your configuration.
$ python run_script.py --loglevel DEBUG test-stderr 1>stdout.log 2>stderr.log
This will log all output to stdout.log and all errors to stderr.log.
$ cat stdout.log ─╯
DEBUG: Overriding configuration file setting loglevel=INFO with command-line option loglevel=DEBUG
2025-03-06 17:53:01,038 DEBUG es_client.commands test_stderr:131 This is a debug message
2025-03-06 17:53:01,038 INFO es_client.commands test_stderr:132 This is an info message
Logging test complete.
$ cat stderr.log
2025-03-06 17:53:01,038 WARNING es_client.commands test_stderr:133 This is a warning message
2025-03-06 17:53:01,038 ERROR es_client.commands test_stderr:134 This is an error message
2025-03-06 17:53:01,038 CRITICAL es_client.commands test_stderr:135 This is a critical message
Changes
Changes in the
logging.pyfile to handle the new logging behavior. Also addedtest-stderrtocommands.pyandcli_example.pyto demonstrate the new behavior.Updated
defaults.pyto have a defaultLOGFORMATofdefault.
8.17.2 (26 February 2025)¶
Announcement
Attempting to allow the 8.x client to work with 7.x Elasticsearch servers by making
min_versionandmax_versionconfigurable at the time ofBuilderinstantiation. The default values are still limited to 8.x versions, but preliminary testing shows that the 8.x client works just fine for Curator against 7.14.x through 7.17.x servers with these changes.
Changes
The
Builderclass can now override the default minimum and/or maximum version:Builder(config, min_version=7.0.0, max_version=8.99.99).The
helpers.config.get_client()function can also take these arguments:helpers.config.get_client(config, min_version=7.0.0, max_version=8.99.99).Updated the date and copyright holder in
LICENSE.
8.17.1 (24 Janary 2025)¶
Announcements
Python 3.13 support…but with a caveat. * HUGE (potential) caveat, though. The Python 3.13 SSL implementation now has
X509_V_FLAG_X509_STRICTset by default. This unfortunately means that self-signed certificates created by Elasticsearch’scertutilwill not work with Python 3.13 as they do not yet include the key usage extension. If you are usinges_clientin any way with one of these certificates, I highly recommend that you not use Python 3.13 until this is resolved.
3.13 is excluded from the Hatch test matrix for this reason.
3.13 will still be tested manually with each release.
Changes
Python module version bumps: *
elasticsearch8==8.17.1*click==8.1.8*certifi>=2024.12.14Refactored
master_onlyfunctions and tests. I discovered some loopholes in my code when I was testing Python 3.13 against an Elastic Cloud instance, so I fixed them. This also necessitated a change in the integration tests.
8.15.2 (30 September 2024)¶
Changes
Python module version bumps: *
elasticsearch8==8.15.1*pyyaml==6.0.2*certifi>=2024.8.30
8.15.1 (23 August 2024)¶
Changes
Added
commands.pyas both a cleaner location for theshow_all_optionsfunction, as well as a place it could be imported and re-used.Updated
docs/example.rstanddocs/tutorial.rstto reflect these location changes.Updated
pytest.inito automatically look for and use.envfor environment variables for testing.Using versioned
docker_testscripts now from https://github.com/untergeek/es-docker-test-scripts
8.15.0 (13 August 2024)¶
Changes
Python module version bumps: *
elasticsearch8==8.15.0Make execution scripts more consistent and PEP compliant.
8.14.2 (6 August 2024)¶
Changes
Missed one instance of
sixmodule.
8.14.1 (6 August 2024)¶
Changes
sixmodule removed.Rolled back
voluptuousto be>=0.14.2to work with Python 3.8
8.14.0 (3 July 2024)¶
Changes
- Python module version bumps:
elasticsearch8==8.14.0
ecs-logging==2.2.0
voluptuous>=0.15.2
certifi>=2024.6.2Updated remaining tests to Pytest-style formatting.
Updated
docker_testscripts to most recent updates.
Bugfix
Fixed an error reported at https://github.com/elastic/curator/issues/1713 where providing an empty API
tokenkey would still result in the Builder class method_check_api_keytrying to extract data. Locally tracked at https://github.com/untergeek/es_client/issues/66
8.13.5 (7 May 2024)¶
Changes
Version bump for
elasticsearch8==8.13.1Code formatting changes (cleanup of lines over 88 chars, mostly).
Added
.coveragercImproved
docker_testscripts and env var importing in tests.
Bugfix
Discovered an instance where passwords were being logged. This has been corrected.
8.13.4 (30 April 2024)¶
Changes
Updated
docker_testscripts to enable TLS testing and better integration with pytest. TEST_USER and TEST_PASS and TEST_ES_SERVER, etc. are all populated and put into.envEven the CA certificate is copied to TEST_PATH, so it’s easy for the tests to pick it up. Not incidentally, the scripts were moved fromdocker_test/scriptsto justdocker_test. The tutorial in the documentation has been updated to reflect these changes.Added
pytest-dotenvas a test dependency to take advantage of the.envMinor code formatting in most files as I’ve switched to using
blackwith VS Code, and flake8, and mypy.
Bugfix
Found 1 stray instance of
update_settingsfrom before the DotMap switch. Fixed.
8.13.3 (26 April 2024)¶
Changes
After all that work to ensure proper typing, I forgot to include the
py.typedmarker file.
8.13.2 (25 April 2024)¶
Changes
Added typing hints, everywhere. Trying to make the module play nicer with others.
Moved all code under
src/es_clientto be more package compliant.Moved
__version__to__init__.pyUpdated the
pyproject.tomlfile to reflect these changes.Updated tests and documentation as needed.
Potentially Breaking Changes
Migrated away from custom
dict-to-attribute classArgstoDotMap. It’s the best of both worlds as it gives full dotted notation access to a dictionary, making it appear like class attributes. But it also still affords you the ability to treat each nested field just like a dictionary, still.Builder.client_argsandBuilder.other_argsshould look and feel the exact same as before, with one noted difference, and that is the.asdict()method has been replaced by the.toDict()method. This is the one change that might mess you up. If you are using that anywhere, please replace those calls. Also, if you were manually building these objects before, rather than supplying a config file or dict, you can create these now as follows:from es_client import Builder from dotmap import DotMap client_settings = {} # Filled with your client settings client_args = DotMap(client_settings) builder = Builder() builder.client_args = client_args # Or directly assign: builder.client_args = DotMap(client_settings)Updating a single key is simple:
other_args = DotMap(other_settings) other_args.username = 'nobody' other_args['password'] = 'The Spanish Inquisition'As noted, both dotted and dict formats are acceptable, as demonstrated above. Updating with a dictionary of root level keys is simple:
other_settings = { 'master_only': False, 'username': 'original', 'password': 'oldpasswd', } other_args = DotMap(other_settings) # DotMap(master_only=False, username='original', password='oldpasswd') changes = { 'master_only': True, 'username': 'newuser', 'password': 'newpasswd', } other_args.update(changes) # DotMap(master_only=True, username='newuser', password='newpasswd')If putting a nested dictionary in place, you should convert it to a DotMap first:
d = {'a':'A', 'b':{'c':'C', 'd':{'e':'E'}}} dm = DotMap(d) # DotMap(a='A', b=DotMap(c='C', d=DotMap(e='E'))) b = {'b':{'g':'G', 'h':{'i':'I'}}} dm.update(b) # DotMap(a='A', b={'g': 'G', 'h': {'i': 'I'}}) # ^^^ # Not a DotMap dm.update(DotMap(b)) DotMap(a='A', b=DotMap(g='G', h=DotMap(i='I')))It’s always safest to update with a DotMap rather than a bare dict. That’s about it.
8.13.1 (10 April 2024)¶
Bugfix
Reported in #60. Newer code changes do not work properly with Python versions < 3.10 due to changes to dictionary annotations. The offending code has been patched to work around this.
Announcement
Added infrastructure to test multiple versions of Python against the code base. This requires you to run
pip install -U hatch hatchling, and thenhatch run test:test. integration tests will fail if you do not have a local Elasticsearch running (see thedocker_test/scriptsdirectory for some help with that).
8.13.0 (2 April 2024)¶
Changes
Version bump:
elasticsearch8==8.13.0
8.12.9 (26 March 2024)¶
Bugfix
Reported in #1708. Default values (rather than None values) were overriding what was in config files. As a result, these default values from command-line settings were overriding important settings which were set properly in the configuration file. Hat tip to @rgaduput for reporting this.
Changes
Updated cli_example.py to make the
show_all_optionssub-command show the proper environment variables. This entailed resetting the context_settings. A note explaining the why is now in the comments above that function.Updates to reflect the default values in the command-line were made in the tutorial and example documentation pages.
A new documentation page was created specific to environment variables.
Version bump
voluptuous==0.14.2from0.14.1
8.12.8 (20 March 2024)¶
Bugfix
Really batting 1000 today. Missed some version bumps.
8.12.7 (20 March 2024)¶
Bugfix
Erroneously removed
sixdependency. It’s back at1.16.0.
8.12.6 (20 March 2024)¶
Changes
After reading and re-reading through the tutorial, I made a few doc changes.
ctx.objis instantiated inhelpers.config.context_settingsnow, saving yet another line of code from being needed in a functional command-line script.Decided it was actually time to programmatically approach the huge list of decorators necessary to make
es_clientwork in the example. Now there’s a single decorator,@options_from_dict()inhelpers.config, and it takes a dictionary as an argument. The form of this dictionary should be:{ "option1": {"onoff": {}, "override": {}, "settings": {}}, "option2": {"onoff": {}, "override": {}, "settings": {}}, # ... "optionN": {"onoff": {}, "override": {}, "settings": {}}, }The defaults are provided in
helpers.defaultsas constantsOPTION_DEFAULTSandSHOW_EVERYTHING. These can be overridden programmatically or very tediously manually.Dependency version bumps:
elasticsearch8==8.12.1 certifi==2024.2.2
8.12.5 (4 February 2024)¶
Changes
After some usage, it seems wise to remove redundancy in calling params and config in the functions
in helpers.config. This is especially true since ctx already has all of the params, and
ctx.params['config'] has the config file (if specified).
It necessitated a more irritating revamp of the tests to make it work (why, Click? Why can’t a Context be provided and just work?), but it does work cleanly now, with those clean looking function calls.
New standards include:
ENVIRONMENT VARIABLE SUPPORT. Very big. Suffice to say that all command-line options can now be set by an environment variable by putting the prefix
ESCLIENT_in front of the uppercase option name, and replace any hyphens with underscores.--http-compress Trueis settable by havingESCLIENT_HTTP_COMPRESS=1. Boolean values are 1, 0, True, or False (case-insensitive). Options likehostswhich can have multiple values just need to have whitespace between the values:ESCLIENT_HOSTS='http://127.0.0.1:9200 http://localhost:9200'It splits perfectly. This is big news for the containerization/k8s community. You won’t have to have all of the options spilled out any more. Just have the environment variables assigned.
ctx.obj['default_config']will be the place to insert a default configuration file _before_ callinghelpers.config.get_config().
helpers.config.get_arg_objects()will now setctx.obj['client_args'] = ClientArgs()andctx.obj['other_args'] = OtherArgs(), where they become part ofctx.objand are accessible thereby.
helpers.config.generate_configdictwill now populatectx.obj['configdict']
Builder(configdict=ctx.obj['configdict'])will work, as willhelpers.config.get_client(configdict=ctx.obj['configdict'])
In fact, this has been so simplified now that the flow of a command-line app is as simple as:
def myapp(ctx, *args): ctx.obj = {} ctx.obj['default_config'] = '/path/to/cfg.yaml' get_config(ctx) configure_logging(ctx) generate_configdict(ctx) es_client = get_client(configdict=ctx.obj['configdict']) # Your other code...
Additionally, the log blacklist functionality has been added to the command-line, the default
settings, the helpers.logging module, and the cli_example, which should be welcome news to
the containerized world.
Major work to standardize the documentation has also been undertaken. In fact, there is now a tutorial on how to make a command-line app in the documentation.
8.12.4 (1 February 2024)¶
Fixes
The try/except block for Docker logging needed to be out one level farther.
This should fix the permissions error issues at last.
8.12.3 (31 January 2024)¶
Change
Since I’m doing Schema validation here now, I think it appropriate to have a dedicated exception for SchemaCheck failures.
This will be FailedValidation.
8.12.2 (31 January 2024)¶
Fixes
In trying to make SchemaCheck reusable, I discovered that it _always_,
was unconditionally attempting apply the password_filter on every
config coming through. An empty filter shows up as None, causing
an AttributeError exception. Going to only do password_filter when
config is a dict.
8.12.1 (31 January 2024)¶
Announcement
TL;DR — I got sick of coding the same lines over and over again, and copy/pasting between projects. I put that code here to make it easier to reuse.
You can now make CLI/Click-related functionality more portable for your apps
using es_client.
There is not really any change to the base Builder class, nor the
ClientArgs or OtherArgs classes, so this is more a function of support
tools and tooling for handling the overriding of config file options with those
supplied at a command-line.
The improvements are visible in cli_example.py.
Some of these changes include:
Functions that simplify overriding configuration file options with ones from the command-line. Reduces dozens of lines of code to a single function call:
get_args(ctx.params, config), which overrides the values fromconfigwith the command-line parameters from Click.Re-usable
cli_optsClick option wrapper function, complete with overrides. This is demonstrated with the hidden options vs.show-all-optionsincli_example.py.Support basic logging configuration with
default,json, andecs
- New modules in
es_client.helpers:
config
loggingLots and lots of tests, both unit and integration.
Updated all documentation for modules, functions, and classes accordingly.
8.12.0 (29 January 2024)¶
Changes
- Dependency version bumps in this release:
elasticsearch8==8.12.0
voluptuous>=0.14.1
certifi>=2023.11.17
8.11.0 (15 November 2023)¶
Changes
- Dependency version bumps in this version:
elasticsearch8==8.11.0Replace
Mockwithunittest.Mockin unit tests.Add Python 3.12 as a supported version (tested).
8.10.3 (2 October 2023)¶
Fixes
Missed a few of the hidden options, and found a way to force the help output to
show for show-all-options without needing to add --help afterwards.
8.10.2 (2 October 2023)¶
Announcement
Again, no change in functionality. Changing some of the CLI options to be hidden by default (but still usable). These options include:
bearer_auth
opaque_id
http_compress
ssl_assert_hostname
ssl_assert_fingerprint
ssl_version
master-only
skip_version_test
This will hopefully not surprise anyone too badly. I haven’t heard of anyone
using these options yet. The CLI examle has been configured with a
show-all-options command that will show all of the hidden options.
8.10.1 (29 September 2023)¶
Announcement
No change in functionality. Adding some ways to have CLI building via Click
easier for end users by making the basic arguments part of the es_client
code. This is shown in the Example in the docs and in the code in
file example_cli.py.
8.10.0 (25 September 2023)¶
Announcement
The only changes in this release are dependency version bumps:
elasticsearch8==8.10.0
click==8.1.7
8.9.0 (31 July 2023)¶
Announcement
The only changes in this release are dependency version bumps:
elasticsearch8==8.9.0
click==8.1.6
certifi==2023.7.22
8.8.2.post1 (18 July 2023)¶
Breakfix
PyYAML 6.0.1 was released to address Cython 3 compile issues.
8.8.2 (12 July 2023)¶
Announcement
Apologies for another delayed release. Weddings and funerals and graduations have kept me from releasing anything in the interim.
Changes
Bring up to date with Elasticsearch 8.8.2 Python client
- Other updated Python modules:
certifi>=2023.5.7
click==8.1.4
8.7.0 (12 April 2023)¶
Announcement
Apologies for the delayed release. I have had some personal matters that had me out of office for several weeks.
Changes
Bring up to date with Elasticsearch 8.7.0 Python client.
Add
mockto the list of modules for testing
8.6.2.post1 (23 March 2023)¶
Announcement
Late 8.6.2 post-release.
Changes
Fix certificate detection. See #33.
Add one-line API Key support (the Base64 encoded one).
Update docs to reflect base64 token API Key functionality.
8.6.2 (19 February 2023)¶
Announcement
Version sync with released Elasticsearch Python module.
Changes
Fix
cloud_idandhostscollision detection and add test to cover this case.Code readability improvements (primarily for documentation).
Documentation readability improvements, and improved cross-linking.
Add example cli script to docs.
8.6.1.post1 (30 January 2023)¶
Announcement
Even though I had a test in place for catching and fixing the absence of a port with https,
it didn’t work in the field. Fix included.
Changes
Fixed unverified URL schema issue.
Found and corrected another place where passwords were being logged inappropriately.
8.6.1 (30 January 2023)¶
Announcement
With all of these changes, I kept this in-house and did local builds and pip imports until
I worked it all out.
Changes
Circular imports between
es_client.helpers.utilsandes_client.helpers.schemacheckbroke things. Sincepassword_filteris not presently being used by anything else, I moved it toschemacheck.py.Use
hatchandhatchlingfor package building instead offlit.Update
elasticsearch8dependency to8.6.1Removed the
requirements.txtfile as this is now handled bypyproject.tomland doingpip install .to grab dependencies and install them. YAY! Only one place to track dependencies now!!!Removed the
MANIFEST.infile as this is now handled bypyproject.tomlas well.Update the docs build settings to use Python 3.11 and
elasticsearch8==8.6.1
8.6.0.post6 (26 January 2023)¶
Announcement
I’m just cranking these out today! The truth is, I’m catching more things with the increased scrutiny of heavy Curator testing. This is good, right?
Changes
Discovered that passwords were being logged. Added a function to replace any value from a key (from
KEYS_TO_REDACTindefaults.py) withREDACTED. Keys are['password', 'basic_auth', 'bearer_auth', 'api_key', 'id', 'opaque_id']
8.6.0.post5 (26 January 2023)¶
Changes
Python 3.11 was unofficially supported in 8.6.0.post4. It is now officially listed in
pyproject.tomlas a supported version.Discovered that Builder was not validating Elasticsearch host URLs, and not catching those lead to an invisible failure in Curator.
8.6.0.post4 (26 January 2023)¶
Changes
Fix an example in
README.rstthat showed the old and no longer viable way to get the client. New example reflects the current way.Purge older setuptools files
setup.pyandsetup.cfgin favor of building withflit, usingpyproject.toml. Testing and dependencies here should install properly withpip install -U '.[test]'. After this, testing works withpytest, orpytest --cov=es_client --cov-report html:cov_html(cov_htmlwas added to.gitignore). These changes appear to be necessary to build functional packages for Python 3.11.Building now works with
flit. Firstpip install flit, thenflit build.
8.6.0.post3 (19 January 2023)¶
Changes
Improve
helpers.utilsfunctionverify_url_schemaability to catch malformed URLs. Added tests to verify functionality.Improve Docker test scripts. Now there’s only one set of scripts in
docker_test/scripts.create.shrequires a semver version of Elasticsearch at the command-line, and it will build and launch a docker image based on that version. For example,./create.sh 8.6.0will create a test image. Likewise,destroy.shwill clean it up afterwards, and also remove theDockerfilewhich is created from theDockerfile.tmpltemplate.
8.6.0.post2 (18 January 2023)¶
Changes
Move the
get_versionmethod to its own function so other programs can also use it.Pylint cleanup of most files
8.6.0.post1 (17 January 2023)¶
Changes
Python prefers its own version to SemVer, so there are no changes but one of nomenclature.
8.6.0+build.2 (17 January 2023)¶
Changes
Improve the client configuration parsing behavior. If absolutely no config is given, then set
hoststohttp://127.0.0.1:9200, which mirrors theelasticsearch8client default behavior.
8.6.0 (11 Janary 2023)¶
Changes
Version bump
elasticsearch8==8.6.0Add Docker test environment for Elasticsearch 8.6.0
Fixes
Docker test environment for 8.5.3 was still running Elasticsearch version 8.4.3. This has been corrected.
8.5.0 (11 January 2023)¶
Changes
Version bump
elasticsearch8==8.5.3Version bump
certifi>=2022.12.7Add Docker test env for Elasticsearch 8.5.3
8.1.0 (3 November 2022)¶
Breaking Changes
Yeah. I know. It’s not semver, but I don’t care. This is a needed improvement, and I’m the only one using this so far as I know, so it shouldn’t affect anyone in a big way.
Buildernow will not work unless you provide either aconfigdictorconfigfile. It will read and verify a YAMLconfigfileif provided without needing to do any other steps now.
Builder.client_argsis not a dictionary any more, but a subclass with regular attributes. Yes, you can get and set attributes however you like now:b = Builder(configdict=mydict, autoconnect=False) print('Provided hosts = %s' % b.client_args.hosts) b.client_args.hosts = ['https://sub.domain.tld:3456'] print('Updated hosts = %s' % b.client_args.hosts) b.connect()Yes, this will effectively change the entry for
hostsand connect to it instead of whatever was provided. You can still get a fulldictof the client args withBuilder.client_args.asdict()
Builder.other_args(reading inother_settingsfrom the config) now works the same asBuilder.client_args. See the above for more info.
Changes
Add new classes
ClientArgsandOtherArgs. Using classes like these make setting defaults, updates, and changes super simple. Now everything is an attribute! And it’s still super simple to get adictof settings back usingClientArgs.asdict()orOtherArgs.asdict(). This change makes it super simple to create this kind of object, override settings from a default or command-line options, and then export aconfigdictbased on these objects toBuilder, as you can see in the new sample scriptcli_example.pyfor overriding a config file with command-line settings.Added sample CLI override capacity using
click. This will make Curator and other projects easier. It’s not even required, but a working example helps show the possibilities. You can run whatever you like withclick, or stick with config files, or whatever floats your boat.The above change also means pulling in
clickas a dependency.Moved some methods out of
Builderto be functions ines_client.helpers.utilsinstead.Updated tests to work with all of these changes, and added new ones for new functions.
8.0.5 (28 October 2022)¶
Changes
Version bumped elasticsearch8 module to 8.4.3
Version bumped certifi module to 2022.9.24
Added Docker tests for Elasticsearch 8.4.3
8.0.4 (23 August 2022)¶
Changes
Hopefully the last niggling detail. Removed erroneous reference to AWS ES and
boto3compatibility from the description sent to PyPi.
8.0.3 (23 August 2022)¶
Changes
Added
setup_requiressection tosetup.cfg.es_clientdoesn’t _need_ to havesetuptoolsto install.Unpinned from top-level version of
setuptoolsto allow anything greater thansetuptools>=59.0.1to fit with Curator’s need forcx_Freeze, which can’t currently usesetuptools>60.10.0
8.0.2 (23 August 2022)¶
Changes
Several more doc fixes to make things work on ReadTheDocs.io
8.0.1 (23 August 2022)¶
Changes
Update test platform from ancient
noseandUnitTestframework to usepytest. This also allows the client to run on Python 3.10.Update
README.rstso both GitHub and PyPi reflects what’s in the documentation.
8.0.0 (22 August 2022)¶
New Features
Use
elasticsearch8==8.3.3library with this release.Updated all APIs to reflect updated library usage patterns as many APIs have changed.
Native support for API keys
Native support for Cloud ID URL types
Updated tests for better coverage
Removed all AWS authentication as the
elasticsearch8library no longer connects to AWS ES instances.
1.1.1 (19 April 2018)¶
Changes
Disregard root-level keys other than
elasticsearchin the supplied configuration dictionary. This makes it much easier to pass in a complete configuration and only extract the elasticsearch part.Validate that a dictionary was passed, as opposed to other types.
1.1.0 (19 April 2018)¶
New Features
Add YAML configuration file reading capability so that part is included here, rather than having to be bolted on by the user later on.
Changes
Moved some of the utility functions to the
Builderclass as they were not needed outside the class. While this would be a semver breaking change, the library is young enough that I think it will be okay, and it doesn’t break anything else.Put the default Elasticsearch version min and max values in
default.py
1.0.1 (12 April 2018)¶
Bug Fixes
It was late, and I forgot to update
MANIFEST.into include subdirectories ofes_client. This has been addressed in this release.
1.0.0 (11 April 2018)¶
Initial Release