예제 #1
0
    def update_content(self, content, update_hashes=True):
        if self.file_type == filetypes.tox_ini:
            updater_class = updater.ToxINIUpdater
        elif self.file_type == filetypes.conda_yml:
            updater_class = updater.CondaYMLUpdater
        elif self.file_type == filetypes.requirements_txt:
            updater_class = updater.RequirementsTXTUpdater
        elif self.file_type == filetypes.pipfile:
            updater_class = updater.PipfileUpdater
        elif self.file_type == filetypes.pipfile_lock:
            updater_class = updater.PipfileLockUpdater
        elif self.file_type == filetypes.setup_cfg:
            updater_class = updater.SetupCFGUpdater
        else:
            raise NotImplementedError

        dep = Dependency(name=self.name,
                         specs=self.specs,
                         line=self.line,
                         line_numbers=[
                             self.lineno,
                         ] if self.lineno != 0 else None,
                         dependency_type=self.file_type,
                         hashes=self.hashes,
                         extras=self.extras)
        hashes = []
        if self.hashes and update_hashes:
            for item in self.get_hashes(self.latest_version_within_specs):
                hashes.append({"method": "sha256", "hash": item["hash"]})

        return updater_class.update(content=content,
                                    dependency=dep,
                                    version=self.latest_version_within_specs,
                                    hashes=hashes)
예제 #2
0
def test_dependency_deserialize():
    d = {"name": "foo", "specs": [], "line": "foo==1.2.3"}

    dep = Dependency.deserialize(d)

    assert d["name"] == dep.name
    assert d["specs"] == dep.specs
    assert d["line"] == dep.line

    d["extras"] = "some-extras"
    d["line_numbers"] = (0, 4)
    d["index_server"] = "some-foo-server"
    d["hashes"] = {"method": "sha256", "hash": "the hash"}
    d["dependency_type"] = filetypes.requirements_txt

    dep = Dependency.deserialize(d)

    assert d["extras"] == dep.extras
    assert d["line_numbers"] == dep.line_numbers
    assert d["index_server"] == dep.index_server
    assert d["hashes"] == dep.hashes
    assert d["dependency_type"] == dep.dependency_type
예제 #3
0
def test_dependency_serialize():
    dep = Dependency(name="foo", specs=(), line="foo==1.2.3")

    serialized = dep.serialize()
    assert dep.name == serialized["name"]
    assert dep.specs == serialized["specs"]
    assert dep.line == serialized["line"]

    dep.extras = "some-extras"
    dep.line_numbers = (0, 4)
    dep.index_server = "some-foo-server"
    dep.hashes = {"method": "sha256", "hash": "the hash"}
    dep.dependency_type = filetypes.requirements_txt

    serialized = dep.serialize()
    assert dep.extras == serialized["extras"]
    assert dep.line_numbers == serialized["line_numbers"]
    assert dep.hashes == serialized["hashes"]
    assert dep.dependency_type == serialized["dependency_type"]