All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This release mainly revamps and completes the bill-teams
plugin that is used for billing eLabFTW usage at the
University of Heidelberg. It also addresses one important issue with third-party
plugins about version Python version mismatch.
- Revamped
bill-teams
plugins withgenerate-table
andregistry
commands - Add
TXT
format support for--format
wherever--format
is supported
- Fix response format being incorrectly fallback-ing to
TXT
(GH #143) - Fix plugins using packages that use binary builds failing (GH #145)
- Improved how internal logic for
--export
acting as a both boolean and a string (e.g., a file path) - A third-party plugin that uses a virtual environment must use the same Python version as elAPI's own (GH #146)
This release brings some general bugfixes, improvements, and new library APIs.
- New sub-endpoint
/users/{id}/uploads
(GH #136) - Better support for third-party plugins (GH #136)
- New
plugins
configuration field for plugin-specific settings (GH #136) - Introduce
project_dir
to plugin metadata fileelapi_plugin_metadata.yml
(GH #136, 191a049) - Aggressive logging support for
elapi.loggers.add_message
; addchange_logger_state
that controls logger class state (4aea161, 5a68585) - New and improved HTTP APIs: shared client support,
SimpleClient
,GlobalSharedSession
(GH #137) - elAPI specific user-agent string
elAPI/<elAPI version> python-httpx/<HTTPX version>
(4bde6cd) - Improved
BaseFormat
withpackage_identifier
attribute; better plugin formatter class support (GH #138) - Add
get_active_host_url_without_api_suffix
that complimentsget_active_host
(6e42a9c) - Add new elAPI logo (4ca1f1f)
- Fix configuration not being validated when
developer_mode
is missing (GH #133) - Fix third-party plugins breaking if they used relative imports (GH #134)
- Disable
--OC/--override-config
support fordevelopment_mode
(GH #136) - All public CLI commands now use
GlobalSharedSession
(GH #137) - Use
uvloop
instead of built-inasyncio
event loop forbill-teams
plugin (8c3750b); adduvloop
as an optional dependency touhd-urz
- Bump versions of following dependencies and optional dependencies:
rich
to13.8.0
,tenacity
to9.0
,python-dateutil
to2.9.0.post0
- Remove
keep_session_argument
parameter from HTTP APIs, which is replaced withshared_client
parameter (GH #137)
In collaboration with @alexander-haller.
This release brings some general bugfix and improvements.
- Add optional CLI argument
--highlight
/-H
(GH #129, 9986f8a)
- Fix optional validation causing
TypeError
for when elAPI is used inside a script (GH #126) - Fix long JSON text not being shown (GH #128)
- Fix highlighted output breaking
jq
(GH #127) - Fix minor bugs (GH #125)
- Use
__aclose__
and__acall__
for async HTTP APIs via abstract classAPIRequest
instead of__call__
and__close__
(1a88b00) - Always validate configuration, and validate only once (GH #129, 8996143)
- Remove CLI
--format
type optiontext
(da6f511)
In collaboration with @alexander-haller.
Hot-fix for README.md
.
README.md
(see commits: 588d8f5, 2780e1c)
Mainly a few hotfixes found during FDM Münster workshop.
INFO
message for when a plugin metadata file ending in.yaml
extension is found (#120)
- Fix elAPI plugin metadata file related issues (#118, #119)
- Fix
README.md
PyPI version badge not displaying new version
The first-iteration of our long-awaited 2.0.
- File path support for
--OC
,--data
,--headers
,--query
,--file
(#112) - Third-party plugin support (#111)
- Third-party plugin support with virtual environments (#114)
- Fix printing misleading success message (#35)
- Fix
bill-teams
involving plugin issue (#51)
- Default
timeout
is increased to90
s (52)
Part of an important change (making bill-teams
plugin
optional !53) unfortunately did not
work as expected. We release a quick fix in this development version.
The fourth development release was not the penultimate one before the final release. We now release the fifth development version. This release brings lots of bug fixes, improvements, new features and architectural changes necessary for upcoming 3rd-part plugin support.
- Refactor and restructure design pattern; current design pattern observably follows "simple layered design pattern" that allows proper 3rd-party plugin support !55
- New global
option
--override-config/--OC
!55 - Add support for new configuration
fields:
enable_http2
,verify_ssl
,timeout
#55 - Add startup callback
function
cli_startup
!55- Validate configuration during startup
- Add
typer.Typer
overloaded classelapi.plugins.commons.Typer
!55 - Add singleton class
MinimalActiveConfiguration
inelapi.configuration
that can always be used to get overloaded configuration values !55 - Make all HTTP client APIs configurable !55
- Add
generate-table
sub-command forbill-teams
plugin
- Fix too many
INFO
messages #42 - Fix logger throwing an exception #45
- Fix configuration not being validated #30
- Fix "current" as valid endpoint ID #49
- Fix JSON input parser issue #48
- Move raw command panel to
RAW API commands
panel - Make
bill-teams
plugin optional. This plugin can only be installed withpipx install elapi[uhd-urz]
!53 - Move
api.py
,endpoint.py
to its own package directoryapi/
- Relocate validator classes; add
validators.py
that aggregates all necessary validators to retain backward compatibility - Increased default timeout to 30 seconds !59
- Remove default keyword arguments (
timeout
) from HTTP clients
Fourth development release before the next stable version. This is mainly a hot-patch release. Big thanks to @AlexanderHaller for discovering the critical bug in due time (not the first time of course).
- Fix
elapi init
generating bad configuration file (#37) - Fix
--get-loc
forelapi post items_types
(#38)
Third development release before the next stable version. This release adds a number of improvements and bug fixes.
- New
--overwrite
argument for--export/-E
(!42) - Add
ValidationError
subclassPathValidationError
for path related validation errors only - Add
verbose
optional parameter toProperPath
class'screate
method for less noisy log messages (!44)
- Fix
experiments
plugin not recognizing uppercase experiment--format/-F
name (#33)
- Version numbers will follow the following format:
Major.Minor.Patch.dev<Integer>
. Previously, we were using-dev<Integer>
instead of.dev<Integer>
..dev<Integer>
is consistent with the versioning format normalized by pip (pip show elapi
). - elAPI only shows
An attempt to create directory <path> will be made
warning when<path>
is a directory.
Second development release before the next stable version. This release adds a number of improvements and bug fixes.
Mostly, this release introduces the new bill-teams
plugin.
Development release. This release adds a tons of new changes and improvements.
- Add warning in
README.md
about installing elapi outside virtual environment (#11) - Fix errors not being sent to
STDERR
(#10) - Fixed typos in CLI documentation
DEFAULT_EXPORT_DATA_FORMAT
is no longer hard-coded, and can be overloaded fromconfiguration
submodule
- elAPI can be run without error when run with no arguments. I.e., running elapi will show the default help message.
- New
version
command. - Formatter APIs (including base API
BaseFormat
) now supports multiple conventional names for formats. E.g.,yaml
andyml
conventions forYAMLFormat
.
- Fix timeout issue (#7)
- Change default export file extension from
.yaml
to.yml
to align with eLabFTW convention - Change
generate-invoice
's defaultbill-teams
information format fromYAML
toJSON
- Passing data as arguments to
elapi post
has been deprecated due to possible incompatibility betweentyper.Context
and Python 3.9.
Initial stable release to PyPI.
- Extensible architecture with support for plugins.
bill-teams
plugin to generate billing data and invoice for elabFTW teams.- Retry method for
bill-teams
. show-config
plugin that gives an overview of detected configuration.get
andpost
commands that sendGET
andPOST
requests respectively.- Configuration overloading across three locations.
- Support for validation before sending requests.
- Logging to STDERR and log file.
- Prettified text to terminal.
- Fix all kinds of early stage bugs. Details can be found in GitLab repository.
cleanup
command.
- Storing temporary data in
/var/tmp/elapi
.