copyparty/setup.py

158 lines
4.8 KiB
Python
Executable file

#!/usr/bin/env python3
# coding: utf-8
from __future__ import print_function
import os
import sys
from shutil import rmtree
from setuptools import setup, Command
_ = """
this probably still works but is no longer in use;
pyproject.toml and scripts/make-pypi-release.sh
are in charge of packaging wheels now
"""
NAME = "copyparty"
VERSION = None
data_files = [("share/doc/copyparty", ["README.md", "LICENSE"])]
manifest = ""
for dontcare, files in data_files:
for fn in files:
manifest += "include {0}\n".format(fn)
manifest += "recursive-include copyparty/res *\n"
manifest += "recursive-include copyparty/web *\n"
here = os.path.abspath(os.path.dirname(__file__))
with open(here + "/MANIFEST.in", "wb") as f:
f.write(manifest.encode("utf-8"))
with open(here + "/README.md", "rb") as f:
txt = f.read().decode("utf-8")
long_description = txt
about = {}
if not VERSION:
with open(os.path.join(here, NAME, "__version__.py"), "rb") as f:
exec (f.read().decode("utf-8").split("\n\n", 1)[1], about)
else:
about["__version__"] = VERSION
class clean2(Command):
description = "Cleans the source tree"
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
os.system("{0} setup.py clean --all".format(sys.executable))
try:
rmtree("./dist")
except:
pass
try:
rmtree("./copyparty.egg-info")
except:
pass
nuke = []
for (dirpath, _, filenames) in os.walk("."):
for fn in filenames:
if (
fn.startswith("MANIFEST")
or fn.endswith(".pyc")
or fn.endswith(".pyo")
or fn.endswith(".pyd")
):
nuke.append(dirpath + "/" + fn)
for fn in nuke:
os.unlink(fn)
args = {
"name": NAME,
"version": about["__version__"],
"description": (
"Portable file server with accelerated resumable uploads, "
+ "deduplication, WebDAV, FTP, TFTP, zeroconf, media indexer, "
+ "video thumbnails, audio transcoding, and write-only folders"
),
"long_description": long_description,
"long_description_content_type": "text/markdown",
"author": "ed",
"author_email": "copyparty@ocv.me",
"url": "https://github.com/9001/copyparty",
"license": "MIT",
"classifiers": [
"Development Status :: 5 - Production/Stable",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: Jython",
"Programming Language :: Python :: Implementation :: PyPy",
"Operating System :: OS Independent",
"Environment :: Console",
"Environment :: No Input/Output (Daemon)",
"Intended Audience :: End Users/Desktop",
"Intended Audience :: System Administrators",
"Topic :: Communications :: File Sharing",
"Topic :: Internet :: File Transfer Protocol (FTP)",
"Topic :: Internet :: WWW/HTTP :: HTTP Servers",
],
"include_package_data": True,
"data_files": data_files,
"packages": [
"copyparty",
"copyparty.bos",
"copyparty.res",
"copyparty.stolen",
"copyparty.stolen.dnslib",
"copyparty.stolen.ifaddr",
"copyparty.web",
"copyparty.web.a",
"copyparty.web.deps",
],
"install_requires": ["jinja2"],
"extras_require": {
"all": ["argon2-cffi", "partftpy>=0.4.0", "Pillow", "pyftpdlib", "pyopenssl", "pyzmq"],
"thumbnails": ["Pillow"],
"thumbnails2": ["pyvips"],
"audiotags": ["mutagen"],
"ftpd": ["pyftpdlib"],
"ftps": ["pyftpdlib", "pyopenssl"],
"tftpd": ["partftpy>=0.4.0"],
"pwhash": ["argon2-cffi"],
"zeromq": ["pyzmq"],
},
"entry_points": {"console_scripts": ["copyparty = copyparty.__main__:main"]},
"scripts": ["bin/partyfuse.py", "bin/u2c.py"],
"cmdclass": {"clean2": clean2},
}
if sys.version_info < (3, 8):
args["install_requires"].append("ipaddress")
setup(**args)