annet 3.9.2__tar.gz → 3.10.0__tar.gz

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.

Potentially problematic release.


This version of annet might be problematic. Click here for more details.

Files changed (228) hide show
  1. {annet-3.9.2/annet.egg-info → annet-3.10.0}/PKG-INFO +1 -1
  2. {annet-3.9.2 → annet-3.10.0}/annet/annlib/netdev/devdb/data/devdb.json +8 -6
  3. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/policy.py +3 -8
  4. {annet-3.9.2 → annet-3.10.0}/annet/tracing.py +56 -8
  5. {annet-3.9.2 → annet-3.10.0/annet.egg-info}/PKG-INFO +1 -1
  6. {annet-3.9.2 → annet-3.10.0}/AUTHORS +0 -0
  7. {annet-3.9.2 → annet-3.10.0}/LICENSE +0 -0
  8. {annet-3.9.2 → annet-3.10.0}/MANIFEST.in +0 -0
  9. {annet-3.9.2 → annet-3.10.0}/README.md +0 -0
  10. {annet-3.9.2 → annet-3.10.0}/annet/__init__.py +0 -0
  11. {annet-3.9.2 → annet-3.10.0}/annet/adapters/__init__.py +0 -0
  12. {annet-3.9.2 → annet-3.10.0}/annet/adapters/fetchers/__init__.py +0 -0
  13. {annet-3.9.2 → annet-3.10.0}/annet/adapters/fetchers/stub/__init__.py +0 -0
  14. {annet-3.9.2 → annet-3.10.0}/annet/adapters/fetchers/stub/fetcher.py +0 -0
  15. {annet-3.9.2 → annet-3.10.0}/annet/adapters/file/__init__.py +0 -0
  16. {annet-3.9.2 → annet-3.10.0}/annet/adapters/file/provider.py +0 -0
  17. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/__init__.py +0 -0
  18. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/__init__.py +0 -0
  19. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/adapter.py +0 -0
  20. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/client.py +0 -0
  21. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/manufacturer.py +0 -0
  22. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/models.py +0 -0
  23. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/query.py +0 -0
  24. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/status_client.py +0 -0
  25. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/storage_base.py +0 -0
  26. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/common/storage_opts.py +0 -0
  27. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/provider.py +0 -0
  28. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v24/__init__.py +0 -0
  29. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v24/models.py +0 -0
  30. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v24/storage.py +0 -0
  31. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v37/__init__.py +0 -0
  32. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v37/models.py +0 -0
  33. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v37/storage.py +0 -0
  34. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v41/__init__.py +0 -0
  35. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v41/models.py +0 -0
  36. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v41/storage.py +0 -0
  37. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v42/__init__.py +0 -0
  38. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v42/models.py +0 -0
  39. {annet-3.9.2 → annet-3.10.0}/annet/adapters/netbox/v42/storage.py +0 -0
  40. {annet-3.9.2 → annet-3.10.0}/annet/annet.py +0 -0
  41. {annet-3.9.2 → annet-3.10.0}/annet/annlib/__init__.py +0 -0
  42. {annet-3.9.2 → annet-3.10.0}/annet/annlib/command.py +0 -0
  43. {annet-3.9.2 → annet-3.10.0}/annet/annlib/diff.py +0 -0
  44. {annet-3.9.2 → annet-3.10.0}/annet/annlib/errors.py +0 -0
  45. {annet-3.9.2 → annet-3.10.0}/annet/annlib/filter_acl.py +0 -0
  46. {annet-3.9.2 → annet-3.10.0}/annet/annlib/jsontools.py +0 -0
  47. {annet-3.9.2 → annet-3.10.0}/annet/annlib/lib.py +0 -0
  48. {annet-3.9.2 → annet-3.10.0}/annet/annlib/netdev/__init__.py +0 -0
  49. {annet-3.9.2 → annet-3.10.0}/annet/annlib/netdev/db.py +0 -0
  50. {annet-3.9.2 → annet-3.10.0}/annet/annlib/netdev/devdb/__init__.py +0 -0
  51. {annet-3.9.2 → annet-3.10.0}/annet/annlib/netdev/views/__init__.py +0 -0
  52. {annet-3.9.2 → annet-3.10.0}/annet/annlib/netdev/views/dump.py +0 -0
  53. {annet-3.9.2 → annet-3.10.0}/annet/annlib/netdev/views/hardware.py +0 -0
  54. {annet-3.9.2 → annet-3.10.0}/annet/annlib/output.py +0 -0
  55. {annet-3.9.2 → annet-3.10.0}/annet/annlib/patching.py +0 -0
  56. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rbparser/__init__.py +0 -0
  57. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rbparser/acl.py +0 -0
  58. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rbparser/deploying.py +0 -0
  59. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rbparser/ordering.py +0 -0
  60. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rbparser/platform.py +0 -0
  61. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rbparser/syntax.py +0 -0
  62. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rulebook/__init__.py +0 -0
  63. {annet-3.9.2 → annet-3.10.0}/annet/annlib/rulebook/common.py +0 -0
  64. {annet-3.9.2 → annet-3.10.0}/annet/annlib/types.py +0 -0
  65. {annet-3.9.2 → annet-3.10.0}/annet/api/__init__.py +0 -0
  66. {annet-3.9.2 → annet-3.10.0}/annet/argparse.py +0 -0
  67. {annet-3.9.2 → annet-3.10.0}/annet/bgp_models.py +0 -0
  68. {annet-3.9.2 → annet-3.10.0}/annet/cli.py +0 -0
  69. {annet-3.9.2 → annet-3.10.0}/annet/cli_args.py +0 -0
  70. {annet-3.9.2 → annet-3.10.0}/annet/configs/context.yml +0 -0
  71. {annet-3.9.2 → annet-3.10.0}/annet/configs/logging.yaml +0 -0
  72. {annet-3.9.2 → annet-3.10.0}/annet/connectors.py +0 -0
  73. {annet-3.9.2 → annet-3.10.0}/annet/deploy.py +0 -0
  74. {annet-3.9.2 → annet-3.10.0}/annet/deploy_ui.py +0 -0
  75. {annet-3.9.2 → annet-3.10.0}/annet/diff.py +0 -0
  76. {annet-3.9.2 → annet-3.10.0}/annet/executor.py +0 -0
  77. {annet-3.9.2 → annet-3.10.0}/annet/filtering.py +0 -0
  78. {annet-3.9.2 → annet-3.10.0}/annet/gen.py +0 -0
  79. {annet-3.9.2 → annet-3.10.0}/annet/generators/__init__.py +0 -0
  80. {annet-3.9.2 → annet-3.10.0}/annet/generators/base.py +0 -0
  81. {annet-3.9.2 → annet-3.10.0}/annet/generators/common/__init__.py +0 -0
  82. {annet-3.9.2 → annet-3.10.0}/annet/generators/common/initial.py +0 -0
  83. {annet-3.9.2 → annet-3.10.0}/annet/generators/entire.py +0 -0
  84. {annet-3.9.2 → annet-3.10.0}/annet/generators/exceptions.py +0 -0
  85. {annet-3.9.2 → annet-3.10.0}/annet/generators/jsonfragment.py +0 -0
  86. {annet-3.9.2 → annet-3.10.0}/annet/generators/partial.py +0 -0
  87. {annet-3.9.2 → annet-3.10.0}/annet/generators/perf.py +0 -0
  88. {annet-3.9.2 → annet-3.10.0}/annet/generators/ref.py +0 -0
  89. {annet-3.9.2 → annet-3.10.0}/annet/generators/result.py +0 -0
  90. {annet-3.9.2 → annet-3.10.0}/annet/hardware.py +0 -0
  91. {annet-3.9.2 → annet-3.10.0}/annet/implicit.py +0 -0
  92. {annet-3.9.2 → annet-3.10.0}/annet/lib.py +0 -0
  93. {annet-3.9.2 → annet-3.10.0}/annet/mesh/__init__.py +0 -0
  94. {annet-3.9.2 → annet-3.10.0}/annet/mesh/basemodel.py +0 -0
  95. {annet-3.9.2 → annet-3.10.0}/annet/mesh/device_models.py +0 -0
  96. {annet-3.9.2 → annet-3.10.0}/annet/mesh/executor.py +0 -0
  97. {annet-3.9.2 → annet-3.10.0}/annet/mesh/match_args.py +0 -0
  98. {annet-3.9.2 → annet-3.10.0}/annet/mesh/models_converter.py +0 -0
  99. {annet-3.9.2 → annet-3.10.0}/annet/mesh/peer_models.py +0 -0
  100. {annet-3.9.2 → annet-3.10.0}/annet/mesh/port_processor.py +0 -0
  101. {annet-3.9.2 → annet-3.10.0}/annet/mesh/registry.py +0 -0
  102. {annet-3.9.2 → annet-3.10.0}/annet/output.py +0 -0
  103. {annet-3.9.2 → annet-3.10.0}/annet/parallel.py +0 -0
  104. {annet-3.9.2 → annet-3.10.0}/annet/patching.py +0 -0
  105. {annet-3.9.2 → annet-3.10.0}/annet/reference.py +0 -0
  106. {annet-3.9.2 → annet-3.10.0}/annet/rpl/__init__.py +0 -0
  107. {annet-3.9.2 → annet-3.10.0}/annet/rpl/action.py +0 -0
  108. {annet-3.9.2 → annet-3.10.0}/annet/rpl/condition.py +0 -0
  109. {annet-3.9.2 → annet-3.10.0}/annet/rpl/match_builder.py +0 -0
  110. {annet-3.9.2 → annet-3.10.0}/annet/rpl/policy.py +0 -0
  111. {annet-3.9.2 → annet-3.10.0}/annet/rpl/result.py +0 -0
  112. {annet-3.9.2 → annet-3.10.0}/annet/rpl/routemap.py +0 -0
  113. {annet-3.9.2 → annet-3.10.0}/annet/rpl/statement_builder.py +0 -0
  114. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/__init__.py +0 -0
  115. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/aspath.py +0 -0
  116. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/community.py +0 -0
  117. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/cumulus_frr.py +0 -0
  118. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/entities.py +0 -0
  119. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/execute.py +0 -0
  120. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/prefix_lists.py +0 -0
  121. {annet-3.9.2 → annet-3.10.0}/annet/rpl_generators/rd.py +0 -0
  122. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/__init__.py +0 -0
  123. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/arista/__init__.py +0 -0
  124. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/arista/aaa.py +0 -0
  125. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/arista/iface.py +0 -0
  126. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/aruba/__init__.py +0 -0
  127. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/aruba/ap_env.py +0 -0
  128. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/aruba/misc.py +0 -0
  129. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/b4com/__init__.py +0 -0
  130. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/b4com/file.py +0 -0
  131. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/b4com/iface.py +0 -0
  132. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/cisco/__init__.py +0 -0
  133. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/cisco/iface.py +0 -0
  134. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/cisco/misc.py +0 -0
  135. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/cisco/vlandb.py +0 -0
  136. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/common.py +0 -0
  137. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/deploying.py +0 -0
  138. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/generic/__init__.py +0 -0
  139. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/generic/misc.py +0 -0
  140. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/huawei/__init__.py +0 -0
  141. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/huawei/aaa.py +0 -0
  142. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/huawei/bgp.py +0 -0
  143. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/huawei/iface.py +0 -0
  144. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/huawei/misc.py +0 -0
  145. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/huawei/vlandb.py +0 -0
  146. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/juniper/__init__.py +0 -0
  147. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/juniper/iface.py +0 -0
  148. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/nexus/__init__.py +0 -0
  149. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/nexus/iface.py +0 -0
  150. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/patching.py +0 -0
  151. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/routeros/__init__.py +0 -0
  152. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/routeros/file.py +0 -0
  153. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/arista.deploy +0 -0
  154. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/arista.order +0 -0
  155. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/arista.rul +0 -0
  156. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/aruba.deploy +0 -0
  157. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/aruba.order +0 -0
  158. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/aruba.rul +0 -0
  159. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/b4com.deploy +0 -0
  160. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/b4com.order +0 -0
  161. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/b4com.rul +0 -0
  162. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/cisco.deploy +0 -0
  163. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/cisco.order +0 -0
  164. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/cisco.rul +0 -0
  165. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/huawei.deploy +0 -0
  166. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/huawei.order +0 -0
  167. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/huawei.rul +0 -0
  168. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/iosxr.deploy +0 -0
  169. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/iosxr.order +0 -0
  170. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/iosxr.rul +0 -0
  171. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/juniper.order +0 -0
  172. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/juniper.rul +0 -0
  173. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/nexus.deploy +0 -0
  174. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/nexus.order +0 -0
  175. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/nexus.rul +0 -0
  176. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/nokia.rul +0 -0
  177. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/optixtrans.deploy +0 -0
  178. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/optixtrans.order +0 -0
  179. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/optixtrans.rul +0 -0
  180. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/pc.deploy +0 -0
  181. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/pc.order +0 -0
  182. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/pc.rul +0 -0
  183. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/ribbon.deploy +0 -0
  184. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/ribbon.rul +0 -0
  185. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/routeros.order +0 -0
  186. {annet-3.9.2 → annet-3.10.0}/annet/rulebook/texts/routeros.rul +0 -0
  187. {annet-3.9.2 → annet-3.10.0}/annet/storage.py +0 -0
  188. {annet-3.9.2 → annet-3.10.0}/annet/text_term_format.py +0 -0
  189. {annet-3.9.2 → annet-3.10.0}/annet/types.py +0 -0
  190. {annet-3.9.2 → annet-3.10.0}/annet/vendors/__init__.py +0 -0
  191. {annet-3.9.2 → annet-3.10.0}/annet/vendors/base.py +0 -0
  192. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/__init__.py +0 -0
  193. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/arista.py +0 -0
  194. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/aruba.py +0 -0
  195. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/b4com.py +0 -0
  196. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/cisco.py +0 -0
  197. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/h3c.py +0 -0
  198. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/huawei.py +0 -0
  199. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/iosxr.py +0 -0
  200. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/juniper.py +0 -0
  201. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/nexus.py +0 -0
  202. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/nokia.py +0 -0
  203. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/optixtrans.py +0 -0
  204. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/pc.py +0 -0
  205. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/ribbon.py +0 -0
  206. {annet-3.9.2 → annet-3.10.0}/annet/vendors/library/routeros.py +0 -0
  207. {annet-3.9.2 → annet-3.10.0}/annet/vendors/registry.py +0 -0
  208. {annet-3.9.2 → annet-3.10.0}/annet/vendors/tabparser.py +0 -0
  209. {annet-3.9.2 → annet-3.10.0}/annet.egg-info/SOURCES.txt +0 -0
  210. {annet-3.9.2 → annet-3.10.0}/annet.egg-info/dependency_links.txt +0 -0
  211. {annet-3.9.2 → annet-3.10.0}/annet.egg-info/entry_points.txt +0 -0
  212. {annet-3.9.2 → annet-3.10.0}/annet.egg-info/requires.txt +0 -0
  213. {annet-3.9.2 → annet-3.10.0}/annet.egg-info/top_level.txt +0 -0
  214. {annet-3.9.2 → annet-3.10.0}/annet_generators/__init__.py +0 -0
  215. {annet-3.9.2 → annet-3.10.0}/annet_generators/example/__init__.py +0 -0
  216. {annet-3.9.2 → annet-3.10.0}/annet_generators/example/hostname.py +0 -0
  217. {annet-3.9.2 → annet-3.10.0}/annet_generators/example/lldp.py +0 -0
  218. {annet-3.9.2 → annet-3.10.0}/annet_generators/mesh_example/__init__.py +0 -0
  219. {annet-3.9.2 → annet-3.10.0}/annet_generators/mesh_example/bgp.py +0 -0
  220. {annet-3.9.2 → annet-3.10.0}/annet_generators/mesh_example/mesh_logic.py +0 -0
  221. {annet-3.9.2 → annet-3.10.0}/annet_generators/rpl_example/__init__.py +0 -0
  222. {annet-3.9.2 → annet-3.10.0}/annet_generators/rpl_example/generator.py +0 -0
  223. {annet-3.9.2 → annet-3.10.0}/annet_generators/rpl_example/items.py +0 -0
  224. {annet-3.9.2 → annet-3.10.0}/annet_generators/rpl_example/mesh.py +0 -0
  225. {annet-3.9.2 → annet-3.10.0}/annet_generators/rpl_example/route_policy.py +0 -0
  226. {annet-3.9.2 → annet-3.10.0}/requirements.txt +0 -0
  227. {annet-3.9.2 → annet-3.10.0}/setup.cfg +0 -0
  228. {annet-3.9.2 → annet-3.10.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 3.9.2
3
+ Version: 3.10.0
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
@@ -96,21 +96,21 @@
96
96
  "Juniper.PTX": " PTX",
97
97
 
98
98
  "Arista": "^[Aa]rista",
99
- "Arista.A7368": " 7368",
99
+ "Arista.A7368": " (DCS-)?7368",
100
100
  "Arista.A7368.X4": "X4",
101
- "Arista.A7280": " DCS-7280",
102
- "Arista.A7260": " DCS-7260",
101
+ "Arista.A7280": " (DCS-)?7280",
102
+ "Arista.A7260": " (DCS-)?7260",
103
103
  "Arista.A7260.CX3": "CX3",
104
- "Arista.A7050": " 7050",
104
+ "Arista.A7050": " (DCS-)?7050",
105
105
  "Arista.A7050.SX3": "SX3",
106
- "Arista.A7060": " DCS-7060",
106
+ "Arista.A7060": " (DCS-)?7060",
107
107
  "Arista.A7060.DX4": "DX4",
108
108
 
109
109
  "Nokia": "^[Nn]okia",
110
110
  "Nokia.NS7750": " 7750",
111
111
  "Nokia.SR_1s": "SR-1s",
112
112
 
113
- "PC": "^(PC|pc|[Mm]ellanox SN|[Ee]dge-?[Cc]ore|[Mm]oxa|NVIDIA|Nebius|[Aa]sterfusion CX|[Uu]fi[Ss]pace)",
113
+ "PC": "^(PC|pc|[Mm]ellanox SN|[Ee]dge-?[Cc]ore|[Mm]oxa|NVIDIA|Nebius|[Aa]sterfusion CX|[Uu]fi[Ss]pace|(VERTIV )?[Aa]vocent)",
114
114
 
115
115
  "PC.Whitebox": "([Mm]ellanox SN|[Ee]dge-?[Cc]ore|NVIDIA|[Aa]sterfusion CX|[Uu]fi[Ss]pace)",
116
116
  "PC.Whitebox.Mellanox": "[Mm]ellanox",
@@ -145,6 +145,8 @@
145
145
  "PC.Whitebox.Ufispace.S.S9300.S9321_64EO": " S9321-64EO",
146
146
  "PC.Nebius": "^Nebius",
147
147
  "PC.Nebius.NB-E-BR-DCU-AST2600": "^Nebius NB-E-BR-DCU-AST2600",
148
+ "PC.Avocent": " [Aa]vocent",
149
+ "PC.Avocent.ACS8000": " (ACS|acs)8000",
148
150
 
149
151
  "RouterOS": "^([Rr]outer[Oo][Ss]|[Mm]ikro[Tt]ik)",
150
152
 
@@ -696,16 +696,11 @@ class RoutingPolicyGenerator(PartialGenerator, ABC):
696
696
  else:
697
697
  yield "set", "as-path match all replacement", *action.value.set
698
698
 
699
+ if action.value.prepend:
700
+ yield "set", "as-path prepend", *action.value.prepend
699
701
  if action.value.expand_last_as:
700
- last_as_suffix: Sequence[str] = "last-as", action.value.expand_last_as
701
- else:
702
- last_as_suffix = ()
702
+ yield "set", "as-path prepend last-as", action.value.expand_last_as
703
703
 
704
- if action.value.prepend:
705
- for path_item in action.value.prepend:
706
- yield "set", "as-path prepend", path_item, *last_as_suffix
707
- else:
708
- yield "set", "as-path prepend", *last_as_suffix
709
704
  if action.value.expand:
710
705
  raise RuntimeError("as_path.expand is not supported for arista")
711
706
  if action.value.delete:
@@ -6,7 +6,6 @@ from typing import Optional, Type, Union
6
6
 
7
7
  from annet.connectors import CachedConnector
8
8
 
9
-
10
9
  MinDurationT = Optional[Union[str, int]]
11
10
 
12
11
 
@@ -145,9 +144,9 @@ def function(arg=None, /, **outer_kwargs):
145
144
 
146
145
  def contextmanager(arg=None, /, **outer_kwargs):
147
146
  def decorator(cls_or_func):
148
- if inspect.isfunction(cls_or_func):
149
- cache = None
147
+ cache = None
150
148
 
149
+ if inspect.isfunction(cls_or_func):
151
150
  @contextlib.contextmanager
152
151
  @wraps(cls_or_func)
153
152
  def wrapper(*args, **kwargs):
@@ -159,12 +158,61 @@ def contextmanager(arg=None, /, **outer_kwargs):
159
158
 
160
159
  return wrapper
161
160
  else:
162
- @wraps(cls_or_func.__enter__)
163
- def enter(*args, **kwargs):
164
- tracing_connector.get().contextmanager(cls_or_func, **outer_kwargs) # redefine __enter__ and __exit__
165
- return cls_or_func.__enter__(*args, **kwargs) # pylint: disable=unnecessary-dunder-call
161
+ original_enter = cls_or_func.__enter__
162
+ original_exit = cls_or_func.__exit__
163
+
164
+ @wraps(original_enter)
165
+ def one_shot_enter(*args, **kwargs):
166
+ """Wrap after first call, tracing_connector was set up"""
167
+ nonlocal cache
168
+ if cache is None:
169
+ cls_or_func.__enter__ = original_enter
170
+ cls_or_func.__exit__ = original_exit
171
+ cache = tracing_connector.get().contextmanager(cls_or_func, **outer_kwargs)
172
+ return cache.__enter__(*args, **kwargs) # pylint: disable=unnecessary-dunder-call
173
+
174
+ @wraps(original_exit)
175
+ def one_shot_exit(*args, **kwargs):
176
+ nonlocal cache
177
+ return cache.__exit__(*args, **kwargs)
178
+
179
+ setattr(cls_or_func, "__enter__", one_shot_enter)
180
+ setattr(cls_or_func, "__exit__", one_shot_exit)
166
181
 
167
- setattr(cls_or_func, "__enter__", enter)
168
182
  return cls_or_func
169
183
 
170
184
  return decorator if arg is None else decorator(arg)
185
+
186
+
187
+ def class_methods(arg=None, /, **outer_kwargs):
188
+ def decorator(cls):
189
+ has_enter, has_exit = False, False
190
+
191
+ for name, attr in inspect.getmembers(cls, lambda x: (
192
+ inspect.isroutine(x)
193
+ and not inspect.ismethoddescriptor(x)
194
+ and not inspect.isbuiltin(x)
195
+ )):
196
+ if getattr(attr, "_disable_class_methods", False):
197
+ continue
198
+ if name == "__enter__":
199
+ has_enter = True
200
+ elif name == "__exit__":
201
+ has_exit = True
202
+ else:
203
+ method = function(**outer_kwargs)(attr)
204
+ if isinstance(inspect.getattr_static(cls, name), staticmethod):
205
+ method = staticmethod(method)
206
+ setattr(cls, name, method)
207
+
208
+ if all((has_enter, has_exit)):
209
+ cls = contextmanager(**outer_kwargs)(cls)
210
+
211
+ return cls
212
+
213
+ return decorator if arg is None else decorator(arg)
214
+
215
+
216
+ def disable_class_methods(func):
217
+ setattr(func, "_disable_class_methods", True)
218
+ return func
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 3.9.2
3
+ Version: 3.10.0
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes