diff options
author | shimizukawa <shimizukawa@gmail.com> | 2014-10-05 21:50:44 +0900 |
---|---|---|
committer | shimizukawa <shimizukawa@gmail.com> | 2014-10-05 21:50:44 +0900 |
commit | 91d42c2828313a3078374241a1b299f546415154 (patch) | |
tree | 087d5bcd3e46ca53c8d908def1317f16b0bf3c34 | |
parent | 6a9fde23423e153eec16ee584675ad2ff3e991a9 (diff) | |
download | sphinx-91d42c2828313a3078374241a1b299f546415154.tar.gz |
Incompatibility. Now :confval:`gettext_uuid` is set False by default. If False, also levenshtein calculation is disabled. refs #1426
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | doc/config.rst | 8 | ||||
-rw-r--r-- | sphinx/builders/__init__.py | 4 | ||||
-rw-r--r-- | sphinx/builders/gettext.py | 5 | ||||
-rw-r--r-- | sphinx/builders/websupport.py | 1 | ||||
-rw-r--r-- | sphinx/config.py | 2 | ||||
-rw-r--r-- | sphinx/environment.py | 26 | ||||
-rw-r--r-- | sphinx/versioning.py | 3 |
8 files changed, 36 insertions, 15 deletions
@@ -20,6 +20,8 @@ Incompatible changes templates directory. * Custom domains should implement the new `Domain.resolve_any_xref` method to make the `any` role work properly. +* gettext builder: gettext doesn't emit uuid information to generated pot files + by default. Please set ``True`` to `gettext_uuid` to emit uuid information. * gettext builder: disable extracting/apply 'index' node by default. Please set 'index' to :confval:`gettext_enables` to enable extracting index entries. diff --git a/doc/config.rst b/doc/config.rst index f181e5c5..067a2654 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -424,9 +424,13 @@ documentation on :ref:`intl` for details. .. confval:: gettext_uuid If true, Sphinx generates uuid information for version tracking in message - catalogs. + catalogs. It is used for: - The default is ``True``. + * Add uid line for each msgids in .pot files. + * Calculate similarity between new msgids and previously saved old msgids. + This calculation take many time. + + The default is ``False``. .. versionadded:: 1.3 diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py index 7d1bd920..64ae2a09 100644 --- a/sphinx/builders/__init__.py +++ b/sphinx/builders/__init__.py @@ -42,12 +42,14 @@ class Builder(object): format = '' # doctree versioning method versioning_method = 'none' + versioning_compare = False # allow parallel write_doc() calls allow_parallel = False def __init__(self, app): self.env = app.env - self.env.set_versioning_method(self.versioning_method) + self.env.set_versioning_method(self.versioning_method, + self.versioning_compare) self.srcdir = app.srcdir self.confdir = app.confdir self.outdir = app.outdir diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index 01fa06a6..1962545d 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -84,6 +84,11 @@ class I18nBuilder(Builder): """ name = 'i18n' versioning_method = 'text' + versioning_compare = None # be set by `gettext_uuid` + + def __init__(self, app): + self.versioning_compare = app.env.config.gettext_uuid + super(I18nBuilder, self).__init__(app) def init(self): Builder.init(self) diff --git a/sphinx/builders/websupport.py b/sphinx/builders/websupport.py index 619ef6fe..c3fbdc70 100644 --- a/sphinx/builders/websupport.py +++ b/sphinx/builders/websupport.py @@ -27,6 +27,7 @@ class WebSupportBuilder(PickleHTMLBuilder): """ name = 'websupport' versioning_method = 'commentable' + versioning_compare = True # for commentable node's uuid stability. def init(self): PickleHTMLBuilder.init(self) diff --git a/sphinx/config.py b/sphinx/config.py index 8593a190..933e509d 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -209,7 +209,7 @@ class Config(object): # gettext options gettext_compact = (True, 'gettext'), gettext_location = (True, 'gettext'), - gettext_uuid = (True, 'gettext'), + gettext_uuid = (False, 'gettext'), gettext_auto_build = (True, 'env'), gettext_enables = ([], 'env'), diff --git a/sphinx/environment.py b/sphinx/environment.py index d9be0be5..853623d8 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -194,6 +194,7 @@ class BuildEnvironment: # the method of doctree versioning; see set_versioning_method self.versioning_condition = None + self.versioning_compare = None # the application object; only set while update() runs self.app = None @@ -268,7 +269,7 @@ class BuildEnvironment: self._warnfunc = func self.settings['warning_stream'] = WarningStream(func) - def set_versioning_method(self, method): + def set_versioning_method(self, method, compare): """This sets the doctree versioning method for this environment. Versioning methods are a builder property; only builders with the same @@ -284,6 +285,7 @@ class BuildEnvironment: 'selected builder, please choose another ' 'doctree directory.') self.versioning_condition = condition + self.versioning_compare = compare def warn(self, docname, msg, lineno=None): """Emit a warning. @@ -776,19 +778,21 @@ class BuildEnvironment: time.time(), path.getmtime(self.doc2path(docname))) if self.versioning_condition: - # get old doctree - try: - f = open(self.doc2path(docname, - self.doctreedir, '.doctree'), 'rb') + old_doctree = None + if self.versioning_compare: + # get old doctree try: - old_doctree = pickle.load(f) - finally: - f.close() - except EnvironmentError: - old_doctree = None + f = open(self.doc2path(docname, + self.doctreedir, '.doctree'), 'rb') + try: + old_doctree = pickle.load(f) + finally: + f.close() + except EnvironmentError: + pass # add uids for versioning - if old_doctree is None: + if not self.versioning_compare or old_doctree is None: list(add_uids(doctree, self.versioning_condition)) else: list(merge_doctrees( diff --git a/sphinx/versioning.py b/sphinx/versioning.py index 8d34802e..22ecda60 100644 --- a/sphinx/versioning.py +++ b/sphinx/versioning.py @@ -57,6 +57,9 @@ def merge_doctrees(old, new, condition): if old_node is None: new_nodes.append(new_node) continue + if not getattr(old_node, 'uid', None): + # maybe config.gettext_uuid has been changed. + old_node.uid = uuid4().hex if new_node is None: old_nodes.append(old_node) continue |