2016-10-30 09:46:26 +00:00
|
|
|
# SOME DESCRIPTIVE TITLE.
|
|
|
|
# Copyright (C) 2001-2016, Python Software Foundation
|
|
|
|
# This file is distributed under the same license as the Python package.
|
|
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
|
|
#
|
|
|
|
#, fuzzy
|
|
|
|
msgid ""
|
|
|
|
msgstr ""
|
|
|
|
"Project-Id-Version: Python 3.6\n"
|
|
|
|
"Report-Msgid-Bugs-To: \n"
|
2017-08-09 22:23:54 +00:00
|
|
|
"POT-Creation-Date: 2017-08-10 00:49+0200\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
2017-05-23 22:40:56 +00:00
|
|
|
"Language: fr\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"MIME-Version: 1.0\n"
|
|
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:2
|
|
|
|
msgid ":mod:`difflib` --- Helpers for computing deltas"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:11
|
|
|
|
msgid "**Source code:** :source:`Lib/difflib.py`"
|
|
|
|
msgstr "**Code source:** :source:`Lib/difflib.py`"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:20
|
|
|
|
msgid ""
|
|
|
|
"This module provides classes and functions for comparing sequences. It can "
|
|
|
|
"be used for example, for comparing files, and can produce difference "
|
|
|
|
"information in various formats, including HTML and context and unified "
|
|
|
|
"diffs. For comparing directories and files, see also, the :mod:`filecmp` "
|
|
|
|
"module."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:28
|
|
|
|
msgid ""
|
|
|
|
"This is a flexible class for comparing pairs of sequences of any type, so "
|
|
|
|
"long as the sequence elements are :term:`hashable`. The basic algorithm "
|
|
|
|
"predates, and is a little fancier than, an algorithm published in the late "
|
|
|
|
"1980's by Ratcliff and Obershelp under the hyperbolic name \"gestalt pattern "
|
|
|
|
"matching.\" The idea is to find the longest contiguous matching subsequence "
|
|
|
|
"that contains no \"junk\" elements; these \"junk\" elements are ones that "
|
|
|
|
"are uninteresting in some sense, such as blank lines or whitespace. "
|
|
|
|
"(Handling junk is an extension to the Ratcliff and Obershelp algorithm.) The "
|
|
|
|
"same idea is then applied recursively to the pieces of the sequences to the "
|
|
|
|
"left and to the right of the matching subsequence. This does not yield "
|
|
|
|
"minimal edit sequences, but does tend to yield matches that \"look right\" "
|
|
|
|
"to people."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:40
|
|
|
|
msgid ""
|
|
|
|
"**Timing:** The basic Ratcliff-Obershelp algorithm is cubic time in the "
|
|
|
|
"worst case and quadratic time in the expected case. :class:`SequenceMatcher` "
|
|
|
|
"is quadratic time for the worst case and has expected-case behavior "
|
|
|
|
"dependent in a complicated way on how many elements the sequences have in "
|
|
|
|
"common; best case time is linear."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:46
|
|
|
|
msgid ""
|
|
|
|
"**Automatic junk heuristic:** :class:`SequenceMatcher` supports a heuristic "
|
|
|
|
"that automatically treats certain sequence items as junk. The heuristic "
|
|
|
|
"counts how many times each individual item appears in the sequence. If an "
|
|
|
|
"item's duplicates (after the first one) account for more than 1% of the "
|
|
|
|
"sequence and the sequence is at least 200 items long, this item is marked as "
|
|
|
|
"\"popular\" and is treated as junk for the purpose of sequence matching. "
|
|
|
|
"This heuristic can be turned off by setting the ``autojunk`` argument to "
|
|
|
|
"``False`` when creating the :class:`SequenceMatcher`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:54 ../Doc/library/difflib.rst:383
|
|
|
|
msgid "The *autojunk* parameter."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:60
|
|
|
|
msgid ""
|
|
|
|
"This is a class for comparing sequences of lines of text, and producing "
|
|
|
|
"human-readable differences or deltas. Differ uses :class:`SequenceMatcher` "
|
|
|
|
"both to compare sequences of lines, and to compare sequences of characters "
|
|
|
|
"within similar (near-matching) lines."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:65
|
|
|
|
msgid "Each line of a :class:`Differ` delta begins with a two-letter code:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:68
|
|
|
|
msgid "Code"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:68 ../Doc/library/difflib.rst:489
|
|
|
|
msgid "Meaning"
|
|
|
|
msgstr "Signification"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:70
|
|
|
|
msgid "``'- '``"
|
|
|
|
msgstr "``'- '``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:70
|
|
|
|
msgid "line unique to sequence 1"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:72
|
|
|
|
msgid "``'+ '``"
|
|
|
|
msgstr "``'+ '``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:72
|
|
|
|
msgid "line unique to sequence 2"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:74
|
|
|
|
msgid "``' '``"
|
|
|
|
msgstr "``' '``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:74
|
|
|
|
msgid "line common to both sequences"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:76
|
|
|
|
msgid "``'? '``"
|
|
|
|
msgstr "``'? '``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:76
|
|
|
|
msgid "line not present in either input sequence"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:79
|
|
|
|
msgid ""
|
|
|
|
"Lines beginning with '``?``' attempt to guide the eye to intraline "
|
|
|
|
"differences, and were not present in either input sequence. These lines can "
|
|
|
|
"be confusing if the sequences contain tab characters."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:86
|
|
|
|
msgid ""
|
|
|
|
"This class can be used to create an HTML table (or a complete HTML file "
|
|
|
|
"containing the table) showing a side by side, line by line comparison of "
|
|
|
|
"text with inter-line and intra-line change highlights. The table can be "
|
|
|
|
"generated in either full or contextual difference mode."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:91
|
|
|
|
msgid "The constructor for this class is:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:96
|
|
|
|
msgid "Initializes instance of :class:`HtmlDiff`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:98
|
|
|
|
msgid ""
|
|
|
|
"*tabsize* is an optional keyword argument to specify tab stop spacing and "
|
|
|
|
"defaults to ``8``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:101
|
|
|
|
msgid ""
|
|
|
|
"*wrapcolumn* is an optional keyword to specify column number where lines are "
|
|
|
|
"broken and wrapped, defaults to ``None`` where lines are not wrapped."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:104
|
|
|
|
msgid ""
|
|
|
|
"*linejunk* and *charjunk* are optional keyword arguments passed into :func:"
|
|
|
|
"`ndiff` (used by :class:`HtmlDiff` to generate the side by side HTML "
|
|
|
|
"differences). See :func:`ndiff` documentation for argument default values "
|
|
|
|
"and descriptions."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:108
|
|
|
|
msgid "The following methods are public:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:113
|
|
|
|
msgid ""
|
|
|
|
"Compares *fromlines* and *tolines* (lists of strings) and returns a string "
|
|
|
|
"which is a complete HTML file containing a table showing line by line "
|
|
|
|
"differences with inter-line and intra-line changes highlighted."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:117
|
|
|
|
msgid ""
|
|
|
|
"*fromdesc* and *todesc* are optional keyword arguments to specify from/to "
|
|
|
|
"file column header strings (both default to an empty string)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:120
|
|
|
|
msgid ""
|
|
|
|
"*context* and *numlines* are both optional keyword arguments. Set *context* "
|
|
|
|
"to ``True`` when contextual differences are to be shown, else the default is "
|
|
|
|
"``False`` to show the full files. *numlines* defaults to ``5``. When "
|
|
|
|
"*context* is ``True`` *numlines* controls the number of context lines which "
|
|
|
|
"surround the difference highlights. When *context* is ``False`` *numlines* "
|
|
|
|
"controls the number of lines which are shown before a difference highlight "
|
|
|
|
"when using the \"next\" hyperlinks (setting to zero would cause the \"next\" "
|
|
|
|
"hyperlinks to place the next difference highlight at the top of the browser "
|
|
|
|
"without any leading context)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:130
|
|
|
|
msgid ""
|
|
|
|
"*charset* keyword-only argument was added. The default charset of HTML "
|
|
|
|
"document changed from ``'ISO-8859-1'`` to ``'utf-8'``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:136
|
|
|
|
msgid ""
|
|
|
|
"Compares *fromlines* and *tolines* (lists of strings) and returns a string "
|
|
|
|
"which is a complete HTML table showing line by line differences with inter-"
|
|
|
|
"line and intra-line changes highlighted."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:140
|
|
|
|
msgid ""
|
|
|
|
"The arguments for this method are the same as those for the :meth:"
|
|
|
|
"`make_file` method."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:143
|
|
|
|
msgid ""
|
|
|
|
":file:`Tools/scripts/diff.py` is a command-line front-end to this class and "
|
|
|
|
"contains a good example of its use."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:149
|
|
|
|
msgid ""
|
|
|
|
"Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` "
|
|
|
|
"generating the delta lines) in context diff format."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:152
|
|
|
|
msgid ""
|
|
|
|
"Context diffs are a compact way of showing just the lines that have changed "
|
|
|
|
"plus a few lines of context. The changes are shown in a before/after "
|
|
|
|
"style. The number of context lines is set by *n* which defaults to three."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:156
|
|
|
|
msgid ""
|
|
|
|
"By default, the diff control lines (those with ``***`` or ``---``) are "
|
|
|
|
"created with a trailing newline. This is helpful so that inputs created "
|
|
|
|
"from :func:`io.IOBase.readlines` result in diffs that are suitable for use "
|
|
|
|
"with :func:`io.IOBase.writelines` since both the inputs and outputs have "
|
|
|
|
"trailing newlines."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:162 ../Doc/library/difflib.rst:293
|
|
|
|
msgid ""
|
|
|
|
"For inputs that do not have trailing newlines, set the *lineterm* argument "
|
|
|
|
"to ``\"\"`` so that the output will be uniformly newline free."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:165 ../Doc/library/difflib.rst:296
|
|
|
|
msgid ""
|
|
|
|
"The context diff format normally has a header for filenames and modification "
|
|
|
|
"times. Any or all of these may be specified using strings for *fromfile*, "
|
|
|
|
"*tofile*, *fromfiledate*, and *tofiledate*. The modification times are "
|
|
|
|
"normally expressed in the ISO 8601 format. If not specified, the strings "
|
|
|
|
"default to blanks."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:188 ../Doc/library/difflib.rst:317
|
|
|
|
msgid "See :ref:`difflib-interface` for a more detailed example."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:193
|
|
|
|
msgid ""
|
|
|
|
"Return a list of the best \"good enough\" matches. *word* is a sequence for "
|
|
|
|
"which close matches are desired (typically a string), and *possibilities* is "
|
|
|
|
"a list of sequences against which to match *word* (typically a list of "
|
|
|
|
"strings)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:197
|
|
|
|
msgid ""
|
|
|
|
"Optional argument *n* (default ``3``) is the maximum number of close matches "
|
|
|
|
"to return; *n* must be greater than ``0``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:200
|
|
|
|
msgid ""
|
|
|
|
"Optional argument *cutoff* (default ``0.6``) is a float in the range [0, 1]. "
|
|
|
|
"Possibilities that don't score at least that similar to *word* are ignored."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:203
|
|
|
|
msgid ""
|
|
|
|
"The best (no more than *n*) matches among the possibilities are returned in "
|
|
|
|
"a list, sorted by similarity score, most similar first."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:219
|
|
|
|
msgid ""
|
|
|
|
"Compare *a* and *b* (lists of strings); return a :class:`Differ`\\ -style "
|
|
|
|
"delta (a :term:`generator` generating the delta lines)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:222
|
|
|
|
msgid ""
|
|
|
|
"Optional keyword parameters *linejunk* and *charjunk* are filtering "
|
|
|
|
"functions (or ``None``):"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:225
|
|
|
|
msgid ""
|
|
|
|
"*linejunk*: A function that accepts a single string argument, and returns "
|
|
|
|
"true if the string is junk, or false if not. The default is ``None``. There "
|
|
|
|
"is also a module-level function :func:`IS_LINE_JUNK`, which filters out "
|
|
|
|
"lines without visible characters, except for at most one pound character "
|
|
|
|
"(``'#'``) -- however the underlying :class:`SequenceMatcher` class does a "
|
|
|
|
"dynamic analysis of which lines are so frequent as to constitute noise, and "
|
|
|
|
"this usually works better than using this function."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:233
|
|
|
|
msgid ""
|
|
|
|
"*charjunk*: A function that accepts a character (a string of length 1), and "
|
|
|
|
"returns if the character is junk, or false if not. The default is module-"
|
|
|
|
"level function :func:`IS_CHARACTER_JUNK`, which filters out whitespace "
|
|
|
|
"characters (a blank or tab; it's a bad idea to include newline in this!)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:238
|
|
|
|
msgid ""
|
|
|
|
":file:`Tools/scripts/ndiff.py` is a command-line front-end to this function."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:256
|
|
|
|
msgid "Return one of the two sequences that generated a delta."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:258
|
|
|
|
msgid ""
|
|
|
|
"Given a *sequence* produced by :meth:`Differ.compare` or :func:`ndiff`, "
|
|
|
|
"extract lines originating from file 1 or 2 (parameter *which*), stripping "
|
|
|
|
"off line prefixes."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:262
|
|
|
|
msgid "Example:"
|
|
|
|
msgstr "Exemple :"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:279
|
|
|
|
msgid ""
|
|
|
|
"Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` "
|
|
|
|
"generating the delta lines) in unified diff format."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:282
|
|
|
|
msgid ""
|
|
|
|
"Unified diffs are a compact way of showing just the lines that have changed "
|
|
|
|
"plus a few lines of context. The changes are shown in an inline style "
|
|
|
|
"(instead of separate before/after blocks). The number of context lines is "
|
|
|
|
"set by *n* which defaults to three."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:287
|
|
|
|
msgid ""
|
|
|
|
"By default, the diff control lines (those with ``---``, ``+++``, or ``@@``) "
|
|
|
|
"are created with a trailing newline. This is helpful so that inputs created "
|
|
|
|
"from :func:`io.IOBase.readlines` result in diffs that are suitable for use "
|
|
|
|
"with :func:`io.IOBase.writelines` since both the inputs and outputs have "
|
|
|
|
"trailing newlines."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:321
|
|
|
|
msgid ""
|
|
|
|
"Compare *a* and *b* (lists of bytes objects) using *dfunc*; yield a sequence "
|
|
|
|
"of delta lines (also bytes) in the format returned by *dfunc*. *dfunc* must "
|
|
|
|
"be a callable, typically either :func:`unified_diff` or :func:`context_diff`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:326
|
|
|
|
msgid ""
|
|
|
|
"Allows you to compare data with unknown or inconsistent encoding. All inputs "
|
|
|
|
"except *n* must be bytes objects, not str. Works by losslessly converting "
|
|
|
|
"all inputs (except *n*) to str, and calling ``dfunc(a, b, fromfile, tofile, "
|
|
|
|
"fromfiledate, tofiledate, n, lineterm)``. The output of *dfunc* is then "
|
|
|
|
"converted back to bytes, so the delta lines that you receive have the same "
|
|
|
|
"unknown/inconsistent encodings as *a* and *b*."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:337
|
|
|
|
msgid ""
|
|
|
|
"Return true for ignorable lines. The line *line* is ignorable if *line* is "
|
|
|
|
"blank or contains a single ``'#'``, otherwise it is not ignorable. Used as "
|
|
|
|
"a default for parameter *linejunk* in :func:`ndiff` in older versions."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:344
|
|
|
|
msgid ""
|
|
|
|
"Return true for ignorable characters. The character *ch* is ignorable if "
|
|
|
|
"*ch* is a space or tab, otherwise it is not ignorable. Used as a default "
|
|
|
|
"for parameter *charjunk* in :func:`ndiff`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:352
|
|
|
|
msgid ""
|
|
|
|
"`Pattern Matching: The Gestalt Approach <http://www.drdobbs.com/database/"
|
|
|
|
"pattern-matching-the-gestalt-approach/184407970>`_"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:352
|
|
|
|
msgid ""
|
|
|
|
"Discussion of a similar algorithm by John W. Ratcliff and D. E. Metzener. "
|
|
|
|
"This was published in `Dr. Dobb's Journal <http://www.drdobbs.com/>`_ in "
|
|
|
|
"July, 1988."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:359
|
|
|
|
msgid "SequenceMatcher Objects"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:361
|
|
|
|
msgid "The :class:`SequenceMatcher` class has this constructor:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:366
|
|
|
|
msgid ""
|
|
|
|
"Optional argument *isjunk* must be ``None`` (the default) or a one-argument "
|
|
|
|
"function that takes a sequence element and returns true if and only if the "
|
|
|
|
"element is \"junk\" and should be ignored. Passing ``None`` for *isjunk* is "
|
|
|
|
"equivalent to passing ``lambda x: 0``; in other words, no elements are "
|
|
|
|
"ignored. For example, pass::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:374
|
|
|
|
msgid ""
|
|
|
|
"if you're comparing lines as sequences of characters, and don't want to "
|
|
|
|
"synch up on blanks or hard tabs."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:377
|
|
|
|
msgid ""
|
|
|
|
"The optional arguments *a* and *b* are sequences to be compared; both "
|
|
|
|
"default to empty strings. The elements of both sequences must be :term:"
|
|
|
|
"`hashable`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:380
|
|
|
|
msgid ""
|
|
|
|
"The optional argument *autojunk* can be used to disable the automatic junk "
|
|
|
|
"heuristic."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:386
|
|
|
|
msgid ""
|
|
|
|
"SequenceMatcher objects get three data attributes: *bjunk* is the set of "
|
|
|
|
"elements of *b* for which *isjunk* is ``True``; *bpopular* is the set of non-"
|
|
|
|
"junk elements considered popular by the heuristic (if it is not disabled); "
|
|
|
|
"*b2j* is a dict mapping the remaining elements of *b* to a list of positions "
|
|
|
|
"where they occur. All three are reset whenever *b* is reset with :meth:"
|
|
|
|
"`set_seqs` or :meth:`set_seq2`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:393
|
|
|
|
msgid "The *bjunk* and *bpopular* attributes."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:396
|
|
|
|
msgid ":class:`SequenceMatcher` objects have the following methods:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:400
|
|
|
|
msgid "Set the two sequences to be compared."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:402
|
|
|
|
msgid ""
|
|
|
|
":class:`SequenceMatcher` computes and caches detailed information about the "
|
|
|
|
"second sequence, so if you want to compare one sequence against many "
|
|
|
|
"sequences, use :meth:`set_seq2` to set the commonly used sequence once and "
|
|
|
|
"call :meth:`set_seq1` repeatedly, once for each of the other sequences."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:410
|
|
|
|
msgid ""
|
|
|
|
"Set the first sequence to be compared. The second sequence to be compared "
|
|
|
|
"is not changed."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:416
|
|
|
|
msgid ""
|
|
|
|
"Set the second sequence to be compared. The first sequence to be compared "
|
|
|
|
"is not changed."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:422
|
|
|
|
msgid "Find longest matching block in ``a[alo:ahi]`` and ``b[blo:bhi]``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:424
|
|
|
|
msgid ""
|
|
|
|
"If *isjunk* was omitted or ``None``, :meth:`find_longest_match` returns "
|
|
|
|
"``(i, j, k)`` such that ``a[i:i+k]`` is equal to ``b[j:j+k]``, where ``alo "
|
|
|
|
"<= i <= i+k <= ahi`` and ``blo <= j <= j+k <= bhi``. For all ``(i', j', "
|
|
|
|
"k')`` meeting those conditions, the additional conditions ``k >= k'``, ``i "
|
|
|
|
"<= i'``, and if ``i == i'``, ``j <= j'`` are also met. In other words, of "
|
|
|
|
"all maximal matching blocks, return one that starts earliest in *a*, and of "
|
|
|
|
"all those maximal matching blocks that start earliest in *a*, return the one "
|
|
|
|
"that starts earliest in *b*."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:437
|
|
|
|
msgid ""
|
|
|
|
"If *isjunk* was provided, first the longest matching block is determined as "
|
|
|
|
"above, but with the additional restriction that no junk element appears in "
|
|
|
|
"the block. Then that block is extended as far as possible by matching "
|
|
|
|
"(only) junk elements on both sides. So the resulting block never matches on "
|
|
|
|
"junk except as identical junk happens to be adjacent to an interesting match."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:444
|
|
|
|
msgid ""
|
|
|
|
"Here's the same example as before, but considering blanks to be junk. That "
|
|
|
|
"prevents ``' abcd'`` from matching the ``' abcd'`` at the tail end of the "
|
|
|
|
"second sequence directly. Instead only the ``'abcd'`` can match, and "
|
|
|
|
"matches the leftmost ``'abcd'`` in the second sequence:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:453
|
|
|
|
msgid "If no blocks match, this returns ``(alo, blo, 0)``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:455
|
|
|
|
msgid "This method returns a :term:`named tuple` ``Match(a, b, size)``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:460
|
|
|
|
msgid ""
|
|
|
|
"Return list of triples describing matching subsequences. Each triple is of "
|
|
|
|
"the form ``(i, j, n)``, and means that ``a[i:i+n] == b[j:j+n]``. The "
|
|
|
|
"triples are monotonically increasing in *i* and *j*."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:464
|
|
|
|
msgid ""
|
|
|
|
"The last triple is a dummy, and has the value ``(len(a), len(b), 0)``. It "
|
|
|
|
"is the only triple with ``n == 0``. If ``(i, j, n)`` and ``(i', j', n')`` "
|
|
|
|
"are adjacent triples in the list, and the second is not the last triple in "
|
|
|
|
"the list, then ``i+n != i'`` or ``j+n != j'``; in other words, adjacent "
|
|
|
|
"triples always describe non-adjacent equal blocks."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:481
|
|
|
|
msgid ""
|
|
|
|
"Return list of 5-tuples describing how to turn *a* into *b*. Each tuple is "
|
|
|
|
"of the form ``(tag, i1, i2, j1, j2)``. The first tuple has ``i1 == j1 == "
|
|
|
|
"0``, and remaining tuples have *i1* equal to the *i2* from the preceding "
|
|
|
|
"tuple, and, likewise, *j1* equal to the previous *j2*."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:486
|
|
|
|
msgid "The *tag* values are strings, with these meanings:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:489
|
|
|
|
msgid "Value"
|
|
|
|
msgstr "Valeur"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:491
|
|
|
|
msgid "``'replace'``"
|
|
|
|
msgstr "``'replace'``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:491
|
|
|
|
msgid "``a[i1:i2]`` should be replaced by ``b[j1:j2]``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:494
|
|
|
|
msgid "``'delete'``"
|
|
|
|
msgstr "``'delete'``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:494
|
|
|
|
msgid "``a[i1:i2]`` should be deleted. Note that ``j1 == j2`` in this case."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:497
|
|
|
|
msgid "``'insert'``"
|
|
|
|
msgstr "``'insert'``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:497
|
|
|
|
msgid ""
|
|
|
|
"``b[j1:j2]`` should be inserted at ``a[i1:i1]``. Note that ``i1 == i2`` in "
|
|
|
|
"this case."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:501
|
|
|
|
msgid "``'equal'``"
|
|
|
|
msgstr "``'equal'``"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:501
|
|
|
|
msgid "``a[i1:i2] == b[j1:j2]`` (the sub-sequences are equal)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:505
|
|
|
|
msgid "For example::"
|
|
|
|
msgstr "Par exemple : ::"
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:522
|
|
|
|
msgid "Return a :term:`generator` of groups with up to *n* lines of context."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:524
|
|
|
|
msgid ""
|
|
|
|
"Starting with the groups returned by :meth:`get_opcodes`, this method splits "
|
|
|
|
"out smaller change clusters and eliminates intervening ranges which have no "
|
|
|
|
"changes."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:528
|
|
|
|
msgid "The groups are returned in the same format as :meth:`get_opcodes`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:533
|
|
|
|
msgid ""
|
|
|
|
"Return a measure of the sequences' similarity as a float in the range [0, 1]."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:536
|
|
|
|
msgid ""
|
|
|
|
"Where T is the total number of elements in both sequences, and M is the "
|
|
|
|
"number of matches, this is 2.0\\*M / T. Note that this is ``1.0`` if the "
|
|
|
|
"sequences are identical, and ``0.0`` if they have nothing in common."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:540
|
|
|
|
msgid ""
|
|
|
|
"This is expensive to compute if :meth:`get_matching_blocks` or :meth:"
|
|
|
|
"`get_opcodes` hasn't already been called, in which case you may want to try :"
|
|
|
|
"meth:`quick_ratio` or :meth:`real_quick_ratio` first to get an upper bound."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:548
|
|
|
|
msgid "Return an upper bound on :meth:`ratio` relatively quickly."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:553
|
|
|
|
msgid "Return an upper bound on :meth:`ratio` very quickly."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:556
|
|
|
|
msgid ""
|
|
|
|
"The three methods that return the ratio of matching to total characters can "
|
|
|
|
"give different results due to differing levels of approximation, although :"
|
|
|
|
"meth:`quick_ratio` and :meth:`real_quick_ratio` are always at least as large "
|
|
|
|
"as :meth:`ratio`:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:573
|
|
|
|
msgid "SequenceMatcher Examples"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:575
|
|
|
|
msgid "This example compares two strings, considering blanks to be \"junk\":"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:581
|
|
|
|
msgid ""
|
|
|
|
":meth:`ratio` returns a float in [0, 1], measuring the similarity of the "
|
|
|
|
"sequences. As a rule of thumb, a :meth:`ratio` value over 0.6 means the "
|
|
|
|
"sequences are close matches:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:588
|
|
|
|
msgid ""
|
|
|
|
"If you're only interested in where the sequences match, :meth:"
|
|
|
|
"`get_matching_blocks` is handy:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:597
|
|
|
|
msgid ""
|
|
|
|
"Note that the last tuple returned by :meth:`get_matching_blocks` is always a "
|
|
|
|
"dummy, ``(len(a), len(b), 0)``, and this is the only case in which the last "
|
|
|
|
"tuple element (number of elements matched) is ``0``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:601
|
|
|
|
msgid ""
|
|
|
|
"If you want to know how to change the first sequence into the second, use :"
|
|
|
|
"meth:`get_opcodes`:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:612
|
|
|
|
msgid ""
|
|
|
|
"The :func:`get_close_matches` function in this module which shows how simple "
|
|
|
|
"code building on :class:`SequenceMatcher` can be used to do useful work."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:616
|
|
|
|
msgid ""
|
|
|
|
"`Simple version control recipe <https://code.activestate.com/recipes/576729/"
|
|
|
|
">`_ for a small application built with :class:`SequenceMatcher`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:624
|
|
|
|
msgid "Differ Objects"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:626
|
|
|
|
msgid ""
|
|
|
|
"Note that :class:`Differ`\\ -generated deltas make no claim to be "
|
|
|
|
"**minimal** diffs. To the contrary, minimal diffs are often counter-"
|
|
|
|
"intuitive, because they synch up anywhere possible, sometimes accidental "
|
|
|
|
"matches 100 pages apart. Restricting synch points to contiguous matches "
|
|
|
|
"preserves some notion of locality, at the occasional cost of producing a "
|
|
|
|
"longer diff."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:632
|
|
|
|
msgid "The :class:`Differ` class has this constructor:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:637
|
|
|
|
msgid ""
|
|
|
|
"Optional keyword parameters *linejunk* and *charjunk* are for filter "
|
|
|
|
"functions (or ``None``):"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:640
|
|
|
|
msgid ""
|
|
|
|
"*linejunk*: A function that accepts a single string argument, and returns "
|
|
|
|
"true if the string is junk. The default is ``None``, meaning that no line "
|
|
|
|
"is considered junk."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:644
|
|
|
|
msgid ""
|
|
|
|
"*charjunk*: A function that accepts a single character argument (a string of "
|
|
|
|
"length 1), and returns true if the character is junk. The default is "
|
|
|
|
"``None``, meaning that no character is considered junk."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:648
|
|
|
|
msgid ""
|
|
|
|
"These junk-filtering functions speed up matching to find differences and do "
|
|
|
|
"not cause any differing lines or characters to be ignored. Read the "
|
|
|
|
"description of the :meth:`~SequenceMatcher.find_longest_match` method's "
|
|
|
|
"*isjunk* parameter for an explanation."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:654
|
|
|
|
msgid ""
|
|
|
|
":class:`Differ` objects are used (deltas generated) via a single method:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:659
|
|
|
|
msgid ""
|
|
|
|
"Compare two sequences of lines, and generate the delta (a sequence of lines)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:661
|
|
|
|
msgid ""
|
|
|
|
"Each sequence must contain individual single-line strings ending with "
|
|
|
|
"newlines. Such sequences can be obtained from the :meth:`~io.IOBase."
|
|
|
|
"readlines` method of file-like objects. The delta generated also consists "
|
|
|
|
"of newline-terminated strings, ready to be printed as-is via the :meth:`~io."
|
|
|
|
"IOBase.writelines` method of a file-like object."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:672
|
|
|
|
msgid "Differ Example"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:674
|
|
|
|
msgid ""
|
|
|
|
"This example compares two texts. First we set up the texts, sequences of "
|
|
|
|
"individual single-line strings ending with newlines (such sequences can also "
|
|
|
|
"be obtained from the :meth:`~io.BaseIO.readlines` method of file-like "
|
|
|
|
"objects):"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:693
|
|
|
|
msgid "Next we instantiate a Differ object:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:697
|
|
|
|
msgid ""
|
|
|
|
"Note that when instantiating a :class:`Differ` object we may pass functions "
|
|
|
|
"to filter out line and character \"junk.\" See the :meth:`Differ` "
|
|
|
|
"constructor for details."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:701
|
|
|
|
msgid "Finally, we compare the two:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:705
|
|
|
|
msgid "``result`` is a list of strings, so let's pretty-print it:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:720
|
|
|
|
msgid "As a single multi-line string it looks like this:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:739
|
|
|
|
msgid "A command-line interface to difflib"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/difflib.rst:741
|
|
|
|
msgid ""
|
|
|
|
"This example shows how to use difflib to create a ``diff``-like utility. It "
|
|
|
|
"is also contained in the Python source distribution, as :file:`Tools/scripts/"
|
|
|
|
"diff.py`."
|
|
|
|
msgstr ""
|