Releases: AnalogJ/lexicon
Releases · AnalogJ/lexicon
Lexicon v3.19.0
Lexicon v3.18.0
Lexicon v3.17.0
Added
- New method to determine the actual zone name for a given FQDN. Historically it was an extraction
of the second-level domain given well-known TLDs (eg.,domain.netforwww.domain.net) using
tldextract, and usage of--delegatedoption to enforce a specific zone name that is useful for
third-level domains hosted on a specific zone (eg., sub-zonesub.domain.netdelegated from zone
domain.net).
It is now possible to use the--resolve-zone-nameflag on Lexicon client to trigger an actual
resolution of the zone name from a given FQDN using live DNS servers by leveragingdnspython
utilities. Most of the time this makes--delegateduseless, since Lexicon will be able to guess
the correct zone name. 
Lexicon v3.16.1
Added
- Add support to Python 3.12.
 
Modified
- Support older versions of requests (<2.27.0) in 
ovhprovider. 
Lexicon v3.16.0
Removed
- Drop support for Python 3.7
 
Lexicon v3.15.1
Modified
- Protect 
ovhprovider against invalid response bodies
that are returned sometimes by OVH APIs. 
Lexicon v3.15.0
Added
- Add 
pyotpPython dependency in Lexicon to help implementing OTP (one-time password)
on providers whose API supports this kind of authentication. - Add OTP support on 
hoverprovider, with a new flag named--auth-totp-secret. - Add type marker 
py.typedto inform types checkers about availability of type
annotations in Lexicon codebase. 
Modified
- Fix and modernize ReadTheDoc documentation build.
 - Better error management and resource cleanup when 
Clientis used as a context manager. 
Removed
- Stop using 
cryptographyin providers where only hashing is needed. 
Lexicon v3.14.1
Added
- Add back declared support to Python 3.7 for few cycles
 
Lexicon v3.14.0
Added
- New way to invoke Lexicon as a library: 
lexicon.client.Clientbecomes a context manager.
When invoked with thewithkeyword, it will provide an operation object that embeds the
target provider fully authenticated (authenticatemethod called on the Provider).
This operation object gives access to four methods:create_record,update_record,
delete_recordandlist_records. These methods can be invoked instead of the old
executemethod to execute a specific action on the DNS zone. In this case,type,
name,contentfields do not need to be set in the config anymore, since they are
passed directly as arguments to the new methods. Upon context manager closing, thecleanup
method defined in the Provider is ensured to be called. See the README file of the project
for an example of how to use this new approach. - Python warnings are emitted from the code to alert about the deprecations listed below.
 
Modified
- Former 
NAMESERVER_DOMAINvariable andprovider_parserfunction that had to be defined
in each provider module are respectively migrated toget_nameservers
andconfigure_parserstatic methods in each Provider class. They are defined as abstract
in the interface and must be implemented in the concrete classes. - Former private methods 
_create_record,_modify_record,_delete_record
and_list_recordsare migrated to their public counterpartcreate_record,
modify_record,delete_recordandlist_recordsin each Provider class. These are
the new abstract methods for each action that need to be implemented. - Method 
lexicon.client.Client.executeis deprecated and will be removed in Lexicon 4. - Package 
lexicon.providers, containing the actual provider implementations, is migrated to
lexicon._private.providers. The provider implementations are not supposed to be used
directly, please uselexicon.client.Clientinstead with the new methods described above.
Packagelexicon.providersstubs tolexicon._private.providersto ease the migration
path, but it is deprecated and will be removed in Lexicon 4. - Module 
lexicon.providers.base, that contains the Provider interface to implement, is
migrated to modulelexicon.interfaces. Modulelexicon.providers.basestubs
tolexicon.interfacesto ease the migration path, but it is deprecated and will be removed
in Lexicon 4. - Modules 
lexicon.cli,lexicon.parserandlexicon.discoveryare migrated to the
private packagelexicon._privateas they are not part of the public API. Old modules
stubs to the new modules in the private packagelexicon._privateto ease the migration path,
but it is deprecated and will be removed in Lexicon 4. - Update documentation, in particular the developer guide, to take into account the new
architecture of the code to implement a new Provider. - Functional codebase in 
/lexiconfolder is moved in/src/lexiconfolder to comply with
modern Python project layouts. Tests are migrated to/testsfolder. 
Removed
- Drop support for Python 3.7