# python setup.py --dry-run --verbose install import os.path import pathlib import shutil import subprocess from setuptools import setup, find_packages, Command, Extension from setuptools.command.build_ext import build_ext #from medashare.magic_wrap import compile_file class file_ext(build_ext): def __init__(self, dist): super().__init__(dist) def run(self): # do the building #print(repr(self.distribution)) fnames = [ (x, pathlib.Path(self.build_lib) / 'medashare' / x) for x in self.get_source_files() ] oldcwd = os.getcwd() for src, dst in fnames: os.chdir(oldcwd) shutil.copyfile(src, dst) os.chdir(dst.parent) cmd = [ 'file', '-C', '-m' ] + [ str(dst) for src, dst in fnames ] #print('running:', cmd) r = subprocess.run(cmd) os.chdir(oldcwd) r.check_returncode() def get_outputs(self): return [ '%s.mgc' % i for i in self.get_source_files() ] # method build_extension not needed, in run setup( name='medashare', version='0.1.1', author='John-Mark Gurney', author_email='jmg@funkthat.com', packages=find_packages(), #url='', license='BSD', description='File Metadata sharing, query and storing utility.', #download_url='', long_description=open('README.md').read(), python_requires='>=3.8', # This isn't needed till magic_wrap.py can use it #cmdclass=dict(build_ext=file_ext), #ext_modules=[ Extension(name='magic', sources=['medashare/magic']) ], install_requires=[ 'alembic', 'base58', 'edgold @ git+https://www.funkthat.com/gitea/jmg/ed448goldilocks.git@pyupdate#egg=edgold&subdirectory=python', 'databases[sqlite]', 'fastapi', 'fastapi_restful', 'httpx', 'SQLAlchemy', 'hypercorn', # option, for server only? 'orm', 'pasn1 @ git+https://www.funkthat.com/gitea/jmg/pasn1.git@c6c64510b42292557ace2b77272eb32cb647399d#egg=pasn1', 'python-libarchive @ git+https://www.funkthat.com/gitea/jmg/python-libarchive.git#egg=python-libarchive', 'file-magic @ git+https://github.com/file/file.git#egg=file-magic&subdirectory=python', 'pydantic[dotenv]', ], include_package_data=True, package_data={ 'medashare': [ 'alembic/**/*.py', 'alembic.ini', ], }, extras_require = { # requests needed for fastpi.testclient.TestClient 'dev': [ 'coverage', 'requests' ], }, entry_points={ 'console_scripts': [ 'medashare = medashare.cli:main', ] } )