Пример #1
0
 def reload(self):
     if not self.reloading:
         from refinery.lib.loader import get_all_entry_points
         self.reloading = True
         self.units.clear()
         self.cache.clear()
         for executable in get_all_entry_points():
             name = executable.__qualname__
             self.units[name] = executable.__module__
             self.cache[name] = executable
         self.reloading = False
         self.save()
Пример #2
0
def main():
    if sys.version_info < (3, 6):
        print('ERROR: Python version at least 3.6 is required.', file=sys.stderr)
        sys.exit(0xFADE)
    if sys.version_info < (3, 7):
        print('WARNING: Python 3.7 or higher is recommended, some features will be impaired.',
            file=sys.stderr)

    def magic(x):
        return '{}-win64'.format(x) if os.name == 'nt' and x == 'python-magic' else x

    requirements = [magic(l.strip()) for l in open('requirements.txt', 'r')]
    requirements = [r for r in requirements if r]

    with open('README.md', 'r', encoding='UTF8') as README:
        readme = README.read()
        readme = re.sub('(?<=\\])\\((?!\\w+://)(.*?)\\)', F'({GITHUB}blob/master/\\1)', readme)

    setuptools.setup(
        name='binary-refinery',
        version='0.1.1',
        author='Jesko Hüttenhain',
        description='A toolkit to transform and refine (mostly) binary data.',
        long_description=readme,
        long_description_content_type='text/markdown',
        url=GITHUB,
        python_requires='>=3.6',
        classifiers=[
            'Development Status :: 3 - Alpha',
            'License :: Other/Proprietary License',
            'Operating System :: OS Independent',
            'Programming Language :: Python :: 3 :: Only',
            'Topic :: System :: Shells',
            'Topic :: Utilities'
        ],
        packages=setuptools.find_packages(
            exclude=('test*',)
        ),
        install_requires=requirements,
        entry_points={
            'console_scripts': [
                '{}{}={}:{}.run'.format(
                    PREFIX,
                    normalize_name(item.__qualname__),
                    item.__module__,
                    item.__qualname__
                )
                for item in loader.get_all_entry_points()
            ] + [
                'binre=refinery.explore:explorer'
            ]
        }
    )
Пример #3
0
 def test_retrofitting(self):
     log = logging.getLogger()
     log.warning('retrofit not enforced.')
     for unit in get_all_entry_points():
         legacy_interface = unit.interface.__func__ is not Unit.interface.__func__
         if not _retrofitted(unit):
             if legacy_interface:
                 log.warning(F'requires retrofit: {unit.__qualname__}')
             continue
         self.assertFalse(
             legacy_interface,
             F'{unit.__qualname__}, is retrofitted but defines an interface.'
         )
Пример #4
0
 def load(self, *args, **kwargs):
     name = self._relative_module_path(self.__class__.__module__)
     try:
         entry = getattr(refinery, name)
     except AttributeError:
         from refinery.lib.loader import get_all_entry_points
         for entry in get_all_entry_points():
             if entry.__name__ == name:
                 break
             if self._relative_module_path(entry.__module__) == name:
                 break
         else:
             raise NameUnknownException(name)
     return entry(*args, **kwargs)
Пример #5
0
 def setUp(self):
     super().setUp()
     self.invertibles = {}
     self.structured_buffers = [
         B'A' * 1024, B'B' + B'A' * 1024, B'FOO' * 200,
         bytes(range(1, 200))
     ]
     for item in loader.get_all_entry_points():
         if item.is_reversible:
             name = item.__qualname__
             try:
                 self.invertibles[name] = (item(), item(reverse=True))
             except Exception:
                 pass
Пример #6
0
 def load(self, *args, **kwargs):
     name = self._relative_module_path(self.__class__.__module__)
     try:
         entry = getattr(refinery, name)
     except AttributeError:
         from refinery.lib.loader import get_all_entry_points
         for entry in get_all_entry_points():
             if entry.__name__ == name:
                 break
             if self._relative_module_path(entry.__module__) == name:
                 break
         else:
             raise NameUnknownException(name)
     unit = entry.assemble(*args, **kwargs)
     unit.log_level = refinery.units.LogLevel.DETACHED
     return unit
Пример #7
0
 def test_no_legacy_interfaces(self):
     for unit in get_all_entry_points():
         self.assertFalse(
             hasattr(unit, 'interface') and callable(unit.interface))
Пример #8
0
 def test_unique_entry_point_names(self):
     entry_points = set()
     for entry in get_all_entry_points():
         self.assertNotIn(entry.__qualname__, entry_points)
         entry_points.add(entry.__qualname__)
     self.assertGreaterEqual(len(entry_points), 10)