Commit f84b8023 authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Add python-dxf stubs

parent 5b289c9f
Loading
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -67,8 +67,10 @@ repos:
    stages: [commit, manual]

- repo: https://github.com/pre-commit/mirrors-mypy
  rev: v0.910
  rev: v0.981
  hooks:
  - id: mypy
    types: []
    types_or: [python, pyi]
    additional_dependencies:
    - types-requests
+6 −0
Original line number Diff line number Diff line
@@ -22,10 +22,12 @@ python = "^3.9"
typing-extensions = ">=3.7.4"
jsonpath-python = {version="~1.0.0", optional=true}
parse = {version="~1.19.0", optional=true}
types-requests = {version="~2.0", optional=true}

[tool.poetry.extras]
jsonpath = ["jsonpath-python"]
parse = ["parse"]
dxf = ["types-requests"]

[[tool.poetry.packages]]
include = "jsonpath-stubs"
@@ -35,6 +37,10 @@ from = "stubs"
include = "parse-stubs"
from = "stubs"

[[tool.poetry.packages]]
include = "dxf-stubs"
from = "stubs"

[tool.isort]
force_single_line = true

+217 −0
Original line number Diff line number Diff line
from __future__ import annotations

from collections.abc import Iterator
from typing import TYPE_CHECKING
from typing import Callable
from typing import Literal
from typing import TypeAlias
from typing import TypeVar
from typing import Union
from typing import overload

from requests import Response as HTTPResponse

Action: TypeAlias = Union[Literal["pull"], Literal["push"], Literal["*"]]


class DXFBase:

	if TYPE_CHECKING:
		Self = TypeVar("Self", bound="DXFBase")

	def __init__(
		self,
		host: str,
		auth: Callable[[Self, HTTPResponse], None]|None = ...,
		insecure: bool = ...,
		auth_host: str|None = ...,
		tlsverify: bool|str = ...,
		timeout: float|None = ...,
	): ...

	def authenticate(
		self,
		username: str|None = ...,
		password: str|None = ...,
		actions: list[Action]|None = ...,
		response: HTTPResponse|None = ...,
		authorization: str|None = ...,
		user_agent: str = ...,
	) -> str|None: ...

	@overload
	def list_repos(
		self,
		batch_size: int|None = ...,
		iterate: Literal[False] = False,
	) -> list[str]: ...
	@overload
	def list_repos(
		self,
		batch_size: int|None,
		iterate: Literal[True],
	) -> Iterator[str]: ...
	@overload
	def list_repos(
		self,
		iterate: Literal[True],
	) -> Iterator[str]: ...

	@property
	def token(self) -> str: ...
	@token.setter
	def token(self, _: str) -> None: ...

	def __enter__(self: Self) -> Self: ...
	def __exit__(self, *_: object) -> bool|None: ...


class DXF(DXFBase):

	if TYPE_CHECKING:
		Self = TypeVar("Self", bound="DXF")

	def __init__(
		self,
		host: str,
		repo: str,
		auth: Callable[[Self, HTTPResponse], None]|None,
		insecure: bool = ...,
		auth_host: str|None = ...,
		tlsverify: bool|str = ...,
		timeout: float|None = ...,
	): ...

	@classmethod
	def from_base(cls: type[Self], base: DXFBase, repo: str) -> Self: ...

	def api_version_check(self) -> tuple[str, HTTPResponse]: ...
	def blob_size(self, digest: str) -> int: ...
	def del_alias(self, alias: str) -> list[str]: ...
	def del_blob(self, digest: str) -> None: ...

	@overload
	def get_alias(
		self,
		alias: str|None = ...,
		manifest: str|None = ...,
		verify: bool = ...,
		sizes: Literal[False] = False,
		dcd: str|None = ...,
	) -> list[str]: ...
	@overload
	def get_alias(
		self,
		sizes: Literal[True],
		dcd: str|None = ...,
	) -> list[tuple[str, int]]: ...
	@overload
	def get_alias(
		self,
		alias: str|None,
		manifest: str|None,
		verify: bool,
		sizes: Literal[True],
		dcd: str|None = ...,
	) -> list[tuple[str, int]]: ...
	@overload
	def get_alias(
		self,
		alias: str|None,
		manifest: str|None,
		sizes: Literal[True],
		dcd: str|None = ...,
	) -> list[tuple[str, int]]: ...
	@overload
	def get_alias(
		self,
		alias: str|None,
		sizes: Literal[True],
		dcd: str|None = ...,
	) -> list[tuple[str, int]]: ...
	@overload
	def get_alias(
		self,
		manifest: str|None,
		verify: bool,
		sizes: Literal[True],
		dcd: str|None = ...,
	) -> list[tuple[str, int]]: ...
	@overload
	def get_alias(
		self,
		manifest: str|None,
		sizes: Literal[True],
		dcd: str|None = ...,
	) -> list[tuple[str, int]]: ...
	@overload
	def get_alias(
		self,
		verify: bool,
		sizes: Literal[True],
		dcd: str|None = ...,
	) -> list[tuple[str, int]]: ...

	def get_digest(
		self,
		alias: str|None = ...,
		manifest: str|None = ...,
		verify: bool = ...,
		dcd: str|None = ...,
	) -> str: ...
	def get_manifest(self, alias: str) -> str: ...
	def get_manifest_and_reponse(self, alias: str) -> tuple[str, HTTPResponse]: ...
	@overload
	def list_aliases(
		self,
		batch_size: int|None = ...,
		iterate: Literal[False] = False,
	) -> list[str]: ...
	@overload
	def list_aliases(
		self,
		batch_size: int|None,
		iterate: Literal[True],
	) -> Iterator[str]: ...
	@overload
	def list_aliases(
		self,
		iterate: Literal[True],
	) -> Iterator[str]: ...
	def mount_blob(self, repo: str, digest: str) -> str: ...
	@overload
	def pull_blob(
		self,
		digest: str,
		size: Literal[False] = False,
		chunk_size: int|None = ...,
	) -> Iterator[bytes]: ...
	@overload
	def pull_blob(
		self,
		digest: str,
		size: Literal[True],
		chunk_size: int|None = ...,
	) -> tuple[Iterator[bytes], int]: ...
	@overload
	def push_blob(
		self,
		filename: str,
		progress: None = None,
		data: Iterator[bytes]|None = ...,
		digest: str|None = ...,
		check_exists: bool = ...,
	) -> str: ...
	@overload
	def push_blob(
		self,
		progress: Callable[[str, bytes, int], None],
		data: Iterator[bytes]|None = ...,
		digest: str|None = ...,
		check_exists: bool = ...,
	) -> str: ...
	def set_alias(self, alias: str, *_: str) -> str: ...
	def set_manifest(self, alias: str, manifest_json: str) -> None: ...

def hash_bytes(buf: bytes) -> str: ...
def hash_file(filename: str) -> str: ...
+24 −0
Original line number Diff line number Diff line
class DXFError(Exception): ...
class DXFUnexpectedError(DXFError):
	got: object
	expected: object
class DXFUnexpectedStatusCodeError(DXFUnexpectedError):
	got: int
	expected: int
class DXFDigestMismatchError(DXFUnexpectedError):
	got: str
	expected: str
class DXFUnexpectedKeyTypeError(DXFUnexpectedError):
	got: str
	expected: str
class DXFUnexpectedDigestMethodError(DXFUnexpectedError):
	got: str
	expected: str
class DXFDisallowedSignatureAlgorithmError(DXFError):
	alg: str
class DXFSignatureChainNotImplementedError(DXFError): ...
class DXFUnauthorizedError(DXFError): ...
class DXFAuthInsecureError(DXFError): ...
class DXFDigestNotAvailableForSchema1(DXFError): ...
class DXFMountFailed(DXFError): ...
class DXFUnsupportedSchemaType(DXFError): ...