Code owners
Assign users and groups as approvers for specific file changes. Learn more.
To find the state of this project's repository at the time of any of these versions, check out the tags.
- Changelog
- [Unreleased]
- Added
- Changed
- Deprecated
- Removed
- Fixed
- Security
- Documentation
- [0.16.0] - 2024-11-13
- Added
- Changed
- Deprecated
- Fixed
- [0.15.1] - 2024-08-21
- Deprecated
- Fixed
- Documentation
- [0.15.0] - 2024-07-09
- Added
- Changed
- Removed
- Fixed
- Documentation
- [0.14.0] - 2024-02-20
- Added
- Changed
- [0.13.2] - 2023-12-15
- Fixed
- [0.13.1] - 2023-10-11
- Fixed
- [0.13.0] - 2023-10-10
- Added
- Changed
- Deprecated
- Fixed
- [0.12.0] - 2023-06-02
- Added
- Deprecated
- Fixed
- Documentation
- [0.11.2] - 2023-03-14
- Fixed
- [0.11.1] - 2023-03-07
- Changed
- Fixed
- [0.11.0] - 2023-01-19
- Added
- Changed
- Fixed
- Documentation
- [0.10.0] - 2022-11-14
- Added
- Changed
- Deprecated
- Fixed
- [0.9.0] - 2022-10-24
- Added
- Fixed
- Documentation
- [0.8.0] - 2022-07-12
- Removed
- Fixed
- [0.7.4] - 2022-05-31
- Fixed
- [0.7.3] - 2022-05-03
- Added
- Changed
- Fixed
- [0.7.2] - 2022-03-25
- Deprecated
- Fixed
- Documentation
- [0.7.1] - 2022-03-11
- Documentation
- [0.7.0] - 2022-01-21
- Added
- Fixed
- Security
- [0.6.1] - 2021-12-03
- Fixed
- [0.6.0] - 2021-10-19
- Added
- Changed
- Deprecated
- Fixed
- Security
- [0.5.2] - 2021-06-03
- Added
- Changed
- Fixed
- Security
- [0.5.1] - 2021-02-12
- Fixed
- [0.5.0] - 2021-02-11
- Added
- Changed
- Removed
- [0.4.1] - 2021-02-10
- Added
- Fixed
- [0.4.0] - 2020-07-17##
- Added
- Changed
- Deprecated
- Fixed
- [0.3.0] - 2020-04-24##
- Added
- Fixed
- [0.2.4] - 2020-04-23
- Added
- Changed
- Deprecated
- Fixed
- [0.1.0] - 2018-10-09
- Added
CHANGELOG.md 20.22 KiB
Changelog
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.
[Unreleased]
Added
- New setup extra
test
which installs the dependencies for testing. - The Container class has a new member function
filter
which is based o_filter_entity_list
. - The
Entity
properties_cuid
and_flags
are now available for read-only access ascuid
andflags
, respectively.
Changed
Deprecated
Removed
- Support for Python 3.8
Fixed
-
#73
Entity.to_xml
now detects potentially infinite recursion and prevents an error -
#89
to_xml
does not addnoscript
orTransactionBenchmark
tags anymore -
#103
authentication/interface/on_response()
does not overwriteauth_token
if new value isNone
- #119 The diff returned by compare_entities now uses id instead of name as key if either property does not have a name
-
#87
XMLSyntaxError
messages when parsing (incomplete) responses in case of certain connection timeouts. The diff returned by compare_entities now uses id instead of name as key if either property does not have a name -
#127
pylinkahead.ini now supports None and tuples as values for the
timeout
keyword
Security
Documentation
[0.16.0] - 2024-11-13
Added
-
ParentList
andPropertyList
now have afilter
function that allows to select a subset of the contained elements by ID and/or name. - Official support for Python 3.13
- Added arguments to
describe_diff
that allow customizing the labels for the 'old' and the 'new' diffs. - Optional
realm
argument forlinkahead_admin.py set_user_password
which defaults toNone
, i.e., the server's default realm.
Changed
-
compare_entities
is now case insensitive with respect to property and recordtype names -
_ParentList
is now calledParentList
-
_Properties
is now calledPropertyList
-
ParentList.remove
is now case insensitive when a name is used.
Deprecated
- the use of the arguments
old_entity
andnew_entity
incompare_entities
is now deprecated. Please useentity0
andentity1
respectively instead.
Fixed
-
gitlab.indiscale.com#200
linkahead_admin.py
prints reasonable error messages when users or roles don't exist.
[0.15.1] - 2024-08-21
Deprecated
-
connection.get_username
. Usela.Info().user_info.name
instead.
Fixed
-
#128
Assign
datetime.date
ordatetime.datetime
values toDATETIME
properties.
Documentation
- Added docstrings for
linkahead.models.Info
andlinkahead.models.UserInfo
.
[0.15.0] - 2024-07-09
Added
- Support for Python 3.12
- The
linkahead
module now opts into type checking and supports mypy. -
#112
Entity.update_acl
now supports optional**kwargs
that are passed to theEntity.update
method that is called internally, thus allowing, e.g., updating the ACL despite possible naming collisions withunique=False
. - a
role
argument forget_entity_by_name
andget_entity_by_id
Changed
- Using environment variable PYLINKAHEADINI instead of PYCAOSDBINI.
Removed
- Support for Python 3.7
Fixed
-
#104 Selecting
parts of a
Container
with aslice
used to return alist
object instead of aContainer
, removing all useful methods of theContainer
class. This has been fixed and using aslice
such as[:2]
now returns a newContainer
. - #120 Unwanted subproperties in reference properties.
Documentation
- Added documentation and a tutorial example for the usage of the
page_length
argument ofexecute_query
.
[0.14.0] - 2024-02-20
Added
-
utils.merge_entities
now has amerge_id_with_resolved_entity
keyword which allows to identify property values with each other in case that one is an id and the other is an Entity with this id. Default isFalse
, so no change to the default behavior. -
apiutils.escape_quoted_text
for escaping text in queries.
Changed
-
cached_query()
now also caches uniqueness related exceptions.
[0.13.2] - 2023-12-15
Fixed
- #113 Container could fail to delete when there were reference properties.
- HTTP status 431 (Headers too long) now also raises an URI too long exception.
[0.13.1] - 2023-10-11
Fixed
- no Error when no configuration file is used Issue
[0.13.0] - 2023-10-10
Added
- New
page_length
parameter forcaosdb.execute_query
andcaosdb.Query.execute
. See docstrings for more details. -
Entity.remove_value_from_property
function that removes a given value from a property and optionally removes the property if it is empty afterwards.
Changed
-
_Messages
is nowMessages
and inherits from list instead of dict -
Message.__init__
signature changed andtype
defaults to "Info" now. -
Message.__eq__
changed. Equality is equality oftype
,code
, anddescription
now. - Rename from CaosDB to LinkAhead. For proper migration, follow the instructions
in
migration_to_linkahead.md
and check the documentation at docs.indiscale.com.
Deprecated
- The API of Messages has been simplified and some ways to interact with messages have been deprecated. Warnings are raised correspondingly.
-
Message.get_code
. Use thecode
property instead.
Fixed
- Detection for cyclic references when converting entites using the high level API.
[0.12.0] - 2023-06-02
Added
- Added location argument to
src/caosdb/utils/checkFileSystemConsistency.py
- Entity getters:
get_entity_by_<name/id/path>
- Cached versions of entity getters and of
execute_query
(cached_query
)
Deprecated
- getOriginUrlIn, getDiffIn, getBranchIn, getCommitIn (formerly apiutils) have been moved to caosdb.utils.git_utils
Fixed
- Fixed
src/caosdb/utils/checkFileSystemConsistency.py
Documentation
-
#83 - Improved
documentation on adding REFERENCE properties, both in the docstring of
Entity.add_property
and in the data-insertion tutorial.
[0.11.2] - 2023-03-14
Fixed
- root logger is no longer used to create warnings. Fixes undesired output in stderr
[0.11.1] - 2023-03-07
(Florian Spreckelsen)
Changed
- Renamed
caosdb.common.models._Parents
tocaosdb.common.models._ParentList
.
Fixed
-
caosdb-pylib#90:
Entity.get_parents_recursively()
did not work for unretrieved parents.
[0.11.0] - 2023-01-19
(Florian Spreckelsen)
Added
-
apiutils.EntityMergeConflictError
class for unresesolvable merge conflicts when merging two entities - Re-introduced support for Python 3.7
Changed
-
apiutils.merge_entities
now raises anEntityMergeConflictError
in case of unresolvable merge conflicts.
Fixed
- #82 Merging an entity with properties with missing datatype leads to Exception - The correct exception is raised in case of a missing LIST datatype.
Documentation
-
Fixed
{action}_entity_permissions
help line.
[0.10.0] - 2022-11-14
(Florian Spreckelsen)
Added
- HTTP connections are allowed additionally to HTTPS connections.
- Dependency on the
requests
package. - Dependency on the
python-dateutil
package. -
Connection.https_proxy
andConnection.http_proxy
option of the pycaosdb.ini and thehttps_proxy
andhttp_proxy
parameter of theconfigure_connection
function. See the documentation of the latter for more information. Note that theHTTP_PROXY
andHTTPS_PROXY
environment variables are respected as well, unless overridden programmatically. -
apiutils.empty_diff
function that returnsTrue
if the diffs of two entities found with thecompare_entitis
function are empty,False
otherwise.
Changed
-
apiutils.compare_entities
now has an optionalcompare_referenced_records
argument to compare referenced Entities recursively (fomerly, only the referenced Python objects would be compared). The default isFalse
to recover the original behavior. -
apiutils.merge_entities
now has an optionalmerge_references_with_empty_diffs
argument that determines whether a merge of two entities will be performed if they reference identical records (w.r.t th aboveempty_diff
function). Formerly this would have caused a merge conflict if the referenced record(s) were identical, but stored in different Python objects. -
apiutils.merge_entities
now has an optionalforce
argument (defaults toFalse
, i.e., the old behavior) which determines whether in case of merge conflicts errors will be raised or the properties and attributes of entity A will be overwritten by entity B.
Deprecated
-
Connection.socket_proxy
option of the pycaosdb.ini. Please useConnection.https_proxy
orConnection.http_proxy
instead. The deprecated option will be removed with the next minor release.
Fixed
- handling of special attributes (name, id, ...) in
apiutils.empty_diff
[0.9.0] - 2022-10-24
(Florian Spreckelsen)
Added
- Add TimeZone class and parse the server's time zone in the Info response.
Fixed
-
#141 (closed)
password_method = unauthenticated
not allowed by schema - Set PyYAML dependency back to PyYaml>=5.4.1 (from 6.0) for better compatibility with docker-compose
Documentation
- Added curator role permissions example to code gallery
[0.8.0] - 2022-07-12
(Timm Fitschen)
Removed
- Support for Python 3.6 and Python 3.7
Fixed
-
read()
of MockupResponse returns now an appropriate type on modern systems - caosdb-server#142 Can't create users with dots in their user names
[0.7.4] - 2022-05-31
(Florian Spreckelsen)
Fixed
-
#64 Use
Dict[]
andList[]
fromtyping
for type hinting instead ofdict[]
andlist[]
for compatibility with Python<3.9.
[0.7.3] - 2022-05-03
(Henrik tom Wörden)
Added
- New function in apiutils that copies an Entity.
- New EXPERIMENTAL module
high_level_api
which is a completely refactored version of the oldhigh_level_api
from apiutils. Please see the included documentation for details. -
to_graphics
now hasno_shadow
option.
Changed
- Added additional customization options to the plantuml module.
- The to_graphics function in the plantuml module uses a temporary directory now for creating the output files.
Fixed
- #75 (closed), #103 (closed) Fixed JSON schema to allow more sections, and correct requirements for password method.
[0.7.2] - 2022-03-25
(Timm Fitschen)
Deprecated
- In module
caosdb.apiutils
:-
CaosDBPythonEntity
class -
convert_to_entity
function -
convert_to_python_object
function
-
Fixed
- caosdb-pylib#106 Parsing Error in class caosdb.common.models.ACL. This may lead to the unintentional revocation of permissions for some users or roles during updates. However, no additional permissions are being granted.
Documentation
[0.7.1] - 2022-03-11
(Daniel Hornung)
Documentation
-
timeout
option in example pycaosdb.ini
[0.7.0] - 2022-01-21
Added
- Function in administration that generates passwords that comply with the rules.
Fixed
- #90 (closed) compare_entities function in apiutils does not check units
- #94 (closed) some special properties were not checked in compare_entities
Security
[0.6.1] - 2021-12-03
Fixed
- #50 keyring can be used as password input method again
- #81 (closed) compare_entities from apiutils does not compare entity values
[0.6.0] - 2021-10-19
Added
- It is possible now to supply a password for caosdb_admin on the command line and also activate the user directly using "-c".
- Added examples for complex data models to documentation
- extended apiutils with
resolve_reference(Property)
- is_reference function for Properties
- function
retrieve_substructure
that recursively adds connected entities.
Changed
- Retrievals of entities where the class does not match the entity role raise
a ValueError now. See
here for more
information. Updating a role is now being done by setting the
Entity.role
to the new role (as string). - Entity.add_property and Entity.add_parent do not accept
**kwargs
-style keywords anymore. Formerly known keywords have been refactored into named parameters. - #35 Loggers now use the name of the unit where they are called instead of a static name
Deprecated
-
id_query(ids)
in apiutils (to be removed with >=0.5.4) - The whole yamlapi with the following functions (to be removed with >=0.5.4):
append_sublist
kv_to_xml
dict_to_xml
yaml_to_xml
process
yaml_file_to_xml
insert_yaml_file
Fixed
-
#60 (closed) Unintuitive behavior of
Entity.role
after aEntity(id).retrieve()
Originally the role wasNone
. The correct role is present now. - #53 (closed) Documentation of inheritance
- #38 (closed) Dependencies in chunk-deletion of containers
Security
[0.5.2] - 2021-06-03
Added
- Entity State support (experimental, no StateModel support yet). See the
caosdb.State
class for more information. -
etag
property for thecaosdb.Query
class. The etag allows to debug the caching and to decide whether the server has changed between queries. - function
_read_config_files
to readpycaosdb.ini
files from different paths.
Changed
- Updated error-handling tutorial in documentation to reflect the new error classes
Fixed
- #45 (moved) - test_config_ini_via_envvar
Security
[0.5.1] - 2021-02-12
Fixed
-
#43 (closed) - Error with
execute_query
when server doesn't support query caching.
[0.5.0] - 2021-02-11
Added
- New exceptions
HTTPForbiddenException
andHTTPResourceNotFoundException
for HTTP 403 and 404 errors, respectively. -
BadQueryError
,EmptyUniqueQueryError
, andQueryNotUniqueError
for bad (unique) queries. - Added
cache
paramter toexecute_query
andQuery.execute
which indicates whether server may use the cache for the query execution. - Added
cached
property to theQuery
class which indicates whether the server used the cache for the execution of the last query. - Documentation moved from wiki to this repository and enhanced.
Changed
- Renaming of
URITooLongException
toHTTPURITooLongError
. - Raising of entity exceptions and transaction errors. Whenever any
transaction fails, a
TransactionError
is raised. If one ore more entities caused that failure, corresponding entity errors are attached as direct and indirect children of theTransactionError
. They can be accessed via theget_errors
(direct children) andget_all_errors
(direct and indirect children) methods; the causing entities are accessed byget_entities
andget_all_entities
. Thehas_error
method can be used to check whether aTransactionError
was caused by a specificEntityError
. - Unique queries will now result in
EmptyUniqueQueryError
orQueryNotUniqueError
if no or more than one possible candidate is found, respectively.
Removed
- Dynamic exception type
EntityMultiError
. -
get_something
functions from all error object inexceptions.py
AmbiguityException
[0.4.1] - 2021-02-10
Added
- Versioning support (experimental). The version db.Version class can represents particular entity versions and also the complete history of an entity.
- Automated documentation builds:
make doc
Fixed
- deepcopy of
_Messages
objects
[0.4.0] - 2020-07-17##
Added
-
[Entity|Container].get_property_values
for deeply nested references, e.g. from results of SELECT queries. - two new
password_method
s for thepycaosdb.ini
and theconfigure_connection
function:unauthenticated
for staying unauthenticated (and using the anonymous user) andauth_token
. Ifpassword_method == "auth_token"
theauth_token
option is required as well. - Empty string support (See caosdb-server#33 (closed))
Changed
-
get_property
method also accepts instances of properties now, e.g.record.get_property(Property(name="length"))
- the value of properties is parsed to python types (int, float, boolean) when setting the value with the setter and when the datatype changes. Before this change, the value was parsed to python types only when parsing an xml and only for int and float.
Deprecated
- Setting the
auth_token
option without setting thepassword_method
toauth_token
. This affects both thepycaosdb.ini
and theconfigure_connection
function. During the deprecation phase it will be assumed thatpassword_method
isauth_token
if the theauth_token
is set.
Fixed
- Replaced deprecated Logger.warn() method.
[0.3.0] - 2020-04-24##
Added
-
apiutils.apply_to_ids
-- a helper which applies a function to all ids which are used by an entity (own entity, parents, properties, references etc.).
Fixed
- import bugs in apiutils
[0.2.4] - 2020-04-23
Added
- An
auth_token
parameter forcaosdb.configure_connection(...)
. This parameter accepts a plain text auth token (which can only be issued by the CaosDB Server). Under the hood, auth tokens are stored plain, instead of urlencoded now. - New type of exception:
ConfigurationException
for misconfigurations. - Some unit tests, mainly for the
caosdb.connection.authentication
module - Advanced setup.py for easy versioning and publication as pypi repository.
-
caosdb.apiutils
has new functionsid_query
andretrieve_entities_with_ids
- New exception:
EntityDoesNotExistError
-
RELEASE_GUIDELINES.md
with release instructions. - More documentation and tests.
Changed
- pytest is the new preferred unit test frame work.
- If a password is specified in the configuration even though the
password_method is not set to
plain
, a warning is logged. - Under the hood, the password of from a
pass
orkeyring
call is not stored anymore. Instead the password is requested each time a login is necessary. - Always load system default CA repository into the ssl context.
- Datatypes are now in
caosdb.common.datatype
(though still available in the maincaosdb
namespace). - Logging to stdout is now more configurable.
Deprecated
Fixed
- #1 (closed) - Problems with pass as a credentials provider
- #3 (closed) - Python client does login before the first request to circumvent problems with anonymous role.
- Many other fixes
[0.1.0] - 2018-10-09
Tag v0.1
- Commit 6fc0dcaa
Added
- everything