kbasic 0.2.2__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.
Files changed (27) hide show
  1. {kbasic-0.2.2 → kbasic-0.3.0}/PKG-INFO +1 -1
  2. {kbasic-0.2.2 → kbasic-0.3.0}/pyproject.toml +1 -1
  3. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/parsing/__init__.py +1 -1
  4. kbasic-0.3.0/src/kbasic/typing.py +34 -0
  5. kbasic-0.2.2/src/kbasic/typing.py +0 -34
  6. {kbasic-0.2.2 → kbasic-0.3.0}/README.md +0 -0
  7. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/Tex.py +0 -0
  8. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/__init__.py +0 -0
  9. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/array.py +0 -0
  10. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/audio/__init__.py +0 -0
  11. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/audio/lib/Caroline Rose - year of the slug - 01 everything in its right place.wav +0 -0
  12. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/audio/lib/success.mp3 +0 -0
  13. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/audio/sound.py +0 -0
  14. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/bar.py +0 -0
  15. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/environment/Keyan.py +0 -0
  16. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/environment/__init__.py +0 -0
  17. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/environment/anvil.py +0 -0
  18. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/environment/defaultPC.py +0 -0
  19. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/parsing/basic.py +0 -0
  20. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/parsing/log.py +0 -0
  21. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/parsing/parser.py +0 -0
  22. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/parsing/toml.py +0 -0
  23. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/parsing/utils.py +0 -0
  24. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/shell.py +0 -0
  25. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/strings.py +0 -0
  26. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/user_input.py +0 -0
  27. {kbasic-0.2.2 → kbasic-0.3.0}/src/kbasic/vectors.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kbasic
3
- Version: 0.2.2
3
+ Version: 0.3.0
4
4
  Summary: Keyan's basic utility functions.
5
5
  Author: Keyan Gootkin
6
6
  Author-email: Keyan Gootkin <keyangootkin@gmail.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kbasic"
3
- version = "0.2.2"
3
+ version = "0.3.0"
4
4
  description = "Keyan's basic utility functions."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -2,5 +2,5 @@
2
2
  kbasic.parsing is a module designed to deal with i/o in an object oriented way.
3
3
  """
4
4
  from kbasic.parsing.utils import could_be_path, ensure_path
5
- from kbasic.parsing.basic import File, Folder
5
+ from kbasic.parsing.basic import File, Folder, Path
6
6
  from kbasic.parsing.parser import parse
@@ -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