remoterf 0.0.7.35__py3-none-any.whl → 0.0.7.37__py3-none-any.whl
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.
Potentially problematic release.
This version of remoterf might be problematic. Click here for more details.
- remoteRF/core/app.py +81 -12
- remoteRF/core/certs/server.crt +17 -17
- remoteRF/core/certs/server.key +26 -26
- {remoterf-0.0.7.35.dist-info → remoterf-0.0.7.37.dist-info}/METADATA +2 -2
- {remoterf-0.0.7.35.dist-info → remoterf-0.0.7.37.dist-info}/RECORD +8 -8
- {remoterf-0.0.7.35.dist-info → remoterf-0.0.7.37.dist-info}/WHEEL +0 -0
- {remoterf-0.0.7.35.dist-info → remoterf-0.0.7.37.dist-info}/entry_points.txt +0 -0
- {remoterf-0.0.7.35.dist-info → remoterf-0.0.7.37.dist-info}/top_level.txt +0 -0
remoteRF/core/app.py
CHANGED
|
@@ -13,7 +13,7 @@ account = RemoteRFAccount()
|
|
|
13
13
|
session = PromptSession()
|
|
14
14
|
|
|
15
15
|
def welcome():
|
|
16
|
-
printf("Welcome to RemoteRF
|
|
16
|
+
printf(f"Welcome to the RemoteRF Platform", (Sty.BOLD, Sty.BLUE), f"\nCurrent version: {print_my_version()} \nAll times are in Pacific Time (Los Angeles)", (Sty.GRAY))
|
|
17
17
|
try:
|
|
18
18
|
inpu = session.prompt(stylize("Please ", Sty.DEFAULT, "login", Sty.GREEN, " or ", Sty.DEFAULT, "register", Sty.RED, " to continue. (", Sty.DEFAULT, 'l', Sty.GREEN, "/", Sty.DEFAULT, 'r', Sty.RED, "): ", Sty.DEFAULT))
|
|
19
19
|
if inpu == 'r':
|
|
@@ -49,21 +49,21 @@ def welcome():
|
|
|
49
49
|
exit()
|
|
50
50
|
|
|
51
51
|
def title():
|
|
52
|
-
printf(f"RemoteRF
|
|
52
|
+
printf(f"Welcome to the RemoteRF Platform", (Sty.BOLD, Sty.BLUE), f"\nCurrent version: {print_my_version()} \nAll times are in Pacific Time (Los Angeles)", (Sty.GRAY))
|
|
53
53
|
# printf(f"Logged in as: ", Sty.DEFAULT, f'{account.username}', Sty.MAGENTA)
|
|
54
|
-
printf(f"Input ", Sty.DEFAULT, "'help' ", Sty.BRIGHT_GREEN, "for avaliable commands.", Sty.DEFAULT)
|
|
54
|
+
printf(f"Input ", Sty.DEFAULT, "'help' ", Sty.BRIGHT_GREEN, "for a list of avaliable commands.", Sty.DEFAULT)
|
|
55
55
|
|
|
56
56
|
def commands():
|
|
57
57
|
printf("Commands:", Sty.BOLD)
|
|
58
|
-
printf("'clear' ", Sty.MAGENTA, "
|
|
59
|
-
printf("'getdev' ", Sty.MAGENTA, "
|
|
60
|
-
printf("'help' or 'h'", Sty.MAGENTA, "
|
|
61
|
-
printf("'perms' ", Sty.MAGENTA, "
|
|
62
|
-
printf("'exit' or 'quit'", Sty.MAGENTA, "
|
|
63
|
-
printf("'getres' ", Sty.MAGENTA, "
|
|
64
|
-
printf("'myres' ", Sty.MAGENTA, "
|
|
65
|
-
printf("'cancelres' ", Sty.MAGENTA, "
|
|
66
|
-
printf("'resdev' ", Sty.MAGENTA, "
|
|
58
|
+
printf("'clear' ", Sty.MAGENTA, " : Clear terminal", Sty.DEFAULT)
|
|
59
|
+
printf("'getdev' ", Sty.MAGENTA, " : View devices", Sty.DEFAULT)
|
|
60
|
+
printf("'help' or 'h' ", Sty.MAGENTA, " : Show this help message", Sty.DEFAULT)
|
|
61
|
+
printf("'perms' ", Sty.MAGENTA, " : View permissions", Sty.DEFAULT)
|
|
62
|
+
printf("'exit' or 'quit' ", Sty.MAGENTA, ": Exit", Sty.DEFAULT)
|
|
63
|
+
printf("'getres' ", Sty.MAGENTA, " : View all reservations", Sty.DEFAULT)
|
|
64
|
+
printf("'myres' ", Sty.MAGENTA, " : View my reservations", Sty.DEFAULT)
|
|
65
|
+
printf("'cancelres' ", Sty.MAGENTA, " : Cancel a reservation", Sty.DEFAULT)
|
|
66
|
+
printf("'resdev' ", Sty.MAGENTA, " : Reserve a device", Sty.DEFAULT)
|
|
67
67
|
# printf("'resdev -n' ", Sty.MAGENTA, "- naive reserve device", Sty.DEFAULT)
|
|
68
68
|
# printf("'resdev s' ", Sty.MAGENTA, "- Reserve a Device (by single date)", Sty.DEFAULT)
|
|
69
69
|
# check if user is admin
|
|
@@ -73,6 +73,75 @@ def clear():
|
|
|
73
73
|
os.system('cls' if os.name == 'nt' else 'clear')
|
|
74
74
|
title()
|
|
75
75
|
|
|
76
|
+
# def print_my_version():
|
|
77
|
+
# import sys
|
|
78
|
+
# try:
|
|
79
|
+
# import importlib.metadata as md # Py3.8+
|
|
80
|
+
# top = __name__.split('.')[0]
|
|
81
|
+
# # Try mapping package → distribution (Py3.10+); fall back to same name.
|
|
82
|
+
# for dist in getattr(md, "packages_distributions", lambda: {})().get(top, []):
|
|
83
|
+
# return md.version(dist)
|
|
84
|
+
# return md.version(top)
|
|
85
|
+
# except Exception:
|
|
86
|
+
# # Last resort: __version__ attribute if you define it.
|
|
87
|
+
# return getattr(sys.modules.get(__name__.split('.')[0]), "__version__", "unknown")
|
|
88
|
+
|
|
89
|
+
def print_my_version(timeout=3.0):
|
|
90
|
+
"""
|
|
91
|
+
Return this package's installed version, tagged as (LATEST) or (OUTDATED → X).
|
|
92
|
+
Uses only the Python stdlib.
|
|
93
|
+
"""
|
|
94
|
+
import sys, json, urllib.request, re
|
|
95
|
+
try:
|
|
96
|
+
import importlib.metadata as md # Py 3.8+
|
|
97
|
+
top = __name__.split('.')[0]
|
|
98
|
+
dists = getattr(md, "packages_distributions", lambda: {})().get(top, []) or [top]
|
|
99
|
+
|
|
100
|
+
# Simple PEP440-ish comparator using only stdlib
|
|
101
|
+
def _canon(v):
|
|
102
|
+
parts = re.split(r'[.\-+]', v)
|
|
103
|
+
out = []
|
|
104
|
+
for p in parts:
|
|
105
|
+
if p.isdigit():
|
|
106
|
+
out.append((0, int(p)))
|
|
107
|
+
continue
|
|
108
|
+
t = p.lower().replace("alpha", "a").replace("beta", "b").replace("pre", "rc")
|
|
109
|
+
m = re.match(r'([a-z]+)(\d*)', t)
|
|
110
|
+
if m:
|
|
111
|
+
rank = {'dev': -1, 'a': 0, 'b': 1, 'rc': 2, 'post': 4}.get(m.group(1), 3)
|
|
112
|
+
out.append((1, rank, int(m.group(2) or 0)))
|
|
113
|
+
else:
|
|
114
|
+
out.append((2, t))
|
|
115
|
+
return tuple(out)
|
|
116
|
+
|
|
117
|
+
def _cmp(v1, v2):
|
|
118
|
+
a, b = _canon(v1), _canon(v2)
|
|
119
|
+
return (a > b) - (a < b)
|
|
120
|
+
|
|
121
|
+
for dist in dists:
|
|
122
|
+
try:
|
|
123
|
+
installed = md.version(dist)
|
|
124
|
+
except Exception:
|
|
125
|
+
continue
|
|
126
|
+
|
|
127
|
+
latest = None
|
|
128
|
+
try:
|
|
129
|
+
with urllib.request.urlopen(f"https://pypi.org/pypi/{dist}/json", timeout=timeout) as r:
|
|
130
|
+
latest = (json.load(r)["info"]["version"] or "").strip() or None
|
|
131
|
+
except Exception:
|
|
132
|
+
pass
|
|
133
|
+
|
|
134
|
+
if not latest:
|
|
135
|
+
return installed # offline or project not on PyPI
|
|
136
|
+
|
|
137
|
+
return installed + (" (LATEST)" if _cmp(installed, latest) >= 0
|
|
138
|
+
else f" (OUTDATED \u2192 {latest})")
|
|
139
|
+
|
|
140
|
+
# Fallback: use __version__ if importlib metadata couldn't resolve
|
|
141
|
+
return getattr(sys.modules.get(top), "__version__", "unknown")
|
|
142
|
+
except Exception:
|
|
143
|
+
return "unknown"
|
|
144
|
+
|
|
76
145
|
def reservations():
|
|
77
146
|
data = account.get_reservations()
|
|
78
147
|
if 'ace' in data.results:
|
remoteRF/core/certs/server.crt
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
MIIDJjCCAg6gAwIBAgIUEutLmDonaXbPUYklSjQw9IoSI/wwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwGTEXMBUGA1UEAwwOMTY0LjY3LjE5NS4yMDcwIBcNMjUwOTI5MjAyNjI2WhgP
|
|
4
|
+
MjEyNTA5MDUyMDI2MjZaMBkxFzAVBgNVBAMMDjE2NC42Ny4xOTUuMjA3MIIBIjAN
|
|
5
|
+
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzTdU+Of3lKJlNVzPvB5FVF/o3TBT
|
|
6
|
+
DC+xi9O1cjAfm6IDBfBTyP8oD1kTyevNP+N14p6zn7Xxd1Dd6M0m4h+381+fwHQx
|
|
7
|
+
hKzPXaH1Xefy7OuKmMuyZH7i5GZtnOXMa+2sMuekEQhwqn9U2NIwL1jr2/z3sd3b
|
|
8
|
+
W52bdDfstU29htpTEgLZ3cS0zknElg7R5Qhd6ZX9L1/O8DP2XaOcM3UG4YcXXwuh
|
|
9
|
+
EV7fGy28JIwKHyUXHWNLOSINOKfsXdBTUJa1WEzid2pTDKjd1oKAMta3LP38MTK4
|
|
10
|
+
xkGQ7mQnBGhh4cbHSWNKqglGc/ZWBVlLC6jZJw6Q+RZpnHBZbpVN0kbXGQIDAQAB
|
|
11
|
+
o2QwYjAdBgNVHQ4EFgQUe1g9n2C1VBHUdIutCWzU/WNqUnswHwYDVR0jBBgwFoAU
|
|
12
|
+
e1g9n2C1VBHUdIutCWzU/WNqUnswDwYDVR0TAQH/BAUwAwEB/zAPBgNVHREECDAG
|
|
13
|
+
hwSkQ8PPMA0GCSqGSIb3DQEBCwUAA4IBAQBetHfCe999KPuT5rnL8+P+DKhCHYm1
|
|
14
|
+
vX6rmIhtYUj/m50xvf+TCJv/799fXfpX/G2fe1Gm40uPGjwNHYaUuJHaTDtqR7vs
|
|
15
|
+
R9F7+tOlJ+03u2Ue8e8jIzPbXt/ThpCbUPDsXbAImqgYEF6b2xR6abf5zn9jiBiM
|
|
16
|
+
jCawdjsB2mcgKp/5BlTeajQj6rM7Gyvl6YpQ5v03f2xDTIyqV9sAVChyv63jPU6j
|
|
17
|
+
iH9FFEFoBx7i3Vszx95lExid/bL/OTZoaQkpXHjSsqSwfL0BG3ZJEfjVsbfKolZN
|
|
18
|
+
HNIbcnf/t/B+XmLFFBy/wpVPuALnAOxMmYatrB/qMzq/UDIvA4DHgaSl
|
|
19
19
|
-----END CERTIFICATE-----
|
remoteRF/core/certs/server.key
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
-----BEGIN PRIVATE KEY-----
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDNN1T45/eUomU1
|
|
3
|
+
XM+8HkVUX+jdMFMML7GL07VyMB+bogMF8FPI/ygPWRPJ680/43XinrOftfF3UN3o
|
|
4
|
+
zSbiH7fzX5/AdDGErM9dofVd5/Ls64qYy7JkfuLkZm2c5cxr7awy56QRCHCqf1TY
|
|
5
|
+
0jAvWOvb/Pex3dtbnZt0N+y1Tb2G2lMSAtndxLTOScSWDtHlCF3plf0vX87wM/Zd
|
|
6
|
+
o5wzdQbhhxdfC6ERXt8bLbwkjAofJRcdY0s5Ig04p+xd0FNQlrVYTOJ3alMMqN3W
|
|
7
|
+
goAy1rcs/fwxMrjGQZDuZCcEaGHhxsdJY0qqCUZz9lYFWUsLqNknDpD5FmmccFlu
|
|
8
|
+
lU3SRtcZAgMBAAECggEADBKewZvn8UsSeC6zG+aN/pY73VNb92IQ6GB2krapDV9d
|
|
9
|
+
HSrTywXTxf9gDid8pi8L/t6GQ7WQ9IuB2pHDIVdrW3p7K/fJ9/uwoVoHVNRx8qUy
|
|
10
|
+
vKVzI71hPL2X4jyUp57OXBpLiSL9edJO3AiVhBuPmJwLuF+MaZnejNpDZzEhHr87
|
|
11
|
+
RhD50umMNSXSL16pPuWihV73700UkoGbi4UChmbVPza0EJnS9trIqTeoKsQmAhC6
|
|
12
|
+
idmzfJGaTLl6BoQYJSxi8OR+zeGYN91OMtGOM10W0kZSV0p92/SOoaKN9LH7wgK1
|
|
13
|
+
HEabo5eyGpsDMAhBCDQ7XrcqZywpF88Ttp09GbzrjwKBgQD5f3TMEp3k0ADvf1DX
|
|
14
|
+
ln+f+MhVeDu3yfN4F/lPJciWHp24uu4feF++z78FKvlplDhXko6e85tSJKk86N8/
|
|
15
|
+
6/kgkc9Ndljw6YxelhItPStHjQZXVMXOEQJr5x6patV+oeF5O+nnmYUcydw96PeA
|
|
16
|
+
rGiuJj1+y2QEppTi3aU0uK0TowKBgQDSkHJfeKjppLX4O/gApNw+Y3D5u6ezcjM1
|
|
17
|
+
yiB81UcBtN8gNMWoEFTphAQnD5ieNFvChmY6x0NpSVPstcWj7NSNOHfTU9ctptg8
|
|
18
|
+
LkuJtfDgcfoPUuRKqFZx30EAr/zDce3tvhR/98KyffjomYOdycUPWgVaIdcpXp+A
|
|
19
|
+
8eIS3C42EwKBgAlkTd48uSra1Z4uWbmz1ZwM/mWRQBY8COk1ZdIf5vwXrPI+PyZ6
|
|
20
|
+
HoiNQ3CLXJYn2TMatjmvi+I8tQ4w6e57EIa0VmxhDxoKgJky5v5C9jUcTufMriGC
|
|
21
|
+
rGepbJMODXlV2Kn6omRwd/1Mb/j4oxB57PrZP6ldOKegKayckVJ5vTInAoGAUeP7
|
|
22
|
+
l0XF65gzbSdlfFqhjWH/PiDNR+zSHclOeT45L2C4pj3f4Uz4uRiuxMI8CMs0JKNA
|
|
23
|
+
fvugLAJosVbAVtB0mbesYnPo68hHsKAQoK4x0BiDuBH011RAymiZTzsigqB8eEnE
|
|
24
|
+
j0A8aE61z0Bk/6jJCv9ntXYTx/MU9YEc+1jGYCECgYB9Y32sH3xV2LdMKlhFtjux
|
|
25
|
+
WAyyAN+C7Ly8jzwpHQMxpSxHZ16tO/V+0mMIqZHRz1X+DKqO4h6t1j3Bn0u9Tm/i
|
|
26
|
+
vXNDEfy9RF/9U16s0ByK6QzwTodevNg7SEP6YzagR6DlCzIwj0Xbs9m9BHT7Ypia
|
|
27
|
+
J2qGfS7rsnmSP31AtQhikA==
|
|
28
28
|
-----END PRIVATE KEY-----
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remoterf
|
|
3
|
-
Version: 0.0.7.
|
|
4
|
-
Summary: A python API to remotely access signal centric hardware. Client-side only!
|
|
3
|
+
Version: 0.0.7.37
|
|
4
|
+
Summary: A python API to remotely access signal centric hardware. Client-side only! Courtesy of Wireless Lab @ UCLA & Prof. Ian Roberts.
|
|
5
5
|
Author: Ethan Ge
|
|
6
6
|
Author-email: ethoGalaxy@gmail.com
|
|
7
7
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -10,7 +10,7 @@ remoteRF/common/utils/list_string.py,sha256=qsch666vX2e3CZ2W5EdYi62dOk37k1v2yPpH
|
|
|
10
10
|
remoteRF/common/utils/process_arg.py,sha256=J1REqgjm-1daqTBdVASgDd-16y-KneOJpCZXPEOklVk,2971
|
|
11
11
|
remoteRF/core/__init__.py,sha256=XQiCe8kyzM7XLxA883-uDndBmbr-NXo1uvtMJT2h6oA,73
|
|
12
12
|
remoteRF/core/acc_login.py,sha256=UcY3rDLAwHoJ9lYXRfm26z_6yJX0JSoKv-u1mF6n0Gs,49
|
|
13
|
-
remoteRF/core/app.py,sha256=
|
|
13
|
+
remoteRF/core/app.py,sha256=NrpXWeeQb1nIWA-4uG7gpK7Wvu5QxNIj_0MzbAOmuAc,24126
|
|
14
14
|
remoteRF/core/grpc_acc.py,sha256=bspLTzblhqYVVEFPwdvXrDZjREBWJVvD_SaT_cja6kU,2441
|
|
15
15
|
remoteRF/core/grpc_client.py,sha256=540JkGsJ8_poN_aRn3FJmuGN4078or06ke00T6A7qEo,3143
|
|
16
16
|
remoteRF/core/version.py,sha256=iMcmRB5ZxCliJZgPU6utwCia5M9HJ-J8E-LpPmcEgS8,182
|
|
@@ -19,13 +19,13 @@ remoteRF/core/certs/ca.crt,sha256=Rp8V8Mi413an0rO_dy7sH32j77ppVP1POZ-g7_eVtDU,20
|
|
|
19
19
|
remoteRF/core/certs/ca.key,sha256=h5UQDlCcf7munMLTROYk6TGt9Guf0ar9aHoRPlsR2sk,3272
|
|
20
20
|
remoteRF/core/certs/cert.pem,sha256=d90GwpyubEcyp1WUcyMCpn93HI8RUY96sMg5ynHrIMM,1127
|
|
21
21
|
remoteRF/core/certs/key.pem,sha256=cWJ4BYX47boqXBcPmN5r_9KqYS4gLyGXnHGPMwwrNMo,1704
|
|
22
|
-
remoteRF/core/certs/server.crt,sha256=
|
|
23
|
-
remoteRF/core/certs/server.key,sha256=
|
|
22
|
+
remoteRF/core/certs/server.crt,sha256=iBGe9iepYA0bBK1NV4lUrnp64qbLOcCq07hmO8-2aK8,1151
|
|
23
|
+
remoteRF/core/certs/server.key,sha256=aUbQk7TKZJyhp-l5noj4nnfmtLDendTiR_sGq4amX6U,1704
|
|
24
24
|
remoteRF/drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
25
|
remoteRF/drivers/adalm_pluto/__init__.py,sha256=_IOOeQXR6paCP7Eciw2aeKBUNvZs-jeBTwW8QqUlFyU,33
|
|
26
26
|
remoteRF/drivers/adalm_pluto/pluto_remote.py,sha256=6TTp6v6HCXnULHFh90GVbLDWk7RXY2oZo7iiCl8EZdI,7460
|
|
27
|
-
remoterf-0.0.7.
|
|
28
|
-
remoterf-0.0.7.
|
|
29
|
-
remoterf-0.0.7.
|
|
30
|
-
remoterf-0.0.7.
|
|
31
|
-
remoterf-0.0.7.
|
|
27
|
+
remoterf-0.0.7.37.dist-info/METADATA,sha256=1Rogo_Tw9-P5fKOs-tKSUboKPS0dGLiSFWOVIFHG8LQ,5173
|
|
28
|
+
remoterf-0.0.7.37.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
29
|
+
remoterf-0.0.7.37.dist-info/entry_points.txt,sha256=XUNbXzexoN1D7mmv6Q-5Bpwa6lZd0j55y15Ba6kSaT4,104
|
|
30
|
+
remoterf-0.0.7.37.dist-info/top_level.txt,sha256=XQJoVTmAOsHV9qtPSP_QSh0ma4jKxsDkxn4IjM_ZuZk,9
|
|
31
|
+
remoterf-0.0.7.37.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|