Breakfix
- PyYAML 6.0.1 was released to address Cython 3 compile issues.
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
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
mock
to the list of modules for testing
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.
Announcement
Version sync with released Elasticsearch Python module.
Changes
- Fix
cloud_id
andhosts
collision 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.
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.
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.utils
andes_client.helpers.schemacheck
broke things. Sincepassword_filter
is not presently being used by anything else, I moved it toschemacheck.py
.- Use
hatch
andhatchling
for package building instead offlit
.- Update
elasticsearch8
dependency to8.6.1
- Removed the
requirements.txt
file as this is now handled bypyproject.toml
and doingpip install .
to grab dependencies and install them. YAY! Only one place to track dependencies now!!!- Removed the
MANIFEST.in
file as this is now handled bypyproject.toml
as well.- Update the docs build settings to use Python 3.11 and
elasticsearch8==8.6.1
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_REDACT
indefaults.py
) withREDACTED
. Keys are['password', 'basic_auth', 'bearer_auth', 'api_key', 'id', 'opaque_id']
Changes
- Python 3.11 was unofficially supported in 8.6.0.post4. It is now officially listed in
pyproject.toml
as a supported version.- Discovered that Builder was not validating Elasticsearch host URLs, and not catching those lead to an invisible failure in Curator.
Changes
- Fix an example in
README.rst
that showed the old and no longer viable way to get the client. New example reflects the current way.- Purge older setuptools files
setup.py
andsetup.cfg
in 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_html
was 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
.
Changes
- Improve
helpers.utils
functionverify_url_schema
ability 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.sh
requires 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.0
will create a test image. Likewise,destroy.sh
will clean it up afterwards, and also remove theDockerfile
which is created from theDockerfile.tmpl
template.
Changes
- Move the
get_version
method to its own function so other programs can also use it.- Pylint cleanup of most files
Changes
- Python prefers its own version to SemVer, so there are no changes but one of nomenclature.
Changes
- Improve the client configuration parsing behavior. If absolutely no config is given, then set
hosts
tohttp://127.0.0.1:9200
, which mirrors theelasticsearch8
client default behavior.
Changes
- Version bump
elasticsearch8==8.6.0
- Add 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.
Changes
- Version bump
elasticsearch8==8.5.3
- Version bump
certifi>=2022.12.7
- Add Docker test env for Elasticsearch 8.5.3
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.
Builder
now will not work unless you provide either aconfigdict
orconfigfile
. It will read and verify a YAMLconfigfile
if provided without needing to do any other steps now.
Builder.client_args
is 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
hosts
and connect to it instead of whatever was provided. You can still get a fulldict
of the client args withBuilder.client_args.asdict()
Builder.other_args
(reading inother_settings
from the config) now works the same asBuilder.client_args
. See the above for more info.
Changes
- Add new classes
ClientArgs
andOtherArgs
. 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 adict
of 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 aconfigdict
based on these objects toBuilder
, as you can see in the new sample scriptcli_example.py
for 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
click
as a dependency.- Moved some methods out of
Builder
to be functions ines_client.helpers.utils
instead.- Updated tests to work with all of these changes, and added new ones for new functions.
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
Changes
- Hopefully the last niggling detail. Removed erroneous reference to AWS ES and
boto3
compatibility from the description sent to PyPi.
Changes
- Added
setup_requires
section tosetup.cfg
.es_client
doesn't _need_ to havesetuptools
to install.- Unpinned from top-level version of
setuptools
to allow anything greater thansetuptools>=59.0.1
to fit with Curator's need forcx_Freeze
, which can't currently usesetuptools>60.10.0
Changes
- Several more doc fixes to make things work on ReadTheDocs.io
Changes
- Update test platform from ancient
nose
andUnitTest
framework to usepytest
. This also allows the client to run on Python 3.10.- Update
README.rst
so both GitHub and PyPi reflects what's in the documentation.
New Features
- Use
elasticsearch8==8.3.3
library 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
elasticsearch8
library no longer connects to AWS ES instances.
Changes
- Disregard root-level keys other than
elasticsearch
in 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.
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
Builder
class 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
Bug Fixes
- It was late, and I forgot to update
MANIFEST.in
to include subdirectories ofes_client
. This has been addressed in this release.
Initial Release