summaryrefslogtreecommitdiff
path: root/helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'helpers.py')
-rw-r--r--helpers.py81
1 files changed, 5 insertions, 76 deletions
diff --git a/helpers.py b/helpers.py
index 34d4688..76d5838 100644
--- a/helpers.py
+++ b/helpers.py
@@ -16,66 +16,14 @@
"""Miscellaneous useful stuff."""
-
-def single_plural(n, single, plural):
- """Return a single or plural form of a noun based on number."""
- if n == 1:
- return single
- else:
- return plural
-
-
-def defines_to_dict(defines):
- """Convert a list of definition strings to a dictionary."""
- if defines is None:
- return None
- result = {}
- for define in defines:
- kv = define.split('=', 1)
- if len(kv) == 1:
- result[define.strip()] = 1
- else:
- result[kv[0].strip()] = kv[1].strip()
- return result
-
-
-def invert_dict(d):
- """Invert a dictionary with keys matching each value turned into a list."""
- # Based on recipe from ASPN
- result = {}
- for k, v in d.iteritems():
- keys = result.setdefault(v, [])
- keys.append(k)
- return result
-
-
-def invert_dictset(d):
- """Invert a dictionary with keys matching a set of values, turned into lists."""
- # Based on recipe from ASPN
- result = {}
- for k, c in d.iteritems():
- for v in c:
- keys = result.setdefault(v, [])
- keys.append(k)
- return result
-
-
-def _common_path_and_rest(l1, l2, common=[]):
- # From http://code.activestate.com/recipes/208993/
- if len(l1) < 1: return (common, l1, l2)
- if len(l2) < 1: return (common, l1, l2)
- if l1[0] != l2[0]: return (common, l1, l2)
- return _common_path_and_rest(l1[1:], l2[1:], common+[l1[0]])
-
-
-def common_path(path1, path2):
- """Find the common bit of 2 paths."""
- return ''.join(_common_path_and_rest(path1, path2)[0])
+from bzrlib.plugins.fastimport.fastimport.helpers import (
+ common_path,
+ )
def common_directory(paths):
"""Find the deepest common directory of a list of paths.
-
+
:return: if no paths are provided, None is returned;
if there is no common directory, '' is returned;
otherwise the common directory with a trailing / is returned.
@@ -106,7 +54,7 @@ def escape_commit_message(message):
"""Replace xml-incompatible control characters."""
# This really ought to be provided by bzrlib.
# Code copied from bzrlib.commit.
-
+
# Python strings can include characters that can't be
# represented in well-formed XML; escape characters that
# aren't listed in the XML specification
@@ -119,25 +67,6 @@ def escape_commit_message(message):
return message
-def binary_stream(stream):
- """Ensure a stream is binary on Windows.
-
- :return: the stream
- """
- try:
- import os
- if os.name == 'nt':
- fileno = getattr(stream, 'fileno', None)
- if fileno:
- no = fileno()
- if no >= 0: # -1 means we're working as subprocess
- import msvcrt
- msvcrt.setmode(no, os.O_BINARY)
- except ImportError:
- pass
- return stream
-
-
def best_format_for_objects_in_a_repository(repo):
"""Find the high-level format for branches and trees given a repository.