strideutils 0.2.9__tar.gz → 0.2.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {strideutils-0.2.9 → strideutils-0.2.10}/PKG-INFO +1 -1
- {strideutils-0.2.9 → strideutils-0.2.10}/pyproject.toml +12 -2
- strideutils-0.2.10/strideutils/__init__.py +0 -0
- strideutils-0.2.10/strideutils-stubs/coingecko.pyi +7 -0
- strideutils-0.2.10/strideutils-stubs/cryptography.pyi +2 -0
- strideutils-0.2.10/strideutils-stubs/exec_tx.pyi +15 -0
- strideutils-0.2.10/strideutils-stubs/invariant_helpers.pyi +5 -0
- strideutils-0.2.10/strideutils-stubs/run_safely.pyi +5 -0
- strideutils-0.2.10/strideutils-stubs/sheets_connector.pyi +13 -0
- strideutils-0.2.10/strideutils-stubs/slack_connector.pyi +3 -0
- strideutils-0.2.10/strideutils-stubs/stride_alerts.pyi +19 -0
- strideutils-0.2.10/strideutils-stubs/stride_config.pyi +109 -0
- strideutils-0.2.10/strideutils-stubs/stride_requests.pyi +66 -0
- strideutils-0.2.10/strideutils-stubs/stride_upstash.pyi +10 -0
- strideutils-0.2.10/strideutils-stubs/twilio_connector.pyi +9 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/README.md +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/Makefile +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/coingecko.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/config_examples/strideutils_config.yaml.example +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/config_examples/strideutils_secrets.yaml.example +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/cryptography.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/exec_tx.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/invariant_helpers.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/run_safely.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/sheets_connector.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/slack_connector.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/stride_alerts.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/stride_config.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/stride_requests.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/stride_upstash.py +0 -0
- {strideutils-0.2.9 → strideutils-0.2.10}/strideutils/twilio_connector.py +0 -0
- /strideutils-0.2.9/strideutils/__init__.py → /strideutils-0.2.10/strideutils-stubs/__init__.pyi +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "strideutils"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.10"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Your Name <you@example.com>"]
|
|
6
6
|
readme = "README.md"
|
|
7
|
+
include = ["strideutils", "strideutils-stubs"]
|
|
7
8
|
|
|
8
9
|
[tool.poetry.dependencies]
|
|
9
10
|
python = ">=3.9"
|
|
@@ -24,9 +25,18 @@ pyyaml = ">=6.0.1"
|
|
|
24
25
|
python-dateutil = ">=2.8.2"
|
|
25
26
|
pycryptodome = ">=3.20.0"
|
|
26
27
|
|
|
27
|
-
|
|
28
28
|
[tool.poetry.group.dev.dependencies]
|
|
29
29
|
pytest = "^8.1.1"
|
|
30
|
+
mypy = "^1.10.0"
|
|
31
|
+
flake8 = "^7.0.0"
|
|
32
|
+
black = "^24.4.1"
|
|
33
|
+
types-pyyaml = "^6.0.12.20240311"
|
|
34
|
+
twilio-stubs = "^0.2.0"
|
|
35
|
+
pandas-stubs = "^2.2.1.240316"
|
|
36
|
+
types-tabulate = "^0.9.0.20240106"
|
|
37
|
+
types-openpyxl = "^3.1.0.20240408"
|
|
38
|
+
types-python-dateutil = "^2.9.0.20240316"
|
|
39
|
+
types-requests = "^2.31.0.20240406"
|
|
30
40
|
|
|
31
41
|
[build-system]
|
|
32
42
|
requires = ["poetry-core"]
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from strideutils import stride_requests as stride_requests
|
|
3
|
+
from strideutils.stride_config import config as config
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class TxResponse:
|
|
7
|
+
stdout: str
|
|
8
|
+
stderr: str
|
|
9
|
+
tx_response: dict | None = ...
|
|
10
|
+
tx_hash: str | None = ...
|
|
11
|
+
success: bool = ...
|
|
12
|
+
raw_log: str | None = ...
|
|
13
|
+
def __init__(self, stdout, stderr, tx_response=..., tx_hash=..., success=..., raw_log=...) -> None: ...
|
|
14
|
+
|
|
15
|
+
def execute_tx(command: str, api_endpoint: str = ...) -> TxResponse: ...
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from strideutils import slack_connector as slack_connector
|
|
2
|
+
from strideutils.stride_config import config as config
|
|
3
|
+
from typing import Callable
|
|
4
|
+
|
|
5
|
+
def try_and_log_with_status(*functions: Callable, slack_channel: str = 'alerts-status', job_name: str = 'alerts', botname: str | None = None): ...
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import gspread
|
|
2
|
+
import pandas as pd
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from strideutils.stride_config import config as config
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
SCOPES: Incomplete
|
|
8
|
+
|
|
9
|
+
def get_auth(scopes: tuple[str, ...] = ..., service: str = 'sheets', version: str = 'v4'): ...
|
|
10
|
+
def grab_sheet(sheet_id: str, sheet_name: str, columns_labeled: bool = True, worksheet: gspread.Worksheet | None = None, scopes: tuple[str, ...] = ..., _cache: dict[str, Any] = {}) -> pd.DataFrame: ...
|
|
11
|
+
def write_sheet(df: pd.DataFrame, sheet_id: str, sheet_name: str, worksheet: gspread.Worksheet | None = None, scopes: tuple[str, ...] = ...): ...
|
|
12
|
+
def reorder_sheet(sheet_id: str, sheet_name: str, new_location: int = 0, scopes: tuple[str, ...] = ...): ...
|
|
13
|
+
def get_sheet_names(sheet_id: str, scopes: tuple[str, ...] = ...) -> list[str]: ...
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from strideutils import slack_connector as slack_connector, twilio_connector as twilio_connector
|
|
4
|
+
from strideutils.stride_config import config as config
|
|
5
|
+
from typing import Callable, Iterable
|
|
6
|
+
|
|
7
|
+
class AlertType(Enum):
|
|
8
|
+
DEBUG: str
|
|
9
|
+
INFO: str
|
|
10
|
+
WARNING: str
|
|
11
|
+
CRITICAL: str
|
|
12
|
+
|
|
13
|
+
def get_tags(individuals: str | Iterable[str]) -> str: ...
|
|
14
|
+
def df_to_message_body(df: pd.DataFrame) -> str: ...
|
|
15
|
+
def wrap_in_code_block(message: str) -> str: ...
|
|
16
|
+
def notify(msgs: str | list[str], urgency, tag: str | Iterable[str] | None = None, call: str | Iterable[str] | None = None, beta_alert: bool = False, debug_readme_section: str = '') -> None: ...
|
|
17
|
+
def raise_alert(urgency: AlertType | str, tag: str | Iterable[str] | None = None, call: str | Iterable[str] | None = None, beta_alert: bool = False, debug_readme_section: str = '') -> Callable: ...
|
|
18
|
+
def run_daily(utc_hour_or_alert: int | Callable) -> Callable: ...
|
|
19
|
+
def run_epochly(f: Callable) -> Callable: ...
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import yaml
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from collections.abc import Generator
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
|
|
6
|
+
MISSING_CONFIG_MSG: str
|
|
7
|
+
ENV: Incomplete
|
|
8
|
+
|
|
9
|
+
class ConfigObj:
|
|
10
|
+
def __getattr__(self, name) -> None: ...
|
|
11
|
+
def __getattribute__(self, name): ...
|
|
12
|
+
def __iter__(self): ...
|
|
13
|
+
|
|
14
|
+
class ConfigDict(dict):
|
|
15
|
+
def __getitem__(self, key): ...
|
|
16
|
+
|
|
17
|
+
class Loader(yaml.FullLoader):
|
|
18
|
+
def construct_yaml_map(self, node) -> Generator[Incomplete, None, None]: ...
|
|
19
|
+
|
|
20
|
+
@dataclass(repr=False)
|
|
21
|
+
class ChainConfig(ConfigObj):
|
|
22
|
+
name: str = ...
|
|
23
|
+
id: str = ...
|
|
24
|
+
coingecko_name: str = ...
|
|
25
|
+
denom: str = ...
|
|
26
|
+
denom_decimals: int = ...
|
|
27
|
+
inflation_frequency_hours: int = ...
|
|
28
|
+
ticker: str = ...
|
|
29
|
+
stride_token_hash: str = ...
|
|
30
|
+
api_endpoint: str = ...
|
|
31
|
+
rpc_endpoint: str = ...
|
|
32
|
+
library_api: str = ...
|
|
33
|
+
library_rpc: str = ...
|
|
34
|
+
def __init__(self, name=..., id=..., coingecko_name=..., denom=..., denom_decimals=..., inflation_frequency_hours=..., ticker=..., stride_token_hash=..., api_endpoint=..., rpc_endpoint=..., library_api=..., library_rpc=...) -> None: ...
|
|
35
|
+
|
|
36
|
+
@dataclass(repr=False)
|
|
37
|
+
class HostZoneChainConfig(ConfigObj):
|
|
38
|
+
cosmoshub: ChainConfig = ...
|
|
39
|
+
osmosis: ChainConfig = ...
|
|
40
|
+
evmos: ChainConfig = ...
|
|
41
|
+
injective: ChainConfig = ...
|
|
42
|
+
juno: ChainConfig = ...
|
|
43
|
+
stargaze: ChainConfig = ...
|
|
44
|
+
terra: ChainConfig = ...
|
|
45
|
+
umee: ChainConfig = ...
|
|
46
|
+
comdex: ChainConfig = ...
|
|
47
|
+
sommelier: ChainConfig = ...
|
|
48
|
+
dydx: ChainConfig = ...
|
|
49
|
+
saga: ChainConfig = ...
|
|
50
|
+
def __init__(self, cosmoshub=..., osmosis=..., evmos=..., injective=..., juno=..., stargaze=..., terra=..., umee=..., comdex=..., sommelier=..., dydx=..., saga=...) -> None: ...
|
|
51
|
+
|
|
52
|
+
@dataclass(repr=False)
|
|
53
|
+
class AppConfig(ConfigObj):
|
|
54
|
+
neutron: ChainConfig = ...
|
|
55
|
+
kava: ChainConfig = ...
|
|
56
|
+
iris: ChainConfig = ...
|
|
57
|
+
akash: ChainConfig = ...
|
|
58
|
+
sentinel: ChainConfig = ...
|
|
59
|
+
persistence: ChainConfig = ...
|
|
60
|
+
cryptoorg: ChainConfig = ...
|
|
61
|
+
kichain: ChainConfig = ...
|
|
62
|
+
bitcanna: ChainConfig = ...
|
|
63
|
+
regen: ChainConfig = ...
|
|
64
|
+
gravity: ChainConfig = ...
|
|
65
|
+
desmos: ChainConfig = ...
|
|
66
|
+
chihuahua: ChainConfig = ...
|
|
67
|
+
secret: ChainConfig = ...
|
|
68
|
+
axelar: ChainConfig = ...
|
|
69
|
+
crescent: ChainConfig = ...
|
|
70
|
+
mantle: ChainConfig = ...
|
|
71
|
+
mars: ChainConfig = ...
|
|
72
|
+
canto: ChainConfig = ...
|
|
73
|
+
agoric: ChainConfig = ...
|
|
74
|
+
celestia: ChainConfig = ...
|
|
75
|
+
dymension: ChainConfig = ...
|
|
76
|
+
def __init__(self, neutron=..., kava=..., iris=..., akash=..., sentinel=..., persistence=..., cryptoorg=..., kichain=..., bitcanna=..., regen=..., gravity=..., desmos=..., chihuahua=..., secret=..., axelar=..., crescent=..., mantle=..., mars=..., canto=..., agoric=..., celestia=..., dymension=...) -> None: ...
|
|
77
|
+
|
|
78
|
+
@dataclass(repr=False)
|
|
79
|
+
class Config(ConfigObj):
|
|
80
|
+
ENV: str
|
|
81
|
+
timezone: str = ...
|
|
82
|
+
TWILIO_ALERTS_NUMBER: str = ...
|
|
83
|
+
TWILIO_ACCOUNT_ID: str = ...
|
|
84
|
+
TWILIO_API_TOKEN: str = ...
|
|
85
|
+
PHONE_NUMBERS: ConfigDict = ...
|
|
86
|
+
STRIDEBOT_API_TOKEN: str = ...
|
|
87
|
+
PUBLICSHEETS_AUTH: str | ConfigDict = ...
|
|
88
|
+
COINGECKO_API_TOKEN: str = ...
|
|
89
|
+
PROTOCOL_STAKING_API_TOKEN: str = ...
|
|
90
|
+
alerts_playbook: str = ...
|
|
91
|
+
slack_channels: ConfigDict = ...
|
|
92
|
+
UPSTASH_PUBLIC_PASSWORD: str = ...
|
|
93
|
+
UPSTASH_STRIDE_FRONTEND_PASSWORD: str = ...
|
|
94
|
+
UPSTASH_STRIDE_BACKEND_PASSWORD: str = ...
|
|
95
|
+
UPSTASH_STRIDE_DYDX_PUBLIC_PASSWORD: str = ...
|
|
96
|
+
SLACK_BEARER_TOKEN: str = ...
|
|
97
|
+
SLACK_SUCCESS_CHANNEL_ID: str = ...
|
|
98
|
+
SLACK_INVARIANT_FAILURE_CHANNEL_ID: str = ...
|
|
99
|
+
SLACK_PACKET_FAILURE_CHANNEL_ID: str = ...
|
|
100
|
+
NUMIA_API_TOKEN: str = ...
|
|
101
|
+
founders: list[str] = ...
|
|
102
|
+
stride: ChainConfig = ...
|
|
103
|
+
host_zones: HostZoneChainConfig = ...
|
|
104
|
+
app_chains: AppConfig = ...
|
|
105
|
+
def __post_init__(self) -> None: ...
|
|
106
|
+
def get_chain(self, name: str | None = None, id: str | None = None, ticker: str | None = None, denom: str | None = None, stride_token_hash: str | None = None) -> ChainConfig: ...
|
|
107
|
+
def __init__(self, ENV, timezone=..., TWILIO_ALERTS_NUMBER=..., TWILIO_ACCOUNT_ID=..., TWILIO_API_TOKEN=..., PHONE_NUMBERS=..., STRIDEBOT_API_TOKEN=..., PUBLICSHEETS_AUTH=..., COINGECKO_API_TOKEN=..., PROTOCOL_STAKING_API_TOKEN=..., alerts_playbook=..., slack_channels=..., UPSTASH_PUBLIC_PASSWORD=..., UPSTASH_STRIDE_FRONTEND_PASSWORD=..., UPSTASH_STRIDE_BACKEND_PASSWORD=..., UPSTASH_STRIDE_DYDX_PUBLIC_PASSWORD=..., SLACK_BEARER_TOKEN=..., SLACK_SUCCESS_CHANNEL_ID=..., SLACK_INVARIANT_FAILURE_CHANNEL_ID=..., SLACK_PACKET_FAILURE_CHANNEL_ID=..., NUMIA_API_TOKEN=..., founders=..., stride=..., host_zones=..., app_chains=...) -> None: ...
|
|
108
|
+
|
|
109
|
+
config: Config
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
import pandas as pd
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from strideutils import stride_upstash as stride_upstash
|
|
5
|
+
from strideutils.stride_config import config as config
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
ACCOUNT_QUERY: str
|
|
9
|
+
ACCOUNT_BALANCE_QUERY: str
|
|
10
|
+
ACCOUNT_DELEGATIONS_QUERY: str
|
|
11
|
+
ACCOUNT_UNBONDINGS_QUERY: str
|
|
12
|
+
MODULE_ACCOUNTS_QUERY: str
|
|
13
|
+
SUPPLY_QUERY: str
|
|
14
|
+
CONNECTION_QUERY: str
|
|
15
|
+
CHANNELS_QUERY: str
|
|
16
|
+
CHANNEL_QUERY: str
|
|
17
|
+
TXS_QUERY: str
|
|
18
|
+
TX_BY_ACCOUNT_EVENT: str
|
|
19
|
+
HOST_ZONE_QUERY: str
|
|
20
|
+
EPOCHS_QUERY: str
|
|
21
|
+
RATE_LIMIT_QUERY: str
|
|
22
|
+
STAKETIA: str
|
|
23
|
+
STAKEDYM: str
|
|
24
|
+
MULTISIG_HOST_ZONE_QUERY: str
|
|
25
|
+
MULTISIG_DELEGATION_RECORDS_QUERY: str
|
|
26
|
+
MULTISIG_UNBONDING_RECORDS_QUERY: str
|
|
27
|
+
MULTISIG_REDEMPTION_RECORDS_QUERY: str
|
|
28
|
+
COSMWASM_CONTRACT_QUERY: str
|
|
29
|
+
requests_session: Incomplete
|
|
30
|
+
retries: Incomplete
|
|
31
|
+
|
|
32
|
+
def request(url: str, headers: dict = {}, params: dict | list[tuple[str, str]] = {}, block_height: int = 0, cache_response: bool = False, _cache: dict[str, Any] = {}): ...
|
|
33
|
+
def query_list_with_pagination(endpoint: str, rel_key: str, block_height: int = 0, max_pages: int = 50) -> list[dict]: ...
|
|
34
|
+
def get_all_host_zones() -> list[dict]: ...
|
|
35
|
+
def get_host_zone_json(zone_id: str, cast_types: bool = True, **kwargs) -> dict[str, Any]: ...
|
|
36
|
+
def get_celestia_host_zone(cast_types: bool = True) -> dict[str, Any]: ...
|
|
37
|
+
def get_dymension_host_zone(cast_types: bool = True) -> dict[str, Any]: ...
|
|
38
|
+
def get_multisig_delegation_records(module: str, include_archived: bool = False) -> list[dict]: ...
|
|
39
|
+
def get_multisig_unbonding_records(module: str, include_archived: bool = False) -> list[dict]: ...
|
|
40
|
+
def get_multisig_redemption_records(module: str, address: str | None = None, unbonding_record_id: int | None = None) -> list[dict]: ...
|
|
41
|
+
def get_rate_limits(**kwargs): ...
|
|
42
|
+
def get_validators(api_endpoint: str = ...) -> list[dict[str, Any]]: ...
|
|
43
|
+
def get_redemption_rate(token: str) -> float: ...
|
|
44
|
+
def get_tvl_in_utokens(host_zone_id: str) -> float: ...
|
|
45
|
+
def get_latest_block(rpc_endpoint: str = ...) -> int: ...
|
|
46
|
+
def convert_cosmos_address(address: str, new_prefix: str) -> str: ...
|
|
47
|
+
def get_balances(address: str, block_height: int = 0, api_endpoint: str = ..., cache_response: bool = False) -> dict[str, int]: ...
|
|
48
|
+
def get_balance(address: str, denom: str, block_height: int = 0, api_endpoint: str = ..., cache_response: bool = False) -> int: ...
|
|
49
|
+
def get_supply(denom: str, block_height: int = 0, api_endpoint: str = ..., cache_response: bool = False) -> int: ...
|
|
50
|
+
def get_block_time(height: int, rpc_endpoint: str = ...) -> datetime.datetime: ...
|
|
51
|
+
def get_icns_name(address: str) -> str: ...
|
|
52
|
+
def get_account_info(address: str, api_endpoint: str = ...): ...
|
|
53
|
+
def get_txs(event_filters: list[str], api_endpoint: str = ..., limit: Incomplete | None = None) -> dict: ...
|
|
54
|
+
def get_tx_info(address: str, sequence: str | int, api_endpoint: str = ...) -> dict: ...
|
|
55
|
+
def generate_vesting_account(start_time_in_local_tz: str, total_tokens: int, seconds_in_period: int = 3600, number_of_days: int = 30, output_file: str = 'vesting_account.json') -> str: ...
|
|
56
|
+
def get_block_height_in_past(time_in_past: datetime.timedelta = ..., max_acceptable_error_seconds: int = ..., seconds_per_block: int = 6, prev_time: str | None = None, verbose: bool = False, rpc_endpoint: str = ...) -> int: ...
|
|
57
|
+
def get_block_height_one_day_ago(verbose: bool = False) -> int: ...
|
|
58
|
+
def get_sttoken_apr(token: str) -> float | None: ...
|
|
59
|
+
def get_delegated_tokens_on_address(delegator_address: str, api_endpoint: str = ...) -> dict[str, int]: ...
|
|
60
|
+
def get_unbonding_tokens_on_address(delegator_address: str, api_endpoint: str = ...) -> dict[str, int]: ...
|
|
61
|
+
def get_host_zone_delegations(host_zone_id: str, ground_truth_included: bool = True) -> pd.DataFrame: ...
|
|
62
|
+
def get_epochs() -> list[dict]: ...
|
|
63
|
+
def get_day_epoch() -> int: ...
|
|
64
|
+
def query_wasm_contract(contract_address: str, query_msg: dict, api_endpoint: str, block_height: int = 0) -> dict: ...
|
|
65
|
+
def get_module_accounts(api_endpoint: str = ...) -> list[dict]: ...
|
|
66
|
+
def get_empirical_annual_fees(ticker: str) -> float: ...
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import redis
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from strideutils.stride_config import config as config
|
|
4
|
+
|
|
5
|
+
redis_dbs: Incomplete
|
|
6
|
+
|
|
7
|
+
def get_redis_db(redis_db_name: str) -> redis.Redis: ...
|
|
8
|
+
def get(redis_key: str, db_name: str = 'frontend') -> str | None: ...
|
|
9
|
+
def set(redis_key: str, redis_val: str, db_name: str = 'frontend'): ...
|
|
10
|
+
def set_keys(dict_to_upload: dict[str, str], db_name: str = 'frontend', prefix: str = ''): ...
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{strideutils-0.2.9 → strideutils-0.2.10}/strideutils/config_examples/strideutils_config.yaml.example
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/strideutils-0.2.9/strideutils/__init__.py → /strideutils-0.2.10/strideutils-stubs/__init__.pyi
RENAMED
|
File without changes
|