-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
general: update exporthelper, sync with pymplate, use pyproject.toml
- Loading branch information
Showing
9 changed files
with
133 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# this is a hack to monkey patch pytest so it handles tests inside namespace packages without __init__.py properly | ||
# without it, pytest can't discover the package root for some reason | ||
# also see https://github.com/karlicoss/pytest_namespace_pkgs for more | ||
|
||
import pathlib | ||
from typing import Optional | ||
|
||
import _pytest.main | ||
import _pytest.pathlib | ||
|
||
# we consider all dirs in repo/ to be namespace packages | ||
root_dir = pathlib.Path(__file__).absolute().parent.resolve() / 'src' | ||
assert root_dir.exists(), root_dir | ||
|
||
# TODO assert it contains package name?? maybe get it via setuptools.. | ||
|
||
namespace_pkg_dirs = [str(d) for d in root_dir.iterdir() if d.is_dir()] | ||
|
||
# resolve_package_path is called from _pytest.pathlib.import_path | ||
# takes a full abs path to the test file and needs to return the path to the 'root' package on the filesystem | ||
resolve_pkg_path_orig = _pytest.pathlib.resolve_package_path | ||
def resolve_package_path(path: pathlib.Path) -> Optional[pathlib.Path]: | ||
result = path # search from the test file upwards | ||
for parent in result.parents: | ||
if str(parent) in namespace_pkg_dirs: | ||
return parent | ||
raise RuntimeError("Couldn't determine path for ", path) | ||
_pytest.pathlib.resolve_package_path = resolve_package_path | ||
|
||
|
||
# without patching, the orig function returns just a package name for some reason | ||
# (I think it's used as a sort of fallback) | ||
# so we need to point it at the absolute path properly | ||
# not sure what are the consequences.. maybe it wouldn't be able to run against installed packages? not sure.. | ||
search_pypath_orig = _pytest.main.search_pypath | ||
def search_pypath(module_name: str) -> str: | ||
return str(root_dir) | ||
_pytest.main.search_pypath = search_pypath |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
[project] | ||
dynamic = ["version"] # version is managed by setuptools_scm | ||
name = "pockexport" | ||
dependencies = [ | ||
"pocket", # pocket API bindings | ||
] | ||
|
||
# | ||
# this needs to be set if you're planning to upload to pypi | ||
# url = "" | ||
# author = "" | ||
# author_email = "" | ||
# description = "" | ||
|
||
# Rest like -- classifiers, license, etc, I don't think it matters for pypi | ||
# it's just unnecessary duplication | ||
|
||
[project.optional-dependencies] | ||
testing = ["pytest"] | ||
linting = [ | ||
"pytest", | ||
"mypy", | ||
"lxml", # for mypy html coverage | ||
"orjson", # exporthelpers | ||
"colorlog", # exporthelpers | ||
] | ||
|
||
|
||
[build-system] | ||
requires = ["setuptools", "setuptools-scm"] | ||
build-backend = "setuptools.build_meta" | ||
|
||
[tool.setuptools_scm] | ||
version_scheme = "python-simplified-semver" | ||
local_scheme = "dirty-tag" | ||
|
||
|
||
# nice things about pyproject.toml | ||
# - zip_safe=False isn't neccessary anymore | ||
# - correctly discovers namespace packages by defuilt? | ||
# - correctly handles py.typed by default? | ||
# - handles src layout automatically https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout | ||
|
||
# things I'm not sure about yet | ||
# - avoiding dupliation/variable reuse? | ||
# - file/git dependencies? | ||
# - unclear how to specify namespace package order https://github.com/seanbreckenridge/reorder_editable/issues/2 | ||
|
||
# TODO | ||
# - maybe it has a nicer pypi upload system? not sure | ||
# e.g. possibly use hatch/flit/pdb/poetry -- but not sure what's the benefit tbh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Submodule exporthelpers
updated
3 files
+41 −5 | dal_helper.py | |
+1 −1 | export_helper.py | |
+221 −46 | logging_helper.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters