def __from_data(cls, data): meta_vars = fix_kw(data["meta"]) # variables = data["variables"] install_paths = data.get("install_paths", None) executables = {} for name, executable in data["executables"].items(): executables[name] = Executable.from_parse_dict(fix_kw(executable)) file_sections = {} def json_to_file_section(data): category = data["category"] name = data["name"] section = InstalledSection(category, name, data["source_dir"], data["target_dir"], data["files"]) return category, name, section for section in data["file_sections"]: category, name, files = json_to_file_section(section) if category in file_sections: if name in file_sections[category]: raise ValueError("section %s of type %s already exists !" % (name, category)) file_sections[category][name] = files else: file_sections[category] = {name: files} return cls(file_sections, meta_vars, executables, install_paths)
def test_basic(self): exe = Executable.from_representation("foo = core:main") self.assertEqual(exe.name, "foo") self.assertEqual(exe.module, "core") self.assertEqual(exe.function, "main") self.assertEqual(exe.full_representation(), "foo = core:main")
def __from_data(cls, data): meta_vars = fix_kw(data["meta"]) #variables = data["variables"] install_paths = data.get("install_paths", None) executables = {} for name, executable in data["executables"].items(): executables[name] = Executable.from_parse_dict(fix_kw(executable)) file_sections = {} def json_to_file_section(data): category = data["category"] name = data["name"] section = InstalledSection(category, name, data["source_dir"], data["target_dir"], data["files"]) return category, name, section for section in data["file_sections"]: category, name, files = json_to_file_section(section) if category in file_sections: if name in file_sections[category]: raise ValueError("section %s of type %s already exists !" % (name, category)) file_sections[category][name] = files else: file_sections[category] = {name: files} return cls(file_sections, meta_vars, executables, install_paths)
def __from_data(cls, data): def _encode_kw(d): return dict([(k.encode(), v) for k, v in d.items()]) meta_vars = _encode_kw(data["meta"]) path_vars = data["variables"]["paths"] executables = {} for name, executable in data["variables"]["executables"].items(): executables[name] = Executable.from_parse_dict(_encode_kw(executable)) file_sections = {} def json_to_file_section(data): tp, section_name = data["name"].split(":", 1) section = InstalledSection(tp, section_name, data["source_dir"], data["target_dir"], data["files"]) return tp, section_name, section for section in data["file_sections"]: tp, name, files = json_to_file_section(section) if tp in file_sections: if name in file_sections[tp]: raise ValueError("section %s of type %s already exists !" % (name, type)) file_sections[tp][name] = files else: file_sections[tp] = {name: files} return cls(file_sections, meta_vars, path_vars, executables)
def distutils_to_package_description(dist): root = bento.core.node.Node("", None) top = root.find_dir(os.getcwd()) data = {} data['name'] = dist.get_name() data['version'] = dist.get_version() data['author'] = dist.get_author() data['author_email'] = dist.get_author_email() data['maintainer'] = dist.get_contact() data['maintainer_email'] = dist.get_contact_email() data['summary'] = dist.get_description() data['description'] = dist.get_long_description().replace("#", "\#") data['license'] = dist.get_license() data['platforms'] = dist.get_platforms() data['download_url'] = dist.get_download_url() data['url'] = dist.get_url() # XXX: reliable way to detect whether Distribution was monkey-patched by # setuptools try: reqs = getattr(dist, "install_requires") # FIXME: how to detect this correctly if is_string(reqs): reqs = [reqs] data['install_requires'] = reqs except AttributeError: pass if dist.py_modules is None: data['py_modules'] = [] else: data['py_modules'] = dist.py_modules if dist.packages is None: packages = [] else: packages = dist.packages data['packages'] = validate_packages(packages, top) if dist.ext_modules: data['extensions'] = dict([(e.name, e) for e in dist.ext_modules]) else: data['extensions'] = {} data['classifiers'] = dist.get_classifiers() data["executables"] = {} entry_points = entry_points_from_dist(dist) if entry_points: console_scripts = entry_points.get("console_scripts", []) for entry in console_scripts: exe = Executable.from_representation(entry) data["executables"][exe.name] = exe return PackageDescription(**data)
def distutils_to_package_description(dist): root = bento.core.node.Node("", None) top = root.find_dir(os.getcwd()) data = {} data['name'] = dist.get_name() data['version'] = dist.get_version() data['author'] = dist.get_author() data['author_email'] = dist.get_author_email() data['maintainer'] = dist.get_contact() data['maintainer_email'] = dist.get_contact_email() data['summary'] = dist.get_description() data['description'] = dist.get_long_description().replace("#", "\#") data['license'] = dist.get_license() data['platforms'] = dist.get_platforms() data['download_url'] = dist.get_download_url() data['url'] = dist.get_url() # XXX: reliable way to detect whether Distribution was monkey-patched by # setuptools try: reqs = getattr(dist, "install_requires") # FIXME: how to detect this correctly if issubclass(type(reqs), (str, unicode)): reqs = [reqs] data['install_requires'] = reqs except AttributeError: pass if dist.py_modules is None: data['py_modules'] = [] else: data['py_modules'] = dist.py_modules if dist.packages is None: packages = [] else: packages = dist.packages data['packages'] = validate_packages(packages, top) if dist.ext_modules: data['extensions'] = dict([(e.name, e) for e in dist.ext_modules]) else: data['extensions'] = {} data['classifiers'] = dist.get_classifiers() data["executables"] = {} entry_points = entry_points_from_dist(dist) if entry_points: console_scripts = entry_points.get("console_scripts", []) for entry in console_scripts: exe = Executable.from_representation(entry) data["executables"][exe.name] = exe return PackageDescription(**data)
def build_executables_from_dict(executables_d): executables = {} for name, executable in executables_d.items(): executables[name] = Executable.from_parse_dict(executable) return executables
def test_create_win32_script(self): executable = Executable("foo", "foo.bar", "fubar") r_list = set(["foo-script.py", "foo.exe", "foo.exe.manifest"]) self._test_create_script(create_win32_script, executable, r_list)
def test_create_posix_script(self): r_list = ["foo"] executable = Executable("foo", "foo.bar", "fubar") self._test_create_script(create_posix_script, executable, r_list)
def test_create_script_on_posix(self): r_list = set(["foo"]) executable = Executable("foo", "foo.bar", "fubar") self._test_create_scripts(executable, r_list)
def test_create_script_on_win32(self): r_list = set(["foo-script.py", "foo.exe", "foo.exe.manifest"]) executable = Executable("foo", "foo.bar", "fubar") self._test_create_scripts(executable, r_list)