annet 3.17.0__tar.gz → 3.18.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.17.0/annet.egg-info → annet-3.18.0}/PKG-INFO +1 -1
  2. {annet-3.17.0 → annet-3.18.0}/annet/annlib/jsontools.py +26 -4
  3. {annet-3.17.0 → annet-3.18.0}/annet/gen.py +11 -2
  4. {annet-3.17.0 → annet-3.18.0}/annet/generators/result.py +7 -3
  5. {annet-3.17.0 → annet-3.18.0/annet.egg-info}/PKG-INFO +1 -1
  6. {annet-3.17.0 → annet-3.18.0}/AUTHORS +0 -0
  7. {annet-3.17.0 → annet-3.18.0}/LICENSE +0 -0
  8. {annet-3.17.0 → annet-3.18.0}/MANIFEST.in +0 -0
  9. {annet-3.17.0 → annet-3.18.0}/README.md +0 -0
  10. {annet-3.17.0 → annet-3.18.0}/annet/__init__.py +0 -0
  11. {annet-3.17.0 → annet-3.18.0}/annet/adapters/__init__.py +0 -0
  12. {annet-3.17.0 → annet-3.18.0}/annet/adapters/fetchers/__init__.py +0 -0
  13. {annet-3.17.0 → annet-3.18.0}/annet/adapters/fetchers/stub/__init__.py +0 -0
  14. {annet-3.17.0 → annet-3.18.0}/annet/adapters/fetchers/stub/fetcher.py +0 -0
  15. {annet-3.17.0 → annet-3.18.0}/annet/adapters/file/__init__.py +0 -0
  16. {annet-3.17.0 → annet-3.18.0}/annet/adapters/file/provider.py +0 -0
  17. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/__init__.py +0 -0
  18. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/__init__.py +0 -0
  19. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/adapter.py +0 -0
  20. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/client.py +0 -0
  21. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/manufacturer.py +0 -0
  22. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/models.py +0 -0
  23. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/query.py +0 -0
  24. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/status_client.py +0 -0
  25. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/storage_base.py +0 -0
  26. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/common/storage_opts.py +0 -0
  27. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/provider.py +0 -0
  28. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v24/__init__.py +0 -0
  29. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v24/models.py +0 -0
  30. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v24/storage.py +0 -0
  31. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v37/__init__.py +0 -0
  32. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v37/models.py +0 -0
  33. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v37/storage.py +0 -0
  34. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v41/__init__.py +0 -0
  35. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v41/models.py +0 -0
  36. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v41/storage.py +0 -0
  37. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v42/__init__.py +0 -0
  38. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v42/models.py +0 -0
  39. {annet-3.17.0 → annet-3.18.0}/annet/adapters/netbox/v42/storage.py +0 -0
  40. {annet-3.17.0 → annet-3.18.0}/annet/annet.py +0 -0
  41. {annet-3.17.0 → annet-3.18.0}/annet/annlib/__init__.py +0 -0
  42. {annet-3.17.0 → annet-3.18.0}/annet/annlib/command.py +0 -0
  43. {annet-3.17.0 → annet-3.18.0}/annet/annlib/diff.py +0 -0
  44. {annet-3.17.0 → annet-3.18.0}/annet/annlib/errors.py +0 -0
  45. {annet-3.17.0 → annet-3.18.0}/annet/annlib/filter_acl.py +0 -0
  46. {annet-3.17.0 → annet-3.18.0}/annet/annlib/lib.py +0 -0
  47. {annet-3.17.0 → annet-3.18.0}/annet/annlib/netdev/__init__.py +0 -0
  48. {annet-3.17.0 → annet-3.18.0}/annet/annlib/netdev/db.py +0 -0
  49. {annet-3.17.0 → annet-3.18.0}/annet/annlib/netdev/devdb/__init__.py +0 -0
  50. {annet-3.17.0 → annet-3.18.0}/annet/annlib/netdev/devdb/data/devdb.json +0 -0
  51. {annet-3.17.0 → annet-3.18.0}/annet/annlib/netdev/views/__init__.py +0 -0
  52. {annet-3.17.0 → annet-3.18.0}/annet/annlib/netdev/views/dump.py +0 -0
  53. {annet-3.17.0 → annet-3.18.0}/annet/annlib/netdev/views/hardware.py +0 -0
  54. {annet-3.17.0 → annet-3.18.0}/annet/annlib/output.py +0 -0
  55. {annet-3.17.0 → annet-3.18.0}/annet/annlib/patching.py +0 -0
  56. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rbparser/__init__.py +0 -0
  57. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rbparser/acl.py +0 -0
  58. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rbparser/deploying.py +0 -0
  59. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rbparser/ordering.py +0 -0
  60. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rbparser/platform.py +0 -0
  61. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rbparser/syntax.py +0 -0
  62. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rulebook/__init__.py +0 -0
  63. {annet-3.17.0 → annet-3.18.0}/annet/annlib/rulebook/common.py +0 -0
  64. {annet-3.17.0 → annet-3.18.0}/annet/annlib/types.py +0 -0
  65. {annet-3.17.0 → annet-3.18.0}/annet/api/__init__.py +0 -0
  66. {annet-3.17.0 → annet-3.18.0}/annet/argparse.py +0 -0
  67. {annet-3.17.0 → annet-3.18.0}/annet/bgp_models.py +0 -0
  68. {annet-3.17.0 → annet-3.18.0}/annet/cli.py +0 -0
  69. {annet-3.17.0 → annet-3.18.0}/annet/cli_args.py +0 -0
  70. {annet-3.17.0 → annet-3.18.0}/annet/configs/context.yml +0 -0
  71. {annet-3.17.0 → annet-3.18.0}/annet/configs/logging.yaml +0 -0
  72. {annet-3.17.0 → annet-3.18.0}/annet/connectors.py +0 -0
  73. {annet-3.17.0 → annet-3.18.0}/annet/deploy.py +0 -0
  74. {annet-3.17.0 → annet-3.18.0}/annet/deploy_ui.py +0 -0
  75. {annet-3.17.0 → annet-3.18.0}/annet/diff.py +0 -0
  76. {annet-3.17.0 → annet-3.18.0}/annet/filtering.py +0 -0
  77. {annet-3.17.0 → annet-3.18.0}/annet/generators/__init__.py +0 -0
  78. {annet-3.17.0 → annet-3.18.0}/annet/generators/base.py +0 -0
  79. {annet-3.17.0 → annet-3.18.0}/annet/generators/common/__init__.py +0 -0
  80. {annet-3.17.0 → annet-3.18.0}/annet/generators/common/initial.py +0 -0
  81. {annet-3.17.0 → annet-3.18.0}/annet/generators/entire.py +0 -0
  82. {annet-3.17.0 → annet-3.18.0}/annet/generators/exceptions.py +0 -0
  83. {annet-3.17.0 → annet-3.18.0}/annet/generators/jsonfragment.py +0 -0
  84. {annet-3.17.0 → annet-3.18.0}/annet/generators/partial.py +0 -0
  85. {annet-3.17.0 → annet-3.18.0}/annet/generators/perf.py +0 -0
  86. {annet-3.17.0 → annet-3.18.0}/annet/generators/ref.py +0 -0
  87. {annet-3.17.0 → annet-3.18.0}/annet/hardware.py +0 -0
  88. {annet-3.17.0 → annet-3.18.0}/annet/implicit.py +0 -0
  89. {annet-3.17.0 → annet-3.18.0}/annet/lib.py +0 -0
  90. {annet-3.17.0 → annet-3.18.0}/annet/mesh/__init__.py +0 -0
  91. {annet-3.17.0 → annet-3.18.0}/annet/mesh/basemodel.py +0 -0
  92. {annet-3.17.0 → annet-3.18.0}/annet/mesh/device_models.py +0 -0
  93. {annet-3.17.0 → annet-3.18.0}/annet/mesh/executor.py +0 -0
  94. {annet-3.17.0 → annet-3.18.0}/annet/mesh/match_args.py +0 -0
  95. {annet-3.17.0 → annet-3.18.0}/annet/mesh/models_converter.py +0 -0
  96. {annet-3.17.0 → annet-3.18.0}/annet/mesh/peer_models.py +0 -0
  97. {annet-3.17.0 → annet-3.18.0}/annet/mesh/port_processor.py +0 -0
  98. {annet-3.17.0 → annet-3.18.0}/annet/mesh/registry.py +0 -0
  99. {annet-3.17.0 → annet-3.18.0}/annet/output.py +0 -0
  100. {annet-3.17.0 → annet-3.18.0}/annet/parallel.py +0 -0
  101. {annet-3.17.0 → annet-3.18.0}/annet/patching.py +0 -0
  102. {annet-3.17.0 → annet-3.18.0}/annet/reference.py +0 -0
  103. {annet-3.17.0 → annet-3.18.0}/annet/rpl/__init__.py +0 -0
  104. {annet-3.17.0 → annet-3.18.0}/annet/rpl/action.py +0 -0
  105. {annet-3.17.0 → annet-3.18.0}/annet/rpl/condition.py +0 -0
  106. {annet-3.17.0 → annet-3.18.0}/annet/rpl/match_builder.py +0 -0
  107. {annet-3.17.0 → annet-3.18.0}/annet/rpl/policy.py +0 -0
  108. {annet-3.17.0 → annet-3.18.0}/annet/rpl/result.py +0 -0
  109. {annet-3.17.0 → annet-3.18.0}/annet/rpl/routemap.py +0 -0
  110. {annet-3.17.0 → annet-3.18.0}/annet/rpl/statement_builder.py +0 -0
  111. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/__init__.py +0 -0
  112. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/aspath.py +0 -0
  113. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/community.py +0 -0
  114. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/cumulus_frr.py +0 -0
  115. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/entities.py +0 -0
  116. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/execute.py +0 -0
  117. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/policy.py +0 -0
  118. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/prefix_lists.py +0 -0
  119. {annet-3.17.0 → annet-3.18.0}/annet/rpl_generators/rd.py +0 -0
  120. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/__init__.py +0 -0
  121. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/arista/__init__.py +0 -0
  122. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/arista/aaa.py +0 -0
  123. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/arista/iface.py +0 -0
  124. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/aruba/__init__.py +0 -0
  125. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/aruba/ap_env.py +0 -0
  126. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/aruba/misc.py +0 -0
  127. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/b4com/__init__.py +0 -0
  128. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/b4com/file.py +0 -0
  129. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/b4com/iface.py +0 -0
  130. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/cisco/__init__.py +0 -0
  131. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/cisco/iface.py +0 -0
  132. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/cisco/misc.py +0 -0
  133. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/cisco/vlandb.py +0 -0
  134. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/common.py +0 -0
  135. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/deploying.py +0 -0
  136. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/generic/__init__.py +0 -0
  137. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/generic/misc.py +0 -0
  138. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/h3c/__init__.py +0 -0
  139. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/h3c/aaa.py +0 -0
  140. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/h3c/bgp.py +0 -0
  141. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/h3c/iface.py +0 -0
  142. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/h3c/misc.py +0 -0
  143. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/h3c/vlandb.py +0 -0
  144. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/huawei/__init__.py +0 -0
  145. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/huawei/aaa.py +0 -0
  146. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/huawei/bgp.py +0 -0
  147. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/huawei/iface.py +0 -0
  148. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/huawei/misc.py +0 -0
  149. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/huawei/vlandb.py +0 -0
  150. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/juniper/__init__.py +0 -0
  151. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/juniper/iface.py +0 -0
  152. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/nexus/__init__.py +0 -0
  153. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/nexus/iface.py +0 -0
  154. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/patching.py +0 -0
  155. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/routeros/__init__.py +0 -0
  156. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/routeros/file.py +0 -0
  157. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/arista.deploy +0 -0
  158. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/arista.order +0 -0
  159. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/arista.rul +0 -0
  160. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/aruba.deploy +0 -0
  161. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/aruba.order +0 -0
  162. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/aruba.rul +0 -0
  163. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/b4com.deploy +0 -0
  164. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/b4com.order +0 -0
  165. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/b4com.rul +0 -0
  166. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/cisco.deploy +0 -0
  167. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/cisco.order +0 -0
  168. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/cisco.rul +0 -0
  169. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/h3c.deploy +0 -0
  170. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/h3c.order +0 -0
  171. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/h3c.rul +0 -0
  172. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/huawei.deploy +0 -0
  173. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/huawei.order +0 -0
  174. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/huawei.rul +0 -0
  175. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/iosxr.deploy +0 -0
  176. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/iosxr.order +0 -0
  177. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/iosxr.rul +0 -0
  178. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/juniper.order +0 -0
  179. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/juniper.rul +0 -0
  180. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/nexus.deploy +0 -0
  181. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/nexus.order +0 -0
  182. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/nexus.rul +0 -0
  183. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/nokia.rul +0 -0
  184. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/optixtrans.deploy +0 -0
  185. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/optixtrans.order +0 -0
  186. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/optixtrans.rul +0 -0
  187. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/pc.deploy +0 -0
  188. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/pc.order +0 -0
  189. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/pc.rul +0 -0
  190. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/ribbon.deploy +0 -0
  191. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/ribbon.rul +0 -0
  192. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/routeros.order +0 -0
  193. {annet-3.17.0 → annet-3.18.0}/annet/rulebook/texts/routeros.rul +0 -0
  194. {annet-3.17.0 → annet-3.18.0}/annet/storage.py +0 -0
  195. {annet-3.17.0 → annet-3.18.0}/annet/text_term_format.py +0 -0
  196. {annet-3.17.0 → annet-3.18.0}/annet/tracing.py +0 -0
  197. {annet-3.17.0 → annet-3.18.0}/annet/types.py +0 -0
  198. {annet-3.17.0 → annet-3.18.0}/annet/vendors/__init__.py +0 -0
  199. {annet-3.17.0 → annet-3.18.0}/annet/vendors/base.py +0 -0
  200. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/__init__.py +0 -0
  201. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/arista.py +0 -0
  202. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/aruba.py +0 -0
  203. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/b4com.py +0 -0
  204. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/cisco.py +0 -0
  205. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/h3c.py +0 -0
  206. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/huawei.py +0 -0
  207. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/iosxr.py +0 -0
  208. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/juniper.py +0 -0
  209. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/nexus.py +0 -0
  210. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/nokia.py +0 -0
  211. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/optixtrans.py +0 -0
  212. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/pc.py +0 -0
  213. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/ribbon.py +0 -0
  214. {annet-3.17.0 → annet-3.18.0}/annet/vendors/library/routeros.py +0 -0
  215. {annet-3.17.0 → annet-3.18.0}/annet/vendors/registry.py +0 -0
  216. {annet-3.17.0 → annet-3.18.0}/annet/vendors/tabparser.py +0 -0
  217. {annet-3.17.0 → annet-3.18.0}/annet.egg-info/SOURCES.txt +0 -0
  218. {annet-3.17.0 → annet-3.18.0}/annet.egg-info/dependency_links.txt +0 -0
  219. {annet-3.17.0 → annet-3.18.0}/annet.egg-info/entry_points.txt +0 -0
  220. {annet-3.17.0 → annet-3.18.0}/annet.egg-info/requires.txt +0 -0
  221. {annet-3.17.0 → annet-3.18.0}/annet.egg-info/top_level.txt +0 -0
  222. {annet-3.17.0 → annet-3.18.0}/annet_generators/__init__.py +0 -0
  223. {annet-3.17.0 → annet-3.18.0}/annet_generators/example/__init__.py +0 -0
  224. {annet-3.17.0 → annet-3.18.0}/annet_generators/example/hostname.py +0 -0
  225. {annet-3.17.0 → annet-3.18.0}/annet_generators/example/lldp.py +0 -0
  226. {annet-3.17.0 → annet-3.18.0}/annet_generators/mesh_example/__init__.py +0 -0
  227. {annet-3.17.0 → annet-3.18.0}/annet_generators/mesh_example/bgp.py +0 -0
  228. {annet-3.17.0 → annet-3.18.0}/annet_generators/mesh_example/mesh_logic.py +0 -0
  229. {annet-3.17.0 → annet-3.18.0}/annet_generators/rpl_example/__init__.py +0 -0
  230. {annet-3.17.0 → annet-3.18.0}/annet_generators/rpl_example/generator.py +0 -0
  231. {annet-3.17.0 → annet-3.18.0}/annet_generators/rpl_example/items.py +0 -0
  232. {annet-3.17.0 → annet-3.18.0}/annet_generators/rpl_example/mesh.py +0 -0
  233. {annet-3.17.0 → annet-3.18.0}/annet_generators/rpl_example/route_policy.py +0 -0
  234. {annet-3.17.0 → annet-3.18.0}/requirements.txt +0 -0
  235. {annet-3.17.0 → annet-3.18.0}/setup.cfg +0 -0
  236. {annet-3.17.0 → annet-3.18.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 3.17.0
3
+ Version: 3.18.0
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
@@ -6,13 +6,16 @@ import json
6
6
  from collections.abc import Mapping, Sequence
7
7
  from itertools import starmap
8
8
  from operator import itemgetter
9
- from typing import Any, Dict, Iterable, List, Optional
9
+ from typing import Any, Dict, Final, Iterable, List, Optional
10
10
 
11
11
  import jsonpatch
12
12
  import jsonpointer
13
13
  from ordered_set import OrderedSet
14
14
 
15
15
 
16
+ EVERYTHING_ACL: Final = "/*"
17
+
18
+
16
19
  def format_json(data: Any, stable: bool = False) -> str:
17
20
  """Serialize to json."""
18
21
  return json.dumps(data, indent=4, ensure_ascii=False, sort_keys=not stable) + "\n"
@@ -21,14 +24,17 @@ def format_json(data: Any, stable: bool = False) -> str:
21
24
  def apply_json_fragment(
22
25
  old: Dict[str, Any],
23
26
  new_fragment: Dict[str, Any], *,
24
- acl: Sequence[str],
27
+ acl: Sequence[str] | None = None,
25
28
  filters: Sequence[str] | None = None,
26
29
  ) -> Dict[str, Any]:
27
30
  """
28
- Replace parts of the old document with 'new_fragment' using ACL restrictions.
31
+ Replace parts of the old document with 'new_fragment'.
32
+ If `acl` is not `None`, replacement will only be made within specified keys.
29
33
  If `filter` is not `None`, only those parts which also matches at least one filter
30
34
  from the list will be modified (updated or deleted).
31
35
  """
36
+ if acl is None:
37
+ acl = [EVERYTHING_ACL]
32
38
  full_new_config = copy.deepcopy(old)
33
39
  for acl_item in acl:
34
40
  new_pointers = _resolve_json_pointers(acl_item, new_fragment)
@@ -91,7 +97,23 @@ def _pointer_set(pointer: jsonpointer.JsonPointer, doc: Any, value: Any) -> None
91
97
 
92
98
  def make_patch(old: Dict[str, Any], new: Dict[str, Any]) -> List[Dict[str, Any]]:
93
99
  """Generate a JSON patch by comparing the old document with the new one."""
94
- return sorted(jsonpatch.make_patch(old, new).patch, key=itemgetter("path"))
100
+ # NOTE: changing order of the patch operations (e.g. sorting)
101
+ # may interfere with the `move` logic.
102
+ # E.g.:
103
+ # ```python
104
+ # old = [["a", "b"], ["c", "d"]]
105
+ # new = [["d", "c"], ["b", "a"]]
106
+ # ```
107
+ # produces the following patch:
108
+ # ```json
109
+ # [{"op": "move", "path": "/0/0", "from": "/1/0"},
110
+ # {"op": "move", "path": "/1/0", "from": "/0/2"},
111
+ # {"op": "move", "path": "/0/0", "from": "/1/1"},
112
+ # {"op": "move", "path": "/1/1", "from": "/0/2"}]
113
+ # ```
114
+ # which relies on proper ordering to be correctly applied.
115
+ # See https://github.com/annetutil/annet/pull/452 for details.
116
+ return jsonpatch.make_patch(old, new).patch
95
117
 
96
118
 
97
119
  def apply_patch(content: Optional[bytes], patch_bytes: bytes) -> bytes:
@@ -267,11 +267,20 @@ def _old_new_per_device(ctx: OldNewDeviceContext, device: Device, filterer: Filt
267
267
  filters = filters_text.removesuffix("\n").split("\n")
268
268
 
269
269
  old_json_fragment_files = old_files.json_fragment_files.copy()
270
- new_json_fragment_files = res.new_json_fragment_files(old_json_fragment_files, filters=filters)
270
+ new_json_fragment_files = res.new_json_fragment_files(
271
+ old_json_fragment_files,
272
+ use_acl=not ctx.args.no_acl,
273
+ filters=filters,
274
+ )
271
275
 
272
276
  if ctx.args.acl_safe:
273
277
  safe_new_files = res.new_files(safe=True)
274
- safe_new_json_fragment_files = res.new_json_fragment_files(old_json_fragment_files, safe=True, filters=filters)
278
+ safe_new_json_fragment_files = res.new_json_fragment_files(
279
+ old_json_fragment_files,
280
+ use_acl=not ctx.args.no_acl,
281
+ safe=True,
282
+ filters=filters,
283
+ )
275
284
 
276
285
  if ctx.args.profile:
277
286
  perf = res.perf_mesures()
@@ -85,6 +85,7 @@ class RunGeneratorResult:
85
85
  def new_json_fragment_files(
86
86
  self,
87
87
  old_files: Dict[str, Optional[str]],
88
+ use_acl: bool = True,
88
89
  safe: bool = False,
89
90
  filters: Sequence[str] | None = None,
90
91
  ) -> Dict[str, Tuple[Any, Optional[str]]]:
@@ -98,9 +99,12 @@ class RunGeneratorResult:
98
99
  files[filepath] = (old_files[filepath], None)
99
100
  else:
100
101
  files[filepath] = ({}, None)
101
- result_acl = generator_result.acl
102
- if safe:
103
- result_acl = generator_result.acl_safe
102
+ if use_acl:
103
+ result_acl = generator_result.acl
104
+ if safe:
105
+ result_acl = generator_result.acl_safe
106
+ else:
107
+ result_acl = None
104
108
  previous_config: Dict[str, Any] = files[filepath][0]
105
109
  new_fragment = generator_result.config
106
110
  new_config = jsontools.apply_json_fragment(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 3.17.0
3
+ Version: 3.18.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