File: paramiko.py

package info (click to toggle)
ansible-core 2.19.0~beta6-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 32,628 kB
  • sloc: python: 180,313; cs: 4,929; sh: 4,601; xml: 34; makefile: 21
file content (37 lines) | stat: -rw-r--r-- 1,603 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# -*- coding: utf-8 -*-
# Copyright (c) 2019 Ansible Project
# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause)

from __future__ import annotations as _annotations

import warnings as _warnings

from ansible.module_utils.common.warnings import deprecate as _deprecate

_PARAMIKO_IMPORT_ERR = None

try:
    with _warnings.catch_warnings():
        # Blowfish has been moved, but the deprecated import is used by paramiko versions older than 2.9.5.
        # See: https://github.com/paramiko/paramiko/pull/2039
        _warnings.filterwarnings('ignore', message='Blowfish has been ', category=UserWarning)
        # TripleDES has been moved, but the deprecated import is used by paramiko versions older than 3.3.2 and 3.4.1.
        # See: https://github.com/paramiko/paramiko/pull/2421
        _warnings.filterwarnings('ignore', message='TripleDES has been ', category=UserWarning)
        import paramiko as _paramiko
# paramiko and gssapi are incompatible and raise AttributeError not ImportError
# When running in FIPS mode, cryptography raises InternalError
# https://bugzilla.redhat.com/show_bug.cgi?id=1778939
except Exception as err:
    _paramiko = None  # type: ignore[no-redef]
    _PARAMIKO_IMPORT_ERR = err


def __getattr__(name: str) -> object:
    """Dynamic lookup to issue deprecation warnings for external import of deprecated items."""
    if (res := globals().get(f'_{name}', ...)) is not ...:
        _deprecate(f'The {name!r} compat import is deprecated.', version='2.21')

        return res

    raise AttributeError(name)