Пример #1
0
    def _migrate_dependency_groups(self, pipenv_key: str, group_name: str):
        if "group" not in self._pyproject["tool"]["poetry"]:
            self._pyproject["tool"]["poetry"]["group"] = Table(
                Container(), Trivia(), False, is_super_table=True
            )
        if group_name not in self._pyproject["tool"]["poetry"]["group"]:
            self._pyproject["tool"]["poetry"]["group"][group_name] = Table(
                Container(), Trivia(), False, is_super_table=True
            ).add("dependencies", table())

        group = self._pyproject["tool"]["poetry"]["group"][group_name]
        for name, properties in self._pipenv.get(pipenv_key, {}).items():
            name, extras = self._split_extras(name)
            if name in group["dependencies"]:
                continue
            properties = self._reformat_dependency_properties(extras, properties)
            group["dependencies"].add(name, properties)
        self._pyproject["tool"]["poetry"]["group"][group_name] = group
Пример #2
0
    def save(self):  # type: () -> None
        data = self.data

        if self._poetry_config is not None:
            data["tool"]["poetry"] = self._poetry_config

        if self._build_system is not None:
            if "build-system" not in data:
                data["build-system"] = Container()
            data["build-system"]["requires"] = self._build_system.requires
            data["build-system"]["build-backend"] = self._build_system.build_backend

        self.file.write(data=data)
Пример #3
0
    def save(self) -> None:
        from tomlkit.container import Container

        data = self.data

        if self._build_system is not None:
            if "build-system" not in data:
                data["build-system"] = Container()

            build_system = cast(Container, data["build-system"])
            build_system["requires"] = self._build_system.requires
            build_system["build-backend"] = self._build_system.build_backend

        self.file.write(data=data)
Пример #4
0
def load_pipfile(p=None):
    # type: (Optional[path.Path]) -> TOMLDocument
    if p is None:
        p = path.Path(ROOT_PIPFILE)

    with open(p, "r") as fp:
        doc = loads(fp.read())
    doc._parsed = True

    sources = []
    have_default = False
    for key in ("source", "sources"):
        try:
            item = doc.item(key)  # type: Union[AoT, Table]
        except KeyError:
            continue

        doc.remove(key)

        if isinstance(item, AoT):
            items = item.body
        else:
            items = item.value

        for source in items:
            if not isinstance(source, Table):
                source = Table(source, Trivia(trail=""), is_aot_element=True)
            container = source.value
            reorder_container(container,
                              pipfile_source_key,
                              key_type=KeyType.Basic)
            if not have_default and is_default(container):
                have_default = True

            sources.append(source)

    if not have_default:
        source = Table(Container(True), Trivia(), True)
        for k, v in DEFAULT_SOURCE:
            source.append(k, v)

        sources.insert(0, source)

    doc.append("source", AoT(sources, parsed=True))
    return doc
Пример #5
0
 def toml_elements_sorted(self, original: Item) -> Item:
     """Returns a sorted item, recursing collections to their base."""
     if isinstance(original, Table):
         original.trivia.indent = "\n"
         new_table = Table(
             Container(),
             trivia=original.trivia,
             is_aot_element=original.is_aot_element(),
             is_super_table=original.is_super_table(),
         )
         for key, value in self.sorted_children_table(original):
             new_table[key] = self.toml_elements_sorted(value)
         return new_table
     if isinstance(original, AoT):
         new_aot = aot()
         for aot_item in original:
             new_aot.append(self.toml_elements_sorted(aot_item))
         return new_aot
     if isinstance(original, Item):
         original.trivia.indent = ""
         return original
     raise TypeError("Invalid TOML; " + str(type(original)) +
                     " is not an Item.")
Пример #6
0
def test_source_to_table(source: Source, table_body: dict[str, str | bool]):
    table = Table(Container(), Trivia(), False)
    table._value = table_body

    assert source_to_table(source) == table