annet 3.16.3__tar.gz → 3.17.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 (236) hide show
  1. {annet-3.16.3/annet.egg-info → annet-3.17.0}/PKG-INFO +3 -2
  2. {annet-3.16.3 → annet-3.17.0}/README.md +20 -6
  3. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/query.py +2 -1
  4. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/provider.py +1 -0
  5. {annet-3.16.3 → annet-3.17.0}/annet/annlib/jsontools.py +34 -32
  6. {annet-3.16.3 → annet-3.17.0}/annet/deploy.py +2 -1
  7. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/h3c.py +1 -1
  8. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/juniper.py +1 -1
  9. {annet-3.16.3 → annet-3.17.0/annet.egg-info}/PKG-INFO +3 -2
  10. {annet-3.16.3 → annet-3.17.0}/annet.egg-info/requires.txt +2 -1
  11. {annet-3.16.3 → annet-3.17.0}/requirements.txt +1 -0
  12. {annet-3.16.3 → annet-3.17.0}/setup.py +1 -1
  13. {annet-3.16.3 → annet-3.17.0}/AUTHORS +0 -0
  14. {annet-3.16.3 → annet-3.17.0}/LICENSE +0 -0
  15. {annet-3.16.3 → annet-3.17.0}/MANIFEST.in +0 -0
  16. {annet-3.16.3 → annet-3.17.0}/annet/__init__.py +0 -0
  17. {annet-3.16.3 → annet-3.17.0}/annet/adapters/__init__.py +0 -0
  18. {annet-3.16.3 → annet-3.17.0}/annet/adapters/fetchers/__init__.py +0 -0
  19. {annet-3.16.3 → annet-3.17.0}/annet/adapters/fetchers/stub/__init__.py +0 -0
  20. {annet-3.16.3 → annet-3.17.0}/annet/adapters/fetchers/stub/fetcher.py +0 -0
  21. {annet-3.16.3 → annet-3.17.0}/annet/adapters/file/__init__.py +0 -0
  22. {annet-3.16.3 → annet-3.17.0}/annet/adapters/file/provider.py +0 -0
  23. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/__init__.py +0 -0
  24. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/__init__.py +0 -0
  25. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/adapter.py +0 -0
  26. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/client.py +0 -0
  27. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/manufacturer.py +0 -0
  28. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/models.py +0 -0
  29. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/status_client.py +0 -0
  30. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/storage_base.py +0 -0
  31. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/common/storage_opts.py +0 -0
  32. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v24/__init__.py +0 -0
  33. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v24/models.py +0 -0
  34. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v24/storage.py +0 -0
  35. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v37/__init__.py +0 -0
  36. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v37/models.py +0 -0
  37. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v37/storage.py +0 -0
  38. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v41/__init__.py +0 -0
  39. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v41/models.py +0 -0
  40. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v41/storage.py +0 -0
  41. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v42/__init__.py +0 -0
  42. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v42/models.py +0 -0
  43. {annet-3.16.3 → annet-3.17.0}/annet/adapters/netbox/v42/storage.py +0 -0
  44. {annet-3.16.3 → annet-3.17.0}/annet/annet.py +0 -0
  45. {annet-3.16.3 → annet-3.17.0}/annet/annlib/__init__.py +0 -0
  46. {annet-3.16.3 → annet-3.17.0}/annet/annlib/command.py +0 -0
  47. {annet-3.16.3 → annet-3.17.0}/annet/annlib/diff.py +0 -0
  48. {annet-3.16.3 → annet-3.17.0}/annet/annlib/errors.py +0 -0
  49. {annet-3.16.3 → annet-3.17.0}/annet/annlib/filter_acl.py +0 -0
  50. {annet-3.16.3 → annet-3.17.0}/annet/annlib/lib.py +0 -0
  51. {annet-3.16.3 → annet-3.17.0}/annet/annlib/netdev/__init__.py +0 -0
  52. {annet-3.16.3 → annet-3.17.0}/annet/annlib/netdev/db.py +0 -0
  53. {annet-3.16.3 → annet-3.17.0}/annet/annlib/netdev/devdb/__init__.py +0 -0
  54. {annet-3.16.3 → annet-3.17.0}/annet/annlib/netdev/devdb/data/devdb.json +0 -0
  55. {annet-3.16.3 → annet-3.17.0}/annet/annlib/netdev/views/__init__.py +0 -0
  56. {annet-3.16.3 → annet-3.17.0}/annet/annlib/netdev/views/dump.py +0 -0
  57. {annet-3.16.3 → annet-3.17.0}/annet/annlib/netdev/views/hardware.py +0 -0
  58. {annet-3.16.3 → annet-3.17.0}/annet/annlib/output.py +0 -0
  59. {annet-3.16.3 → annet-3.17.0}/annet/annlib/patching.py +0 -0
  60. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rbparser/__init__.py +0 -0
  61. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rbparser/acl.py +0 -0
  62. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rbparser/deploying.py +0 -0
  63. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rbparser/ordering.py +0 -0
  64. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rbparser/platform.py +0 -0
  65. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rbparser/syntax.py +0 -0
  66. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rulebook/__init__.py +0 -0
  67. {annet-3.16.3 → annet-3.17.0}/annet/annlib/rulebook/common.py +0 -0
  68. {annet-3.16.3 → annet-3.17.0}/annet/annlib/types.py +0 -0
  69. {annet-3.16.3 → annet-3.17.0}/annet/api/__init__.py +0 -0
  70. {annet-3.16.3 → annet-3.17.0}/annet/argparse.py +0 -0
  71. {annet-3.16.3 → annet-3.17.0}/annet/bgp_models.py +0 -0
  72. {annet-3.16.3 → annet-3.17.0}/annet/cli.py +0 -0
  73. {annet-3.16.3 → annet-3.17.0}/annet/cli_args.py +0 -0
  74. {annet-3.16.3 → annet-3.17.0}/annet/configs/context.yml +0 -0
  75. {annet-3.16.3 → annet-3.17.0}/annet/configs/logging.yaml +0 -0
  76. {annet-3.16.3 → annet-3.17.0}/annet/connectors.py +0 -0
  77. {annet-3.16.3 → annet-3.17.0}/annet/deploy_ui.py +0 -0
  78. {annet-3.16.3 → annet-3.17.0}/annet/diff.py +0 -0
  79. {annet-3.16.3 → annet-3.17.0}/annet/filtering.py +0 -0
  80. {annet-3.16.3 → annet-3.17.0}/annet/gen.py +0 -0
  81. {annet-3.16.3 → annet-3.17.0}/annet/generators/__init__.py +0 -0
  82. {annet-3.16.3 → annet-3.17.0}/annet/generators/base.py +0 -0
  83. {annet-3.16.3 → annet-3.17.0}/annet/generators/common/__init__.py +0 -0
  84. {annet-3.16.3 → annet-3.17.0}/annet/generators/common/initial.py +0 -0
  85. {annet-3.16.3 → annet-3.17.0}/annet/generators/entire.py +0 -0
  86. {annet-3.16.3 → annet-3.17.0}/annet/generators/exceptions.py +0 -0
  87. {annet-3.16.3 → annet-3.17.0}/annet/generators/jsonfragment.py +0 -0
  88. {annet-3.16.3 → annet-3.17.0}/annet/generators/partial.py +0 -0
  89. {annet-3.16.3 → annet-3.17.0}/annet/generators/perf.py +0 -0
  90. {annet-3.16.3 → annet-3.17.0}/annet/generators/ref.py +0 -0
  91. {annet-3.16.3 → annet-3.17.0}/annet/generators/result.py +0 -0
  92. {annet-3.16.3 → annet-3.17.0}/annet/hardware.py +0 -0
  93. {annet-3.16.3 → annet-3.17.0}/annet/implicit.py +0 -0
  94. {annet-3.16.3 → annet-3.17.0}/annet/lib.py +0 -0
  95. {annet-3.16.3 → annet-3.17.0}/annet/mesh/__init__.py +0 -0
  96. {annet-3.16.3 → annet-3.17.0}/annet/mesh/basemodel.py +0 -0
  97. {annet-3.16.3 → annet-3.17.0}/annet/mesh/device_models.py +0 -0
  98. {annet-3.16.3 → annet-3.17.0}/annet/mesh/executor.py +0 -0
  99. {annet-3.16.3 → annet-3.17.0}/annet/mesh/match_args.py +0 -0
  100. {annet-3.16.3 → annet-3.17.0}/annet/mesh/models_converter.py +0 -0
  101. {annet-3.16.3 → annet-3.17.0}/annet/mesh/peer_models.py +0 -0
  102. {annet-3.16.3 → annet-3.17.0}/annet/mesh/port_processor.py +0 -0
  103. {annet-3.16.3 → annet-3.17.0}/annet/mesh/registry.py +0 -0
  104. {annet-3.16.3 → annet-3.17.0}/annet/output.py +0 -0
  105. {annet-3.16.3 → annet-3.17.0}/annet/parallel.py +0 -0
  106. {annet-3.16.3 → annet-3.17.0}/annet/patching.py +0 -0
  107. {annet-3.16.3 → annet-3.17.0}/annet/reference.py +0 -0
  108. {annet-3.16.3 → annet-3.17.0}/annet/rpl/__init__.py +0 -0
  109. {annet-3.16.3 → annet-3.17.0}/annet/rpl/action.py +0 -0
  110. {annet-3.16.3 → annet-3.17.0}/annet/rpl/condition.py +0 -0
  111. {annet-3.16.3 → annet-3.17.0}/annet/rpl/match_builder.py +0 -0
  112. {annet-3.16.3 → annet-3.17.0}/annet/rpl/policy.py +0 -0
  113. {annet-3.16.3 → annet-3.17.0}/annet/rpl/result.py +0 -0
  114. {annet-3.16.3 → annet-3.17.0}/annet/rpl/routemap.py +0 -0
  115. {annet-3.16.3 → annet-3.17.0}/annet/rpl/statement_builder.py +0 -0
  116. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/__init__.py +0 -0
  117. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/aspath.py +0 -0
  118. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/community.py +0 -0
  119. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/cumulus_frr.py +0 -0
  120. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/entities.py +0 -0
  121. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/execute.py +0 -0
  122. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/policy.py +0 -0
  123. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/prefix_lists.py +0 -0
  124. {annet-3.16.3 → annet-3.17.0}/annet/rpl_generators/rd.py +0 -0
  125. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/__init__.py +0 -0
  126. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/arista/__init__.py +0 -0
  127. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/arista/aaa.py +0 -0
  128. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/arista/iface.py +0 -0
  129. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/aruba/__init__.py +0 -0
  130. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/aruba/ap_env.py +0 -0
  131. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/aruba/misc.py +0 -0
  132. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/b4com/__init__.py +0 -0
  133. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/b4com/file.py +0 -0
  134. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/b4com/iface.py +0 -0
  135. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/cisco/__init__.py +0 -0
  136. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/cisco/iface.py +0 -0
  137. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/cisco/misc.py +0 -0
  138. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/cisco/vlandb.py +0 -0
  139. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/common.py +0 -0
  140. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/deploying.py +0 -0
  141. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/generic/__init__.py +0 -0
  142. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/generic/misc.py +0 -0
  143. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/h3c/__init__.py +0 -0
  144. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/h3c/aaa.py +0 -0
  145. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/h3c/bgp.py +0 -0
  146. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/h3c/iface.py +0 -0
  147. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/h3c/misc.py +0 -0
  148. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/h3c/vlandb.py +0 -0
  149. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/huawei/__init__.py +0 -0
  150. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/huawei/aaa.py +0 -0
  151. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/huawei/bgp.py +0 -0
  152. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/huawei/iface.py +0 -0
  153. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/huawei/misc.py +0 -0
  154. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/huawei/vlandb.py +0 -0
  155. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/juniper/__init__.py +0 -0
  156. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/juniper/iface.py +0 -0
  157. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/nexus/__init__.py +0 -0
  158. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/nexus/iface.py +0 -0
  159. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/patching.py +0 -0
  160. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/routeros/__init__.py +0 -0
  161. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/routeros/file.py +0 -0
  162. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/arista.deploy +0 -0
  163. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/arista.order +0 -0
  164. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/arista.rul +0 -0
  165. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/aruba.deploy +0 -0
  166. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/aruba.order +0 -0
  167. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/aruba.rul +0 -0
  168. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/b4com.deploy +0 -0
  169. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/b4com.order +0 -0
  170. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/b4com.rul +0 -0
  171. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/cisco.deploy +0 -0
  172. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/cisco.order +0 -0
  173. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/cisco.rul +0 -0
  174. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/h3c.deploy +0 -0
  175. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/h3c.order +0 -0
  176. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/h3c.rul +0 -0
  177. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/huawei.deploy +0 -0
  178. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/huawei.order +0 -0
  179. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/huawei.rul +0 -0
  180. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/iosxr.deploy +0 -0
  181. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/iosxr.order +0 -0
  182. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/iosxr.rul +0 -0
  183. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/juniper.order +0 -0
  184. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/juniper.rul +0 -0
  185. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/nexus.deploy +0 -0
  186. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/nexus.order +0 -0
  187. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/nexus.rul +0 -0
  188. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/nokia.rul +0 -0
  189. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/optixtrans.deploy +0 -0
  190. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/optixtrans.order +0 -0
  191. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/optixtrans.rul +0 -0
  192. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/pc.deploy +0 -0
  193. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/pc.order +0 -0
  194. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/pc.rul +0 -0
  195. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/ribbon.deploy +0 -0
  196. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/ribbon.rul +0 -0
  197. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/routeros.order +0 -0
  198. {annet-3.16.3 → annet-3.17.0}/annet/rulebook/texts/routeros.rul +0 -0
  199. {annet-3.16.3 → annet-3.17.0}/annet/storage.py +0 -0
  200. {annet-3.16.3 → annet-3.17.0}/annet/text_term_format.py +0 -0
  201. {annet-3.16.3 → annet-3.17.0}/annet/tracing.py +0 -0
  202. {annet-3.16.3 → annet-3.17.0}/annet/types.py +0 -0
  203. {annet-3.16.3 → annet-3.17.0}/annet/vendors/__init__.py +0 -0
  204. {annet-3.16.3 → annet-3.17.0}/annet/vendors/base.py +0 -0
  205. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/__init__.py +0 -0
  206. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/arista.py +0 -0
  207. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/aruba.py +0 -0
  208. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/b4com.py +0 -0
  209. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/cisco.py +0 -0
  210. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/huawei.py +0 -0
  211. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/iosxr.py +0 -0
  212. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/nexus.py +0 -0
  213. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/nokia.py +0 -0
  214. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/optixtrans.py +0 -0
  215. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/pc.py +0 -0
  216. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/ribbon.py +0 -0
  217. {annet-3.16.3 → annet-3.17.0}/annet/vendors/library/routeros.py +0 -0
  218. {annet-3.16.3 → annet-3.17.0}/annet/vendors/registry.py +0 -0
  219. {annet-3.16.3 → annet-3.17.0}/annet/vendors/tabparser.py +0 -0
  220. {annet-3.16.3 → annet-3.17.0}/annet.egg-info/SOURCES.txt +0 -0
  221. {annet-3.16.3 → annet-3.17.0}/annet.egg-info/dependency_links.txt +0 -0
  222. {annet-3.16.3 → annet-3.17.0}/annet.egg-info/entry_points.txt +0 -0
  223. {annet-3.16.3 → annet-3.17.0}/annet.egg-info/top_level.txt +0 -0
  224. {annet-3.16.3 → annet-3.17.0}/annet_generators/__init__.py +0 -0
  225. {annet-3.16.3 → annet-3.17.0}/annet_generators/example/__init__.py +0 -0
  226. {annet-3.16.3 → annet-3.17.0}/annet_generators/example/hostname.py +0 -0
  227. {annet-3.16.3 → annet-3.17.0}/annet_generators/example/lldp.py +0 -0
  228. {annet-3.16.3 → annet-3.17.0}/annet_generators/mesh_example/__init__.py +0 -0
  229. {annet-3.16.3 → annet-3.17.0}/annet_generators/mesh_example/bgp.py +0 -0
  230. {annet-3.16.3 → annet-3.17.0}/annet_generators/mesh_example/mesh_logic.py +0 -0
  231. {annet-3.16.3 → annet-3.17.0}/annet_generators/rpl_example/__init__.py +0 -0
  232. {annet-3.16.3 → annet-3.17.0}/annet_generators/rpl_example/generator.py +0 -0
  233. {annet-3.16.3 → annet-3.17.0}/annet_generators/rpl_example/items.py +0 -0
  234. {annet-3.16.3 → annet-3.17.0}/annet_generators/rpl_example/mesh.py +0 -0
  235. {annet-3.16.3 → annet-3.17.0}/annet_generators/rpl_example/route_policy.py +0 -0
  236. {annet-3.16.3 → annet-3.17.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 3.16.3
3
+ Version: 3.17.0
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
@@ -20,8 +20,9 @@ Requires-Dist: valkit>=0.1.4
20
20
  Requires-Dist: yarl>=1.8.2
21
21
  Requires-Dist: adaptix==3.0.0b7
22
22
  Requires-Dist: dataclass-rest==0.4
23
+ Requires-Dist: ordered-set>=4.1.0
23
24
  Provides-Extra: netbox
24
- Requires-Dist: annetbox[sync]>=0.7.0; extra == "netbox"
25
+ Requires-Dist: annetbox[sync]>=0.8.0; extra == "netbox"
25
26
  Dynamic: home-page
26
27
  Dynamic: license
27
28
  Dynamic: license-file
@@ -53,21 +53,35 @@ selected_context: default
53
53
 
54
54
  Environment variable `ANN_SELECTED_CONTEXT` can be used to override `selected_context` parameter.
55
55
 
56
- ## Building doc
56
+ ## Installation
57
57
 
58
- 1. Install dependencies:
58
+ Install from PyPI:
59
+ ```shell
60
+ pip install annet
61
+ ```
59
62
 
63
+ Or install from source:
60
64
  ```shell
61
- pip install -r requirements-doc.txt
65
+ git clone https://github.com/annetutil/annet
66
+ cd annet
67
+ pip install -e .
62
68
  ```
63
69
 
70
+ ## Building doc
71
+ 1. Install dependencies:
72
+ ```shell
73
+ pip install -r requirements-doc.txt
74
+ ```
64
75
  2. Build
65
-
66
76
  ```shell
67
77
  sphinx-build -M html docs docs-build
68
78
  ```
69
-
70
- 3. Open rendered html in browser docs-build/html/index.html
79
+ 3. Open rendered html in browser
80
+ ```shell
81
+ open docs-build/html/index.html # macOS
82
+ xdg-open docs-build/html/index.html # Linux
83
+ start docs-build/html/index.html # Windows
84
+ ```
71
85
 
72
86
  ## Links
73
87
 
@@ -5,7 +5,7 @@ from typing import cast, List, Union, Iterable, Optional, TypedDict
5
5
  from annet.storage import Query
6
6
 
7
7
  FIELD_VALUE_SEPARATOR = ":"
8
- ALLOWED_GLOB_GROUPS = ["site", "tag", "role", "device_type", "status", "tenant"]
8
+ ALLOWED_GLOB_GROUPS = ["site", "tag", "role", "device_type", "status", "tenant", "asset_tag"]
9
9
 
10
10
 
11
11
  class Filter(TypedDict, total=False):
@@ -16,6 +16,7 @@ class Filter(TypedDict, total=False):
16
16
  device_type: list[str]
17
17
  status: list[str]
18
18
  tenant: list[str]
19
+ asset_tag: list[str]
19
20
 
20
21
 
21
22
  @dataclass
@@ -22,6 +22,7 @@ def storage_factory(opts: NetboxStorageOpts) -> Storage:
22
22
  "4.1": NetboxStorageV41,
23
23
  "4.2": NetboxStorageV42,
24
24
  "4.3": NetboxStorageV42,
25
+ "4.4": NetboxStorageV42,
25
26
  }
26
27
 
27
28
  status = None
@@ -10,6 +10,7 @@ from typing import Any, Dict, Iterable, List, Optional
10
10
 
11
11
  import jsonpatch
12
12
  import jsonpointer
13
+ from ordered_set import OrderedSet
13
14
 
14
15
 
15
16
  def format_json(data: Any, stable: bool = False) -> str:
@@ -42,8 +43,7 @@ def apply_json_fragment(
42
43
 
43
44
  for pointer in new_pointers:
44
45
  new_value = pointer.get(new_fragment)
45
- _ensure_pointer_exists(full_new_config, pointer)
46
- pointer.set(full_new_config, new_value)
46
+ _pointer_set(pointer, full_new_config, new_value)
47
47
 
48
48
  # delete matched parts in old config whicn are not present in the new
49
49
  paths = {p.path for p in new_pointers}
@@ -56,31 +56,37 @@ def apply_json_fragment(
56
56
  return full_new_config
57
57
 
58
58
 
59
- def _ensure_pointer_exists(doc: Dict[str, Any], pointer: jsonpointer.JsonPointer) -> None:
59
+ def _pointer_set(pointer: jsonpointer.JsonPointer, doc: Any, value: Any) -> None:
60
60
  """
61
- Ensure that document has all pointer parts (if possible).
61
+ Resolve `pointer` against the `doc`, creating new elements if neccessary,
62
+ and set the target's value to `value`, all in place.
62
63
 
63
- This is workaround for errors of type:
64
+ If `pointer` in any it's part points to the non-existing key,
65
+ or if value at this point is `None`, new object will be created.
66
+ (See https://github.com/stefankoegl/python-json-pointer/issues/41)
64
67
 
65
- ```
66
- jsonpointer.JsonPointerException: member 'MY_PART' not found in {}
67
- ```
68
-
69
- See for details: https://github.com/stefankoegl/python-json-pointer/issues/41
68
+ If `pointer` in any it's part points to the index of next to be appended
69
+ element of the array, new document / `value` will be appended to that list.
70
70
  """
71
- parts_except_the_last = pointer.get_parts()[:-1]
72
- doc_pointer: Dict[str, Any] = doc
73
- for part in parts_except_the_last:
74
- if isinstance(doc_pointer, dict):
75
- if part not in doc_pointer or doc_pointer[part] is None:
76
- # create an empty object by the pointer part
77
- doc_pointer[part] = {}
78
-
79
- # follow the pointer to delve deeper
80
- doc_pointer = doc_pointer[part]
81
- else:
82
- # not a dict - cannot delve deeper
83
- break
71
+ if len(pointer.parts) == 0:
72
+ raise jsonpointer.JsonPointerException("Cannot set root in place")
73
+ *parts_expect_the_last, last_part = pointer.parts
74
+
75
+ for part in parts_expect_the_last:
76
+ key = pointer.get_part(doc, part)
77
+ if isinstance(doc, dict):
78
+ if doc.get(key, None) is None:
79
+ doc[key] = {}
80
+ elif isinstance(doc, list):
81
+ if key == len(doc):
82
+ doc.append({})
83
+ doc = doc[key]
84
+
85
+ key = pointer.get_part(doc, last_part)
86
+ if isinstance(doc, list) and key == len(doc):
87
+ doc.append(value)
88
+ else:
89
+ doc[key] = value
84
90
 
85
91
 
86
92
  def make_patch(old: Dict[str, Any], new: Dict[str, Any]) -> List[Dict[str, Any]]:
@@ -175,12 +181,11 @@ def _apply_filters_to_json_pointers(
175
181
  pointers: Iterable[jsonpointer.JsonPointer],
176
182
  filters: Sequence[str], *,
177
183
  content: Any,
178
- ) -> list[jsonpointer.JsonPointer]:
184
+ ) -> Sequence[jsonpointer.JsonPointer]:
179
185
 
180
186
  """
181
- Takes a list of pointers, a list of filters and a document
182
- and returns a list of pointers that match at least one of the filters
183
- (if necessary, pointers may be deeper than from the input).
187
+ Takes a list of pointers, a list of filters and a document, and returns
188
+ a list of pointers that match at least one of the filters, preserving order.
184
189
 
185
190
  For example, given:
186
191
  pointers=["/foo", "/lorem/ipsum", "/lorem/dolor"],
@@ -205,7 +210,7 @@ def _apply_filters_to_json_pointers(
205
210
  ["/foo/bar/qux", "/lorem/ipsum", "/lorem/dolor"]
206
211
  """
207
212
 
208
- ret: set[jsonpointer.JsonPointer] = set()
213
+ ret = OrderedSet[jsonpointer.JsonPointer]()
209
214
  for filter_item in filters:
210
215
  filter_parts = jsonpointer.JsonPointer(filter_item).parts
211
216
  for pointer in pointers:
@@ -222,7 +227,4 @@ def _apply_filters_to_json_pointers(
222
227
  ret.update(map(pointer.join, _resolve_json_pointers(deeper_pattern, deeper_doc)))
223
228
  else:
224
229
  ret.add(pointer)
225
- # sort return value by some stable key, to decrease the chance
226
- # that some bug may lead to unstable output being produced
227
- # (since `type(ret) is set`)
228
- return sorted(ret, key=str)
230
+ return ret
@@ -193,7 +193,8 @@ def fill_cmd_params(rules: OrderedDict, cmd: Command):
193
193
  if rule:
194
194
  cmd_params = make_cmd_params(rule)
195
195
  cmd.questions = cmd_params.get("questions", None)
196
- cmd.timeout = cmd_params["timeout"]
196
+ if cmd.timeout is None:
197
+ cmd.timeout = cmd_params["timeout"]
197
198
 
198
199
 
199
200
  def apply_deploy_rulebook(hw: HardwareView, cmd_paths, do_finalize=True, do_commit=True):
@@ -14,7 +14,7 @@ class H3CVendor(AbstractVendor):
14
14
 
15
15
  before.add_cmd(Command("system-view"))
16
16
  if do_finalize:
17
- after.add_cmd(Command("save force", timeout=90))
17
+ after.add_cmd(Command("save force", timeout=90, read_timeout=90))
18
18
 
19
19
  return before, after
20
20
 
@@ -14,7 +14,7 @@ class JuniperVendor(AbstractVendor):
14
14
 
15
15
  before.add_cmd(Command("configure exclusive"))
16
16
  if do_commit:
17
- after.add_cmd(Command("commit", timeout=30))
17
+ after.add_cmd(Command("commit", timeout=30, read_timeout=30))
18
18
  after.add_cmd(Command("exit"))
19
19
 
20
20
  return before, after
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 3.16.3
3
+ Version: 3.17.0
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
@@ -20,8 +20,9 @@ Requires-Dist: valkit>=0.1.4
20
20
  Requires-Dist: yarl>=1.8.2
21
21
  Requires-Dist: adaptix==3.0.0b7
22
22
  Requires-Dist: dataclass-rest==0.4
23
+ Requires-Dist: ordered-set>=4.1.0
23
24
  Provides-Extra: netbox
24
- Requires-Dist: annetbox[sync]>=0.7.0; extra == "netbox"
25
+ Requires-Dist: annetbox[sync]>=0.8.0; extra == "netbox"
25
26
  Dynamic: home-page
26
27
  Dynamic: license
27
28
  Dynamic: license-file
@@ -11,6 +11,7 @@ valkit>=0.1.4
11
11
  yarl>=1.8.2
12
12
  adaptix==3.0.0b7
13
13
  dataclass-rest==0.4
14
+ ordered-set>=4.1.0
14
15
 
15
16
  [netbox]
16
- annetbox[sync]>=0.7.0
17
+ annetbox[sync]>=0.8.0
@@ -11,3 +11,4 @@ valkit>=0.1.4
11
11
  yarl>=1.8.2
12
12
  adaptix==3.0.0b7
13
13
  dataclass-rest==0.4
14
+ ordered-set>=4.1.0
@@ -44,7 +44,7 @@ if __name__ == "__main__":
44
44
  ],
45
45
  },
46
46
  extras_require={
47
- "netbox": ["annetbox[sync]>=0.7.0"],
47
+ "netbox": ["annetbox[sync]>=0.8.0"],
48
48
  },
49
49
  python_requires=">=3.10",
50
50
  install_requires=requirements(),
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