This repository has been archived by the owner on Apr 7, 2022. It is now read-only.
Skip databaseds backends in PyTango compatibility module #212
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
PyTango
module exists for backward-compatibility reasons. In order to manage different import statements (e.g.from PyTango import [...]
,import PyTango.[...]
), all the pytango modules are imported and aliased insys.modules
. AnyImportError
is ignored since some dependencies are optional.This approach is fine as long as the modules don't show side effects on import. It turns out
tango.databaseds.db_access.beacon
importsbliss
which, when it exists, uses gevent to monkey patch the python standard library. This can lead to issues that are quite hard to debug.For this reason, the
db_access
modules are now filtered from this import routine. It shouldn't cause any backward compatibility issue since those modules are not really meant to be imported directly. They're usually imported by thetango.databaseds.database
module on the fly, depending on the current configuration.In the long run, the
databaseds
module should be refactored and properly documented. It should also provide a proper plugin system for the different database backends. Then, the most common database backends might stay in the project but the specific ones (such as beacon) should move to dedicated projects.