Add `.Collection` ``coll`` as a sub-collection of this one. :param coll: The `.Collection` to add. :param str name: The name to attach the collection as. Defaults to the collection's own internal name. :param default: Whether th
(
self,
coll: "Collection",
name: Optional[str] = None,
default: Optional[bool] = None,
)
| 283 | self.default = name |
| 284 | |
| 285 | def add_collection( |
| 286 | self, |
| 287 | coll: "Collection", |
| 288 | name: Optional[str] = None, |
| 289 | default: Optional[bool] = None, |
| 290 | ) -> None: |
| 291 | """ |
| 292 | Add `.Collection` ``coll`` as a sub-collection of this one. |
| 293 | |
| 294 | :param coll: The `.Collection` to add. |
| 295 | |
| 296 | :param str name: |
| 297 | The name to attach the collection as. Defaults to the collection's |
| 298 | own internal name. |
| 299 | |
| 300 | :param default: |
| 301 | Whether this sub-collection('s default task-or-collection) should |
| 302 | be the default invocation of the parent collection. |
| 303 | |
| 304 | .. versionadded:: 1.0 |
| 305 | .. versionchanged:: 1.5 |
| 306 | Added the ``default`` parameter. |
| 307 | """ |
| 308 | # Handle module-as-collection |
| 309 | if isinstance(coll, ModuleType): |
| 310 | coll = Collection.from_module(coll) |
| 311 | # Ensure we have a name, or die trying |
| 312 | name = name or coll.name |
| 313 | if not name: |
| 314 | raise ValueError("Non-root collections must have a name!") |
| 315 | name = self.transform(name) |
| 316 | # Test for conflict |
| 317 | if name in self.tasks: |
| 318 | err = "Name conflict: this collection has a task named {!r} already" # noqa |
| 319 | raise ValueError(err.format(name)) |
| 320 | # Insert |
| 321 | self.collections[name] = coll |
| 322 | if default: |
| 323 | self._check_default_collision(name) |
| 324 | self.default = name |
| 325 | |
| 326 | def _check_default_collision(self, name: str) -> None: |
| 327 | if self.default: |
no test coverage detected