synapse 2.223.0__py311-none-any.whl → 2.225.0__py311-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (135) hide show
  1. synapse/axon.py +10 -5
  2. synapse/common.py +2 -2
  3. synapse/cortex.py +52 -3
  4. synapse/datamodel.py +1 -1
  5. synapse/lib/cell.py +1 -1
  6. synapse/lib/const.py +4 -0
  7. synapse/lib/layer.py +6 -6
  8. synapse/lib/multislabseqn.py +36 -1
  9. synapse/lib/nexus.py +67 -8
  10. synapse/lib/queue.py +4 -1
  11. synapse/lib/rstorm.py +2 -2
  12. synapse/lib/schemas.py +13 -1
  13. synapse/lib/slabseqn.py +28 -0
  14. synapse/lib/storm.py +40 -2
  15. synapse/lib/stormhttp.py +7 -1
  16. synapse/lib/stormlib/imap.py +12 -4
  17. synapse/lib/stormlib/task.py +0 -1
  18. synapse/lib/stormtypes.py +19 -1
  19. synapse/lib/version.py +2 -2
  20. synapse/models/inet.py +29 -0
  21. synapse/models/media.py +4 -0
  22. synapse/models/proj.py +3 -0
  23. synapse/models/risk.py +9 -0
  24. synapse/models/syn.py +8 -0
  25. synapse/tests/test_common.py +4 -0
  26. synapse/tests/test_cortex.py +53 -2
  27. synapse/tests/test_lib_agenda.py +1 -1
  28. synapse/tests/test_lib_cell.py +1 -1
  29. synapse/tests/test_lib_certdir.py +1 -1
  30. synapse/tests/test_lib_httpapi.py +1 -1
  31. synapse/tests/test_lib_layer.py +1 -1
  32. synapse/tests/test_lib_multislabseqn.py +22 -0
  33. synapse/tests/test_lib_nexus.py +42 -1
  34. synapse/tests/test_lib_slabseqn.py +30 -1
  35. synapse/tests/test_lib_storm.py +156 -1
  36. synapse/tests/test_lib_stormhttp.py +16 -0
  37. synapse/tests/test_lib_stormlib_imap.py +14 -0
  38. synapse/tests/test_lib_stormlib_oauth.py +1 -1
  39. synapse/tests/test_lib_stormsvc.py +1 -1
  40. synapse/tests/test_lib_stormtypes.py +12 -0
  41. synapse/tests/test_lib_trigger.py +1 -1
  42. synapse/tests/test_model_inet.py +29 -0
  43. synapse/tests/test_model_media.py +4 -1
  44. synapse/tests/test_model_proj.py +3 -1
  45. synapse/tests/test_model_risk.py +12 -0
  46. synapse/tests/test_model_syn.py +54 -2
  47. synapse/tests/{test_tools_axon2axon.py → test_tools_axon_copy.py} +4 -4
  48. synapse/tests/{test_tools_pullfile.py → test_tools_axon_get.py} +4 -4
  49. synapse/tests/{test_tools_pushfile.py → test_tools_axon_put.py} +7 -7
  50. synapse/tests/{test_tools_csvtool.py → test_tools_cortex_csv.py} +12 -3
  51. synapse/tests/{test_tools_feed.py → test_tools_cortex_feed.py} +2 -2
  52. synapse/tests/{test_tools_apikey.py → test_tools_service_apikey.py} +1 -4
  53. synapse/tests/{test_tools_backup.py → test_tools_service_backup.py} +5 -5
  54. synapse/tests/{test_tools_demote.py → test_tools_service_demote.py} +1 -1
  55. synapse/tests/{test_tools_healthcheck.py → test_tools_service_healthcheck.py} +1 -1
  56. synapse/tests/{test_tools_livebackup.py → test_tools_service_livebackup.py} +1 -1
  57. synapse/tests/{test_tools_modrole.py → test_tools_service_modrole.py} +1 -1
  58. synapse/tests/{test_tools_moduser.py → test_tools_service_moduser.py} +1 -1
  59. synapse/tests/{test_tools_promote.py → test_tools_service_promote.py} +1 -1
  60. synapse/tests/{test_tools_reload.py → test_tools_service_reload.py} +1 -1
  61. synapse/tests/{test_tools_shutdown.py → test_tools_service_shutdown.py} +1 -1
  62. synapse/tests/{test_tools_snapshot.py → test_tools_service_snapshot.py} +1 -1
  63. synapse/tests/{test_tools_storm.py → test_tools_storm_cli.py} +1 -1
  64. synapse/tests/{test_tools_pkgs_gendocs.py → test_tools_storm_pkg_doc.py} +12 -3
  65. synapse/tests/{test_tools_genpkg.py → test_tools_storm_pkg_gen.py} +1 -1
  66. synapse/tests/{test_tools_autodoc.py → test_tools_utils_autodoc.py} +1 -1
  67. synapse/tests/test_tools_utils_changelog.py +454 -0
  68. synapse/tests/{test_tools_easycert.py → test_tools_utils_easycert.py} +48 -46
  69. synapse/tests/{test_tools_guid.py → test_tools_utils_guid.py} +3 -3
  70. synapse/tests/{test_tools_json2mpk.py → test_tools_utils_json2mpk.py} +3 -3
  71. synapse/tests/{test_tools_rstorm.py → test_tools_utils_rstorm.py} +6 -1
  72. synapse/tests/utils.py +3 -1
  73. synapse/tools/apikey.py +4 -83
  74. synapse/tools/autodoc.py +3 -1031
  75. synapse/tools/axon/copy.py +44 -0
  76. synapse/tools/axon/get.py +64 -0
  77. synapse/tools/axon/put.py +122 -0
  78. synapse/tools/axon2axon.py +3 -36
  79. synapse/tools/backup.py +6 -176
  80. synapse/tools/changelog.py +3 -1098
  81. synapse/tools/cortex/csv.py +236 -0
  82. synapse/tools/cortex/feed.py +151 -0
  83. synapse/tools/csvtool.py +3 -227
  84. synapse/tools/demote.py +4 -40
  85. synapse/tools/docker/validate.py +3 -3
  86. synapse/tools/easycert.py +4 -129
  87. synapse/tools/feed.py +3 -140
  88. synapse/tools/genpkg.py +3 -307
  89. synapse/tools/guid.py +7 -6
  90. synapse/tools/healthcheck.py +3 -101
  91. synapse/tools/json2mpk.py +6 -38
  92. synapse/tools/livebackup.py +4 -27
  93. synapse/tools/modrole.py +3 -108
  94. synapse/tools/moduser.py +3 -179
  95. synapse/tools/pkgs/gendocs.py +3 -164
  96. synapse/tools/promote.py +4 -41
  97. synapse/tools/pullfile.py +3 -56
  98. synapse/tools/pushfile.py +3 -114
  99. synapse/tools/reload.py +4 -61
  100. synapse/tools/rstorm.py +3 -26
  101. synapse/tools/service/__init__.py +0 -0
  102. synapse/tools/service/apikey.py +90 -0
  103. synapse/tools/service/backup.py +181 -0
  104. synapse/tools/service/demote.py +47 -0
  105. synapse/tools/service/healthcheck.py +109 -0
  106. synapse/tools/service/livebackup.py +34 -0
  107. synapse/tools/service/modrole.py +116 -0
  108. synapse/tools/service/moduser.py +184 -0
  109. synapse/tools/service/promote.py +48 -0
  110. synapse/tools/service/reload.py +68 -0
  111. synapse/tools/service/shutdown.py +51 -0
  112. synapse/tools/service/snapshot.py +64 -0
  113. synapse/tools/shutdown.py +5 -45
  114. synapse/tools/snapshot.py +4 -57
  115. synapse/tools/storm/__init__.py +0 -0
  116. synapse/tools/storm/__main__.py +5 -0
  117. synapse/tools/{storm.py → storm/_cli.py} +0 -3
  118. synapse/tools/storm/pkg/__init__.py +0 -0
  119. synapse/tools/{pkgs/pandoc_filter.py → storm/pkg/_pandoc_filter.py} +1 -1
  120. synapse/tools/storm/pkg/doc.py +176 -0
  121. synapse/tools/storm/pkg/gen.py +315 -0
  122. synapse/tools/utils/__init__.py +0 -0
  123. synapse/tools/utils/autodoc.py +1040 -0
  124. synapse/tools/utils/changelog.py +1124 -0
  125. synapse/tools/utils/easycert.py +136 -0
  126. synapse/tools/utils/guid.py +11 -0
  127. synapse/tools/utils/json2mpk.py +46 -0
  128. synapse/tools/utils/rstorm.py +35 -0
  129. {synapse-2.223.0.dist-info → synapse-2.225.0.dist-info}/METADATA +1 -1
  130. {synapse-2.223.0.dist-info → synapse-2.225.0.dist-info}/RECORD +134 -105
  131. synapse/tests/test_tools_changelog.py +0 -196
  132. /synapse/tests/{test_tools_axon.py → test_tools_axon_dump_load.py} +0 -0
  133. {synapse-2.223.0.dist-info → synapse-2.225.0.dist-info}/WHEEL +0 -0
  134. {synapse-2.223.0.dist-info → synapse-2.225.0.dist-info}/licenses/LICENSE +0 -0
  135. {synapse-2.223.0.dist-info → synapse-2.225.0.dist-info}/top_level.txt +0 -0
@@ -3,7 +3,7 @@ import hashlib
3
3
 
4
4
  import synapse.common as s_common
5
5
 
6
- import synapse.tools.pushfile as s_pushfile
6
+ import synapse.tools.axon.put as s_put
7
7
 
8
8
  import synapse.tests.utils as s_t_utils
9
9
 
@@ -43,7 +43,7 @@ class TestPushFile(s_t_utils.SynTest):
43
43
  '-t', 'foo.bar,baz.faz',
44
44
  visipath]
45
45
 
46
- self.eq(0, await s_pushfile.main(args, outp))
46
+ self.eq(0, await s_put.main(args, outp))
47
47
  self.true(outp.expect('Uploaded [visi.txt] to axon'))
48
48
  self.true(outp.expect('file: visi.txt (4) added to core'))
49
49
 
@@ -51,7 +51,7 @@ class TestPushFile(s_t_utils.SynTest):
51
51
  self.eq(b'visi', b''.join([buf async for buf in axonprox.get(visihash)]))
52
52
 
53
53
  outp = self.getTestOutp()
54
- self.eq(0, await s_pushfile.main(args, outp))
54
+ self.eq(0, await s_put.main(args, outp))
55
55
  self.true(outp.expect('Axon already had [visi.txt]'))
56
56
 
57
57
  self.eq(1, await coreprox.count(f'file:bytes={s_common.ehex(visihash)}'))
@@ -63,7 +63,7 @@ class TestPushFile(s_t_utils.SynTest):
63
63
  args = ['-a', axonurl, nullpath]
64
64
 
65
65
  outp = self.getTestOutp()
66
- self.eq(0, await s_pushfile.main(args, outp))
66
+ self.eq(0, await s_put.main(args, outp))
67
67
  self.true(outp.expect(f'filepath does not contain any files: {nullpath}'))
68
68
 
69
69
  self.len(1, await axonprox.wants([nullhash]))
@@ -77,7 +77,7 @@ class TestPushFile(s_t_utils.SynTest):
77
77
  '-t', 'empty',
78
78
  nullpath]
79
79
 
80
- self.eq(0, await s_pushfile.main(args, outp))
80
+ self.eq(0, await s_put.main(args, outp))
81
81
 
82
82
  self.len(0, await axonprox.wants([nullhash]))
83
83
  self.eq(b'', b''.join([buf async for buf in axonprox.get(nullhash)]))
@@ -100,7 +100,7 @@ class TestPushFile(s_t_utils.SynTest):
100
100
  '-t', 'beef',
101
101
  f'{dirn}/**']
102
102
 
103
- self.eq(0, await s_pushfile.main(args, outp))
103
+ self.eq(0, await s_put.main(args, outp))
104
104
  self.true(outp.expect('Uploaded [bar.txt] to axon'))
105
105
  self.true(outp.expect('file: bar.txt (3) added to core'))
106
106
 
@@ -119,7 +119,7 @@ class TestPushFile(s_t_utils.SynTest):
119
119
  '-r',
120
120
  f'{dirn}/**']
121
121
 
122
- self.eq(0, await s_pushfile.main(args, outp))
122
+ self.eq(0, await s_put.main(args, outp))
123
123
  self.true(outp.expect('Uploaded [foo.txt] to axon'))
124
124
  self.true(outp.expect('file: foo.txt (3) added to core'))
125
125
 
@@ -5,7 +5,7 @@ import synapse.common as s_common
5
5
 
6
6
  import synapse.tests.utils as s_t_utils
7
7
 
8
- import synapse.tools.csvtool as s_csvtool
8
+ import synapse.tools.cortex.csv as s_csvtool
9
9
 
10
10
  csvfile = b'''ipv4,fqdn,notes
11
11
  1.2.3.4,vertex.link,malware
@@ -76,7 +76,7 @@ class CsvToolTest(s_t_utils.SynTest):
76
76
  with mock.patch('synapse.telepath.Proxy._getSynVers', self._getOldSynVers):
77
77
  outp = self.getTestOutp()
78
78
  await s_csvtool.main(argv, outp=outp)
79
- outp.expect('Cortex version 0.0.0 is outside of the csvtool supported range')
79
+ outp.expect('Cortex version 0.0.0 is outside of the synapse.tools.cortex.csv supported range')
80
80
 
81
81
  view = await core.callStorm('$view = $lib.view.get() $fork=$view.fork() return ( $fork.iden )')
82
82
 
@@ -107,6 +107,15 @@ class CsvToolTest(s_t_utils.SynTest):
107
107
  self.eq(0, await s_csvtool.main(argv, outp=outp))
108
108
  outp.expect("('err', ('BadSyntax")
109
109
 
110
+ q = '| |' # raises a err
111
+ with s_common.genfile(stormpath) as fd:
112
+ fd.truncate()
113
+ fd.write(q.encode())
114
+ argv = ['--cortex', url, stormpath, csvpath]
115
+ outp = self.getTestOutp()
116
+ self.eq(0, await s_csvtool.main(argv, outp=outp))
117
+ outp.expect("('err', ('BadSyntax")
118
+
110
119
  async def test_csvtool_missingvals(self):
111
120
 
112
121
  async with self.getTestCore() as core:
@@ -225,7 +234,7 @@ class CsvToolTest(s_t_utils.SynTest):
225
234
  with mock.patch('synapse.telepath.Proxy._getSynVers', self._getOldSynVers):
226
235
  outp = self.getTestOutp()
227
236
  await s_csvtool.main(argv, outp=outp)
228
- outp.expect(f'Cortex version 0.0.0 is outside of the csvtool supported range')
237
+ outp.expect(f'Cortex version 0.0.0 is outside of the synapse.tools.cortex.csv supported range')
229
238
 
230
239
  view = await core.callStorm('$view = $lib.view.get() $fork=$view.fork() return ( $fork.iden )')
231
240
  await core.nodes('[test:int=50]', opts={'view': view})
@@ -8,7 +8,7 @@ import synapse.common as s_common
8
8
  import synapse.lib.json as s_json
9
9
  import synapse.lib.msgpack as s_msgpack
10
10
 
11
- import synapse.tools.feed as s_feed
11
+ import synapse.tools.cortex.feed as s_feed
12
12
 
13
13
  import synapse.tests.utils as s_t_utils
14
14
 
@@ -49,7 +49,7 @@ class FeedTest(s_t_utils.SynTest):
49
49
 
50
50
  with mock.patch('synapse.telepath.Proxy._getSynVers', self._getOldSynVers):
51
51
  await s_feed.main(argv, outp=outp)
52
- outp.expect(f'Cortex version 0.0.0 is outside of the feed tool supported range')
52
+ outp.expect(f'Cortex version 0.0.0 is outside of the synapse.tools.cortex.feed supported range')
53
53
 
54
54
  async def test_synnodes_offset(self):
55
55
 
@@ -1,13 +1,10 @@
1
- import datetime
2
-
3
- import synapse.exc as s_exc
4
1
  import synapse.common as s_common
5
2
 
6
3
  import synapse.lib.time as s_time
7
4
  import synapse.lib.output as s_output
8
5
 
9
6
  import synapse.tests.utils as s_test
10
- import synapse.tools.apikey as s_t_apikey
7
+ import synapse.tools.service.apikey as s_t_apikey
11
8
 
12
9
  async def getApiKeyByName(core, name):
13
10
  keys = {k.get('name'): k async for k in core.getApiKeys()}
@@ -5,7 +5,7 @@ import synapse.lib.lmdbslab as s_lmdbslab
5
5
 
6
6
  import synapse.tests.utils as s_t_utils
7
7
 
8
- import synapse.tools.backup as s_backup
8
+ import synapse.tools.service.backup as s_backup
9
9
 
10
10
  class BackupTest(s_t_utils.SynTest):
11
11
 
@@ -61,7 +61,7 @@ class BackupTest(s_t_utils.SynTest):
61
61
 
62
62
  argv = (core.dirn, dirn2)
63
63
 
64
- self.eq(0, s_backup.main(argv))
64
+ self.eq(0, await s_backup.main(argv))
65
65
 
66
66
  fpset = self.compare_dirs(core.dirn, dirn2, skipfns={'lock.mdb'}, skipdirs={'tmp'})
67
67
  self.false(os.path.exists(s_common.genpath(dirn2, 'tmp')))
@@ -71,7 +71,7 @@ class BackupTest(s_t_utils.SynTest):
71
71
 
72
72
  # Test corner case no-lmdbinfo
73
73
  with self.getTestDir() as dirn2:
74
- with self.getLoggerStream('synapse.tools.backup') as stream:
74
+ with self.getLoggerStream('synapse.tools.service.backup') as stream:
75
75
  s_backup.txnbackup({}, core.dirn, dirn2)
76
76
  stream.seek(0)
77
77
  self.isin('not copied', stream.read())
@@ -90,7 +90,7 @@ class BackupTest(s_t_utils.SynTest):
90
90
  '--skipdirs', '**/nodeedits.lmdb', './axon',
91
91
  )
92
92
 
93
- self.eq(0, s_backup.main(argv))
93
+ self.eq(0, await s_backup.main(argv))
94
94
 
95
95
  skipdirs = {'tmp', 'nodeedits.lmdb', 'axon'}
96
96
  fpset = self.compare_dirs(core.dirn, dirn2, skipfns={'lock.mdb'}, skipdirs=skipdirs)
@@ -110,7 +110,7 @@ class BackupTest(s_t_utils.SynTest):
110
110
  '--skipdirs', 'layers/*',
111
111
  )
112
112
 
113
- self.eq(0, s_backup.main(argv))
113
+ self.eq(0, await s_backup.main(argv))
114
114
 
115
115
  fpset = self.compare_dirs(core.dirn, dirn2, skipfns={'lock.mdb'}, skipdirs={'tmp', layriden})
116
116
 
@@ -5,7 +5,7 @@ import synapse.common as s_common
5
5
 
6
6
  import synapse.lib.cell as s_cell
7
7
 
8
- import synapse.tools.demote as s_tools_demote
8
+ import synapse.tools.service.demote as s_tools_demote
9
9
 
10
10
  import synapse.tests.utils as s_test
11
11
 
@@ -7,7 +7,7 @@ import synapse.lib.json as s_json
7
7
 
8
8
  import synapse.tests.utils as s_t_utils
9
9
 
10
- import synapse.tools.healthcheck as s_t_healthcheck
10
+ import synapse.tools.service.healthcheck as s_t_healthcheck
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
13
 
@@ -4,7 +4,7 @@ import synapse.common as s_common
4
4
 
5
5
  import synapse.lib.output as s_output
6
6
  import synapse.tests.utils as s_test
7
- import synapse.tools.livebackup as s_t_livebackup
7
+ import synapse.tools.service.livebackup as s_t_livebackup
8
8
 
9
9
  class LivebackupTest(s_test.SynTest):
10
10
 
@@ -1,6 +1,6 @@
1
1
  import synapse.lib.output as s_output
2
2
  import synapse.tests.utils as s_test
3
- import synapse.tools.modrole as s_t_modrole
3
+ import synapse.tools.service.modrole as s_t_modrole
4
4
 
5
5
  rolelist = s_test.deguidify('''
6
6
  Roles:
@@ -1,6 +1,6 @@
1
1
  import synapse.lib.output as s_output
2
2
  import synapse.tests.utils as s_test
3
- import synapse.tools.moduser as s_t_moduser
3
+ import synapse.tools.service.moduser as s_t_moduser
4
4
 
5
5
  userlist = '''
6
6
  Users:
@@ -3,7 +3,7 @@ import synapse.common as s_common
3
3
  import synapse.lib.base as s_base
4
4
  import synapse.lib.cell as s_cell
5
5
 
6
- import synapse.tools.promote as s_tools_promote
6
+ import synapse.tools.service.promote as s_tools_promote
7
7
 
8
8
  import synapse.tests.utils as s_t_utils
9
9
 
@@ -1,4 +1,4 @@
1
- import synapse.tools.reload as s_t_reload
1
+ import synapse.tools.service.reload as s_t_reload
2
2
 
3
3
  import synapse.tests.utils as s_test
4
4
 
@@ -4,7 +4,7 @@ import synapse.lib.cell as s_cell
4
4
 
5
5
 
6
6
  import synapse.tests.utils as s_test
7
- import synapse.tools.shutdown as s_t_shutdown
7
+ import synapse.tools.service.shutdown as s_t_shutdown
8
8
 
9
9
  class ShutdownToolTest(s_test.SynTest):
10
10
 
@@ -1,7 +1,7 @@
1
1
  from unittest import mock
2
2
 
3
3
  import synapse.lib.output as s_output
4
- import synapse.tools.snapshot as s_tools_snapshot
4
+ import synapse.tools.service.snapshot as s_tools_snapshot
5
5
 
6
6
  import synapse.tests.utils as s_t_utils
7
7
 
@@ -16,7 +16,7 @@ import synapse.telepath as s_telepath
16
16
  import synapse.lib.coro as s_coro
17
17
  import synapse.lib.output as s_output
18
18
  import synapse.lib.msgpack as s_msgpack
19
- import synapse.tools.storm as s_t_storm
19
+ import synapse.tools.storm._cli as s_t_storm
20
20
 
21
21
  def run_cli_till_print(url, evt1):
22
22
  '''
@@ -2,14 +2,15 @@ import io
2
2
  import os
3
3
  import sys
4
4
  import json
5
+ import unittest.mock as mock
5
6
 
6
7
  import synapse.exc as s_exc
7
8
  import synapse.common as s_common
8
9
 
9
10
  import synapse.tests.utils as s_t_utils
10
11
 
11
- import synapse.tools.pkgs.gendocs as s_t_gendocs
12
- import synapse.tools.pkgs.pandoc_filter as s_t_pandoc_filter
12
+ import synapse.tools.storm.pkg.doc as s_t_gendocs
13
+ import synapse.tools.storm.pkg._pandoc_filter as s_t_pandoc_filter
13
14
 
14
15
  class TestPkgBuildDocs(s_t_utils.SynTest):
15
16
 
@@ -18,7 +19,7 @@ class TestPkgBuildDocs(s_t_utils.SynTest):
18
19
  self.skip('pandoc is not available')
19
20
  super().setUp()
20
21
 
21
- async def test_pkg_builddocs(self):
22
+ async def test_storm_pkg_doc_base(self):
22
23
 
23
24
  with self.getTestDir(mirror='testpkg_build_docs') as dirn:
24
25
  testpkgfp = os.path.join(dirn, 'testpkg.yaml')
@@ -98,3 +99,11 @@ class TestPkgBuildDocs(s_t_utils.SynTest):
98
99
  outp.expect('ERR: Error running filter')
99
100
  finally:
100
101
  s_t_gendocs.PANDOC_FILTER = oldv
102
+
103
+ # Pandoc is missing
104
+ def nopandoc(*args, **kwargs):
105
+ return 1
106
+
107
+ with mock.patch('os.system', new=nopandoc):
108
+ argv = [testpkgfp, ]
109
+ self.eq(1, await s_t_gendocs.main(argv))
@@ -9,7 +9,7 @@ import synapse.lib.version as s_version
9
9
  import synapse.tests.utils as s_test
10
10
  import synapse.tests.files as s_files
11
11
 
12
- import synapse.tools.genpkg as s_genpkg
12
+ import synapse.tools.storm.pkg.gen as s_genpkg
13
13
 
14
14
  dirname = os.path.dirname(__file__)
15
15
 
@@ -5,7 +5,7 @@ import synapse.tests.utils as s_t_utils
5
5
 
6
6
  import synapse.lib.autodoc as s_l_autodoc
7
7
 
8
- import synapse.tools.autodoc as s_autodoc
8
+ import synapse.tools.utils.autodoc as s_autodoc
9
9
 
10
10
  class TestAutoDoc(s_t_utils.SynTest):
11
11