tensorbored 2.21.0rc1769983804__py3-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.
Files changed (271) hide show
  1. tensorbored/__init__.py +112 -0
  2. tensorbored/_vendor/__init__.py +0 -0
  3. tensorbored/_vendor/bleach/__init__.py +125 -0
  4. tensorbored/_vendor/bleach/_vendor/__init__.py +0 -0
  5. tensorbored/_vendor/bleach/_vendor/html5lib/__init__.py +35 -0
  6. tensorbored/_vendor/bleach/_vendor/html5lib/_ihatexml.py +289 -0
  7. tensorbored/_vendor/bleach/_vendor/html5lib/_inputstream.py +918 -0
  8. tensorbored/_vendor/bleach/_vendor/html5lib/_tokenizer.py +1735 -0
  9. tensorbored/_vendor/bleach/_vendor/html5lib/_trie/__init__.py +5 -0
  10. tensorbored/_vendor/bleach/_vendor/html5lib/_trie/_base.py +40 -0
  11. tensorbored/_vendor/bleach/_vendor/html5lib/_trie/py.py +67 -0
  12. tensorbored/_vendor/bleach/_vendor/html5lib/_utils.py +159 -0
  13. tensorbored/_vendor/bleach/_vendor/html5lib/constants.py +2946 -0
  14. tensorbored/_vendor/bleach/_vendor/html5lib/filters/__init__.py +0 -0
  15. tensorbored/_vendor/bleach/_vendor/html5lib/filters/alphabeticalattributes.py +29 -0
  16. tensorbored/_vendor/bleach/_vendor/html5lib/filters/base.py +12 -0
  17. tensorbored/_vendor/bleach/_vendor/html5lib/filters/inject_meta_charset.py +73 -0
  18. tensorbored/_vendor/bleach/_vendor/html5lib/filters/lint.py +93 -0
  19. tensorbored/_vendor/bleach/_vendor/html5lib/filters/optionaltags.py +207 -0
  20. tensorbored/_vendor/bleach/_vendor/html5lib/filters/sanitizer.py +916 -0
  21. tensorbored/_vendor/bleach/_vendor/html5lib/filters/whitespace.py +38 -0
  22. tensorbored/_vendor/bleach/_vendor/html5lib/html5parser.py +2795 -0
  23. tensorbored/_vendor/bleach/_vendor/html5lib/serializer.py +409 -0
  24. tensorbored/_vendor/bleach/_vendor/html5lib/treeadapters/__init__.py +30 -0
  25. tensorbored/_vendor/bleach/_vendor/html5lib/treeadapters/genshi.py +54 -0
  26. tensorbored/_vendor/bleach/_vendor/html5lib/treeadapters/sax.py +50 -0
  27. tensorbored/_vendor/bleach/_vendor/html5lib/treebuilders/__init__.py +88 -0
  28. tensorbored/_vendor/bleach/_vendor/html5lib/treebuilders/base.py +417 -0
  29. tensorbored/_vendor/bleach/_vendor/html5lib/treebuilders/dom.py +239 -0
  30. tensorbored/_vendor/bleach/_vendor/html5lib/treebuilders/etree.py +343 -0
  31. tensorbored/_vendor/bleach/_vendor/html5lib/treebuilders/etree_lxml.py +392 -0
  32. tensorbored/_vendor/bleach/_vendor/html5lib/treewalkers/__init__.py +154 -0
  33. tensorbored/_vendor/bleach/_vendor/html5lib/treewalkers/base.py +252 -0
  34. tensorbored/_vendor/bleach/_vendor/html5lib/treewalkers/dom.py +43 -0
  35. tensorbored/_vendor/bleach/_vendor/html5lib/treewalkers/etree.py +131 -0
  36. tensorbored/_vendor/bleach/_vendor/html5lib/treewalkers/etree_lxml.py +215 -0
  37. tensorbored/_vendor/bleach/_vendor/html5lib/treewalkers/genshi.py +69 -0
  38. tensorbored/_vendor/bleach/_vendor/parse.py +1078 -0
  39. tensorbored/_vendor/bleach/callbacks.py +32 -0
  40. tensorbored/_vendor/bleach/html5lib_shim.py +757 -0
  41. tensorbored/_vendor/bleach/linkifier.py +633 -0
  42. tensorbored/_vendor/bleach/parse_shim.py +1 -0
  43. tensorbored/_vendor/bleach/sanitizer.py +638 -0
  44. tensorbored/_vendor/bleach/six_shim.py +19 -0
  45. tensorbored/_vendor/webencodings/__init__.py +342 -0
  46. tensorbored/_vendor/webencodings/labels.py +231 -0
  47. tensorbored/_vendor/webencodings/mklabels.py +59 -0
  48. tensorbored/_vendor/webencodings/x_user_defined.py +325 -0
  49. tensorbored/assets.py +36 -0
  50. tensorbored/auth.py +102 -0
  51. tensorbored/backend/__init__.py +0 -0
  52. tensorbored/backend/application.py +604 -0
  53. tensorbored/backend/auth_context_middleware.py +38 -0
  54. tensorbored/backend/client_feature_flags.py +113 -0
  55. tensorbored/backend/empty_path_redirect.py +46 -0
  56. tensorbored/backend/event_processing/__init__.py +0 -0
  57. tensorbored/backend/event_processing/data_ingester.py +276 -0
  58. tensorbored/backend/event_processing/data_provider.py +535 -0
  59. tensorbored/backend/event_processing/directory_loader.py +142 -0
  60. tensorbored/backend/event_processing/directory_watcher.py +272 -0
  61. tensorbored/backend/event_processing/event_accumulator.py +950 -0
  62. tensorbored/backend/event_processing/event_file_inspector.py +463 -0
  63. tensorbored/backend/event_processing/event_file_loader.py +292 -0
  64. tensorbored/backend/event_processing/event_multiplexer.py +521 -0
  65. tensorbored/backend/event_processing/event_util.py +68 -0
  66. tensorbored/backend/event_processing/io_wrapper.py +223 -0
  67. tensorbored/backend/event_processing/plugin_asset_util.py +104 -0
  68. tensorbored/backend/event_processing/plugin_event_accumulator.py +721 -0
  69. tensorbored/backend/event_processing/plugin_event_multiplexer.py +522 -0
  70. tensorbored/backend/event_processing/reservoir.py +266 -0
  71. tensorbored/backend/event_processing/tag_types.py +29 -0
  72. tensorbored/backend/experiment_id.py +71 -0
  73. tensorbored/backend/experimental_plugin.py +51 -0
  74. tensorbored/backend/http_util.py +263 -0
  75. tensorbored/backend/json_util.py +70 -0
  76. tensorbored/backend/path_prefix.py +67 -0
  77. tensorbored/backend/process_graph.py +74 -0
  78. tensorbored/backend/security_validator.py +202 -0
  79. tensorbored/compat/__init__.py +69 -0
  80. tensorbored/compat/proto/__init__.py +0 -0
  81. tensorbored/compat/proto/allocation_description_pb2.py +35 -0
  82. tensorbored/compat/proto/api_def_pb2.py +82 -0
  83. tensorbored/compat/proto/attr_value_pb2.py +80 -0
  84. tensorbored/compat/proto/cluster_pb2.py +58 -0
  85. tensorbored/compat/proto/config_pb2.py +271 -0
  86. tensorbored/compat/proto/coordination_config_pb2.py +45 -0
  87. tensorbored/compat/proto/cost_graph_pb2.py +87 -0
  88. tensorbored/compat/proto/cpp_shape_inference_pb2.py +70 -0
  89. tensorbored/compat/proto/debug_pb2.py +65 -0
  90. tensorbored/compat/proto/event_pb2.py +149 -0
  91. tensorbored/compat/proto/full_type_pb2.py +74 -0
  92. tensorbored/compat/proto/function_pb2.py +157 -0
  93. tensorbored/compat/proto/graph_debug_info_pb2.py +111 -0
  94. tensorbored/compat/proto/graph_pb2.py +41 -0
  95. tensorbored/compat/proto/histogram_pb2.py +39 -0
  96. tensorbored/compat/proto/meta_graph_pb2.py +254 -0
  97. tensorbored/compat/proto/node_def_pb2.py +61 -0
  98. tensorbored/compat/proto/op_def_pb2.py +81 -0
  99. tensorbored/compat/proto/resource_handle_pb2.py +48 -0
  100. tensorbored/compat/proto/rewriter_config_pb2.py +93 -0
  101. tensorbored/compat/proto/rpc_options_pb2.py +35 -0
  102. tensorbored/compat/proto/saved_object_graph_pb2.py +193 -0
  103. tensorbored/compat/proto/saver_pb2.py +38 -0
  104. tensorbored/compat/proto/step_stats_pb2.py +116 -0
  105. tensorbored/compat/proto/struct_pb2.py +144 -0
  106. tensorbored/compat/proto/summary_pb2.py +111 -0
  107. tensorbored/compat/proto/tensor_description_pb2.py +38 -0
  108. tensorbored/compat/proto/tensor_pb2.py +68 -0
  109. tensorbored/compat/proto/tensor_shape_pb2.py +46 -0
  110. tensorbored/compat/proto/tfprof_log_pb2.py +307 -0
  111. tensorbored/compat/proto/trackable_object_graph_pb2.py +90 -0
  112. tensorbored/compat/proto/types_pb2.py +105 -0
  113. tensorbored/compat/proto/variable_pb2.py +62 -0
  114. tensorbored/compat/proto/verifier_config_pb2.py +38 -0
  115. tensorbored/compat/proto/versions_pb2.py +35 -0
  116. tensorbored/compat/tensorflow_stub/__init__.py +38 -0
  117. tensorbored/compat/tensorflow_stub/app.py +124 -0
  118. tensorbored/compat/tensorflow_stub/compat/__init__.py +131 -0
  119. tensorbored/compat/tensorflow_stub/compat/v1/__init__.py +20 -0
  120. tensorbored/compat/tensorflow_stub/dtypes.py +692 -0
  121. tensorbored/compat/tensorflow_stub/error_codes.py +169 -0
  122. tensorbored/compat/tensorflow_stub/errors.py +507 -0
  123. tensorbored/compat/tensorflow_stub/flags.py +124 -0
  124. tensorbored/compat/tensorflow_stub/io/__init__.py +17 -0
  125. tensorbored/compat/tensorflow_stub/io/gfile.py +1011 -0
  126. tensorbored/compat/tensorflow_stub/pywrap_tensorflow.py +285 -0
  127. tensorbored/compat/tensorflow_stub/tensor_shape.py +1035 -0
  128. tensorbored/context.py +129 -0
  129. tensorbored/data/__init__.py +0 -0
  130. tensorbored/data/grpc_provider.py +365 -0
  131. tensorbored/data/ingester.py +46 -0
  132. tensorbored/data/proto/__init__.py +0 -0
  133. tensorbored/data/proto/data_provider_pb2.py +517 -0
  134. tensorbored/data/proto/data_provider_pb2_grpc.py +374 -0
  135. tensorbored/data/provider.py +1365 -0
  136. tensorbored/data/server_ingester.py +301 -0
  137. tensorbored/data_compat.py +159 -0
  138. tensorbored/dataclass_compat.py +224 -0
  139. tensorbored/default.py +124 -0
  140. tensorbored/errors.py +130 -0
  141. tensorbored/lazy.py +99 -0
  142. tensorbored/main.py +48 -0
  143. tensorbored/main_lib.py +62 -0
  144. tensorbored/manager.py +487 -0
  145. tensorbored/notebook.py +441 -0
  146. tensorbored/plugin_util.py +266 -0
  147. tensorbored/plugins/__init__.py +0 -0
  148. tensorbored/plugins/audio/__init__.py +0 -0
  149. tensorbored/plugins/audio/audio_plugin.py +229 -0
  150. tensorbored/plugins/audio/metadata.py +69 -0
  151. tensorbored/plugins/audio/plugin_data_pb2.py +37 -0
  152. tensorbored/plugins/audio/summary.py +230 -0
  153. tensorbored/plugins/audio/summary_v2.py +124 -0
  154. tensorbored/plugins/base_plugin.py +367 -0
  155. tensorbored/plugins/core/__init__.py +0 -0
  156. tensorbored/plugins/core/core_plugin.py +981 -0
  157. tensorbored/plugins/custom_scalar/__init__.py +0 -0
  158. tensorbored/plugins/custom_scalar/custom_scalars_plugin.py +320 -0
  159. tensorbored/plugins/custom_scalar/layout_pb2.py +85 -0
  160. tensorbored/plugins/custom_scalar/metadata.py +35 -0
  161. tensorbored/plugins/custom_scalar/summary.py +79 -0
  162. tensorbored/plugins/debugger_v2/__init__.py +0 -0
  163. tensorbored/plugins/debugger_v2/debug_data_multiplexer.py +631 -0
  164. tensorbored/plugins/debugger_v2/debug_data_provider.py +634 -0
  165. tensorbored/plugins/debugger_v2/debugger_v2_plugin.py +504 -0
  166. tensorbored/plugins/distribution/__init__.py +0 -0
  167. tensorbored/plugins/distribution/compressor.py +158 -0
  168. tensorbored/plugins/distribution/distributions_plugin.py +116 -0
  169. tensorbored/plugins/distribution/metadata.py +19 -0
  170. tensorbored/plugins/graph/__init__.py +0 -0
  171. tensorbored/plugins/graph/graph_util.py +129 -0
  172. tensorbored/plugins/graph/graphs_plugin.py +336 -0
  173. tensorbored/plugins/graph/keras_util.py +328 -0
  174. tensorbored/plugins/graph/metadata.py +42 -0
  175. tensorbored/plugins/histogram/__init__.py +0 -0
  176. tensorbored/plugins/histogram/histograms_plugin.py +144 -0
  177. tensorbored/plugins/histogram/metadata.py +63 -0
  178. tensorbored/plugins/histogram/plugin_data_pb2.py +34 -0
  179. tensorbored/plugins/histogram/summary.py +234 -0
  180. tensorbored/plugins/histogram/summary_v2.py +292 -0
  181. tensorbored/plugins/hparams/__init__.py +14 -0
  182. tensorbored/plugins/hparams/_keras.py +93 -0
  183. tensorbored/plugins/hparams/api.py +130 -0
  184. tensorbored/plugins/hparams/api_pb2.py +208 -0
  185. tensorbored/plugins/hparams/backend_context.py +606 -0
  186. tensorbored/plugins/hparams/download_data.py +158 -0
  187. tensorbored/plugins/hparams/error.py +26 -0
  188. tensorbored/plugins/hparams/get_experiment.py +71 -0
  189. tensorbored/plugins/hparams/hparams_plugin.py +206 -0
  190. tensorbored/plugins/hparams/hparams_util_pb2.py +69 -0
  191. tensorbored/plugins/hparams/json_format_compat.py +38 -0
  192. tensorbored/plugins/hparams/list_metric_evals.py +57 -0
  193. tensorbored/plugins/hparams/list_session_groups.py +1040 -0
  194. tensorbored/plugins/hparams/metadata.py +125 -0
  195. tensorbored/plugins/hparams/metrics.py +41 -0
  196. tensorbored/plugins/hparams/plugin_data_pb2.py +69 -0
  197. tensorbored/plugins/hparams/summary.py +205 -0
  198. tensorbored/plugins/hparams/summary_v2.py +597 -0
  199. tensorbored/plugins/image/__init__.py +0 -0
  200. tensorbored/plugins/image/images_plugin.py +232 -0
  201. tensorbored/plugins/image/metadata.py +65 -0
  202. tensorbored/plugins/image/plugin_data_pb2.py +34 -0
  203. tensorbored/plugins/image/summary.py +159 -0
  204. tensorbored/plugins/image/summary_v2.py +130 -0
  205. tensorbored/plugins/mesh/__init__.py +14 -0
  206. tensorbored/plugins/mesh/mesh_plugin.py +292 -0
  207. tensorbored/plugins/mesh/metadata.py +152 -0
  208. tensorbored/plugins/mesh/plugin_data_pb2.py +37 -0
  209. tensorbored/plugins/mesh/summary.py +251 -0
  210. tensorbored/plugins/mesh/summary_v2.py +214 -0
  211. tensorbored/plugins/metrics/__init__.py +0 -0
  212. tensorbored/plugins/metrics/metadata.py +17 -0
  213. tensorbored/plugins/metrics/metrics_plugin.py +623 -0
  214. tensorbored/plugins/pr_curve/__init__.py +0 -0
  215. tensorbored/plugins/pr_curve/metadata.py +75 -0
  216. tensorbored/plugins/pr_curve/plugin_data_pb2.py +34 -0
  217. tensorbored/plugins/pr_curve/pr_curves_plugin.py +241 -0
  218. tensorbored/plugins/pr_curve/summary.py +574 -0
  219. tensorbored/plugins/profile_redirect/__init__.py +0 -0
  220. tensorbored/plugins/profile_redirect/profile_redirect_plugin.py +49 -0
  221. tensorbored/plugins/projector/__init__.py +67 -0
  222. tensorbored/plugins/projector/metadata.py +26 -0
  223. tensorbored/plugins/projector/projector_config_pb2.py +54 -0
  224. tensorbored/plugins/projector/projector_plugin.py +795 -0
  225. tensorbored/plugins/projector/tf_projector_plugin/index.js +32 -0
  226. tensorbored/plugins/projector/tf_projector_plugin/projector_binary.html +524 -0
  227. tensorbored/plugins/projector/tf_projector_plugin/projector_binary.js +15536 -0
  228. tensorbored/plugins/scalar/__init__.py +0 -0
  229. tensorbored/plugins/scalar/metadata.py +60 -0
  230. tensorbored/plugins/scalar/plugin_data_pb2.py +34 -0
  231. tensorbored/plugins/scalar/scalars_plugin.py +181 -0
  232. tensorbored/plugins/scalar/summary.py +109 -0
  233. tensorbored/plugins/scalar/summary_v2.py +124 -0
  234. tensorbored/plugins/text/__init__.py +0 -0
  235. tensorbored/plugins/text/metadata.py +62 -0
  236. tensorbored/plugins/text/plugin_data_pb2.py +34 -0
  237. tensorbored/plugins/text/summary.py +114 -0
  238. tensorbored/plugins/text/summary_v2.py +124 -0
  239. tensorbored/plugins/text/text_plugin.py +288 -0
  240. tensorbored/plugins/wit_redirect/__init__.py +0 -0
  241. tensorbored/plugins/wit_redirect/wit_redirect_plugin.py +49 -0
  242. tensorbored/program.py +910 -0
  243. tensorbored/summary/__init__.py +35 -0
  244. tensorbored/summary/_output.py +124 -0
  245. tensorbored/summary/_tf/__init__.py +14 -0
  246. tensorbored/summary/_tf/summary/__init__.py +178 -0
  247. tensorbored/summary/_writer.py +105 -0
  248. tensorbored/summary/v1.py +51 -0
  249. tensorbored/summary/v2.py +25 -0
  250. tensorbored/summary/writer/__init__.py +13 -0
  251. tensorbored/summary/writer/event_file_writer.py +291 -0
  252. tensorbored/summary/writer/record_writer.py +50 -0
  253. tensorbored/util/__init__.py +0 -0
  254. tensorbored/util/encoder.py +116 -0
  255. tensorbored/util/grpc_util.py +311 -0
  256. tensorbored/util/img_mime_type_detector.py +40 -0
  257. tensorbored/util/io_util.py +20 -0
  258. tensorbored/util/lazy_tensor_creator.py +110 -0
  259. tensorbored/util/op_evaluator.py +104 -0
  260. tensorbored/util/platform_util.py +20 -0
  261. tensorbored/util/tb_logging.py +24 -0
  262. tensorbored/util/tensor_util.py +617 -0
  263. tensorbored/util/timing.py +122 -0
  264. tensorbored/version.py +21 -0
  265. tensorbored/webfiles.zip +0 -0
  266. tensorbored-2.21.0rc1769983804.dist-info/METADATA +49 -0
  267. tensorbored-2.21.0rc1769983804.dist-info/RECORD +271 -0
  268. tensorbored-2.21.0rc1769983804.dist-info/WHEEL +5 -0
  269. tensorbored-2.21.0rc1769983804.dist-info/entry_points.txt +6 -0
  270. tensorbored-2.21.0rc1769983804.dist-info/licenses/LICENSE +739 -0
  271. tensorbored-2.21.0rc1769983804.dist-info/top_level.txt +1 -0
@@ -0,0 +1,325 @@
1
+ # coding: utf-8
2
+ """
3
+
4
+ webencodings.x_user_defined
5
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
+
7
+ An implementation of the x-user-defined encoding.
8
+
9
+ :copyright: Copyright 2012 by Simon Sapin
10
+ :license: BSD, see LICENSE for details.
11
+
12
+ """
13
+
14
+ from __future__ import unicode_literals
15
+
16
+ import codecs
17
+
18
+
19
+ ### Codec APIs
20
+
21
+ class Codec(codecs.Codec):
22
+
23
+ def encode(self, input, errors='strict'):
24
+ return codecs.charmap_encode(input, errors, encoding_table)
25
+
26
+ def decode(self, input, errors='strict'):
27
+ return codecs.charmap_decode(input, errors, decoding_table)
28
+
29
+
30
+ class IncrementalEncoder(codecs.IncrementalEncoder):
31
+ def encode(self, input, final=False):
32
+ return codecs.charmap_encode(input, self.errors, encoding_table)[0]
33
+
34
+
35
+ class IncrementalDecoder(codecs.IncrementalDecoder):
36
+ def decode(self, input, final=False):
37
+ return codecs.charmap_decode(input, self.errors, decoding_table)[0]
38
+
39
+
40
+ class StreamWriter(Codec, codecs.StreamWriter):
41
+ pass
42
+
43
+
44
+ class StreamReader(Codec, codecs.StreamReader):
45
+ pass
46
+
47
+
48
+ ### encodings module API
49
+
50
+ codec_info = codecs.CodecInfo(
51
+ name='x-user-defined',
52
+ encode=Codec().encode,
53
+ decode=Codec().decode,
54
+ incrementalencoder=IncrementalEncoder,
55
+ incrementaldecoder=IncrementalDecoder,
56
+ streamreader=StreamReader,
57
+ streamwriter=StreamWriter,
58
+ )
59
+
60
+
61
+ ### Decoding Table
62
+
63
+ # Python 3:
64
+ # for c in range(256): print(' %r' % chr(c if c < 128 else c + 0xF700))
65
+ decoding_table = (
66
+ '\x00'
67
+ '\x01'
68
+ '\x02'
69
+ '\x03'
70
+ '\x04'
71
+ '\x05'
72
+ '\x06'
73
+ '\x07'
74
+ '\x08'
75
+ '\t'
76
+ '\n'
77
+ '\x0b'
78
+ '\x0c'
79
+ '\r'
80
+ '\x0e'
81
+ '\x0f'
82
+ '\x10'
83
+ '\x11'
84
+ '\x12'
85
+ '\x13'
86
+ '\x14'
87
+ '\x15'
88
+ '\x16'
89
+ '\x17'
90
+ '\x18'
91
+ '\x19'
92
+ '\x1a'
93
+ '\x1b'
94
+ '\x1c'
95
+ '\x1d'
96
+ '\x1e'
97
+ '\x1f'
98
+ ' '
99
+ '!'
100
+ '"'
101
+ '#'
102
+ '$'
103
+ '%'
104
+ '&'
105
+ "'"
106
+ '('
107
+ ')'
108
+ '*'
109
+ '+'
110
+ ','
111
+ '-'
112
+ '.'
113
+ '/'
114
+ '0'
115
+ '1'
116
+ '2'
117
+ '3'
118
+ '4'
119
+ '5'
120
+ '6'
121
+ '7'
122
+ '8'
123
+ '9'
124
+ ':'
125
+ ';'
126
+ '<'
127
+ '='
128
+ '>'
129
+ '?'
130
+ '@'
131
+ 'A'
132
+ 'B'
133
+ 'C'
134
+ 'D'
135
+ 'E'
136
+ 'F'
137
+ 'G'
138
+ 'H'
139
+ 'I'
140
+ 'J'
141
+ 'K'
142
+ 'L'
143
+ 'M'
144
+ 'N'
145
+ 'O'
146
+ 'P'
147
+ 'Q'
148
+ 'R'
149
+ 'S'
150
+ 'T'
151
+ 'U'
152
+ 'V'
153
+ 'W'
154
+ 'X'
155
+ 'Y'
156
+ 'Z'
157
+ '['
158
+ '\\'
159
+ ']'
160
+ '^'
161
+ '_'
162
+ '`'
163
+ 'a'
164
+ 'b'
165
+ 'c'
166
+ 'd'
167
+ 'e'
168
+ 'f'
169
+ 'g'
170
+ 'h'
171
+ 'i'
172
+ 'j'
173
+ 'k'
174
+ 'l'
175
+ 'm'
176
+ 'n'
177
+ 'o'
178
+ 'p'
179
+ 'q'
180
+ 'r'
181
+ 's'
182
+ 't'
183
+ 'u'
184
+ 'v'
185
+ 'w'
186
+ 'x'
187
+ 'y'
188
+ 'z'
189
+ '{'
190
+ '|'
191
+ '}'
192
+ '~'
193
+ '\x7f'
194
+ '\uf780'
195
+ '\uf781'
196
+ '\uf782'
197
+ '\uf783'
198
+ '\uf784'
199
+ '\uf785'
200
+ '\uf786'
201
+ '\uf787'
202
+ '\uf788'
203
+ '\uf789'
204
+ '\uf78a'
205
+ '\uf78b'
206
+ '\uf78c'
207
+ '\uf78d'
208
+ '\uf78e'
209
+ '\uf78f'
210
+ '\uf790'
211
+ '\uf791'
212
+ '\uf792'
213
+ '\uf793'
214
+ '\uf794'
215
+ '\uf795'
216
+ '\uf796'
217
+ '\uf797'
218
+ '\uf798'
219
+ '\uf799'
220
+ '\uf79a'
221
+ '\uf79b'
222
+ '\uf79c'
223
+ '\uf79d'
224
+ '\uf79e'
225
+ '\uf79f'
226
+ '\uf7a0'
227
+ '\uf7a1'
228
+ '\uf7a2'
229
+ '\uf7a3'
230
+ '\uf7a4'
231
+ '\uf7a5'
232
+ '\uf7a6'
233
+ '\uf7a7'
234
+ '\uf7a8'
235
+ '\uf7a9'
236
+ '\uf7aa'
237
+ '\uf7ab'
238
+ '\uf7ac'
239
+ '\uf7ad'
240
+ '\uf7ae'
241
+ '\uf7af'
242
+ '\uf7b0'
243
+ '\uf7b1'
244
+ '\uf7b2'
245
+ '\uf7b3'
246
+ '\uf7b4'
247
+ '\uf7b5'
248
+ '\uf7b6'
249
+ '\uf7b7'
250
+ '\uf7b8'
251
+ '\uf7b9'
252
+ '\uf7ba'
253
+ '\uf7bb'
254
+ '\uf7bc'
255
+ '\uf7bd'
256
+ '\uf7be'
257
+ '\uf7bf'
258
+ '\uf7c0'
259
+ '\uf7c1'
260
+ '\uf7c2'
261
+ '\uf7c3'
262
+ '\uf7c4'
263
+ '\uf7c5'
264
+ '\uf7c6'
265
+ '\uf7c7'
266
+ '\uf7c8'
267
+ '\uf7c9'
268
+ '\uf7ca'
269
+ '\uf7cb'
270
+ '\uf7cc'
271
+ '\uf7cd'
272
+ '\uf7ce'
273
+ '\uf7cf'
274
+ '\uf7d0'
275
+ '\uf7d1'
276
+ '\uf7d2'
277
+ '\uf7d3'
278
+ '\uf7d4'
279
+ '\uf7d5'
280
+ '\uf7d6'
281
+ '\uf7d7'
282
+ '\uf7d8'
283
+ '\uf7d9'
284
+ '\uf7da'
285
+ '\uf7db'
286
+ '\uf7dc'
287
+ '\uf7dd'
288
+ '\uf7de'
289
+ '\uf7df'
290
+ '\uf7e0'
291
+ '\uf7e1'
292
+ '\uf7e2'
293
+ '\uf7e3'
294
+ '\uf7e4'
295
+ '\uf7e5'
296
+ '\uf7e6'
297
+ '\uf7e7'
298
+ '\uf7e8'
299
+ '\uf7e9'
300
+ '\uf7ea'
301
+ '\uf7eb'
302
+ '\uf7ec'
303
+ '\uf7ed'
304
+ '\uf7ee'
305
+ '\uf7ef'
306
+ '\uf7f0'
307
+ '\uf7f1'
308
+ '\uf7f2'
309
+ '\uf7f3'
310
+ '\uf7f4'
311
+ '\uf7f5'
312
+ '\uf7f6'
313
+ '\uf7f7'
314
+ '\uf7f8'
315
+ '\uf7f9'
316
+ '\uf7fa'
317
+ '\uf7fb'
318
+ '\uf7fc'
319
+ '\uf7fd'
320
+ '\uf7fe'
321
+ '\uf7ff'
322
+ )
323
+
324
+ ### Encoding table
325
+ encoding_table = codecs.charmap_build(decoding_table)
tensorbored/assets.py ADDED
@@ -0,0 +1,36 @@
1
+ # Copyright 2021 The TensorFlow Authors. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ """Bindings for TensorBoard frontend assets."""
16
+
17
+ import os
18
+
19
+ from tensorbored.util import tb_logging
20
+
21
+ logger = tb_logging.get_logger()
22
+
23
+
24
+ def get_default_assets_zip_provider():
25
+ """Try to get a function to provide frontend assets.
26
+
27
+ Returns:
28
+ Either (a) a callable that takes no arguments and returns an open
29
+ file handle to a Zip archive of frontend assets, or (b) `None`, if
30
+ the frontend assets cannot be found.
31
+ """
32
+ path = os.path.join(os.path.dirname(__file__), "webfiles.zip")
33
+ if not os.path.exists(path):
34
+ logger.warning("webfiles.zip static assets not found: %s", path)
35
+ return None
36
+ return lambda: open(path, "rb")
tensorbored/auth.py ADDED
@@ -0,0 +1,102 @@
1
+ # Copyright 2020 The TensorFlow Authors. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ """Experimental framework for authentication in TensorBoard."""
16
+
17
+ import abc
18
+
19
+
20
+ class AuthProvider(metaclass=abc.ABCMeta):
21
+ """Authentication provider for a specific kind of credential."""
22
+
23
+ def authenticate(self, environ):
24
+ """Produce an opaque auth token from a WSGI request environment.
25
+
26
+ Args:
27
+ environ: A WSGI environment `dict`; see PEP 3333.
28
+
29
+ Returns:
30
+ A Python object representing an auth token. The representation
31
+ and semantics depend on the particular `AuthProvider`
32
+ implementation.
33
+
34
+ Raises:
35
+ Exception: Any error, usually `tensorboard.errors.PublicError`
36
+ subclasses (like `PermissionDenied`) but also possibly a
37
+ custom error type that should propagate to a WSGI middleware
38
+ for effecting a redirect-driven auth flow.
39
+ """
40
+ pass
41
+
42
+
43
+ class AuthContext:
44
+ """Authentication context within the scope of a single request.
45
+
46
+ Auth providers are keyed within an `AuthContext` by arbitrary
47
+ unique keys. It may often make sense for the key used for an
48
+ auth provider to simply be that provider's type object.
49
+ """
50
+
51
+ def __init__(self, providers, environ):
52
+ """Create an auth context.
53
+
54
+ Args:
55
+ providers: A mapping from provider keys (opaque values) to
56
+ `AuthProvider` implementations.
57
+ environ: A WSGI environment (see PEP 3333).
58
+ """
59
+ self._environ = environ
60
+ self._providers = providers
61
+ self._cache = {}
62
+
63
+ @classmethod
64
+ def empty(cls):
65
+ """Create an auth context with no registered providers.
66
+
67
+ Returns:
68
+ A new `AuthContext` value for which any call to `get` will
69
+ fail with a `KeyError`.
70
+ """
71
+ # Use an empty dict for the environ. This is not a valid WSGI
72
+ # environment, but it doesn't matter because it's never used.
73
+ return cls({}, {})
74
+
75
+ def get(self, provider_key):
76
+ """Get an auth token from the auth provider with the given key.
77
+
78
+ If successful, the result will be cached on this auth context.
79
+ If unsuccessful, nothing will be cached, so a future call will
80
+ invoke the underlying `AuthProvider.authenticate` method again.
81
+
82
+ This method is not thread-safe. If multiple threads share an
83
+ auth context for a single request, then they must synchronize
84
+ externally when calling this method.
85
+
86
+ Returns:
87
+ The result of `provider.authenticate(...)` for the auth
88
+ provider specified by `provider_key`.
89
+
90
+ Raises:
91
+ KeyError: If the given `provider_key` does not correspond to
92
+ any registered `AuthProvider`.
93
+ Exception: As raised by the underlying `AuthProvider`.
94
+ """
95
+ provider = self._providers[provider_key]
96
+ sentinel = object()
97
+ value = self._cache.get(provider_key, sentinel)
98
+ if value is not sentinel:
99
+ return value
100
+ value = provider.authenticate(self._environ)
101
+ self._cache[provider_key] = value
102
+ return value
File without changes