trigger 1.6rc9__tar.gz → 2.0.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.
Files changed (225) hide show
  1. trigger-2.0.0/AUTHORS.md +20 -0
  2. trigger-1.6rc9/LICENSE.rst → trigger-2.0.0/LICENSE.md +1 -3
  3. trigger-2.0.0/PKG-INFO +146 -0
  4. trigger-1.6rc9/README.rst → trigger-2.0.0/README.md +46 -34
  5. trigger-2.0.0/pyproject.toml +156 -0
  6. trigger-2.0.0/setup.cfg +4 -0
  7. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_acl.py +252 -197
  8. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_acl_db.py +19 -13
  9. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_acl_queue.py +29 -24
  10. trigger-2.0.0/tests/test_changemgmt.py +107 -0
  11. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_except.py +9 -8
  12. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_netdevices.py +41 -41
  13. trigger-2.0.0/tests/test_scripts.py +52 -0
  14. trigger-2.0.0/tests/test_tacacsrc.py +147 -0
  15. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_templates.py +25 -19
  16. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_twister.py +9 -13
  17. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_twister2.py +4 -7
  18. {trigger-1.6rc9 → trigger-2.0.0}/tests/test_utils.py +5 -3
  19. trigger-2.0.0/trigger/__init__.py +7 -0
  20. {trigger-1.6rc9 → trigger-2.0.0}/trigger/acl/__init__.py +11 -10
  21. {trigger-1.6rc9 → trigger-2.0.0}/trigger/acl/autoacl.py +14 -13
  22. {trigger-1.6rc9 → trigger-2.0.0}/trigger/acl/db.py +63 -49
  23. trigger-2.0.0/trigger/acl/dicts.py +357 -0
  24. trigger-2.0.0/trigger/acl/grammar.py +112 -0
  25. trigger-2.0.0/trigger/acl/ios.py +222 -0
  26. trigger-2.0.0/trigger/acl/junos.py +422 -0
  27. trigger-2.0.0/trigger/acl/models.py +118 -0
  28. {trigger-1.6rc9 → trigger-2.0.0}/trigger/acl/parser.py +63 -53
  29. {trigger-1.6rc9 → trigger-2.0.0}/trigger/acl/queue.py +83 -63
  30. {trigger-1.6rc9 → trigger-2.0.0}/trigger/acl/support.py +506 -324
  31. {trigger-1.6rc9 → trigger-2.0.0}/trigger/acl/tools.py +255 -201
  32. trigger-2.0.0/trigger/bin/acl.py +233 -0
  33. trigger-1.6rc9/bin/acl_script → trigger-2.0.0/trigger/bin/acl_script.py +229 -140
  34. trigger-2.0.0/trigger/bin/aclconv.py +82 -0
  35. trigger-2.0.0/trigger/bin/check_access.py +93 -0
  36. trigger-2.0.0/trigger/bin/check_syntax.py +66 -0
  37. trigger-2.0.0/trigger/bin/fe.py +197 -0
  38. trigger-1.6rc9/bin/find_access → trigger-2.0.0/trigger/bin/find_access.py +90 -69
  39. trigger-1.6rc9/bin/gnng → trigger-2.0.0/trigger/bin/gnng.py +148 -101
  40. trigger-1.6rc9/bin/gong → trigger-2.0.0/trigger/bin/gong.py +28 -22
  41. trigger-1.6rc9/bin/load_acl → trigger-2.0.0/trigger/bin/load_acl.py +253 -198
  42. trigger-2.0.0/trigger/bin/load_config.py +18 -0
  43. trigger-2.0.0/trigger/bin/netdev.py +317 -0
  44. trigger-1.6rc9/bin/optimizer → trigger-2.0.0/trigger/bin/optimizer.py +231 -211
  45. trigger-2.0.0/trigger/bin/run_cmds.py +18 -0
  46. {trigger-1.6rc9 → trigger-2.0.0}/trigger/changemgmt/__init__.py +78 -44
  47. {trigger-1.6rc9 → trigger-2.0.0}/trigger/changemgmt/bounce.py +13 -13
  48. {trigger-1.6rc9 → trigger-2.0.0}/trigger/cmds.py +265 -201
  49. {trigger-1.6rc9 → trigger-2.0.0}/trigger/conf/__init__.py +24 -15
  50. {trigger-1.6rc9 → trigger-2.0.0}/trigger/conf/global_settings.py +223 -215
  51. {trigger-1.6rc9 → trigger-2.0.0}/trigger/exceptions.py +14 -13
  52. {trigger-1.6rc9 → trigger-2.0.0}/trigger/gorc.py +27 -23
  53. {trigger-1.6rc9 → trigger-2.0.0}/trigger/netdevices/__init__.py +237 -181
  54. {trigger-1.6rc9 → trigger-2.0.0}/trigger/netdevices/loader.py +25 -19
  55. {trigger-1.6rc9 → trigger-2.0.0}/trigger/netscreen.py +421 -302
  56. trigger-2.0.0/trigger/packages/peewee.py +8084 -0
  57. {trigger-1.6rc9 → trigger-2.0.0}/trigger/rancid.py +103 -74
  58. {trigger-1.6rc9 → trigger-2.0.0}/trigger/tacacsrc.py +202 -138
  59. {trigger-1.6rc9 → trigger-2.0.0}/trigger/twister.py +628 -433
  60. {trigger-1.6rc9 → trigger-2.0.0}/trigger/twister2.py +225 -152
  61. {trigger-1.6rc9 → trigger-2.0.0}/trigger/utils/__init__.py +24 -14
  62. {trigger-1.6rc9 → trigger-2.0.0}/trigger/utils/cli.py +69 -45
  63. {trigger-1.6rc9 → trigger-2.0.0}/trigger/utils/importlib.py +11 -13
  64. {trigger-1.6rc9 → trigger-2.0.0}/trigger/utils/network.py +32 -23
  65. {trigger-1.6rc9 → trigger-2.0.0}/trigger/utils/rcs.py +22 -23
  66. {trigger-1.6rc9 → trigger-2.0.0}/trigger/utils/templates.py +18 -13
  67. trigger-2.0.0/trigger/utils/url.py +78 -0
  68. {trigger-1.6rc9 → trigger-2.0.0}/trigger/utils/xmltodict.py +71 -49
  69. trigger-2.0.0/trigger.egg-info/PKG-INFO +146 -0
  70. trigger-2.0.0/trigger.egg-info/SOURCES.txt +76 -0
  71. trigger-2.0.0/trigger.egg-info/entry_points.txt +15 -0
  72. trigger-2.0.0/trigger.egg-info/requires.txt +21 -0
  73. trigger-2.0.0/twisted/plugins/trigger_xmlrpc.py +124 -0
  74. trigger-1.6rc9/AUTHORS.rst +0 -21
  75. trigger-1.6rc9/CHANGELOG +0 -1
  76. trigger-1.6rc9/MANIFEST.in +0 -6
  77. trigger-1.6rc9/PKG-INFO +0 -44
  78. trigger-1.6rc9/SANDIA.rst +0 -3
  79. trigger-1.6rc9/TODO.rst +0 -43
  80. trigger-1.6rc9/bin/acl +0 -176
  81. trigger-1.6rc9/bin/aclconv +0 -73
  82. trigger-1.6rc9/bin/check_access +0 -87
  83. trigger-1.6rc9/bin/check_syntax +0 -62
  84. trigger-1.6rc9/bin/fe +0 -195
  85. trigger-1.6rc9/bin/netdev +0 -228
  86. trigger-1.6rc9/bin/run_cmds +0 -10
  87. trigger-1.6rc9/docs/.DS_Store +0 -0
  88. trigger-1.6rc9/docs/Makefile +0 -89
  89. trigger-1.6rc9/docs/_build/.DS_Store +0 -0
  90. trigger-1.6rc9/docs/_ext/triggerdocs.py +0 -10
  91. trigger-1.6rc9/docs/_static/rtd.css +0 -791
  92. trigger-1.6rc9/docs/_templates/page.html +0 -10
  93. trigger-1.6rc9/docs/api/acl.rst +0 -41
  94. trigger-1.6rc9/docs/api/changemgmt.rst +0 -5
  95. trigger-1.6rc9/docs/api/cmds.rst +0 -5
  96. trigger-1.6rc9/docs/api/conf.rst +0 -5
  97. trigger-1.6rc9/docs/api/contrib.rst +0 -17
  98. trigger-1.6rc9/docs/api/exceptions.rst +0 -5
  99. trigger-1.6rc9/docs/api/gorc.rst +0 -6
  100. trigger-1.6rc9/docs/api/index.rst +0 -9
  101. trigger-1.6rc9/docs/api/netdevices.rst +0 -8
  102. trigger-1.6rc9/docs/api/netscreen.rst +0 -5
  103. trigger-1.6rc9/docs/api/rancid.rst +0 -5
  104. trigger-1.6rc9/docs/api/tacacsrc.rst +0 -5
  105. trigger-1.6rc9/docs/api/twister.rst +0 -5
  106. trigger-1.6rc9/docs/api/utils.rst +0 -48
  107. trigger-1.6rc9/docs/changelog.rst +0 -1608
  108. trigger-1.6rc9/docs/conf.py +0 -268
  109. trigger-1.6rc9/docs/configuration.rst +0 -1279
  110. trigger-1.6rc9/docs/development.rst +0 -146
  111. trigger-1.6rc9/docs/examples.rst +0 -473
  112. trigger-1.6rc9/docs/experimental.rst +0 -135
  113. trigger-1.6rc9/docs/index.rst +0 -80
  114. trigger-1.6rc9/docs/installation.rst +0 -416
  115. trigger-1.6rc9/docs/interactive_mode.rst +0 -17
  116. trigger-1.6rc9/docs/license.rst +0 -58
  117. trigger-1.6rc9/docs/make.bat +0 -113
  118. trigger-1.6rc9/docs/new_vendors.rst +0 -60
  119. trigger-1.6rc9/docs/overview.rst +0 -112
  120. trigger-1.6rc9/docs/platforms.rst +0 -67
  121. trigger-1.6rc9/docs/support.rst +0 -68
  122. trigger-1.6rc9/docs/usage/cli.rst +0 -13
  123. trigger-1.6rc9/docs/usage/gorc.rst +0 -7
  124. trigger-1.6rc9/docs/usage/index.rst +0 -14
  125. trigger-1.6rc9/docs/usage/netdevices.rst +0 -671
  126. trigger-1.6rc9/docs/usage/plugins.rst +0 -131
  127. trigger-1.6rc9/docs/usage/scripts/acl.rst +0 -138
  128. trigger-1.6rc9/docs/usage/scripts/acl_script.rst +0 -223
  129. trigger-1.6rc9/docs/usage/scripts/aclconv.rst +0 -58
  130. trigger-1.6rc9/docs/usage/scripts/check_access.rst +0 -69
  131. trigger-1.6rc9/docs/usage/scripts/gnng.rst +0 -70
  132. trigger-1.6rc9/docs/usage/scripts/gong.rst +0 -238
  133. trigger-1.6rc9/docs/usage/scripts/netdev.rst +0 -127
  134. trigger-1.6rc9/docs/usage/tacacsrc.rst +0 -233
  135. trigger-1.6rc9/examples/commando_reactorless.py +0 -53
  136. trigger-1.6rc9/examples/normalizer/Normalize.py +0 -191
  137. trigger-1.6rc9/examples/normalizer/README.rst +0 -58
  138. trigger-1.6rc9/examples/normalizer/Report.py +0 -141
  139. trigger-1.6rc9/examples/normalizer/Router.py +0 -69
  140. trigger-1.6rc9/examples/normalizer/test-units.csv +0 -3
  141. trigger-1.6rc9/examples/sshendpoint_updatecmdb.py +0 -71
  142. trigger-1.6rc9/examples/xmlrpc_server/README.rst +0 -40
  143. trigger-1.6rc9/examples/xmlrpc_server/cacert.pem +0 -15
  144. trigger-1.6rc9/examples/xmlrpc_server/server.key +0 -15
  145. trigger-1.6rc9/examples/xmlrpc_server/start_xmlrpc.sh +0 -15
  146. trigger-1.6rc9/examples/xmlrpc_server/trigger-xmlrpc.init +0 -57
  147. trigger-1.6rc9/examples/xmlrpc_server/trigger-xmlrpc.log +0 -5357
  148. trigger-1.6rc9/examples/xmlrpc_server/twistd.log +0 -11
  149. trigger-1.6rc9/examples/xmlrpc_server/twistd.pid +0 -1
  150. trigger-1.6rc9/examples/xmlrpc_server/users.txt +0 -1
  151. trigger-1.6rc9/pycon2015.rst +0 -149
  152. trigger-1.6rc9/setup.cfg +0 -8
  153. trigger-1.6rc9/setup.py +0 -182
  154. trigger-1.6rc9/tests/acceptance/data/.tackf +0 -1
  155. trigger-1.6rc9/tests/acceptance/data/netdevices.xml +0 -146
  156. trigger-1.6rc9/tests/acceptance/data/settings.py +0 -424
  157. trigger-1.6rc9/tests/acceptance/trigger_acceptance_tests.py +0 -45
  158. trigger-1.6rc9/tests/data/acl.test +0 -104
  159. trigger-1.6rc9/tests/data/autoacl.py +0 -21
  160. trigger-1.6rc9/tests/data/bounce.py +0 -90
  161. trigger-1.6rc9/tests/data/brokenpw_tacacsrc +0 -7
  162. trigger-1.6rc9/tests/data/emptypw_tacacsrc +0 -4
  163. trigger-1.6rc9/tests/data/junos-examples.txt +0 -449
  164. trigger-1.6rc9/tests/data/longpw_tacacsrc +0 -4
  165. trigger-1.6rc9/tests/data/medium_tacacsrc +0 -4
  166. trigger-1.6rc9/tests/data/netdevices.xml +0 -77
  167. trigger-1.6rc9/tests/data/settings.py +0 -33
  168. trigger-1.6rc9/tests/data/tacacsrc +0 -8
  169. trigger-1.6rc9/tests/data/tackf +0 -1
  170. trigger-1.6rc9/tests/data/vendor/ntc_templates/cisco_ios_show_clock.template +0 -10
  171. trigger-1.6rc9/tests/data/vendor/ntc_templates/cisco_ios_show_version.template +0 -15
  172. trigger-1.6rc9/tests/setup_env.sh +0 -7
  173. trigger-1.6rc9/tests/test_changemgmt.py +0 -103
  174. trigger-1.6rc9/tests/test_scripts.py +0 -44
  175. trigger-1.6rc9/tests/test_tacacsrc.py +0 -125
  176. trigger-1.6rc9/tests/utils/__init__.py +0 -37
  177. trigger-1.6rc9/tests/utils/misc.py +0 -36
  178. trigger-1.6rc9/tests/utils/mock_redis.py +0 -178
  179. trigger-1.6rc9/tools/convert_tacacsrc.py +0 -9
  180. trigger-1.6rc9/tools/gen_tacacsrc.py +0 -19
  181. trigger-1.6rc9/tools/init_task_db +0 -39
  182. trigger-1.6rc9/tools/prepend_acl_dot +0 -84
  183. trigger-1.6rc9/tools/tacacsrc2gpg.py +0 -41
  184. trigger-1.6rc9/trigger/__init__.py +0 -6
  185. trigger-1.6rc9/trigger/acl/dicts.py +0 -346
  186. trigger-1.6rc9/trigger/acl/grammar.py +0 -106
  187. trigger-1.6rc9/trigger/acl/ios.py +0 -193
  188. trigger-1.6rc9/trigger/acl/junos.py +0 -366
  189. trigger-1.6rc9/trigger/acl/models.py +0 -105
  190. trigger-1.6rc9/trigger/contrib/commando/__init__.py +0 -208
  191. trigger-1.6rc9/trigger/contrib/commando/plugins/__init__.py +0 -7
  192. trigger-1.6rc9/trigger/contrib/commando/plugins/config_device.py +0 -149
  193. trigger-1.6rc9/trigger/contrib/commando/plugins/gather_info.py +0 -145
  194. trigger-1.6rc9/trigger/contrib/commando/plugins/show_clock.py +0 -115
  195. trigger-1.6rc9/trigger/contrib/commando/plugins/show_version.py +0 -17
  196. trigger-1.6rc9/trigger/contrib/docommand/__init__.py +0 -370
  197. trigger-1.6rc9/trigger/contrib/docommand/core.py +0 -484
  198. trigger-1.6rc9/trigger/contrib/xmlrpc/__init__.py +0 -6
  199. trigger-1.6rc9/trigger/contrib/xmlrpc/server.py +0 -215
  200. trigger-1.6rc9/trigger/netdevices/loaders/__init__.py +0 -6
  201. trigger-1.6rc9/trigger/netdevices/loaders/filesystem.py +0 -160
  202. trigger-1.6rc9/trigger/netdevices/loaders/mongodb.py +0 -36
  203. trigger-1.6rc9/trigger/packages/peewee.py +0 -2584
  204. trigger-1.6rc9/trigger/packages/tftpy/TftpClient.py +0 -102
  205. trigger-1.6rc9/trigger/packages/tftpy/TftpContexts.py +0 -385
  206. trigger-1.6rc9/trigger/packages/tftpy/TftpPacketFactory.py +0 -41
  207. trigger-1.6rc9/trigger/packages/tftpy/TftpPacketTypes.py +0 -446
  208. trigger-1.6rc9/trigger/packages/tftpy/TftpServer.py +0 -184
  209. trigger-1.6rc9/trigger/packages/tftpy/TftpShared.py +0 -59
  210. trigger-1.6rc9/trigger/packages/tftpy/TftpStates.py +0 -524
  211. trigger-1.6rc9/trigger/packages/tftpy/__init__.py +0 -24
  212. trigger-1.6rc9/trigger/utils/notifications/__init__.py +0 -27
  213. trigger-1.6rc9/trigger/utils/notifications/core.py +0 -58
  214. trigger-1.6rc9/trigger/utils/notifications/events.py +0 -141
  215. trigger-1.6rc9/trigger/utils/notifications/handlers.py +0 -120
  216. trigger-1.6rc9/trigger/utils/url.py +0 -67
  217. trigger-1.6rc9/trigger.egg-info/PKG-INFO +0 -44
  218. trigger-1.6rc9/trigger.egg-info/SOURCES.txt +0 -196
  219. trigger-1.6rc9/trigger.egg-info/requires.txt +0 -12
  220. trigger-1.6rc9/twisted/plugins/trigger_xmlrpc.py +0 -101
  221. {trigger-1.6rc9/examples/normalizer → trigger-2.0.0/trigger/bin}/__init__.py +0 -0
  222. {trigger-1.6rc9 → trigger-2.0.0}/trigger/contrib/__init__.py +0 -0
  223. {trigger-1.6rc9 → trigger-2.0.0}/trigger/packages/__init__.py +0 -0
  224. {trigger-1.6rc9 → trigger-2.0.0}/trigger.egg-info/dependency_links.txt +0 -0
  225. {trigger-1.6rc9 → trigger-2.0.0}/trigger.egg-info/top_level.txt +0 -0
@@ -0,0 +1,20 @@
1
+ # Contributors
2
+
3
+ The following people have contributed to Trigger at some point during its
4
+ lifetime:
5
+
6
+ - [Jathan McCollum](https://github.com/jathanism)
7
+ - [Eileen Watson](https://github.com/watsonator)
8
+ - [Mark Ellzey Thomas](https://github.com/ellzey)
9
+ - Michael Shields
10
+ - Jeff Sullivan (for the best error message ever)
11
+ - [Nick Sinopoli](https://github.com/NSinopoli) (for graciously giving us the
12
+ name Trigger!)
13
+ - [Jason Long](https://github.com/sh0x)
14
+ - [Michael Harding](https://github.com/mvh)
15
+ - William White
16
+ - [Allan Feid](https://github.com/crazed)
17
+ - [Mike Biancaniello](https://github.com/chepazzo)
18
+ - [Murat Ezbiderli](https://github.com/mezbiderli)
19
+ - [Johannes Erdfelt](https://github.com/jerdfelt)
20
+ - [Codey Oxley](https://github.com/coxley)
@@ -1,6 +1,4 @@
1
- =======
2
- License
3
- =======
1
+ # License
4
2
 
5
3
  Copyright (c) 2006-2012, AOL Inc.
6
4
 
trigger-2.0.0/PKG-INFO ADDED
@@ -0,0 +1,146 @@
1
+ Metadata-Version: 2.4
2
+ Name: trigger
3
+ Version: 2.0.0
4
+ Summary: Network automation toolkit for managing network devices
5
+ Author-email: Jathan McCollum <jathan@gmail.com>
6
+ License-Expression: BSD-3-Clause
7
+ Classifier: Development Status :: 6 - Mature
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Framework :: Twisted
12
+ Requires-Python: <3.12,>=3.10
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE.md
15
+ License-File: AUTHORS.md
16
+ Requires-Dist: IPy>=1.01
17
+ Requires-Dist: cryptography>=41.0.0
18
+ Requires-Dist: Twisted>=22.10.0
19
+ Requires-Dist: crochet>=2.0.0
20
+ Requires-Dist: pyasn1>=0.4.8
21
+ Requires-Dist: pyparsing>=3.1.0
22
+ Requires-Dist: pytz>=2023.3
23
+ Requires-Dist: SimpleParse>=2.2.0
24
+ Requires-Dist: textfsm>=1.1.0
25
+ Requires-Dist: redis>=5.0.0
26
+ Requires-Dist: PTable>=0.9.2
27
+ Requires-Dist: peewee>=3.17.0
28
+ Requires-Dist: service-identity>=23.1.0
29
+ Requires-Dist: bcrypt>=4.0.0
30
+ Requires-Dist: packaging>=21.0
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
33
+ Requires-Dist: pytest-twisted>=1.14.0; extra == "dev"
34
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
35
+ Requires-Dist: python-semantic-release>=9.0.0; extra == "dev"
36
+ Dynamic: license-file
37
+
38
+ # What is Trigger?
39
+
40
+ [![Tests](https://github.com/trigger/trigger/workflows/Tests/badge.svg)](https://github.com/trigger/trigger/actions)
41
+ [![Join the chat at https://gitter.im/trigger/trigger](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/trigger/trigger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
42
+
43
+ Trigger is a robust network automation toolkit written in Python that was
44
+ designed for interfacing with network devices and managing network
45
+ configuration and security policy. It increases the speed and efficiency of
46
+ managing large-scale networks while reducing the risk of human error.
47
+
48
+ Started by the AOL Network Security team in 2006, Trigger was originally
49
+ designed for security policy management on firewalls, routers, and switches. It
50
+ has since been expanded to be a full-featured network automation toolkit.
51
+
52
+ With the high number of network devices on the AOL network this application is
53
+ invaluable to performance and reliability. We hope you'll find it useful on
54
+ your network and consider participating!
55
+
56
+ ## Supported Platforms
57
+
58
+ * Cisco IOS, NX-OS, and ASA software
59
+ * Juniper Junos and ScreenOS
60
+ * Force10 router and switch platforms running FTOS
61
+ * Arista Networks 7000-family switches
62
+ * ... and more!
63
+
64
+ Refer to the [official docs](https://trigger.readthedocs.io/en/latest/#supported-platforms) for the full list.
65
+
66
+ ## Key Features
67
+
68
+ Trigger is designed to work at scale and can support hundreds or thousands of
69
+ network devices with ease. Here are some of things that make Trigger tick:
70
+
71
+ + Support for SSH, Telnet, and Juniper's Junoscript XML API.
72
+ + Easily get an interactive shell or execute commands asynchronously.
73
+ + Leverage advanced event-driven functionality to manage any number of
74
+ jobs in parallel and handle output or errors as they return.
75
+ + Powerful metadata interface for performing complex queries to group and
76
+ associate network devices by name, manufacturer, type, location, and more.
77
+ + Encrypted storage of login credentials so you can interact without constantly
78
+ being prompted to enter your password.
79
+ + Flexible access-list & firewall policy parser that can test access if access
80
+ is permitted, or easily convert ACLs from one format to another.
81
+ + Detailed support for timezones and maintenance windows.
82
+ + A suite of tools for simplifying many common tasks.
83
+
84
+ New in version 1.2:
85
+
86
+ + Import your metadata from an existing [RANCID](http://shrubbery.net/rancid/) installation to get up-and-running quickly!
87
+
88
+ New in version 1.3:
89
+
90
+ + Import your metadata from a CSV file and get up-and-running even quicker!
91
+
92
+ ## Getting Started
93
+
94
+ The best way to get started is to read the documentation hosted by [Read the
95
+ Docs](http://readthedocs.org) at [https://trigger.readthedocs.io](https://trigger.readthedocs.io). There you will find everything you need to
96
+ get going including usage examples, installation and configuration
97
+ instructions, and more!
98
+
99
+ ### Python Version Requirements
100
+
101
+ **Trigger v2.0.0+** requires **Python 3.10 or 3.11**. Python 3.12+ is not yet supported due to SimpleParse C extension compatibility issues.
102
+
103
+ **Python 2.7 support ended with v1.6.0** (the last Python 2.7 compatible release).
104
+
105
+ #### Installation
106
+
107
+ ```bash
108
+ # Install the latest version
109
+ pip install trigger
110
+
111
+ # Install in development mode
112
+ pip install -e ".[dev]"
113
+
114
+ # Using uv (faster)
115
+ uv pip install trigger
116
+ ```
117
+
118
+ For users still requiring Python 2.7, use the v1.6.0 release:
119
+ ```bash
120
+ pip install trigger==1.6.0
121
+ ```
122
+
123
+ ### Upgrading from v1.6.0?
124
+
125
+ See the [Migration Guide](https://trigger.readthedocs.io/en/latest/migration.html) for detailed upgrade instructions.
126
+
127
+ ### Before you begin
128
+
129
+ + The [develop](https://github.com/trigger/trigger/tree/develop) branch is
130
+ the default branch that will be active when you clone this repository. While
131
+ it is generally stable this branch is not considered production-ready. Use at
132
+ your own risk!
133
+ + The [master](https://github.com/trigger/trigger/tree/master) branch is
134
+ the stable branch, and will reflect the latest production-ready changes. It
135
+ is recommended that this is the branch you use if you are installing Trigger
136
+ for the first time.
137
+ + Each point release of Trigger is maintained as a [tag branch](https://github.com/trigger/trigger/tags). If you require a
138
+ specific Trigger version, please refer to these.
139
+
140
+ ### Get in touch!
141
+
142
+ If you run into any snags, have questions, feedback, or just want to talk shop:
143
+ [contact us](https://trigger.readthedocs.io/en/latest/#getting-help)!
144
+
145
+ **Pro tip**: Find us on IRC at `#trigger` on Freenode
146
+ ([irc://irc.freenode.net/trigger](irc://irc.freenode.net/trigger)).
@@ -1,13 +1,7 @@
1
- What is Trigger?
2
- ================
1
+ # What is Trigger?
3
2
 
4
- .. image:: https://travis-ci.org/trigger/trigger.png
5
- :alt: Build Status
6
- :target: https://travis-ci.org/trigger/trigger
7
-
8
- .. image:: https://badges.gitter.im/Join%20Chat.svg
9
- :alt: Join the chat at https://gitter.im/trigger/trigger
10
- :target: https://gitter.im/trigger/trigger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
3
+ [![Tests](https://github.com/trigger/trigger/workflows/Tests/badge.svg)](https://github.com/trigger/trigger/actions)
4
+ [![Join the chat at https://gitter.im/trigger/trigger](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/trigger/trigger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
11
5
 
12
6
  Trigger is a robust network automation toolkit written in Python that was
13
7
  designed for interfacing with network devices and managing network
@@ -22,8 +16,7 @@ With the high number of network devices on the AOL network this application is
22
16
  invaluable to performance and reliability. We hope you'll find it useful on
23
17
  your network and consider participating!
24
18
 
25
- Supported Platforms
26
- ===================
19
+ ## Supported Platforms
27
20
 
28
21
  * Cisco IOS, NX-OS, and ASA software
29
22
  * Juniper Junos and ScreenOS
@@ -31,12 +24,9 @@ Supported Platforms
31
24
  * Arista Networks 7000-family switches
32
25
  * ... and more!
33
26
 
34
- Refer to the `official docs`_ for the full list.
27
+ Refer to the [official docs](https://trigger.readthedocs.io/en/latest/#supported-platforms) for the full list.
35
28
 
36
- .. _official docs: http://trigger.readthedocs.io/en/latest/#supported-platforms
37
-
38
- Key Features
39
- ============
29
+ ## Key Features
40
30
 
41
31
  Trigger is designed to work at scale and can support hundreds or thousands of
42
32
  network devices with ease. Here are some of things that make Trigger tick:
@@ -56,42 +46,64 @@ network devices with ease. Here are some of things that make Trigger tick:
56
46
 
57
47
  New in version 1.2:
58
48
 
59
- + Import your metadata from an existing `RANCID
60
- <http://shrubbery.net/rancid/>`_ installation to get up-and-running quickly!
49
+ + Import your metadata from an existing [RANCID](http://shrubbery.net/rancid/) installation to get up-and-running quickly!
61
50
 
62
51
  New in version 1.3:
63
52
 
64
53
  + Import your metadata from a CSV file and get up-and-running even quicker!
65
54
 
66
- Getting Started
67
- ===============
55
+ ## Getting Started
68
56
 
69
- The best way to get started is to read the documentation hosted by `Read the
70
- Docs <http://readthedocs.org>`_ at `http://trigger.readthedocs.io
71
- <http://trigger.readthedocs.io>`_. There you will find everything you need to
57
+ The best way to get started is to read the documentation hosted by [Read the
58
+ Docs](http://readthedocs.org) at [https://trigger.readthedocs.io](https://trigger.readthedocs.io). There you will find everything you need to
72
59
  get going including usage examples, installation and configuration
73
60
  instructions, and more!
74
61
 
75
- Before you begin
76
- ----------------
62
+ ### Python Version Requirements
63
+
64
+ **Trigger v2.0.0+** requires **Python 3.10 or 3.11**. Python 3.12+ is not yet supported due to SimpleParse C extension compatibility issues.
65
+
66
+ **Python 2.7 support ended with v1.6.0** (the last Python 2.7 compatible release).
67
+
68
+ #### Installation
69
+
70
+ ```bash
71
+ # Install the latest version
72
+ pip install trigger
73
+
74
+ # Install in development mode
75
+ pip install -e ".[dev]"
76
+
77
+ # Using uv (faster)
78
+ uv pip install trigger
79
+ ```
80
+
81
+ For users still requiring Python 2.7, use the v1.6.0 release:
82
+ ```bash
83
+ pip install trigger==1.6.0
84
+ ```
85
+
86
+ ### Upgrading from v1.6.0?
87
+
88
+ See the [Migration Guide](https://trigger.readthedocs.io/en/latest/migration.html) for detailed upgrade instructions.
89
+
90
+ ### Before you begin
77
91
 
78
- + The `develop <https://github.com/trigger/trigger/tree/develop>`_ branch is
92
+ + The [develop](https://github.com/trigger/trigger/tree/develop) branch is
79
93
  the default branch that will be active when you clone this repository. While
80
94
  it is generally stable this branch is not considered production-ready. Use at
81
95
  your own risk!
82
- + The `master <https://github.com/trigger/trigger/tree/master>`_ branch is
96
+ + The [master](https://github.com/trigger/trigger/tree/master) branch is
83
97
  the stable branch, and will reflect the latest production-ready changes. It
84
98
  is recommended that this is the branch you use if you are installing Trigger
85
99
  for the first time.
86
- + Each point release of Trigger is maintained as a `tag branch
87
- <https://github.com/trigger/trigger/tags>`_. If you require a
100
+ + Each point release of Trigger is maintained as a [tag branch](https://github.com/trigger/trigger/tags). If you require a
88
101
  specific Trigger version, please refer to these.
89
102
 
90
- Get in touch!
91
- -------------
103
+ ### Get in touch!
92
104
 
93
105
  If you run into any snags, have questions, feedback, or just want to talk shop:
94
- `contact us <http://trigger.readthedocs.io/en/latest/#getting-help>`_!
106
+ [contact us](https://trigger.readthedocs.io/en/latest/#getting-help)!
95
107
 
96
- **Pro tip**: Find us on IRC at ``#trigger`` on Freenode
97
- (`irc://irc.freenode.net/trigger <irc://irc.freenode.net/trigger>`_).
108
+ **Pro tip**: Find us on IRC at `#trigger` on Freenode
109
+ ([irc://irc.freenode.net/trigger](irc://irc.freenode.net/trigger)).
@@ -0,0 +1,156 @@
1
+ [build-system]
2
+ requires = ["setuptools>=64", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "trigger"
7
+ version = "2.0.0"
8
+ description = "Network automation toolkit for managing network devices"
9
+ readme = "README.md"
10
+ license = "BSD-3-Clause"
11
+ authors = [{name = "Jathan McCollum", email = "jathan@gmail.com"}]
12
+ requires-python = ">=3.10,<3.12"
13
+ classifiers = [
14
+ "Development Status :: 6 - Mature",
15
+ "Programming Language :: Python :: 3",
16
+ "Programming Language :: Python :: 3.10",
17
+ "Programming Language :: Python :: 3.11",
18
+ "Framework :: Twisted",
19
+ ]
20
+ dependencies = [
21
+ "IPy>=1.01",
22
+ "cryptography>=41.0.0",
23
+ "Twisted>=22.10.0",
24
+ "crochet>=2.0.0",
25
+ "pyasn1>=0.4.8",
26
+ "pyparsing>=3.1.0",
27
+ "pytz>=2023.3",
28
+ "SimpleParse>=2.2.0",
29
+ "textfsm>=1.1.0",
30
+ "redis>=5.0.0",
31
+ "PTable>=0.9.2",
32
+ "peewee>=3.17.0",
33
+ "service-identity>=23.1.0",
34
+ "bcrypt>=4.0.0",
35
+ "packaging>=21.0",
36
+ ]
37
+
38
+ [project.optional-dependencies]
39
+ dev = [
40
+ "pytest>=7.4.0",
41
+ "pytest-twisted>=1.14.0",
42
+ "ruff>=0.1.0",
43
+ "python-semantic-release>=9.0.0",
44
+ ]
45
+
46
+ [project.scripts]
47
+ acl = "trigger.bin.acl:main"
48
+ acl_script = "trigger.bin.acl_script:main"
49
+ aclconv = "trigger.bin.aclconv:main"
50
+ check_access = "trigger.bin.check_access:main"
51
+ check_syntax = "trigger.bin.check_syntax:main"
52
+ fe = "trigger.bin.fe:main"
53
+ find_access = "trigger.bin.find_access:main"
54
+ gnng = "trigger.bin.gnng:main"
55
+ gong = "trigger.bin.gong:main"
56
+ load_acl = "trigger.bin.load_acl:main"
57
+ load_config = "trigger.bin.load_config:main"
58
+ netdev = "trigger.bin.netdev:main"
59
+ optimizer = "trigger.bin.optimizer:main"
60
+ run_cmds = "trigger.bin.run_cmds:main"
61
+
62
+ [tool.setuptools]
63
+ packages = ["trigger", "trigger.acl", "trigger.bin", "trigger.changemgmt",
64
+ "trigger.conf", "trigger.contrib", "trigger.netdevices",
65
+ "trigger.packages", "trigger.utils", "twisted.plugins"]
66
+ include-package-data = true
67
+
68
+ [tool.setuptools.package-data]
69
+ twisted = ["plugins/trigger_xmlrpc.py"]
70
+
71
+ # Automatically includes files tracked by git in source distributions
72
+ # This includes: CHANGELOG, *.md, conf/, docs/, examples/, tests/
73
+
74
+ [tool.pytest.ini_options]
75
+ testpaths = ["tests"]
76
+ python_files = ["test_*.py"]
77
+ addopts = "-v"
78
+
79
+ [tool.ruff]
80
+ line-length = 88
81
+ target-version = "py310"
82
+ exclude = ["trigger/packages", ".venv", "build", "dist"]
83
+
84
+ [tool.ruff.lint]
85
+ # Focus on Python 3 compatibility and critical errors for v2.0.0
86
+ # More comprehensive linting can be added in future releases
87
+ select = [
88
+ "F", # pyflakes - critical errors
89
+ "E", # pycodestyle errors - serious issues
90
+ "W", # pycodestyle warnings - whitespace/formatting
91
+ "I", # isort - import sorting
92
+ "UP", # pyupgrade - Python 3 modernization
93
+ ]
94
+ ignore = [
95
+ "E501", # line too long (handled by formatter)
96
+ "E402", # module level import not at top (common in test files)
97
+ "E721", # type comparisons (existing code style)
98
+ "E722", # bare except (intentional in many places)
99
+ "E741", # ambiguous variable names (existing code style)
100
+ "UP031", # percent formatting (leave for future cleanup)
101
+ "F401", # unused imports (may be used dynamically or by subclasses)
102
+ "F402", # import shadowing (acceptable in limited scope loops)
103
+ "F403", # star imports (common pattern, leave for future refactor)
104
+ "F405", # undefined from star imports (consequence of F403)
105
+ "F523", # format call issues (leave for future cleanup)
106
+ "F811", # redefinition (tests may intentionally override)
107
+ "F821", # undefined names (may be in contrib plugins not fully ported)
108
+ ]
109
+
110
+ [tool.ruff.lint.per-file-ignores]
111
+ "tests/**/*.py" = [
112
+ "F821", # undefined names (test fixtures)
113
+ "E402", # module level imports not at top
114
+ "E722", # bare except (common in test error handling)
115
+ "E731", # lambda assignments (test utilities)
116
+ ]
117
+ "tests/acceptance/**/*.py" = [
118
+ "F821", # undefined names (acceptance test config)
119
+ "E402", # module level imports not at top
120
+ "E722", # bare except
121
+ ]
122
+ "docs/conf.py" = [
123
+ "E402", # module level imports not at top (Sphinx config)
124
+ "F401", # unused imports (may be used by Sphinx)
125
+ ]
126
+
127
+ [tool.ruff.lint.isort]
128
+ known-first-party = ["trigger"]
129
+
130
+ [tool.ruff.format]
131
+ quote-style = "double"
132
+ indent-style = "space"
133
+ skip-magic-trailing-comma = false
134
+ line-ending = "auto"
135
+
136
+ [tool.semantic_release]
137
+ version_toml = ["pyproject.toml:project.version"]
138
+ branch = "main"
139
+ upload_to_pypi = true
140
+ upload_to_release = true
141
+ build_command = "pip install uv && uv build"
142
+ major_on_zero = false
143
+ tag_format = "v{version}"
144
+
145
+ [tool.semantic_release.commit_parser_options]
146
+ allowed_tags = ["feat", "fix", "perf", "refactor", "docs", "chore", "ci", "test", "build"]
147
+ major_tags = ["BREAKING CHANGE"]
148
+ minor_tags = ["feat"]
149
+ patch_tags = ["fix", "perf"]
150
+
151
+ [tool.semantic_release.changelog]
152
+ changelog_file = "CHANGELOG.md"
153
+
154
+ [tool.semantic_release.branches.main]
155
+ match = "main"
156
+ prerelease = false
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+