mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-12-04 19:03:39 +00:00
5050bf69f9
we can use this to install tutor development packages inside ci jobs, with one line.
80 lines
2.5 KiB
Python
80 lines
2.5 KiB
Python
import io
|
|
import os
|
|
from typing import Dict, List
|
|
|
|
from setuptools import find_packages, setup
|
|
|
|
HERE = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
def load_readme() -> str:
|
|
with io.open(os.path.join(HERE, "README.rst"), "rt", encoding="utf8") as f:
|
|
readme = f.read()
|
|
# Replace img src for publication on pypi
|
|
return readme.replace(
|
|
"./docs/img/", "https://github.com/overhangio/tutor/raw/master/docs/img/"
|
|
)
|
|
|
|
|
|
def load_about() -> Dict[str, str]:
|
|
about: Dict[str, str] = {}
|
|
with io.open(
|
|
os.path.join(HERE, "tutor", "__about__.py"), "rt", encoding="utf-8"
|
|
) as f:
|
|
exec(f.read(), about) # pylint: disable=exec-used
|
|
return about
|
|
|
|
|
|
def load_requirements(filename: str) -> List[str]:
|
|
with io.open(
|
|
os.path.join(HERE, "requirements", filename), "rt", encoding="utf-8"
|
|
) as f:
|
|
return [line.strip() for line in f if is_requirement(line)]
|
|
|
|
|
|
def is_requirement(line: str) -> bool:
|
|
return not (line.strip() == "" or line.startswith("#"))
|
|
|
|
|
|
ABOUT = load_about()
|
|
|
|
setup(
|
|
name="tutor",
|
|
version=ABOUT["__package_version__"],
|
|
url="https://docs.tutor.overhang.io/",
|
|
project_urls={
|
|
"Documentation": "https://docs.tutor.overhang.io/",
|
|
"Code": "https://github.com/overhangio/tutor",
|
|
"Issue tracker": "https://github.com/overhangio/tutor/issues",
|
|
"Community": "https://discuss.openedx.org/tag/tutor",
|
|
},
|
|
license="AGPLv3",
|
|
author="Edly",
|
|
author_email="hello@edly.io",
|
|
description="The Docker-based Open edX distribution designed for peace of mind",
|
|
long_description=load_readme(),
|
|
long_description_content_type="text/x-rst",
|
|
packages=find_packages(exclude=["tests*"]),
|
|
include_package_data=True,
|
|
python_requires=">=3.8",
|
|
install_requires=load_requirements("base.in"),
|
|
extras_require={
|
|
"dev": load_requirements("dev.txt"),
|
|
"full": load_requirements("plugins.txt"),
|
|
},
|
|
entry_points={"console_scripts": ["tutor=tutor.commands.cli:main"]},
|
|
classifiers=[
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: GNU Affero General Public License v3",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python",
|
|
"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",
|
|
],
|
|
test_suite="tests",
|
|
)
|