kbasic 0.2.3__tar.gz → 0.3.0__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.
- {kbasic-0.2.3 → kbasic-0.3.0}/PKG-INFO +1 -1
- {kbasic-0.2.3 → kbasic-0.3.0}/pyproject.toml +1 -1
- kbasic-0.3.0/src/kbasic/typing.py +34 -0
- kbasic-0.2.3/src/kbasic/typing.py +0 -34
- {kbasic-0.2.3 → kbasic-0.3.0}/README.md +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/Tex.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/__init__.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/array.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/audio/__init__.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/audio/lib/Caroline Rose - year of the slug - 01 everything in its right place.wav +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/audio/lib/success.mp3 +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/audio/sound.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/bar.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/environment/Keyan.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/environment/__init__.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/environment/anvil.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/environment/defaultPC.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/parsing/__init__.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/parsing/basic.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/parsing/log.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/parsing/parser.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/parsing/toml.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/parsing/utils.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/shell.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/strings.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/user_input.py +0 -0
- {kbasic-0.2.3 → kbasic-0.3.0}/src/kbasic/vectors.py +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Use ABCs to allow matching any number or array type, e.g. this will work:
|
|
3
|
+
match 1.:
|
|
4
|
+
case Number(): ...
|
|
5
|
+
|
|
6
|
+
or:
|
|
7
|
+
match {1, 2, 3, 4}:
|
|
8
|
+
case Array(): ...
|
|
9
|
+
"""
|
|
10
|
+
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
11
|
+
# >-|===|> Imports <|===|-<
|
|
12
|
+
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
13
|
+
from abc import ABC
|
|
14
|
+
from collections.abc import Generator
|
|
15
|
+
from numpy import int8, uint8, int16, uint16, int32, uint32, int64, uint64, \
|
|
16
|
+
float16, float32, float64, longdouble, complex64, complex128, \
|
|
17
|
+
clongdouble, ndarray
|
|
18
|
+
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
19
|
+
# >-|===|> Types <|===|-<
|
|
20
|
+
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
21
|
+
class Array(ABC):
|
|
22
|
+
types: list = [ndarray, list, set, tuple, Generator]
|
|
23
|
+
@classmethod
|
|
24
|
+
def __subclasshook__(cls, sub):
|
|
25
|
+
return sub in cls.types
|
|
26
|
+
class Number(ABC):
|
|
27
|
+
types: list = [
|
|
28
|
+
int, int8, uint8, int16, uint16, int32, uint32, int64, uint64,
|
|
29
|
+
float, float16, float32, float64, longdouble,
|
|
30
|
+
complex, complex64, complex128, clongdouble
|
|
31
|
+
]
|
|
32
|
+
@classmethod
|
|
33
|
+
def __subclasshook__(cls, sub):
|
|
34
|
+
return sub in cls.types
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
I don't like type checking in python, so the way i decided to do it is if i want
|
|
3
|
-
to see if something looks like a number (int, float, complex or numpy variants)
|
|
4
|
-
i would say ->
|
|
5
|
-
if type(x) in Number.types: do_something()
|
|
6
|
-
elif type(x) in Array.types: do_something_else()
|
|
7
|
-
"""
|
|
8
|
-
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
9
|
-
# >-|===|> Imports <|===|-<
|
|
10
|
-
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
11
|
-
from numpy import int8, uint8, int16, uint16, int32, uint32, int64, uint64, \
|
|
12
|
-
float16, float32, float64, longdouble, complex64, complex128, \
|
|
13
|
-
clongdouble, ndarray
|
|
14
|
-
from numpy.typing import NDArray, ArrayLike
|
|
15
|
-
from collections.abc import Callable, Generator
|
|
16
|
-
from typing import Any
|
|
17
|
-
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
18
|
-
# >-|===|> Types <|===|-<
|
|
19
|
-
# !==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==!==
|
|
20
|
-
class Array:
|
|
21
|
-
types: list = [NDArray, ndarray, list, set, tuple, Generator]
|
|
22
|
-
class Number:
|
|
23
|
-
types: list = [
|
|
24
|
-
int, int8, uint8, int16, uint16, int32, uint32, int64, uint64,
|
|
25
|
-
float, float16, float32, float64, longdouble,
|
|
26
|
-
complex, complex64, complex128, clongdouble
|
|
27
|
-
]
|
|
28
|
-
def __new__(cls, x):
|
|
29
|
-
match x:
|
|
30
|
-
case x if type(x) in Number.types: return x
|
|
31
|
-
case str() if x.isnumeric(): return int(x)
|
|
32
|
-
case str() if '.' in x and all([xi.isnumeric() for xi in x.split('.')]):
|
|
33
|
-
return float(x)
|
|
34
|
-
case _: raise ValueError(f"Cannot parse argument: {x}\nof type: {type(x)}")
|
|
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
|
|
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
|