Codebase list bundlewrap / cee1657
New upstream release Jonathan Carter 5 years ago
13 changed file(s) with 60 addition(s) and 29 deletion(s). Raw diff Collapse all Expand all
00 language: python
11 python:
22 - 2.7
3 - 3.4
43 - 3.5
54 - 3.6
5 - 3.7
6 matrix: # 3.4 is only available on trusty
7 include:
8 - python: 3.4
9 dist: trusty
10 exclude:
11 - python: 3.4
12 dist: xenial
13 dist: xenial # required for Python 3.7 https://github.com/travis-ci/travis-ci/issues/9815
614 services:
715 - postgresql
816 install:
0 # 3.5.1
1
2 2018-07-08
3
4 * added support for Python 3.7
5 * fixed merged metadata not overwriting atomic() values
6
7
08 # 3.5.0
19
210 2018-06-12
00 # -*- coding: utf-8 -*-
11 from __future__ import unicode_literals
22
3 VERSION = (3, 5, 0)
3 VERSION = (3, 5, 1)
44 VERSION_STRING = ".".join([str(v) for v in VERSION])
138138 for raw_pattern in ignore_patterns.split(","):
139139 if raw_pattern:
140140 patterns.add(compile_regex(raw_pattern))
141 found_something = False
142141 for identifier, call_count in pristine_repo.vault._call_log.items():
143142 if call_count == 1:
144 ignore = False
145143 for pattern in patterns:
146144 if pattern.search(identifier):
147 ignore = True
148145 break
149 if not ignore:
146 else:
150147 io.stderr(_(
151148 "{x} identifier passed only once to repo.vault.[human_]password_for(): {i}"
152149 ).format(
153150 i=bold(identifier),
154151 x=red("✘"),
155152 ))
156 found_something = True
157 if found_something:
158 exit(1)
159 else:
160 io.stdout(_(
161 "{x} all arguments to repo.vault.[human_]password_for() used at least twice"
162 ).format(x=green("✓")))
153 exit(1)
154 io.stdout(_(
155 "{x} all arguments to repo.vault.[human_]password_for() used at least twice"
156 ).format(x=green("✓")))
163157
164158
165159 def test_empty_groups(repo):
285285 for item_type in item_types:
286286 block_concurrent = [item_type.ITEM_TYPE_NAME]
287287 block_concurrent.extend(item_type.block_concurrent(node_os, node_os_version))
288 found = False
289288 for blocked_types in chain_groups:
290289 for blocked_type in block_concurrent:
291290 if blocked_type in blocked_types:
292291 blocked_types.extend(block_concurrent)
293 found = True
294292 break
295 if not found:
293 else:
296294 chain_groups.append(block_concurrent)
297295
298296 # daisy-chain all items of the chain group while respecting existing
157157 result = self.node.run("find {} -maxdepth 1 -print0".format(quote(self.name)))
158158 for line in result.stdout.split(b"\0"):
159159 line = line.decode('utf-8')
160 found = False
161160 for item_type in ('directory', 'file', 'symlink'):
162 if found:
163 break
164161 for item in self.node.items:
165162 if (
166163 item.id == "{}:{}".format(item_type, line) or
167164 item.id.startswith("{}:{}/".format(item_type, line))
168165 ):
169 found = True
170166 break
171 if not found:
167 else:
168 continue
169 break
170 else:
172171 # this file or directory is not managed
173172 io.debug((
174173 "found unmanaged path below {dirpath} on {node}, "
187187 item classes globally.
188188 """
189189 if not isdir(path):
190 raise StopIteration()
190 return
191191 for filename in listdir(path):
192192 filepath = join(path, filename)
193193 if not filename.endswith(".py") or \
215215 merged = base.copy()
216216
217217 for key, value in update.items():
218 merge = key in base and not isinstance(value, _Atomic)
218 merge = (
219 key in base and
220 not isinstance(value, _Atomic) and
221 not isinstance(base[key], _Atomic)
222 )
219223 if merge and isinstance(base[key], dict):
220224 merged[key] = merge_dict(base[key], value)
221225 elif (
210210 if not item._deps:
211211 items_with_no_incoming_or_outgoing_deps.add(item)
212212 else:
213 found_incoming = False
214213 for other_item in items:
215214 if item == other_item:
216215 continue
217216 if item.id in other_item._deps:
218 found_incoming = True
219217 break
220 if not found_incoming:
218 else:
221219 items_with_no_incoming_or_outgoing_deps.add(item)
222220
223221 filtered_items = list(filter(
0 bundlewrap (3.5.1-1) unstable; urgency=medium
1
2 * New upstream release
3 * Update standards version to 4.2.0
4
5 -- Jonathan Carter <jcc@debian.org> Thu, 02 Aug 2018 16:59:09 +0200
6
07 bundlewrap (3.5.0-1) unstable; urgency=medium
18
29 [ Ondřej Nový ]
99 python3-setuptools,
1010 python3-requests,
1111 python3-cryptography
12 Standards-Version: 4.1.4
12 Standards-Version: 4.2.0
1313 Homepage: http://bundlewrap.org/
1414 Vcs-Git: https://salsa.debian.org/python-team/applications/bundlewrap.git
1515 Vcs-Browser: https://salsa.debian.org/python-team/applications/bundlewrap
1616
1717 setup(
1818 name="bundlewrap",
19 version="3.5.0",
19 version="3.5.1",
2020 description="Config management with Python",
2121 long_description=(
2222 "By allowing for easy and low-overhead config management, BundleWrap fills the gap between complex deployments using Chef or Puppet and old school system administration over SSH.\n"
4545 "Programming Language :: Python :: 3.4",
4646 "Programming Language :: Python :: 3.5",
4747 "Programming Language :: Python :: 3.6",
48 "Programming Language :: Python :: 3.7",
4849 "Topic :: System :: Installation/Setup",
4950 "Topic :: System :: Systems Administration",
5051 ],
11 from __future__ import unicode_literals
22
33 from bundlewrap.utils.dicts import merge_dict
4 from bundlewrap.metadata import blame_changed_paths
4 from bundlewrap.metadata import atomic, blame_changed_paths
5
6
7 def test_atomic_no_merge_base():
8 assert merge_dict(
9 {1: atomic([5])},
10 {1: [6, 7]},
11 ) == {1: [6, 7]}
12
13
14 def test_atomic_no_merge_update():
15 assert merge_dict(
16 {1: [5]},
17 {1: atomic([6, 7])},
18 ) == {1: [6, 7]}
519
620
721 def test_blame_and_merge():