py2docfx 0.1.10.dev1818319__py3-none-any.whl → 0.1.10.dev1824234__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 (41) hide show
  1. py2docfx/__main__.py +14 -9
  2. py2docfx/convert_prepare/environment.py +6 -4
  3. py2docfx/convert_prepare/generate_document.py +13 -1
  4. py2docfx/convert_prepare/get_source.py +19 -4
  5. py2docfx/convert_prepare/package_info.py +1 -1
  6. py2docfx/convert_prepare/pip_utils.py +0 -1
  7. py2docfx/convert_prepare/sphinx_caller.py +4 -0
  8. py2docfx/convert_prepare/tests/test_package_info.py +22 -7
  9. py2docfx/convert_prepare/tests/test_params.py +0 -5
  10. py2docfx/venv/0/Lib/site-packages/babel/__init__.py +1 -1
  11. py2docfx/venv/0/Lib/site-packages/babel/core.py +6 -2
  12. py2docfx/venv/0/Lib/site-packages/babel/dates.py +6 -1
  13. py2docfx/venv/0/Lib/site-packages/babel/lists.py +40 -11
  14. py2docfx/venv/0/Lib/site-packages/babel/localedata.py +26 -2
  15. py2docfx/venv/0/Lib/site-packages/babel/localtime/_helpers.py +14 -0
  16. py2docfx/venv/0/Lib/site-packages/babel/messages/_compat.py +34 -0
  17. py2docfx/venv/0/Lib/site-packages/babel/messages/catalog.py +5 -1
  18. py2docfx/venv/0/Lib/site-packages/babel/messages/checkers.py +3 -8
  19. py2docfx/venv/0/Lib/site-packages/babel/messages/extract.py +24 -23
  20. py2docfx/venv/0/Lib/site-packages/babel/messages/frontend.py +122 -48
  21. py2docfx/venv/0/Lib/site-packages/babel/plural.py +1 -2
  22. py2docfx/venv/0/Lib/site-packages/babel/support.py +6 -4
  23. py2docfx/venv/0/Lib/site-packages/yaml/__init__.py +1 -1
  24. py2docfx/venv/template/Lib/site-packages/babel/__init__.py +1 -1
  25. py2docfx/venv/template/Lib/site-packages/babel/core.py +6 -2
  26. py2docfx/venv/template/Lib/site-packages/babel/dates.py +6 -1
  27. py2docfx/venv/template/Lib/site-packages/babel/lists.py +40 -11
  28. py2docfx/venv/template/Lib/site-packages/babel/localedata.py +26 -2
  29. py2docfx/venv/template/Lib/site-packages/babel/localtime/_helpers.py +14 -0
  30. py2docfx/venv/template/Lib/site-packages/babel/messages/_compat.py +34 -0
  31. py2docfx/venv/template/Lib/site-packages/babel/messages/catalog.py +5 -1
  32. py2docfx/venv/template/Lib/site-packages/babel/messages/checkers.py +3 -8
  33. py2docfx/venv/template/Lib/site-packages/babel/messages/extract.py +24 -23
  34. py2docfx/venv/template/Lib/site-packages/babel/messages/frontend.py +122 -48
  35. py2docfx/venv/template/Lib/site-packages/babel/plural.py +1 -2
  36. py2docfx/venv/template/Lib/site-packages/babel/support.py +6 -4
  37. py2docfx/venv/template/Lib/site-packages/yaml/__init__.py +1 -1
  38. {py2docfx-0.1.10.dev1818319.dist-info → py2docfx-0.1.10.dev1824234.dist-info}/METADATA +1 -1
  39. {py2docfx-0.1.10.dev1818319.dist-info → py2docfx-0.1.10.dev1824234.dist-info}/RECORD +41 -39
  40. {py2docfx-0.1.10.dev1818319.dist-info → py2docfx-0.1.10.dev1824234.dist-info}/WHEEL +0 -0
  41. {py2docfx-0.1.10.dev1818319.dist-info → py2docfx-0.1.10.dev1824234.dist-info}/top_level.txt +0 -0
@@ -30,11 +30,13 @@ from collections.abc import (
30
30
  Mapping,
31
31
  MutableSequence,
32
32
  )
33
+ from functools import lru_cache
33
34
  from os.path import relpath
34
35
  from textwrap import dedent
35
36
  from tokenize import COMMENT, NAME, OP, STRING, generate_tokens
36
37
  from typing import TYPE_CHECKING, Any
37
38
 
39
+ from babel.messages._compat import find_entrypoints
38
40
  from babel.util import parse_encoding, parse_future_flags, pathmatch
39
41
 
40
42
  if TYPE_CHECKING:
@@ -363,6 +365,14 @@ def _match_messages_against_spec(lineno: int, messages: list[str|None], comments
363
365
  return lineno, translatable, comments, context
364
366
 
365
367
 
368
+ @lru_cache(maxsize=None)
369
+ def _find_extractor(name: str):
370
+ for ep_name, load in find_entrypoints(GROUP_NAME):
371
+ if ep_name == name:
372
+ return load()
373
+ return None
374
+
375
+
366
376
  def extract(
367
377
  method: _ExtractionMethod,
368
378
  fileobj: _FileObj,
@@ -421,25 +431,11 @@ def extract(
421
431
  module, attrname = method.split(':', 1)
422
432
  func = getattr(__import__(module, {}, {}, [attrname]), attrname)
423
433
  else:
424
- try:
425
- from pkg_resources import working_set
426
- except ImportError:
427
- pass
428
- else:
429
- for entry_point in working_set.iter_entry_points(GROUP_NAME,
430
- method):
431
- func = entry_point.load(require=True)
432
- break
434
+ func = _find_extractor(method)
433
435
  if func is None:
434
- # if pkg_resources is not available or no usable egg-info was found
435
- # (see #230), we resort to looking up the builtin extractors
436
- # directly
437
- builtin = {
438
- 'ignore': extract_nothing,
439
- 'python': extract_python,
440
- 'javascript': extract_javascript,
441
- }
442
- func = builtin.get(method)
436
+ # if no named entry point was found,
437
+ # we resort to looking up a builtin extractor
438
+ func = _BUILTIN_EXTRACTORS.get(method)
443
439
 
444
440
  if func is None:
445
441
  raise ValueError(f"Unknown extraction method {method!r}")
@@ -640,13 +636,11 @@ def _parse_python_string(value: str, encoding: str, future_flags: int) -> str |
640
636
  )
641
637
  if isinstance(code, ast.Expression):
642
638
  body = code.body
643
- if isinstance(body, ast.Str):
644
- return body.s
639
+ if isinstance(body, ast.Constant):
640
+ return body.value
645
641
  if isinstance(body, ast.JoinedStr): # f-string
646
- if all(isinstance(node, ast.Str) for node in body.values):
647
- return ''.join(node.s for node in body.values)
648
642
  if all(isinstance(node, ast.Constant) for node in body.values):
649
- return ''.join(str(node.value) for node in body.values)
643
+ return ''.join(node.value for node in body.values)
650
644
  # TODO: we could raise an error or warning when not all nodes are constants
651
645
  return None
652
646
 
@@ -840,3 +834,10 @@ def parse_template_string(
840
834
  lineno += len(line_re.findall(expression_contents))
841
835
  expression_contents = ''
842
836
  prev_character = character
837
+
838
+
839
+ _BUILTIN_EXTRACTORS = {
840
+ 'ignore': extract_nothing,
841
+ 'python': extract_python,
842
+ 'javascript': extract_javascript,
843
+ }
@@ -19,10 +19,11 @@ import re
19
19
  import shutil
20
20
  import sys
21
21
  import tempfile
22
+ import warnings
22
23
  from collections import OrderedDict
23
24
  from configparser import RawConfigParser
24
25
  from io import StringIO
25
- from typing import Iterable
26
+ from typing import BinaryIO, Iterable, Literal
26
27
 
27
28
  from babel import Locale, localedata
28
29
  from babel import __version__ as VERSION
@@ -53,6 +54,12 @@ class SetupError(BaseError):
53
54
  pass
54
55
 
55
56
 
57
+ class ConfigurationError(BaseError):
58
+ """
59
+ Raised for errors in configuration files.
60
+ """
61
+
62
+
56
63
  def listify_value(arg, split=None):
57
64
  """
58
65
  Make a list out of an argument.
@@ -458,7 +465,7 @@ class ExtractMessages(CommandMixin):
458
465
 
459
466
  ignore_dirs = listify_value(self.ignore_dirs)
460
467
  if ignore_dirs:
461
- self.directory_filter = _make_directory_filter(self.ignore_dirs)
468
+ self.directory_filter = _make_directory_filter(ignore_dirs)
462
469
  else:
463
470
  self.directory_filter = None
464
471
 
@@ -534,8 +541,21 @@ class ExtractMessages(CommandMixin):
534
541
  mappings = []
535
542
 
536
543
  if self.mapping_file:
537
- with open(self.mapping_file) as fileobj:
538
- method_map, options_map = parse_mapping(fileobj)
544
+ if self.mapping_file.endswith(".toml"):
545
+ with open(self.mapping_file, "rb") as fileobj:
546
+ file_style = (
547
+ "pyproject.toml"
548
+ if os.path.basename(self.mapping_file) == "pyproject.toml"
549
+ else "standalone"
550
+ )
551
+ method_map, options_map = _parse_mapping_toml(
552
+ fileobj,
553
+ filename=self.mapping_file,
554
+ style=file_style,
555
+ )
556
+ else:
557
+ with open(self.mapping_file) as fileobj:
558
+ method_map, options_map = parse_mapping_cfg(fileobj, filename=self.mapping_file)
539
559
  for path in self.input_paths:
540
560
  mappings.append((path, method_map, options_map))
541
561
 
@@ -543,7 +563,7 @@ class ExtractMessages(CommandMixin):
543
563
  message_extractors = self.distribution.message_extractors
544
564
  for path, mapping in message_extractors.items():
545
565
  if isinstance(mapping, str):
546
- method_map, options_map = parse_mapping(StringIO(mapping))
566
+ method_map, options_map = parse_mapping_cfg(StringIO(mapping))
547
567
  else:
548
568
  method_map, options_map = [], {}
549
569
  for pattern, method, options in mapping:
@@ -980,53 +1000,19 @@ def main():
980
1000
 
981
1001
 
982
1002
  def parse_mapping(fileobj, filename=None):
983
- """Parse an extraction method mapping from a file-like object.
1003
+ warnings.warn(
1004
+ "parse_mapping is deprecated, use parse_mapping_cfg instead",
1005
+ DeprecationWarning,
1006
+ stacklevel=2,
1007
+ )
1008
+ return parse_mapping_cfg(fileobj, filename)
984
1009
 
985
- >>> buf = StringIO('''
986
- ... [extractors]
987
- ... custom = mypackage.module:myfunc
988
- ...
989
- ... # Python source files
990
- ... [python: **.py]
991
- ...
992
- ... # Genshi templates
993
- ... [genshi: **/templates/**.html]
994
- ... include_attrs =
995
- ... [genshi: **/templates/**.txt]
996
- ... template_class = genshi.template:TextTemplate
997
- ... encoding = latin-1
998
- ...
999
- ... # Some custom extractor
1000
- ... [custom: **/custom/*.*]
1001
- ... ''')
1002
-
1003
- >>> method_map, options_map = parse_mapping(buf)
1004
- >>> len(method_map)
1005
- 4
1006
-
1007
- >>> method_map[0]
1008
- ('**.py', 'python')
1009
- >>> options_map['**.py']
1010
- {}
1011
- >>> method_map[1]
1012
- ('**/templates/**.html', 'genshi')
1013
- >>> options_map['**/templates/**.html']['include_attrs']
1014
- ''
1015
- >>> method_map[2]
1016
- ('**/templates/**.txt', 'genshi')
1017
- >>> options_map['**/templates/**.txt']['template_class']
1018
- 'genshi.template:TextTemplate'
1019
- >>> options_map['**/templates/**.txt']['encoding']
1020
- 'latin-1'
1021
-
1022
- >>> method_map[3]
1023
- ('**/custom/*.*', 'mypackage.module:myfunc')
1024
- >>> options_map['**/custom/*.*']
1025
- {}
1010
+
1011
+ def parse_mapping_cfg(fileobj, filename=None):
1012
+ """Parse an extraction method mapping from a file-like object.
1026
1013
 
1027
1014
  :param fileobj: a readable file-like object containing the configuration
1028
1015
  text to parse
1029
- :see: `extract_from_directory`
1030
1016
  """
1031
1017
  extractors = {}
1032
1018
  method_map = []
@@ -1053,6 +1039,94 @@ def parse_mapping(fileobj, filename=None):
1053
1039
  return method_map, options_map
1054
1040
 
1055
1041
 
1042
+ def _parse_config_object(config: dict, *, filename="(unknown)"):
1043
+ extractors = {}
1044
+ method_map = []
1045
+ options_map = {}
1046
+
1047
+ extractors_read = config.get("extractors", {})
1048
+ if not isinstance(extractors_read, dict):
1049
+ raise ConfigurationError(f"{filename}: extractors: Expected a dictionary, got {type(extractors_read)!r}")
1050
+ for method, callable_spec in extractors_read.items():
1051
+ if not isinstance(method, str):
1052
+ # Impossible via TOML, but could happen with a custom object.
1053
+ raise ConfigurationError(f"{filename}: extractors: Extraction method must be a string, got {method!r}")
1054
+ if not isinstance(callable_spec, str):
1055
+ raise ConfigurationError(f"{filename}: extractors: Callable specification must be a string, got {callable_spec!r}")
1056
+ extractors[method] = callable_spec
1057
+
1058
+ if "mapping" in config:
1059
+ raise ConfigurationError(f"{filename}: 'mapping' is not a valid key, did you mean 'mappings'?")
1060
+
1061
+ mappings_read = config.get("mappings", [])
1062
+ if not isinstance(mappings_read, list):
1063
+ raise ConfigurationError(f"{filename}: mappings: Expected a list, got {type(mappings_read)!r}")
1064
+ for idx, entry in enumerate(mappings_read):
1065
+ if not isinstance(entry, dict):
1066
+ raise ConfigurationError(f"{filename}: mappings[{idx}]: Expected a dictionary, got {type(entry)!r}")
1067
+ entry = entry.copy()
1068
+
1069
+ method = entry.pop("method", None)
1070
+ if not isinstance(method, str):
1071
+ raise ConfigurationError(f"{filename}: mappings[{idx}]: 'method' must be a string, got {method!r}")
1072
+ method = extractors.get(method, method) # Map the extractor name to the callable now
1073
+
1074
+ pattern = entry.pop("pattern", None)
1075
+ if not isinstance(pattern, (list, str)):
1076
+ raise ConfigurationError(f"{filename}: mappings[{idx}]: 'pattern' must be a list or a string, got {pattern!r}")
1077
+ if not isinstance(pattern, list):
1078
+ pattern = [pattern]
1079
+
1080
+ for pat in pattern:
1081
+ if not isinstance(pat, str):
1082
+ raise ConfigurationError(f"{filename}: mappings[{idx}]: 'pattern' elements must be strings, got {pat!r}")
1083
+ method_map.append((pat, method))
1084
+ options_map[pat] = entry
1085
+
1086
+ return method_map, options_map
1087
+
1088
+
1089
+ def _parse_mapping_toml(
1090
+ fileobj: BinaryIO,
1091
+ filename: str = "(unknown)",
1092
+ style: Literal["standalone", "pyproject.toml"] = "standalone",
1093
+ ):
1094
+ """Parse an extraction method mapping from a binary file-like object.
1095
+
1096
+ .. warning: As of this version of Babel, this is a private API subject to changes.
1097
+
1098
+ :param fileobj: a readable binary file-like object containing the configuration TOML to parse
1099
+ :param filename: the name of the file being parsed, for error messages
1100
+ :param style: whether the file is in the style of a `pyproject.toml` file, i.e. whether to look for `tool.babel`.
1101
+ """
1102
+ try:
1103
+ import tomllib
1104
+ except ImportError:
1105
+ try:
1106
+ import tomli as tomllib
1107
+ except ImportError as ie: # pragma: no cover
1108
+ raise ImportError("tomli or tomllib is required to parse TOML files") from ie
1109
+
1110
+ try:
1111
+ parsed_data = tomllib.load(fileobj)
1112
+ except tomllib.TOMLDecodeError as e:
1113
+ raise ConfigurationError(f"{filename}: Error parsing TOML file: {e}") from e
1114
+
1115
+ if style == "pyproject.toml":
1116
+ try:
1117
+ babel_data = parsed_data["tool"]["babel"]
1118
+ except (TypeError, KeyError) as e:
1119
+ raise ConfigurationError(f"{filename}: No 'tool.babel' section found in file") from e
1120
+ elif style == "standalone":
1121
+ babel_data = parsed_data
1122
+ if "babel" in babel_data:
1123
+ raise ConfigurationError(f"{filename}: 'babel' should not be present in a stand-alone configuration file")
1124
+ else: # pragma: no cover
1125
+ raise ValueError(f"Unknown TOML style {style!r}")
1126
+
1127
+ return _parse_config_object(babel_data, filename=filename)
1128
+
1129
+
1056
1130
  def _parse_spec(s: str) -> tuple[int | None, tuple[int | tuple[int, str], ...]]:
1057
1131
  inds = []
1058
1132
  number = None
@@ -360,8 +360,7 @@ def tokenize_rule(s: str) -> list[tuple[str, str]]:
360
360
  result.append((tok, match.group()))
361
361
  break
362
362
  else:
363
- raise RuleError('malformed CLDR pluralization rule. '
364
- 'Got unexpected %r' % s[pos])
363
+ raise RuleError(f"malformed CLDR pluralization rule. Got unexpected {s[pos]!r}")
365
364
  return result[::-1]
366
365
 
367
366
 
@@ -466,10 +466,12 @@ class NullTranslations(gettext.NullTranslations):
466
466
  missing = object()
467
467
  tmsg = self._catalog.get(ctxt_msg_id, missing)
468
468
  if tmsg is missing:
469
- if self._fallback:
470
- return self._fallback.pgettext(context, message)
471
- return message
472
- return tmsg
469
+ tmsg = self._catalog.get((ctxt_msg_id, self.plural(1)), missing)
470
+ if tmsg is not missing:
471
+ return tmsg
472
+ if self._fallback:
473
+ return self._fallback.pgettext(context, message)
474
+ return message
473
475
 
474
476
  def lpgettext(self, context: str, message: str) -> str | bytes | object:
475
477
  """Equivalent to ``pgettext()``, but the translation is returned in the
@@ -8,7 +8,7 @@ from .nodes import *
8
8
  from .loader import *
9
9
  from .dumper import *
10
10
 
11
- __version__ = '6.0.1'
11
+ __version__ = '6.0.2'
12
12
  try:
13
13
  from .cyaml import *
14
14
  __with_libyaml__ = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2docfx
3
- Version: 0.1.10.dev1818319
3
+ Version: 0.1.10.dev1824234
4
4
  Summary: A package built based on Sphinx which download source code package and generate yaml files supported by docfx.
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -1,21 +1,21 @@
1
1
  py2docfx/__init__.py,sha256=kPRhPGPC1JknDotkksG428c1iIgfFr_4_7Jm-llrowY,72
2
- py2docfx/__main__.py,sha256=4DmiPKDEO9MCc81jYwOpE-cBNhetx1-xRAGdQ1OZq9w,13903
2
+ py2docfx/__main__.py,sha256=ju95ENv1cL7GZKNkQRT5Gjup_WkvopJ1Tyqy7flSe40,14206
3
3
  py2docfx/convert_prepare/__init__.py,sha256=XxtxrP0kmW3ZBHIAoxsPDEHzcgeC0WSnole8Lk6CjKs,11
4
- py2docfx/convert_prepare/environment.py,sha256=iI3XE96QqKe8M2205kHYU-vL8OG15yt_lQ-2cHRGu8A,2742
4
+ py2docfx/convert_prepare/environment.py,sha256=rKbMeHCOAnvHW5IDPo9wqhVa8nB_XUeu5KLLV2UnnvI,2946
5
5
  py2docfx/convert_prepare/generate_conf.py,sha256=wqs6iyElzJarH-20_qEL9zvZvt5xfBMsGXSXPSZy6wg,2295
6
- py2docfx/convert_prepare/generate_document.py,sha256=TcGAgLMrpPqHUOVRSX7Amp6ld7hQhKT_IqFzIGdqiRE,2473
7
- py2docfx/convert_prepare/get_source.py,sha256=JQ_6VIiu902U22l4lE7z6DLtu_DneJhRQWEPdogWZ6Q,5035
6
+ py2docfx/convert_prepare/generate_document.py,sha256=HHVMY-2rKVwqK5LzEm8Ow7bJZUPTSZFlOGkqnkEGvUc,3070
7
+ py2docfx/convert_prepare/get_source.py,sha256=K71Z5GExWlUW6nWpQMmPh3v-QQcJb77E4USFQ1HnYkE,5930
8
8
  py2docfx/convert_prepare/git.py,sha256=QJkbnUcXspD2GAJ71E07cquLKZiV97LixarPn90IoxA,5895
9
9
  py2docfx/convert_prepare/install_package.py,sha256=pcGzM3WR6aA4EzdRZDGxyijvaRb4Y3KcrJQmV3TH8E0,326
10
10
  py2docfx/convert_prepare/pack.py,sha256=vZS67_GzEhUmZWHU1dxm8gnWyRBs-kB6-KjX1d_FdOU,1260
11
- py2docfx/convert_prepare/package_info.py,sha256=vRkFKuBxxIm4yyb2daWTzdISma8pL-RMqu3cp5Kx1Fg,7328
11
+ py2docfx/convert_prepare/package_info.py,sha256=V-xasck6ZfqJdUjlGHtkC1iE-DCBDAMK8Z0q-NronkE,7254
12
12
  py2docfx/convert_prepare/package_info_extra_settings.py,sha256=u5B5e8hc0m9PA_-0kJzq1LtKn-xzZlucwXHTFy49mDg,1475
13
13
  py2docfx/convert_prepare/params.py,sha256=PXMB8pLtb4XbfI322avA47q0AO-TyBE6kZf7FU8I6v4,1771
14
14
  py2docfx/convert_prepare/paths.py,sha256=964RX81Qf__rzXgEATfqBNFCKTYVjLt9J7WCz2TnNdc,485
15
- py2docfx/convert_prepare/pip_utils.py,sha256=mvU9LVS_k_y2icsFOrYFlXdvFuUwK97fTfFEc3pxF6o,1385
15
+ py2docfx/convert_prepare/pip_utils.py,sha256=KsPGKPHJmDKZXufquto7lOGcPzo2f52LVC9OdYwjdj8,1373
16
16
  py2docfx/convert_prepare/repo_info.py,sha256=6ASJlhBwf6vZTSENgrWCVlJjlJVhuBxzdQyWEdWAC4c,117
17
17
  py2docfx/convert_prepare/source.py,sha256=6-A7oof3-WAQcQZZVpT9pKiFLH4CCIZeYqq0MN0O3gw,1710
18
- py2docfx/convert_prepare/sphinx_caller.py,sha256=Zk8DKLkqQwEdHjhYCKDQjy6YMFFBF4KddlygUC1RhEg,4279
18
+ py2docfx/convert_prepare/sphinx_caller.py,sha256=fGgNiNZRjFsV3HqpemVVbEVYaN5BoJs8N1BfYPiFaQI,4435
19
19
  py2docfx/convert_prepare/subpackage.py,sha256=mXAi_07pXvnPkSLZfykDh_7VeFxfLy74pYlzhMO8N_Q,5183
20
20
  py2docfx/convert_prepare/conf_templates/conf.py_t,sha256=VL5K6xUTIw2cb4GFjDXu5iCZFPA2Kb36KLvier78HFg,3811
21
21
  py2docfx/convert_prepare/conf_templates/master_doc.rst_t,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -27,8 +27,8 @@ py2docfx/convert_prepare/tests/test_environment.py,sha256=TPIwv898bT0sMkUOlGWC81
27
27
  py2docfx/convert_prepare/tests/test_generate_document.py,sha256=sO-t179fAGaqL-KAB3nFEPCGa5LGdPnl9CsnjwaHqAU,2431
28
28
  py2docfx/convert_prepare/tests/test_get_source.py,sha256=se9dvkN2jP9h_ULNax2dIBqdGQr5OZoL3k3hL3TNSrM,7601
29
29
  py2docfx/convert_prepare/tests/test_pack.py,sha256=46JWMNzknIptDVs7D3CuxcmqBr_OKMmaw1br9H7wqco,4134
30
- py2docfx/convert_prepare/tests/test_package_info.py,sha256=3B-IzmUjETVO-5s3g3Lmh2E6JgopwnRauv8mB-SDZEM,3361
31
- py2docfx/convert_prepare/tests/test_params.py,sha256=C-aY9xDjsNTcGQATco_J_i4nF4JSmaeFPEMI3-NtiGE,2229
30
+ py2docfx/convert_prepare/tests/test_package_info.py,sha256=hdNpAH9hlLF-cX9sKAu3cmiCtphX4USy9G_gWI_iaHo,3883
31
+ py2docfx/convert_prepare/tests/test_params.py,sha256=p9DaGveocMBRih02KjpudJZE752neFBTLzOFbS47izQ,2036
32
32
  py2docfx/convert_prepare/tests/test_post_process_merge_toc.py,sha256=YKOcn4_lf4syGsAvJ9BqpdUUc3SLfK4TiOX1lpXJT_Y,885
33
33
  py2docfx/convert_prepare/tests/test_source.py,sha256=LNFZtvjz6QhVLOxatjWokYCCcoSm0bhTikMF9KoTPIE,2025
34
34
  py2docfx/convert_prepare/tests/test_sphinx_caller.py,sha256=424jNPjFI0VQrV8LSQ0qulRAzgrqKlinQRfEK_VBX-Q,2512
@@ -130,27 +130,28 @@ py2docfx/venv/0/Lib/site-packages/_distutils_hack/override.py,sha256=Eu_s-NF6VIZ
130
130
  py2docfx/venv/0/Lib/site-packages/_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402
131
131
  py2docfx/venv/0/Lib/site-packages/alabaster/__init__.py,sha256=EfCYPiyApUxovE4x8SvBPL9jSlttUR3_fhV4g_jAlBA,1215
132
132
  py2docfx/venv/0/Lib/site-packages/alabaster/support.py,sha256=sUmHRioKyQdzsgtUi-8IdpICoi5JaE8U3pJ0MLDRVcc,3937
133
- py2docfx/venv/0/Lib/site-packages/babel/__init__.py,sha256=g0vUYt0UYFua8dYNd1U3XvzEUjC_X4v82jYnELhBXKM,863
134
- py2docfx/venv/0/Lib/site-packages/babel/core.py,sha256=MW-HvWy5FyB_yhn46oQsObSV951UjxJkBmO9XxTLeb4,44006
135
- py2docfx/venv/0/Lib/site-packages/babel/dates.py,sha256=QdeuwcAnb_zPYVIaqESqGajY3oiBbxbrl5vF9qBg-Jo,73177
133
+ py2docfx/venv/0/Lib/site-packages/babel/__init__.py,sha256=EQs0LLC2kcCJNlUkQCvVBUGawAt08mLmnv6YNF-SzM8,863
134
+ py2docfx/venv/0/Lib/site-packages/babel/core.py,sha256=O8DUOnyInkKek90AKZa7aqYOXowdCp27wU3UWZaPwmU,44186
135
+ py2docfx/venv/0/Lib/site-packages/babel/dates.py,sha256=XUOwywjluVvt9nCGAfbrc2XRxT8BYqCicKMADWy7BLc,73461
136
136
  py2docfx/venv/0/Lib/site-packages/babel/languages.py,sha256=2LDTV9WizAuZVam0vfw-Q-QKYCQpF5DxLbmVoat7TKI,2844
137
- py2docfx/venv/0/Lib/site-packages/babel/lists.py,sha256=PT0_TQQ3bFiEcI3BE4S1yUe7KakDeWmOaQFPeaMa-6Q,3016
138
- py2docfx/venv/0/Lib/site-packages/babel/localedata.py,sha256=Iz6UN2WKU5ngOsnUWg6zs1lJ_1I4mBIZ9xbrM3XvdF0,8239
137
+ py2docfx/venv/0/Lib/site-packages/babel/lists.py,sha256=h2nUoCjBa1Z1nFjCa4qqa3MiEjh4UUvVnYTX4TUMpoI,3998
138
+ py2docfx/venv/0/Lib/site-packages/babel/localedata.py,sha256=sDex2uY1iUp6igI7msRic2o0AAMDzKcN3GmyMBU09So,9116
139
139
  py2docfx/venv/0/Lib/site-packages/babel/numbers.py,sha256=knUuBrQvLp5uQboRREfWMqK62cJE6kd_Af9k2esHjBk,61657
140
- py2docfx/venv/0/Lib/site-packages/babel/plural.py,sha256=hZRI_fpBhxdBJkKLn5AR6DZ2dTDHhNNDIRby-EXj7uU,23218
141
- py2docfx/venv/0/Lib/site-packages/babel/support.py,sha256=-D0lGTFVr3yq_4KqDYs0pdSAqrplNiJKKZ092Ojf1n0,27456
140
+ py2docfx/venv/0/Lib/site-packages/babel/plural.py,sha256=GITrS2O_aSW33huEx2ARjxc17UYYn9sYGLKMYXvfe9U,23187
141
+ py2docfx/venv/0/Lib/site-packages/babel/support.py,sha256=fafDdfJN7V-wQRXyQsFVKVBt3PcG6RK3oqXUXDcTafU,27557
142
142
  py2docfx/venv/0/Lib/site-packages/babel/units.py,sha256=Lljs-eGwdUms4RbGsKEAzqoXsYGoC-42gGNQSX6Gn64,13604
143
143
  py2docfx/venv/0/Lib/site-packages/babel/util.py,sha256=t6_jIu8yzSg-43Ymwr3xzERi-UIJXy0xH2eiq6R-uw0,7956
144
144
  py2docfx/venv/0/Lib/site-packages/babel/localtime/__init__.py,sha256=i-Lr3nOPaEQ9xGx8CP36ya8yh3Tx3H-WSkeG0m-rnH4,1043
145
145
  py2docfx/venv/0/Lib/site-packages/babel/localtime/_fallback.py,sha256=kvQB89KoogRnH6hnfFGy2nICby30Z6XpT2hmm-MY4kM,1207
146
- py2docfx/venv/0/Lib/site-packages/babel/localtime/_helpers.py,sha256=8WIkbnxv1aGVvXm63pFlB_IBRQNsMQlATsx7vorRivQ,1060
146
+ py2docfx/venv/0/Lib/site-packages/babel/localtime/_helpers.py,sha256=ZmLc8m46W-3GtsstLBdrw6BU3ZhSob8vKHkxgcZG9uw,1704
147
147
  py2docfx/venv/0/Lib/site-packages/babel/localtime/_unix.py,sha256=7ExS68O5KpjqgZ6Dhho2WhxlYQYe2etJiW8BW2mXMCc,3455
148
148
  py2docfx/venv/0/Lib/site-packages/babel/localtime/_win32.py,sha256=nSNnxSMOVAlvqvX50h9HSCzBfP7mj8njJ80JZ3pOIWk,3211
149
149
  py2docfx/venv/0/Lib/site-packages/babel/messages/__init__.py,sha256=v-Ekb85OfEQ_jGCTSK_oJNhxIM44XLT-71UHvjw3LUE,349
150
- py2docfx/venv/0/Lib/site-packages/babel/messages/catalog.py,sha256=0qexbG2LC7tJ5jezH3_cObJYutgHztQy_GKTYXCwqDs,36302
151
- py2docfx/venv/0/Lib/site-packages/babel/messages/checkers.py,sha256=LK5_AeOyptGB3Nj4dvQ8QS6vBTLoQOOw_TLkQmxi2OQ,6375
152
- py2docfx/venv/0/Lib/site-packages/babel/messages/extract.py,sha256=qBgqKLRgrAR6PuZ6d4EXslp3Qb6JWqm1gA6WXNx0Tnk,34333
153
- py2docfx/venv/0/Lib/site-packages/babel/messages/frontend.py,sha256=e3_v7Ae1BpH9DF7XN9dEw6JuFvCqzcyrVbXoLpYdXB4,41618
150
+ py2docfx/venv/0/Lib/site-packages/babel/messages/_compat.py,sha256=DNyCNMwH5vXgl_pq7cUYz3VcRC2gIPqeQLO5nN5neWE,1163
151
+ py2docfx/venv/0/Lib/site-packages/babel/messages/catalog.py,sha256=-zr_sbXoLJp2bG9Qsyw99URLDU1S9wsYWDBMrA95Nz8,36573
152
+ py2docfx/venv/0/Lib/site-packages/babel/messages/checkers.py,sha256=UOnSgcMRVQPNGbK2WWqnwhFrcHy5a4rGDUTOEoA0LJo,6287
153
+ py2docfx/venv/0/Lib/site-packages/babel/messages/extract.py,sha256=LBc7wzhFVAbvUHt08OLwJ4xDw5zA1TpGG2omqDNFq9Y,34066
154
+ py2docfx/venv/0/Lib/site-packages/babel/messages/frontend.py,sha256=b1UoQwoLm7TKGdwblb1MkA9wugJOGCiY55pDHD2HMgw,45436
154
155
  py2docfx/venv/0/Lib/site-packages/babel/messages/jslexer.py,sha256=-y8ANArYt8q0_c6GQcquUfCs2UY_qv7IuKJr_9Ae9OE,7153
155
156
  py2docfx/venv/0/Lib/site-packages/babel/messages/mofile.py,sha256=rhfPviWXvs0WBlnppcretWCDdssxZrHK493dFTi-jbU,7345
156
157
  py2docfx/venv/0/Lib/site-packages/babel/messages/plurals.py,sha256=ABqBQNzUvaNuOEdGlyun4THKUs_qMmeGMmWrKOZk4ZI,7319
@@ -1857,7 +1858,7 @@ py2docfx/venv/0/Lib/site-packages/urllib3/util/timeout.py,sha256=4eT1FVeZZU7h7mY
1857
1858
  py2docfx/venv/0/Lib/site-packages/urllib3/util/url.py,sha256=wHORhp80RAXyTlAIkTqLFzSrkU7J34ZDxX-tN65MBZk,15213
1858
1859
  py2docfx/venv/0/Lib/site-packages/urllib3/util/util.py,sha256=j3lbZK1jPyiwD34T8IgJzdWEZVT-4E-0vYIJi9UjeNA,1146
1859
1860
  py2docfx/venv/0/Lib/site-packages/urllib3/util/wait.py,sha256=_ph8IrUR3sqPqi0OopQgJUlH4wzkGeM5CiyA7XGGtmI,4423
1860
- py2docfx/venv/0/Lib/site-packages/yaml/__init__.py,sha256=bhl05qSeO-1ZxlSRjGrvl2m9nrXb1n9-GQatTN0Mrqc,12311
1861
+ py2docfx/venv/0/Lib/site-packages/yaml/__init__.py,sha256=N35S01HMesFTe0aRRMWkPj0Pa8IEbHpE9FK7cr5Bdtw,12311
1861
1862
  py2docfx/venv/0/Lib/site-packages/yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883
1862
1863
  py2docfx/venv/0/Lib/site-packages/yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639
1863
1864
  py2docfx/venv/0/Lib/site-packages/yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851
@@ -1892,27 +1893,28 @@ py2docfx/venv/template/Lib/site-packages/_distutils_hack/override.py,sha256=Eu_s
1892
1893
  py2docfx/venv/template/Lib/site-packages/_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402
1893
1894
  py2docfx/venv/template/Lib/site-packages/alabaster/__init__.py,sha256=EfCYPiyApUxovE4x8SvBPL9jSlttUR3_fhV4g_jAlBA,1215
1894
1895
  py2docfx/venv/template/Lib/site-packages/alabaster/support.py,sha256=sUmHRioKyQdzsgtUi-8IdpICoi5JaE8U3pJ0MLDRVcc,3937
1895
- py2docfx/venv/template/Lib/site-packages/babel/__init__.py,sha256=g0vUYt0UYFua8dYNd1U3XvzEUjC_X4v82jYnELhBXKM,863
1896
- py2docfx/venv/template/Lib/site-packages/babel/core.py,sha256=MW-HvWy5FyB_yhn46oQsObSV951UjxJkBmO9XxTLeb4,44006
1897
- py2docfx/venv/template/Lib/site-packages/babel/dates.py,sha256=QdeuwcAnb_zPYVIaqESqGajY3oiBbxbrl5vF9qBg-Jo,73177
1896
+ py2docfx/venv/template/Lib/site-packages/babel/__init__.py,sha256=EQs0LLC2kcCJNlUkQCvVBUGawAt08mLmnv6YNF-SzM8,863
1897
+ py2docfx/venv/template/Lib/site-packages/babel/core.py,sha256=O8DUOnyInkKek90AKZa7aqYOXowdCp27wU3UWZaPwmU,44186
1898
+ py2docfx/venv/template/Lib/site-packages/babel/dates.py,sha256=XUOwywjluVvt9nCGAfbrc2XRxT8BYqCicKMADWy7BLc,73461
1898
1899
  py2docfx/venv/template/Lib/site-packages/babel/languages.py,sha256=2LDTV9WizAuZVam0vfw-Q-QKYCQpF5DxLbmVoat7TKI,2844
1899
- py2docfx/venv/template/Lib/site-packages/babel/lists.py,sha256=PT0_TQQ3bFiEcI3BE4S1yUe7KakDeWmOaQFPeaMa-6Q,3016
1900
- py2docfx/venv/template/Lib/site-packages/babel/localedata.py,sha256=Iz6UN2WKU5ngOsnUWg6zs1lJ_1I4mBIZ9xbrM3XvdF0,8239
1900
+ py2docfx/venv/template/Lib/site-packages/babel/lists.py,sha256=h2nUoCjBa1Z1nFjCa4qqa3MiEjh4UUvVnYTX4TUMpoI,3998
1901
+ py2docfx/venv/template/Lib/site-packages/babel/localedata.py,sha256=sDex2uY1iUp6igI7msRic2o0AAMDzKcN3GmyMBU09So,9116
1901
1902
  py2docfx/venv/template/Lib/site-packages/babel/numbers.py,sha256=knUuBrQvLp5uQboRREfWMqK62cJE6kd_Af9k2esHjBk,61657
1902
- py2docfx/venv/template/Lib/site-packages/babel/plural.py,sha256=hZRI_fpBhxdBJkKLn5AR6DZ2dTDHhNNDIRby-EXj7uU,23218
1903
- py2docfx/venv/template/Lib/site-packages/babel/support.py,sha256=-D0lGTFVr3yq_4KqDYs0pdSAqrplNiJKKZ092Ojf1n0,27456
1903
+ py2docfx/venv/template/Lib/site-packages/babel/plural.py,sha256=GITrS2O_aSW33huEx2ARjxc17UYYn9sYGLKMYXvfe9U,23187
1904
+ py2docfx/venv/template/Lib/site-packages/babel/support.py,sha256=fafDdfJN7V-wQRXyQsFVKVBt3PcG6RK3oqXUXDcTafU,27557
1904
1905
  py2docfx/venv/template/Lib/site-packages/babel/units.py,sha256=Lljs-eGwdUms4RbGsKEAzqoXsYGoC-42gGNQSX6Gn64,13604
1905
1906
  py2docfx/venv/template/Lib/site-packages/babel/util.py,sha256=t6_jIu8yzSg-43Ymwr3xzERi-UIJXy0xH2eiq6R-uw0,7956
1906
1907
  py2docfx/venv/template/Lib/site-packages/babel/localtime/__init__.py,sha256=i-Lr3nOPaEQ9xGx8CP36ya8yh3Tx3H-WSkeG0m-rnH4,1043
1907
1908
  py2docfx/venv/template/Lib/site-packages/babel/localtime/_fallback.py,sha256=kvQB89KoogRnH6hnfFGy2nICby30Z6XpT2hmm-MY4kM,1207
1908
- py2docfx/venv/template/Lib/site-packages/babel/localtime/_helpers.py,sha256=8WIkbnxv1aGVvXm63pFlB_IBRQNsMQlATsx7vorRivQ,1060
1909
+ py2docfx/venv/template/Lib/site-packages/babel/localtime/_helpers.py,sha256=ZmLc8m46W-3GtsstLBdrw6BU3ZhSob8vKHkxgcZG9uw,1704
1909
1910
  py2docfx/venv/template/Lib/site-packages/babel/localtime/_unix.py,sha256=7ExS68O5KpjqgZ6Dhho2WhxlYQYe2etJiW8BW2mXMCc,3455
1910
1911
  py2docfx/venv/template/Lib/site-packages/babel/localtime/_win32.py,sha256=nSNnxSMOVAlvqvX50h9HSCzBfP7mj8njJ80JZ3pOIWk,3211
1911
1912
  py2docfx/venv/template/Lib/site-packages/babel/messages/__init__.py,sha256=v-Ekb85OfEQ_jGCTSK_oJNhxIM44XLT-71UHvjw3LUE,349
1912
- py2docfx/venv/template/Lib/site-packages/babel/messages/catalog.py,sha256=0qexbG2LC7tJ5jezH3_cObJYutgHztQy_GKTYXCwqDs,36302
1913
- py2docfx/venv/template/Lib/site-packages/babel/messages/checkers.py,sha256=LK5_AeOyptGB3Nj4dvQ8QS6vBTLoQOOw_TLkQmxi2OQ,6375
1914
- py2docfx/venv/template/Lib/site-packages/babel/messages/extract.py,sha256=qBgqKLRgrAR6PuZ6d4EXslp3Qb6JWqm1gA6WXNx0Tnk,34333
1915
- py2docfx/venv/template/Lib/site-packages/babel/messages/frontend.py,sha256=e3_v7Ae1BpH9DF7XN9dEw6JuFvCqzcyrVbXoLpYdXB4,41618
1913
+ py2docfx/venv/template/Lib/site-packages/babel/messages/_compat.py,sha256=DNyCNMwH5vXgl_pq7cUYz3VcRC2gIPqeQLO5nN5neWE,1163
1914
+ py2docfx/venv/template/Lib/site-packages/babel/messages/catalog.py,sha256=-zr_sbXoLJp2bG9Qsyw99URLDU1S9wsYWDBMrA95Nz8,36573
1915
+ py2docfx/venv/template/Lib/site-packages/babel/messages/checkers.py,sha256=UOnSgcMRVQPNGbK2WWqnwhFrcHy5a4rGDUTOEoA0LJo,6287
1916
+ py2docfx/venv/template/Lib/site-packages/babel/messages/extract.py,sha256=LBc7wzhFVAbvUHt08OLwJ4xDw5zA1TpGG2omqDNFq9Y,34066
1917
+ py2docfx/venv/template/Lib/site-packages/babel/messages/frontend.py,sha256=b1UoQwoLm7TKGdwblb1MkA9wugJOGCiY55pDHD2HMgw,45436
1916
1918
  py2docfx/venv/template/Lib/site-packages/babel/messages/jslexer.py,sha256=-y8ANArYt8q0_c6GQcquUfCs2UY_qv7IuKJr_9Ae9OE,7153
1917
1919
  py2docfx/venv/template/Lib/site-packages/babel/messages/mofile.py,sha256=rhfPviWXvs0WBlnppcretWCDdssxZrHK493dFTi-jbU,7345
1918
1920
  py2docfx/venv/template/Lib/site-packages/babel/messages/plurals.py,sha256=ABqBQNzUvaNuOEdGlyun4THKUs_qMmeGMmWrKOZk4ZI,7319
@@ -3619,7 +3621,7 @@ py2docfx/venv/template/Lib/site-packages/urllib3/util/timeout.py,sha256=4eT1FVeZ
3619
3621
  py2docfx/venv/template/Lib/site-packages/urllib3/util/url.py,sha256=wHORhp80RAXyTlAIkTqLFzSrkU7J34ZDxX-tN65MBZk,15213
3620
3622
  py2docfx/venv/template/Lib/site-packages/urllib3/util/util.py,sha256=j3lbZK1jPyiwD34T8IgJzdWEZVT-4E-0vYIJi9UjeNA,1146
3621
3623
  py2docfx/venv/template/Lib/site-packages/urllib3/util/wait.py,sha256=_ph8IrUR3sqPqi0OopQgJUlH4wzkGeM5CiyA7XGGtmI,4423
3622
- py2docfx/venv/template/Lib/site-packages/yaml/__init__.py,sha256=bhl05qSeO-1ZxlSRjGrvl2m9nrXb1n9-GQatTN0Mrqc,12311
3624
+ py2docfx/venv/template/Lib/site-packages/yaml/__init__.py,sha256=N35S01HMesFTe0aRRMWkPj0Pa8IEbHpE9FK7cr5Bdtw,12311
3623
3625
  py2docfx/venv/template/Lib/site-packages/yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883
3624
3626
  py2docfx/venv/template/Lib/site-packages/yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639
3625
3627
  py2docfx/venv/template/Lib/site-packages/yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851
@@ -3648,7 +3650,7 @@ py2docfx/venv/template/Scripts/rst2s5.py,sha256=RtHXdYAt4Mz07kU5M1XfvQWS32qaGGIo
3648
3650
  py2docfx/venv/template/Scripts/rst2xetex.py,sha256=gR9zUREEfvziEHrN3Jf0twa0elJuy2YyZsImNpai6sQ,912
3649
3651
  py2docfx/venv/template/Scripts/rst2xml.py,sha256=Fz416Y_8EbQLhwL98NUloZJVUny3LeLfe0M9FHeuVI0,641
3650
3652
  py2docfx/venv/template/Scripts/rstpep2html.py,sha256=Yv2rSlbSgdjF1KQrfcdwjkd-QqmRYwvYwMfk1VAs7Ro,709
3651
- py2docfx-0.1.10.dev1818319.dist-info/METADATA,sha256=bnQbs8-ee40o89tMA8epj4FH7cgj8HdJIT4mQrfh6ds,601
3652
- py2docfx-0.1.10.dev1818319.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
3653
- py2docfx-0.1.10.dev1818319.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
3654
- py2docfx-0.1.10.dev1818319.dist-info/RECORD,,
3653
+ py2docfx-0.1.10.dev1824234.dist-info/METADATA,sha256=Xn_C2AMhSFsbgOdxP_n-LfAOXaNFIzcrDRi9FBY8V6s,601
3654
+ py2docfx-0.1.10.dev1824234.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
3655
+ py2docfx-0.1.10.dev1824234.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
3656
+ py2docfx-0.1.10.dev1824234.dist-info/RECORD,,