3.15.0
Added
Add pyotp Python dependency in Lexicon to help implementing OTP (one-time password) on providers whose API supports this kind of authentication.
Add OTP support on hover provider, with a new flag named --auth-totp-secret.
Add type marker py.typed to 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 Client is used as a context manager.
Removed
Stop using cryptography in providers where only hashing is needed.
3.14.0 - 13/08/2023
Added
New way to invoke Lexicon as a library: lexicon.client.Client becomes a context manager. When invoked with the with keyword, it will provide an operation object that embeds the target provider fully authenticated (authenticate method called on the Provider). This operation object gives access to four methods: create_record, update_record, delete_record and list_records. These methods can be invoked instead of the old execute method to execute a specific action on the DNS zone. In this case, type, name, content fields 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, the cleanup 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_DOMAIN variable and provider_parser function that had to be defined in each provider module are respectively migrated to get_nameservers and configure_parser static 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_records are migrated to their public counterpart create_record, modify_record, delete_record and list_records in each Provider class. These are the new abstract methods for each action that need to be implemented.
Method lexicon.client.Client.execute is 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 use lexicon.client.Client instead with the new methods described above. Package lexicon.providers stubs to lexicon._private.providers to 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 module lexicon.interfaces. Module lexicon.providers.base stubs to lexicon.interfaces to ease the migration path, but it is deprecated and will be removed in Lexicon 4.
Modules lexicon.cli, lexicon.parser and lexicon.discovery are migrated to the private package lexicon._private as they are not part of the public API. Old modules stubs to the new modules in the private package lexicon._private to 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 /lexicon folder is moved in /src/lexicon folder to comply with modern Python project layouts. Tests are migrated to /tests folder.
Removed
Drop support for Python 3.7
Lexicon v3.12.0
Added
Add duckdns provider (experimental support)
Add dnsservices provider
Add flexibleengine provider
Official support for Python 3.11
Modified
Upgrade API version used for azure provider
Various fixes for documentation
Fix check for extra dependencies
3.11.4
Modified
Better management of domain zone id in yandex provider
Fix create record action on glesys provider
Fix create multiple TXT records for the same name in azure provider
3.10.0
Added
Add --zone-id CLI flag for route53 provider
Add yandexcloud provider dedicated to Yandex Cloud solution
Modified
Improve documentation with auto-generation
Clarify that yandex provider supports Yandex PDD only
Use UUIDs in aliyun provider to avoid nonce collisions
3.9.4 - 14/02/2022
Added
Add webgo provider
Modified
Extend possible record types list for dreamhost provider
3.9.3 - 27/01/2022
Modified
Fix compatibility with requests>=2 in transip provider
This flag should be set for packages that import pkg_resources
and thus need setuptools after the build step.
Set this flag for packages that need it and bump PKGREVISION.
3.8.5
Modified
Complete redesign of the update and delete actions in GoDaddy provider to fix several issues
3.8.4
Added
Add the Value Domain provider
Modified
Fix issue on the GoDaddy provider for update actions
All checksums have been double-checked against existing RMD160 and
SHA512 hashes
Not committed (merge conflicts...):
net/radsecproxy/distinfo
The following distfiles could not be fetched (fetched conditionally?):
./net/citrix_ica/distinfo citrix_ica-10.6.115659/en.linuxx86.tar.gz
./net/djbdns/distinfo dnscache-1.05-multiple-ip.patch
./net/djbdns/distinfo djbdns-1.05-test28.diff.xz
./net/djbdns/distinfo djbdns-1.05-ignoreip2.patch
./net/djbdns/distinfo djbdns-1.05-multiip.diff
./net/djbdns/distinfo djbdns-cachestats.patch
3.8.0 - 04/10/2021
Modified
transip provider is deprecated and not maintained anymore, it will be replaced soon by a new transip provider build on top of the TransIP v6 REST API
Deleted
transip provider is not part of the full dns-lexicon extra, you need to install explicitly the transip extra instead
3.7.1 - 04/10/2021
Modified
Allow to use newer versions of cryptography
Fix doc about unit tests
3.7.0
Added
Add the Vercel provider (formerly known as Zeit)
Add the OpenShift Cloud Infrastructure (OCI) DNS provider
Modified
Keep old Zeit provider for compatibility purpose with deprecation notices
Support multiple domain statuses for Joker provider
3.6.1:
Modified
Support deprecated method_whitelist parameter in urllib3.util.retry.Retry for urllib3<1.26
Fix support of registered domains for INWX provider
Update mypy and use external types modules
3.6.0
Added
Vendor pynamecheap project for namecheap provider
Annotate public API with types
Check mypy types during CI
Add the RFC2136 DynDNS provider (named ddns)
Use Lexicon specific exceptions in code: AuthenticationError for authentication problems
Modified
Implement the base provider as an ABC class
Improve plesk provider for wildcard domains or subdomains
Use poetry-core instead of poetry for the builds
Switch to GitHub-native Dependabot
Deleted
Remove dependency of plesk provider to xmltodict
Remove some Python 2 specific code
Remove deprecated type parameter in providers public methods
3.5.4
Changed
Support both tldextract 2.x and 3.x
Upgrade third-party dependencies
Validate PowerDNS provider parameters
Support dnspython>=2.1 for localzone provider
Update Mythic Beasts documentation
Fix documentation build and publication
Deleted
Remove mock and nose dependencies
3.5.2 - 23/11/2020
Modified
Fix domains in "lock" state with joker provider
3.5.1 - 16/11/2020
Added
Add the Joker.com provider
Add environment variable TLDEXTRACT_CACHE_PATH to configure a tldextract cache custom location for Lexicon
Modified
Old environment variable TLDEXTRACT_CACHE_FILE is deprecated and will be removed in a future release
3.5.0 - 10/11/2020
Modified
Avoid installation problems with setuptools==50
Migrating codebase to Python 3.6+ specific features (Lexicon will explicitly break on older versions now)
Fix Easyname provider to work with their new website
3.4.5:
Added
Add pagination support to Google Cloud DNS provider
Add official support to Python 3.9
Add SSHFP record support to CloudFlare provider (library only)
Modified
Fix create/update operations when CAA records are presents in GoDaddy provider
Fix Hover provider with new authentication URL
3.4.3:
Modified
Improve versions constraints by declaring latest major versions known to work with Lexicon
3.4.2:
Modified
Relax versions constraints on Lexicon dependencies until there is a real need.
3.4.1:
Added
Add the Njalla provider
3.4.0:
Added
Use poetry to manage dependencies, build and package Lexicon.
Add integration tests for Mac OS X
Changed
The beautifulsoup4 dependency has been integrated to the core ones for generic purpose. As a consequence henet, easyname and gratisdns providers do not have optional dependencies anymore.
Update Docker image to use Python 3.8, and install Lexicon with full extras.
Removed
Remove support for Python 2.7.
Remove support for Python 3.5.
Remove the extra security from requests dependency which does not make sense anymore on recent versions of Python.
3.3.28:
Added
Redesign of the release process using Azure Pipelines
Create a dedicated documentation on ReadTheDoc, refactor README.md into README.rst
Modified
Fix localzone provider to make it work with dnspython 2.x
Update easyname provider against the recent API changes
v3.3.26:
More straightforward approach to configure tests suites
v3.3.25:
Allow updating gandi rrset ttl. Previously, a rrset ttl could be set only when creating a new record
Final customizations for hetzner dns api v1. The main fix is, that hetzner does not need the fqdn as record name. This leads to major errors like: record name=sub1.my-fqdn.tld --> record created with final name sub1.my-fqdn.tld.my-fqdn.tld
Delete config.yml delete circleci integration. no longer necessary.
v3.3.24
Fixed create and update operations for GoDaddy if CAA records are present
v3.3.23
Add initial support for UltraDNS provider Signed-off-by
remove hetzner special handling from dehydrated.default.sh as it's not supported anymore
v3.3.22
Additional security to prevent unexpected DNS change
prevent merge issues
make the pylint happy
some more pylint fixes
Fix lint
Finish the new implementation
Fix lint
v3.3.21
With apologies to the linter
Update and fix tests
Fix lint
v3.3.20
Fix lint error
Adding a new hetzner provider compatible with dns.hetzner.com
v3.3.19
Fix linting complaints for snakecase
Correct indentation
Fix error handling for "zone not found"
line length
Add new ZoneNotFoundError exception
Correct path to vcrpy recordings in docs
Update zone used in tests, and vcrpy recordings
Update nameserver domais and API token URL
Delete records in the wrong path
v3.3.18:
Changes to robst parser 'html5lib' for Hetzner The parser BeautifulSoup(dom, 'html.parser') had problems by with malformed HTML code, i.e. a second closing tag.
v3.3.17:
Decode also private domains. The tldextract library ignores private domains, so domain test.us.com is wrongly extracted as subdomain=test, domain=us and suffix=com. When allowing private domains, the extraction of test.us.com looks like subdomain=, domain=test and suffix=us.com.
3.3.16
Introduce Gransy provider.
Fix Subreg.cz nameserver name.
3.3.15
Update godaddy.py
3.3.14
Adds subaction as query parameter instead of using url argument.
Addresses code style.
Removes unnecessary print statement.
Adds code author info and link to API docs.
Adds test recordings for EUserv provider.
Fixes case when identifier is None. Attempts to find the identifier with the given arguments.Adds test class for EUserv with filtering.
Adds macOS specific .DS_Store file.
Fixes determining subdomain parameter. This provider automatically appends the domain name to the subdomain. Therefore, it needs to be removed from the parameter in case the name argument contains it.
Adds support for deleting records.
Adds support for updating records.
Moves TTL and priority parameter processing to helper functions.
Adds support for creating records.
Adds logger calls and small fixes.
Adds support for listing records.
Adds retrieval of actual domain ID.
Initial version of EUserv provider with working authentication.
3.3.13
Fix auto provider handling of parameters.
3.3.12
Change uri check after login for easyname.
v3.3.11:
- fixed loglevel of debug message
- add "Accept" header to request
- Rename capsule.yml to packagr.yml
- Updated linode4 provider to enforce case insensitivity
- Updated linode provider to enforce case insensitivity