scrapli 2.0.0a3__py3-none-manylinux2010_x86_64.whl → 2.0.0a5__py3-none-manylinux2010_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. scrapli/__init__.py +5 -5
  2. scrapli/auth.py +14 -7
  3. scrapli/cli.py +334 -66
  4. scrapli/cli_parse.py +1 -1
  5. scrapli/cli_result.py +42 -0
  6. scrapli/definitions/aethra_atosnt.yaml +9 -0
  7. scrapli/definitions/alcatel_aos.yaml +9 -0
  8. scrapli/definitions/arista_eos.yaml +1 -0
  9. scrapli/definitions/aruba_aoscx.yaml +33 -0
  10. scrapli/definitions/cisco_aireos.yaml +31 -0
  11. scrapli/definitions/cisco_asa.yaml +48 -0
  12. scrapli/definitions/cisco_cbs.yaml +50 -0
  13. scrapli/definitions/cisco_ftd.yaml +42 -0
  14. scrapli/definitions/cisco_nxos.yaml +2 -0
  15. scrapli/definitions/cumulus_linux.yaml +28 -0
  16. scrapli/definitions/cumulus_vtysh.yaml +42 -0
  17. scrapli/definitions/datacom_dmos.yaml +30 -0
  18. scrapli/definitions/datacom_dmswitch.yaml +32 -0
  19. scrapli/definitions/default.yaml +9 -0
  20. scrapli/definitions/dell_emc.yaml +46 -0
  21. scrapli/definitions/dell_enterprisesonic.yaml +40 -0
  22. scrapli/definitions/dlink_os.yaml +46 -0
  23. scrapli/definitions/edgecore_ecs.yaml +35 -0
  24. scrapli/definitions/eltex_esr.yaml +43 -0
  25. scrapli/definitions/fortinet_fortios.yaml +20 -0
  26. scrapli/definitions/fortinet_wlc.yaml +33 -0
  27. scrapli/definitions/hp_comware.yaml +31 -0
  28. scrapli/definitions/huawei_smartax.yaml +61 -0
  29. scrapli/definitions/huawei_vrp.yaml +56 -0
  30. scrapli/definitions/juniper_junos.yaml +3 -0
  31. scrapli/definitions/nokia_srlinux.yaml +13 -2
  32. scrapli/definitions/nokia_sros.yaml +31 -0
  33. scrapli/definitions/nokia_sros_classic.yaml +33 -0
  34. scrapli/definitions/nokia_sros_classic_aram.yaml +25 -0
  35. scrapli/definitions/paloalto_panos.yaml +36 -0
  36. scrapli/definitions/raisecom_ros.yaml +45 -0
  37. scrapli/definitions/ruckus_fastiron.yaml +45 -0
  38. scrapli/definitions/ruckus_unleashed.yaml +64 -0
  39. scrapli/definitions/siemens_roxii.yaml +28 -0
  40. scrapli/definitions/versa_flexvnf.yaml +45 -0
  41. scrapli/definitions/vyos_vyos.yaml +35 -0
  42. scrapli/definitions/zyxel_dslam.yaml +18 -0
  43. scrapli/ffi.py +1 -1
  44. scrapli/ffi_mapping.py +92 -37
  45. scrapli/ffi_mapping_cli.py +146 -22
  46. scrapli/ffi_mapping_netconf.py +28 -60
  47. scrapli/ffi_mapping_options.py +38 -6
  48. scrapli/ffi_types.py +43 -3
  49. scrapli/helper.py +56 -0
  50. scrapli/lib/{libscrapli.0.0.1-alpha.10.dylib → libscrapli.0.0.1-alpha.17.dylib} +0 -0
  51. scrapli/lib/{libscrapli.so.0.0.1-alpha.10 → libscrapli.so.0.0.1-alpha.17} +0 -0
  52. scrapli/netconf.py +36 -147
  53. scrapli/transport.py +71 -130
  54. {scrapli-2.0.0a3.dist-info → scrapli-2.0.0a5.dist-info}/METADATA +1 -1
  55. scrapli-2.0.0a5.dist-info/RECORD +68 -0
  56. scrapli-2.0.0a3.dist-info/RECORD +0 -35
  57. {scrapli-2.0.0a3.dist-info → scrapli-2.0.0a5.dist-info}/WHEEL +0 -0
  58. {scrapli-2.0.0a3.dist-info → scrapli-2.0.0a5.dist-info}/licenses/LICENSE +0 -0
  59. {scrapli-2.0.0a3.dist-info → scrapli-2.0.0a5.dist-info}/top_level.txt +0 -0
scrapli/__init__.py CHANGED
@@ -2,18 +2,18 @@
2
2
 
3
3
  from scrapli.auth import LookupKeyValue
4
4
  from scrapli.auth import Options as AuthOptions
5
- from scrapli.cli import Cli
5
+ from scrapli.cli import Cli, ReadCallback
6
6
  from scrapli.netconf import Netconf
7
7
  from scrapli.netconf import Options as NetconfOptions
8
8
  from scrapli.session import Options as SessionOptions
9
9
  from scrapli.transport import BinOptions as TransportBinOptions
10
- from scrapli.transport import Options as TransportOptions
11
10
  from scrapli.transport import Ssh2Options as TransportSsh2Options
12
11
  from scrapli.transport import TelnetOptions as TransportTelnetOptions
13
12
  from scrapli.transport import TestOptions as TransportTestOptions
14
13
 
15
- __version__ = "2.0.0-alpha.3"
16
- __definitions_version__ = "471f12e"
14
+ __version__ = "2.0.0-alpha.5"
15
+ __calendar_version__ = "2025.7.12"
16
+ __definitions_version__ = "c38ec6d"
17
17
 
18
18
  __all__ = (
19
19
  "AuthOptions",
@@ -21,9 +21,9 @@ __all__ = (
21
21
  "LookupKeyValue",
22
22
  "Netconf",
23
23
  "NetconfOptions",
24
+ "ReadCallback",
24
25
  "SessionOptions",
25
26
  "TransportBinOptions",
26
- "TransportOptions",
27
27
  "TransportSsh2Options",
28
28
  "TransportTelnetOptions",
29
29
  "TransportTestOptions",
scrapli/auth.py CHANGED
@@ -63,8 +63,8 @@ class Options:
63
63
  lookups: a list of key/values that can be "looked up" from a connection -- used in
64
64
  conjunction with platform definition templating like `__lookup::enable` where "enable"
65
65
  is the key to "lookup" in the list of lookup key/values.
66
- in_session_auth_bypass: whether to bypass attempting in session authentication -- only
67
- applicable to "bin" and "telnet" transports.
66
+ force_in_session_auth: unconditionally force the in session auth process.
67
+ bypass_in_session_auth: skip in session auth even if transport (telnet/bin) expect it.
68
68
  username_pattern: the regex pattern to use to look for a username prompt
69
69
  password_pattern: the regex pattern to use to look for a password prompt
70
70
  private_key_passphrase_pattern: the regex pattern to use to look for a passphrase prompt
@@ -82,7 +82,8 @@ class Options:
82
82
  private_key_path: str | None = None
83
83
  private_key_passphrase: str | None = None
84
84
  lookups: list[LookupKeyValue] | None = None
85
- in_session_auth_bypass: bool | None = None
85
+ force_in_session_auth: bool | None = None
86
+ bypass_in_session_auth: bool | None = None
86
87
  username_pattern: str | None = None
87
88
  password_pattern: str | None = None
88
89
  private_key_passphrase_pattern: str | None = None
@@ -154,10 +155,15 @@ class Options:
154
155
  if status != 0:
155
156
  raise OptionsException("failed to set auth lookup key/value")
156
157
 
157
- if self.in_session_auth_bypass is not None:
158
- status = ffi_mapping.options_mapping.auth.set_in_session_auth_bypass(ptr)
158
+ if self.force_in_session_auth is not None:
159
+ status = ffi_mapping.options_mapping.auth.set_force_in_session_auth(ptr)
159
160
  if status != 0:
160
- raise OptionsException("failed to set session in session auth bypass")
161
+ raise OptionsException("failed to set force in session auth")
162
+
163
+ if self.bypass_in_session_auth is not None:
164
+ status = ffi_mapping.options_mapping.auth.set_bypass_in_session_auth(ptr)
165
+ if status != 0:
166
+ raise OptionsException("failed to set bypass in session auth")
161
167
 
162
168
  if self.username_pattern is not None:
163
169
  self._username_pattern = to_c_string(self.username_pattern)
@@ -209,7 +215,8 @@ class Options:
209
215
  f"private_key_path={self.private_key_path!r} "
210
216
  f"private_key_passphrase={self.private_key_passphrase!r} "
211
217
  f"lookups={self.lookups!r}) "
212
- f"in_session_auth_bypass={self.in_session_auth_bypass!r}) "
218
+ f"force_in_session_auth={self.force_in_session_auth!r}) "
219
+ f"bypass_in_session_auth={self.bypass_in_session_auth!r}) "
213
220
  f"username_pattern={self.username_pattern!r}) "
214
221
  f"password_pattern={self.password_pattern!r}) "
215
222
  f"private_key_passphrase_pattern={self.private_key_passphrase_pattern!r}) "