Edge Cases#

This page documents the recovecos that usually appear during real integration.

1. Optional Imports at Top Level#

Avoid this:

import mdtraj  # top-level optional import

Do this:

@dep_digest("mdtraj")
def to_mdtraj(obj):
    import mdtraj
    ...

Reason:

  • top-level imports break lazy startup.

2. Missing vs Broken _depdigest.py#

  • Missing file: DepDigest falls back to a safe default config.

  • Broken file (syntax/import error): internal error is raised intentionally, so integration bugs are visible.

3. Custom Exceptions#

If you define EXCEPTION_CLASS, DepDigest tries multiple constructor styles and falls back to a plain message if necessary.

4. Runtime Registration in Tests#

For tests/dynamic packages:

  • register_package_config(...)

  • unregister_package_config(...)

  • temporary_package_config(...)

  • clear_package_configs()

Clear state between tests to avoid leakage.

5. Caching#

DepDigest caches:

  • installation checks (is_installed);

  • resolved configuration (resolve_config).

In tests, clear caches when changing environment assumptions.

6. Diagnostics Availability#

DepDigest emits SMonitor catalog events for missing dependencies and loader issues. If diagnostics emission fails, core behavior still remains robust.