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)
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
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"]