qlever 0.5.8__py3-none-any.whl → 0.5.9__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 qlever might be problematic. Click here for more details.

qlever/util.py CHANGED
@@ -29,8 +29,9 @@ def get_total_file_size(patterns: list[str]) -> int:
29
29
  return total_size
30
30
 
31
31
 
32
- def run_command(cmd: str, return_output: bool = False,
33
- show_output: bool = False) -> Optional[str]:
32
+ def run_command(
33
+ cmd: str, return_output: bool = False, show_output: bool = False
34
+ ) -> Optional[str]:
34
35
  """
35
36
  Run the given command and throw an exception if the exit code is non-zero.
36
37
  If `return_output` is `True`, return what the command wrote to `stdout`.
@@ -45,7 +46,7 @@ def run_command(cmd: str, return_output: bool = False,
45
46
  "shell": True,
46
47
  "text": True,
47
48
  "stdout": None if show_output else subprocess.PIPE,
48
- "stderr": subprocess.PIPE
49
+ "stderr": subprocess.PIPE,
49
50
  }
50
51
  result = subprocess.run(f"set -o pipefail; {cmd}", **subprocess_args)
51
52
  # If the exit code is non-zero, throw an exception. If something was
@@ -63,17 +64,20 @@ def run_command(cmd: str, return_output: bool = False,
63
64
  raise Exception(result.stderr.replace("\n", " ").strip())
64
65
  else:
65
66
  raise Exception(
66
- f"Command failed with exit code {result.returncode}"
67
- f" but nothing written to stderr")
67
+ f"Command failed with exit code {result.returncode}"
68
+ f" but nothing written to stderr"
69
+ )
68
70
  # Optionally, return what was written to `stdout`.
69
71
  if return_output:
70
72
  return result.stdout
71
73
 
72
74
 
73
- def run_curl_command(url: str,
74
- headers: dict[str, str] = {},
75
- params: dict[str, str] = {},
76
- result_file: Optional[str] = None) -> str:
75
+ def run_curl_command(
76
+ url: str,
77
+ headers: dict[str, str] = {},
78
+ params: dict[str, str] = {},
79
+ result_file: Optional[str] = None,
80
+ ) -> str:
77
81
  """
78
82
  Run `curl` with the given `url`, `headers`, and `params`. If `result_file`
79
83
  is `None`, return the output, otherwise, write the output to the given file
@@ -83,22 +87,29 @@ def run_curl_command(url: str,
83
87
  # Construct and run the `curl` command.
84
88
  default_result_file = "/tmp/qlever.curl.result"
85
89
  actual_result_file = result_file if result_file else default_result_file
86
- curl_cmd = (f"curl -s -o \"{actual_result_file}\""
87
- f" -w \"%{{http_code}}\n\" {url}"
88
- + "".join([f" -H \"{key}: {value}\""
89
- for key, value in headers.items()])
90
- + "".join([f" --data-urlencode {key}={shlex.quote(value)}"
91
- for key, value in params.items()]))
92
- result = subprocess.run(curl_cmd, shell=True, text=True,
93
- stdout=subprocess.PIPE,
94
- stderr=subprocess.PIPE)
90
+ curl_cmd = (
91
+ f'curl -s -o "{actual_result_file}"'
92
+ f' -w "%{{http_code}}\n" {url}'
93
+ + "".join([f' -H "{key}: {value}"' for key, value in headers.items()])
94
+ + "".join(
95
+ [
96
+ f" --data-urlencode {key}={shlex.quote(value)}"
97
+ for key, value in params.items()
98
+ ]
99
+ )
100
+ )
101
+ result = subprocess.run(
102
+ curl_cmd, shell=True, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
103
+ )
95
104
  # Case 1: An error occurred, raise an exception.
96
105
  if result.returncode != 0:
97
106
  if len(result.stderr) > 0:
98
107
  raise Exception(result.stderr)
99
108
  else:
100
- raise Exception(f"curl command failed with exit code "
101
- f"{result.returncode}, stderr is empty")
109
+ raise Exception(
110
+ f"curl command failed with exit code "
111
+ f"{result.returncode}, stderr is empty"
112
+ )
102
113
  # Case 2: Return output (read from `default_result_file`).
103
114
  if result_file is None:
104
115
  result_file_path = Path(default_result_file)
@@ -117,9 +128,9 @@ def is_qlever_server_alive(port: str) -> bool:
117
128
 
118
129
  message = "from the qlever script".replace(" ", "%20")
119
130
  curl_cmd = f"curl -s http://localhost:{port}/ping?msg={message}"
120
- exit_code = subprocess.call(curl_cmd, shell=True,
121
- stdout=subprocess.DEVNULL,
122
- stderr=subprocess.DEVNULL)
131
+ exit_code = subprocess.call(
132
+ curl_cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
133
+ )
123
134
  return exit_code == 0
124
135
 
125
136
 
@@ -152,15 +163,15 @@ def show_process_info(psutil_process, cmdline_regex, show_heading=True):
152
163
 
153
164
  try:
154
165
  pinfo = psutil_process.as_dict(
155
- attrs=['pid', 'username', 'create_time',
156
- 'memory_info', 'cmdline'])
166
+ attrs=["pid", "username", "create_time", "memory_info", "cmdline"]
167
+ )
157
168
  # Note: pinfo[`cmdline`] is `None` if the process is a zombie.
158
- cmdline = " ".join(pinfo['cmdline'] or [])
169
+ cmdline = " ".join(pinfo["cmdline"] or [])
159
170
  if len(cmdline) == 0 or not re.search(cmdline_regex, cmdline):
160
171
  return False
161
- pid = pinfo['pid']
162
- user = pinfo['username'] if pinfo['username'] else ""
163
- start_time = datetime.fromtimestamp(pinfo['create_time'])
172
+ pid = pinfo["pid"]
173
+ user = pinfo["username"] if pinfo["username"] else ""
174
+ start_time = datetime.fromtimestamp(pinfo["create_time"])
164
175
  if start_time.date() == date.today():
165
176
  start_time = start_time.strftime("%H:%M")
166
177
  else:
@@ -193,10 +204,24 @@ def is_port_used(port: int) -> bool:
193
204
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
194
205
  # Ensure that the port is not blocked after the check.
195
206
  sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
196
- sock.bind(('', port))
207
+ sock.bind(("", port))
197
208
  sock.close()
198
209
  return False
199
210
  except OSError as err:
200
211
  if err.errno != errno.EADDRINUSE:
201
212
  log.warning(f"Failed to determine if port is used: {err}")
202
213
  return True
214
+
215
+
216
+ def format_size(bytes, suffix="B"):
217
+ """
218
+ Scale bytes to its proper format
219
+ e.g:
220
+ 1253656 => '1.20MB'
221
+ 1253656678 => '1.17GB'
222
+ """
223
+ factor = 1024
224
+ for unit in ["", "K", "M", "G", "T", "P"]:
225
+ if bytes < factor:
226
+ return f"{bytes:.2f} {unit}{suffix}"
227
+ bytes /= factor
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qlever
3
- Version: 0.5.8
3
+ Version: 0.5.9
4
4
  Summary: Script for using the QLever SPARQL engine.
5
5
  Author-email: Hannah Bast <bast@cs.uni-freiburg.de>
6
6
  License: Apache-2.0
@@ -1,51 +1,52 @@
1
1
  qlever/__init__.py,sha256=7VKA8tp5iHZQyTXhDOcxUbloZ7WyxDnkruq0iJOzQcE,1403
2
- qlever/__main__.py,sha256=MqM37bEzQeJEGUXZvuLcilIvnObZiG2eTGIkfKGpdnw,62016
3
2
  qlever/command.py,sha256=yOr0Uc8D8-AM7EjwDsVzbc3KNYjPH-FVOZhIHkqO588,2749
4
3
  qlever/config.py,sha256=qYPy-MQ7BwGrvKSazQWhs0lnlOFqm-d47mpZhc3fptc,10254
5
- qlever/containerize.py,sha256=HRtC5jrRRpcBmdrXK2LsEAKiGVq2dWH1Oa2Ps2nvAsE,4643
4
+ qlever/containerize.py,sha256=bnHmjKIFEe-NcuAMRNnXAFjRVLcLnk9f5JspCCyhgt8,5210
6
5
  qlever/log.py,sha256=2O_RvFymnu_dB10ErBTAOsI8bgjORfdD0tE3USH-siM,1315
7
6
  qlever/qlever_main.py,sha256=tA_xqOs_FjvqlDIvKTprwuysfTwzsUjE7at26gRhCVA,2336
8
7
  qlever/qlever_old.py,sha256=X-JxmepFKYeFgSLLp0TRDNqXSxDwIbc8_0Xstiems8c,62026
9
- qlever/qleverfile.py,sha256=D321zDnWi-ScCefbFGBydKKI7lzzr1CkohHW6KuwVw0,13106
10
- qlever/util.py,sha256=20NQJquSk_mSqvlK4k0OrSBqWrxKs5SgVshm5ucus5o,7847
11
- qlever/Qleverfiles/Qleverfile.dblp,sha256=NKkvwgvJss0oEsnPLMcJazYyO-8yV_Or824hz9TlzR8,1083
12
- qlever/Qleverfiles/Qleverfile.dblp-plus,sha256=Dwd9pK1vPcelKfw6sA-IuyhbZ6yIxOh6_84JgPYnB9Q,1332
8
+ qlever/qleverfile.py,sha256=whFQOBCEb7XsCaLwBgI2rleRZaxTVEXe-mDCpgHnvss,13611
9
+ qlever/util.py,sha256=qLxBRyHPT2VTj0xcOCFcP6HV-Lm-g-64QpvOc4V0_a8,8029
10
+ qlever/Qleverfiles/Qleverfile.dblp,sha256=wXZweNfYgEx-IGF1vIJMgqYUSWanQlzPj1EzUOGVuXA,1340
11
+ qlever/Qleverfiles/Qleverfile.dblp-plus,sha256=TJHxp8I1P6JKJjbuAllEpB32-huuY1gH0FlenqPVJ5g,1334
13
12
  qlever/Qleverfiles/Qleverfile.dbpedia,sha256=aaNZZayE-zVePGSwPzXemkX__Ns8-kP_E7DNNKZPnqg,1160
14
- qlever/Qleverfiles/Qleverfile.default,sha256=UWDy9ohhbKjE4n5xEYqbOPZOiYDFzsnJ_aNNBMCOlaI,2402
13
+ qlever/Qleverfiles/Qleverfile.default,sha256=Kj-J1Kkv8PWN7wuMdZU6DUUlEuBIcSNysJCE-R63we8,2407
15
14
  qlever/Qleverfiles/Qleverfile.dnb,sha256=43w_CVi00yf7FHdDvBtHHQR3yU1d-JCNnD_uxYZJOvk,1803
16
- qlever/Qleverfiles/Qleverfile.fbeasy,sha256=jeztW4gFpWL_w1nCH5qGHeZyZv2lz_kG6f1G3r3DkJ4,974
17
- qlever/Qleverfiles/Qleverfile.freebase,sha256=k6PqYrtHTBr0EydObm1Hg9QWyAAM9fXkdcjhReDg0fM,1035
18
- qlever/Qleverfiles/Qleverfile.imdb,sha256=8F6tpEi0uXsMm6lofwjNkLq1X9IEUSoHK8YK_5YCf_g,1638
15
+ qlever/Qleverfiles/Qleverfile.fbeasy,sha256=9dwCMltT0BIMN4LRmaZFp1a7aV0kh0nJ9XLiQb_NJNo,940
16
+ qlever/Qleverfiles/Qleverfile.freebase,sha256=eFMOxeyuWVbb06Gv2-VFkuKE5tTyckddTDHdw5wbZN8,1028
17
+ qlever/Qleverfiles/Qleverfile.imdb,sha256=1xUBFimgnEHKP_o6tlqwJvIVpEE4Zx6UK_JnnQsG7Ew,1638
19
18
  qlever/Qleverfiles/Qleverfile.ohm-planet,sha256=yG6NgW6x6sGTzmCi1wEAkQ-i9goTj2u3PQxvCUwjExs,2122
20
19
  qlever/Qleverfiles/Qleverfile.olympics,sha256=5w9BOFwEBhdSzPz-0LRxwhv-7Gj6xbF539HOXr3cqD0,1088
20
+ qlever/Qleverfiles/Qleverfile.orkg,sha256=Uizz-RhlSeExgfckWztewa4l_v3zMN8IR7NaGYKrqt4,937
21
21
  qlever/Qleverfiles/Qleverfile.osm-country,sha256=Pb9o5H3b7wVlVRgdiPHWCvrnkIRS1YUhxOazbUmoKZE,1897
22
- qlever/Qleverfiles/Qleverfile.osm-planet,sha256=2RilNix0fplN3GsNNyOu3GzmUss1Pq7586WKOFAQnSs,1400
22
+ qlever/Qleverfiles/Qleverfile.osm-planet,sha256=555aaMOIzAILvzwpCjucd_GE7TlYxmT2Qh8hME68stU,1418
23
23
  qlever/Qleverfiles/Qleverfile.pubchem,sha256=YuDzWQmukSvL1opu7cf1KX9407_P21lmecYZ9cdbuvA,5611
24
24
  qlever/Qleverfiles/Qleverfile.scientists,sha256=9eZ2c6P9a3E3VHa3RR7LdOQbF4k3oyyrn56Z3u4LZYs,1164
25
25
  qlever/Qleverfiles/Qleverfile.uniprot,sha256=9kAKseomdUnIt7EAZge39g1MTuaLVaSW9JYLHzIMolM,2338
26
- qlever/Qleverfiles/Qleverfile.vvz,sha256=ftdMj5dCC9jAlFtNt2WR7kP30w0itT_iYtj5HoUVyWU,931
27
- qlever/Qleverfiles/Qleverfile.wikidata,sha256=vDkTY3mPSx2C8MvFWfB72zZoc4d-TMJSw3f_-FqnEqs,1275
26
+ qlever/Qleverfiles/Qleverfile.vvz,sha256=cLzm85erKoFCDllH5eFcSi35MdR6Tahj1MgtvGRxanM,922
27
+ qlever/Qleverfiles/Qleverfile.wikidata,sha256=BB7GHAY-lV0B10BWabPOUKtqWjEHFPn3UQc6f4i2-14,2474
28
28
  qlever/Qleverfiles/Qleverfile.wikipathways,sha256=UFEVLrtOBiSQfibBN9xc2wDXrnWcnx5f8PY9khcE6bc,1983
29
- qlever/Qleverfiles/Qleverfile.yago-4,sha256=GikYPqChCtbAyZOVqszmVUwgQxSePTcgM8xw2b_21e4,1849
29
+ qlever/Qleverfiles/Qleverfile.yago-4,sha256=hAS_2ZmC1zxNsKXip7t1F_iqu3CC-6O7v6HZhuFbnWY,1819
30
30
  qlever/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  qlever/commands/add_text_index.py,sha256=dkqYtwgOhgnXiei_eyhBWYCtdAiQUEmjWoa3JMlMb4c,3641
32
32
  qlever/commands/cache_stats.py,sha256=6JjueQstAqc8dNfgY8TP2EitFMxdUvCwrcyd7KUEb2o,4157
33
33
  qlever/commands/clear_cache.py,sha256=AnE1MOoj1ZexxrRT8FGeBLlv8rtQIVV4DP8VBn5-X-s,2843
34
- qlever/commands/example_queries.py,sha256=5-0ln5EkuDcQYPqKKAOcLaTIStMzFhkAogaNedfRc_I,15271
34
+ qlever/commands/example_queries.py,sha256=rtMOQw7cJe0Aia_1O7UyKcxHbz7ln9BSZYWUQI9OFA8,16389
35
35
  qlever/commands/get_data.py,sha256=f9kjZI3TKad6JHSuXWNkeoajmW8h0Sx8ShvjauDCtNo,1412
36
- qlever/commands/index.py,sha256=7tdExYVwJMgBT54gj06oyBPZLR1EraEtPJe86ErV4t4,5891
36
+ qlever/commands/index.py,sha256=Ebb5dSDJ0u_AElKPgMzQN0YxPgpqbeNT1JscM3xGiMo,10256
37
37
  qlever/commands/index_stats.py,sha256=_BiUNBhmbYd9RPxrlm4HF0oENO6JmqnRiAkwkyOdN4U,11722
38
38
  qlever/commands/log.py,sha256=8Krt3MsTUDapYqVw1zUu5X15SF8mV97Uj0qKOWK8jXk,1861
39
39
  qlever/commands/query.py,sha256=_IDH-M8gKL_f1i5wzu0X452pZSUD0_qXl6bPXC85wX0,2750
40
- qlever/commands/setup_config.py,sha256=6T0rXrIdejKMKhDbOMEMBKyMF_hAqO5nJaRFb57QPQU,2964
40
+ qlever/commands/setup_config.py,sha256=p0-wJcalzEOrSkIiaicQjOkp_WVNEeLsd0A_WZrlGfs,3345
41
41
  qlever/commands/start.py,sha256=2rOtk3NmhEs28D5csL_a1BdjSWU9VkcH6AqYT0vdww0,9285
42
42
  qlever/commands/status.py,sha256=5S6EdapZEwFKV9cQZtNYcZhMbAXAY-FP6ggjIhfX8ek,1631
43
43
  qlever/commands/stop.py,sha256=TZs4bxKHvujlZAU8BZmFjA5eXSZNAa6EeNzvPpEZsuI,4139
44
- qlever/commands/ui.py,sha256=b7g7Mp6ZWevn8f1kwFr-WR4ZWMq42KEV4cGl2QS7M1E,2828
44
+ qlever/commands/system_info.py,sha256=SShsnEV7QROgdbABeJ6Wk4U_CNjqlYO1J5HrpNCVNMs,4615
45
+ qlever/commands/ui.py,sha256=rZxIYHZr-PqgQKfvVwl8woDnTGR-sFc-f6cPjcORaOk,3611
45
46
  qlever/commands/warmup.py,sha256=WOZSxeV8U_F6pEEnAb6YybXLQMxZFTRJXs4BPHUhsmc,1030
46
- qlever-0.5.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
47
- qlever-0.5.8.dist-info/METADATA,sha256=Cds_PBvPYvMOqlLAZAFdMF4hKjjaAhuCPJtKCzqZIXg,4582
48
- qlever-0.5.8.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
49
- qlever-0.5.8.dist-info/entry_points.txt,sha256=U_gbYYi0wwdsn884eb0XoOXfvhACOsxhlO330dZ9bi0,87
50
- qlever-0.5.8.dist-info/top_level.txt,sha256=kd3zsYqiFd0--Czh5XTVkfEq6XR-XgRFW35X0v0GT-c,7
51
- qlever-0.5.8.dist-info/RECORD,,
47
+ qlever-0.5.9.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
+ qlever-0.5.9.dist-info/METADATA,sha256=uoi2Wb5N4Co5DdD-gG-uaxgfl1PrWhNY5Twr56clyTk,4582
49
+ qlever-0.5.9.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
50
+ qlever-0.5.9.dist-info/entry_points.txt,sha256=U_gbYYi0wwdsn884eb0XoOXfvhACOsxhlO330dZ9bi0,87
51
+ qlever-0.5.9.dist-info/top_level.txt,sha256=kd3zsYqiFd0--Czh5XTVkfEq6XR-XgRFW35X0v0GT-c,7
52
+ qlever-0.5.9.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5