Skip to content

Commit a28f492

Browse files
committed
0.0.1a9
1 parent bddf85f commit a28f492

File tree

24 files changed

+438
-52
lines changed

24 files changed

+438
-52
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"cmake.configureOnOpen": false
3+
}

build/lib/eggdriver/pypi.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from eggdriver.resources import installFromRequests, sysCommand
1+
from eggdriver.resources import installFromRequests, sysCommand, py
22

33
"""
44
FUNCTION build()
@@ -10,9 +10,17 @@
1010
py -m twine check dist/*
1111
py -m twine upload dist/*
1212
"""
13-
def build():
13+
def build(autoVersion = True):
1414
"""Build and upload a pypi package release"""
1515
installFromRequests(["setuptools", "twine", "build"], False)
16+
if autoVersion:
17+
setup = py.getLines("setup")
18+
firstLine = setup[0].split()
19+
v = firstLine[2]
20+
value = int(v[7:-1]) + 1
21+
v = '0.0.1a' + str(value)
22+
firstLine = [f"v = \"{v}\""]
23+
py.writeLines(firstLine + setup[1:], "setup")
1624
sysCommand("-m build --sdist")
1725
sysCommand("-m build --wheel")
1826
sysCommand("-m twine check dist/*")
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
from eggdriver.resources.structures.lists import List
2+
from eggdriver.resources.utils import indexes
3+
from eggdriver.resources.math.linear.utils import *
4+
5+
class Vector(List):
6+
def __init__(self, vanillaList = []):
7+
if type(vanillaList) == str:
8+
temp = vanillaList.replace("[", "").replace("]", "")
9+
vanillaList = list(map(int, temp.split()))
10+
super().__init__(vanillaList)
11+
def plus(self, vector):
12+
return plus(self, vector)
13+
def dot(self, vector):
14+
return dot(self, vector)
15+
def scale(self, scalar):
16+
return scale(self, scalar)
17+
def expand(self, scalar):
18+
[self.append(0) for i in range(0, scalar)]
19+
20+
class Matrix(Vector):
21+
def __init__(self, vectorOfVectors = [], n = 0, m = 0):
22+
if vectorOfVectors == []:
23+
vectorOfVectors = Vector()
24+
for j in range(m):
25+
v = Vector()
26+
v.expand(n)
27+
vectorOfVectors.append(v)
28+
elif type(vectorOfVectors) == str:
29+
if n == 0:
30+
raise LinearError(2)
31+
else:
32+
temp = vectorOfVectors.replace("|", "")
33+
M = list(map(int, temp.split()))
34+
output = [M[i:i + m] for i in range(0, len(M), m)]
35+
vectorOfVectors = list(map(Vector, output))
36+
super().__init__(vectorOfVectors)
37+
def display(self):
38+
for i in self:
39+
print(i.display(True, ["|", "|"]))
40+
@property
41+
def det(self):
42+
return determinant(self)
43+
@property
44+
def n(self):
45+
return len(self)
46+
@property
47+
def m(self):
48+
return len(self[0])
49+
50+
def rowReduce(matrix: Matrix):
51+
result = Vector()
52+
return result
53+
54+
def determinant(M):
55+
result = M[0][0]
56+
if M.n != M.m:
57+
raise LinearError(1)
58+
elif M.n > 1:
59+
row = M[0]
60+
result = 0
61+
for i in indexes(row):
62+
minor = subMatrix(M, 0, i)
63+
result = result + (((-1) ** i) * M[0][i] * determinant(minor))
64+
return result
65+
66+
def subMatrix(M, row, column):
67+
result = Matrix()
68+
for i in range(M.n):
69+
if i != row:
70+
v = Vector()
71+
for j in range(M.m):
72+
if j != column:
73+
v.append(M[i][j])
74+
result.append(v)
75+
return result
76+
77+
def plus(a, b, autoExpand = False):
78+
result = Vector()
79+
if len(a) != len(b):
80+
if autoExpand:
81+
dualExpand(a, b)
82+
else:
83+
raise LinearError
84+
if len(a) != 0 and len(a) == len(b):
85+
for i in range(0, a.size):
86+
result.append(a[i] + b[i])
87+
return result
88+
89+
def scale(vector, scalar):
90+
result = Vector()
91+
if vector.size != 0:
92+
for i in vector:
93+
result.append(scalar * i)
94+
return result
95+
96+
def vectorize(poly: str):
97+
"""Transform a string polynomial into a coordinates vector"""
98+
p = poly.split(" ")
99+
result = Vector()
100+
coefs = List()
101+
exps = List()
102+
for i in p:
103+
temp = i + "^1"
104+
monomial = temp.strip("+").split("^")
105+
c = monomial[0].strip("x")
106+
if c == "":
107+
coef = 1.0
108+
else:
109+
coef = float(c)
110+
exp = int(monomial[1])
111+
if "x" not in i:
112+
exp = 0
113+
coefs.append(coef)
114+
exps.append(exp)
115+
degree = 0
116+
for i in indexes(exps):
117+
if exps[i] > degree:
118+
degree = exps[i]
119+
result.expand(degree + 1)
120+
for i in indexes(coefs):
121+
result[exps[i]] += coefs[i]
122+
return result
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class LinearError(Exception):
2+
def __init__(self, type = 0):
3+
message = {
4+
0: "Vectors have to be of the same size",
5+
1: "Matrix must be a squared matrix",
6+
2: "Number of rows (n) must not be 0"
7+
}
8+
super().__init__(message[type])
9+
10+
def dot(a, b, autoExpand = False):
11+
result = 0
12+
if len(a) != len(b):
13+
if autoExpand:
14+
dualExpand(a, b)
15+
else:
16+
raise LinearError
17+
if len(a) != 0 and len(a) == len(b):
18+
for i in range(0, a.size):
19+
result += a[i] * b[i]
20+
return result
21+
22+
def dualExpand(a, b):
23+
if a.size < b.size:
24+
a.expand(b.size - a.size)
25+
else:
26+
b.expand(a.size - b.size)

build/lib/eggdriver/resources/modules.py

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
from eggdriver.resources.extensions import withoutFormat
55
from eggdriver.resources.console import ProgressBar
66

7+
def fail():
8+
print(white + "Install failed")
9+
10+
def sucess(name):
11+
print(white + name + " succesfully installed")
12+
713
def isntInstalled(package):
814
"""Returns True if a PyPI is not installed"""
915
spec = importlib.util.find_spec(package)
@@ -12,13 +18,13 @@ def isntInstalled(package):
1218
return True
1319
return False
1420

15-
def install_option_1(name: str):
21+
def install_option_1(*names):
1622
"""Implement pip as a subprocess"""
17-
if name == "$upgrade":
18-
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'pip'])
19-
else:
20-
subprocess.check_call([sys.executable, '-m', 'pip', 'install', name])
21-
return "done"
23+
for name in names:
24+
if name == "$upgrade":
25+
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'pip'])
26+
else:
27+
subprocess.check_call([sys.executable, '-m', 'pip', 'install', name])
2228

2329
def install_option_2(name: str):
2430
"""Implement pip using pip package"""
@@ -48,29 +54,70 @@ def installFromGithub(userOrOrganization: str, packages: list):
4854
print(white + package +" succesfully installed")
4955
print(white + f"Try \'import {package}\'")
5056

51-
def install(name: str):
52-
"""Install a PyPI package"""
53-
try:
54-
installFromRequests(name,0)
55-
#raise Exception("error")
56-
except:
57-
print(white + "Install failed")
58-
print(white + "Retrying...")
57+
def installFromPip(*packages):
58+
"""Install PyPI packages"""
59+
for name in packages:
5960
try:
60-
install_option_2(name)
61+
installFromRequests(name,0)
62+
sucess(name)
6163
except:
62-
print(white + "Install failed")
63-
return "error"
64-
print(white + name + " succesfully installed")
65-
return "done"
64+
fail()
65+
print(white + "Retrying...")
66+
try:
67+
install_option_2(name)
68+
sucess(name)
69+
except:
70+
fail()
71+
72+
def installFromPipwin(*packages):
73+
"""Install unofficial python packages binaries for Windows provided by Christoph Gohlke"""
74+
if isntInstalled("pipwin"):
75+
subprocess.check_call([sys.executable, '-m', 'pip', 'install', "pipwin"])
76+
for name in packages:
77+
try:
78+
subprocess.check_call([sys.executable, '-m', 'pipwin', 'install', name])
79+
sucess(name)
80+
except:
81+
fail()
82+
83+
def installFromEasyinstall(*packages):
84+
"""Install easyinstall packages"""
85+
if isntInstalled("easyinstall"):
86+
subprocess.check_call([sys.executable, '-m', 'pip', 'install', "easyinstall"])
87+
for name in packages:
88+
try:
89+
subprocess.check_call([sys.executable, '-m', 'easyinstall', 'install', name])
90+
sucess(name)
91+
except:
92+
fail()
93+
94+
def install(*packages):
95+
"""Install python packages"""
96+
for name in packages:
97+
try:
98+
installFromPip(name)
99+
sucess(name)
100+
except:
101+
fail()
102+
print(white + "Retrying...")
103+
try:
104+
installFromPipwin(name)
105+
sucess(name)
106+
except:
107+
fail()
108+
print(white + "Retrying...")
109+
try:
110+
installFromEasyinstall(name)
111+
sucess(name)
112+
except:
113+
fail()
66114

67115
def upgrade(name: str):
68116
"""Update a PyPI package"""
69117
try:
70118
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', name])
71119
except:
72120
print(white + name + " succesfully ugraded")
73-
return "done"
74121

75122
class Repo():
76123
"""Github Repo class"""
35.4 KB
Binary file not shown.

dist/eggdriver-0.0.1a9.tar.gz

46.9 MB
Binary file not shown.

eggdriver.egg-info/PKG-INFO

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Metadata-Version: 2.1
22
Name: eggdriver
3-
Version: 0.0.1a8
3+
Version: 0.0.1a9
44
Summary: Your proyect trusted driver.
55
Home-page: https://github.com/PythonForChange/eggdriver
66
Author: Emmanuel Norambuena

0 commit comments

Comments
 (0)