Skip to content

Commit

Permalink
prune setup (#942)
Browse files Browse the repository at this point in the history
  • Loading branch information
Borda authored Nov 8, 2022
1 parent f9a8fd7 commit c26c8d8
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 94 deletions.
78 changes: 0 additions & 78 deletions pl_bolts/setup_tools.py

This file was deleted.

2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
pytorch-lightning>=1.7.0
lightning-utilities>=0.3.0, !=0.4.0 # this is needed for PL 1.7
torchvision>=0.10.*
torchvision>=0.10.0
89 changes: 74 additions & 15 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,36 +1,95 @@
#!/usr/bin/env python

import os
import sys
import re
from importlib.util import module_from_spec, spec_from_file_location
from typing import List

# Always prefer setuptools over distutils
from setuptools import find_packages, setup

_PATH_ROOT = os.path.realpath(os.path.dirname(__file__))
_PATH_REQUIRE = os.path.join(_PATH_ROOT, "requirements")

try:
from pl_bolts import __about__ as about
from pl_bolts import setup_tools
except ImportError:
# alternative https://stackoverflow.com/a/67692/4521646
sys.path.append("pl_bolts")
import __about__ as about
import setup_tools

def _load_py_module(fname, pkg="pl_bolts"):
spec = spec_from_file_location(os.path.join(pkg, fname), os.path.join(_PATH_ROOT, pkg, fname))
py = module_from_spec(spec)
spec.loader.exec_module(py)
return py


def _load_requirements(path_dir: str, file_name: str = "requirements.txt", comment_char: str = "#") -> List[str]:
"""Load requirements from a file.
>>> _load_requirements(_PATH_ROOT) # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
['pytorch-lightning...']
"""
with open(os.path.join(path_dir, file_name)) as file:
lines = [ln.strip() for ln in file.readlines()]
reqs = []
for ln in lines:
# filer all comments
if comment_char in ln:
ln = ln[: ln.index(comment_char)].strip()
# skip directly installed dependencies
if ln.startswith("http"):
continue
if ln: # if requirement is not empty
reqs.append(ln)
return reqs


def _load_readme_description(path_dir: str, homepage: str, ver: str) -> str:
"""Load readme as decribtion.
>>> _load_readme_description(_PATH_ROOT, "", "") # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
'<div align="center">...'
"""
path_readme = os.path.join(path_dir, "README.md")
text = open(path_readme, encoding="utf-8").read()

# drop images from readme
text = text.replace("![PT to PL](docs/source/_images/general/pl_quick_start_full_compressed.gif)", "")

# https://github.com/PyTorchLightning/pytorch-lightning/raw/master/docs/source/_images/lightning_module/pt_to_png
github_source_url = os.path.join(homepage, "raw", ver)
# replace relative repository path to absolute link to the release
# do not replace all "docs" as in the readme we reger some other sources with particular path to docs
text = text.replace("docs/source/_images/", f"{os.path.join(github_source_url, 'docs/source/_images/')}")

# readthedocs badge
text = text.replace("badge/?version=stable", f"badge/?version={ver}")
text = text.replace("lightning-bolts.readthedocs.io/en/stable/", f"lightning-bolts.readthedocs.io/en/{ver}")
# codecov badge
text = text.replace("/branch/master/graph/badge.svg", f"/release/{ver}/graph/badge.svg")
# replace github badges for release ones
text = text.replace("badge.svg?branch=master&event=push", f"badge.svg?tag={ver}")

skip_begin = r"<!-- following section will be skipped from PyPI description -->"
skip_end = r"<!-- end skipping PyPI description -->"
# todo: wrap content as commented description
text = re.sub(rf"{skip_begin}.+?{skip_end}", "<!-- -->", text, flags=re.IGNORECASE + re.DOTALL)

# # https://github.com/Borda/pytorch-lightning/releases/download/1.1.0a6/codecov_badge.png
# github_release_url = os.path.join(homepage, "releases", "download", ver)
# # download badge and replace url with local file
# text = _parse_for_badge(text, github_release_url)
return text


def _prepare_extras():
extras = {
"loggers": setup_tools._load_requirements(path_dir=_PATH_REQUIRE, file_name="loggers.txt"),
"models": setup_tools._load_requirements(path_dir=_PATH_REQUIRE, file_name="models.txt"),
"test": setup_tools._load_requirements(path_dir=_PATH_REQUIRE, file_name="test.txt"),
"loggers": _load_requirements(path_dir=_PATH_REQUIRE, file_name="loggers.txt"),
"models": _load_requirements(path_dir=_PATH_REQUIRE, file_name="models.txt"),
"test": _load_requirements(path_dir=_PATH_REQUIRE, file_name="test.txt"),
}
extras["extra"] = extras["models"] + extras["loggers"]
extras["dev"] = extras["extra"] + extras["test"]
return extras


long_description = setup_tools._load_readme_description(
about = _load_py_module("__about__.py")
long_description = _load_readme_description(
_PATH_ROOT,
homepage=about.__homepage__,
ver=about.__version__,
Expand Down Expand Up @@ -58,7 +117,7 @@ def _prepare_extras():
keywords=["deep learning", "pytorch", "AI"],
python_requires=">=3.7",
setup_requires=["wheel"],
install_requires=setup_tools._load_requirements(_PATH_ROOT),
install_requires=_load_requirements(_PATH_ROOT),
extras_require=_prepare_extras(),
project_urls={
"Bug Tracker": "https://github.com/PyTorchLightning/lightning-bolts/issues",
Expand Down

0 comments on commit c26c8d8

Please sign in to comment.