ipyvasp 0.9.85__tar.gz → 0.9.86__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 (30) hide show
  1. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/PKG-INFO +1 -1
  2. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/__init__.py +1 -0
  3. ipyvasp-0.9.86/ipyvasp/_version.py +1 -0
  4. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/utils.py +34 -0
  5. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/widgets.py +4 -2
  6. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp.egg-info/PKG-INFO +1 -1
  7. ipyvasp-0.9.85/ipyvasp/_version.py +0 -1
  8. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/LICENSE +0 -0
  9. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/README.md +0 -0
  10. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/__main__.py +0 -0
  11. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/_enplots.py +0 -0
  12. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/_lattice.py +0 -0
  13. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/bsdos.py +0 -0
  14. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/cli.py +0 -0
  15. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/core/__init__.py +0 -0
  16. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/core/parser.py +0 -0
  17. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/core/plot_toolkit.py +0 -0
  18. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/core/serializer.py +0 -0
  19. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/core/spatial_toolkit.py +0 -0
  20. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/evals_dataframe.py +0 -0
  21. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/lattice.py +0 -0
  22. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/misc.py +0 -0
  23. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp/potential.py +0 -0
  24. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp.egg-info/SOURCES.txt +0 -0
  25. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp.egg-info/dependency_links.txt +0 -0
  26. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp.egg-info/entry_points.txt +0 -0
  27. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp.egg-info/requires.txt +0 -0
  28. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/ipyvasp.egg-info/top_level.txt +0 -0
  29. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/setup.cfg +0 -0
  30. {ipyvasp-0.9.85 → ipyvasp-0.9.86}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ipyvasp
3
- Version: 0.9.85
3
+ Version: 0.9.86
4
4
  Summary: A processing tool for VASP DFT input/output processing in Jupyter Notebook.
5
5
  Home-page: https://github.com/massgh/ipyvasp
6
6
  Author: Abdul Saboor
@@ -18,6 +18,7 @@ __all__ = [ # For documentation purpose
18
18
  "webshow",
19
19
  "load_results",
20
20
  "parse_text",
21
+ "get_lines",
21
22
  "summarize",
22
23
  ]
23
24
 
@@ -0,0 +1 @@
1
+ __version__ = "0.9.86"
@@ -1,5 +1,6 @@
1
1
  __all__ = [
2
2
  "get_file_size",
3
+ "get_lines",
3
4
  "set_dir",
4
5
  "interpolate_data",
5
6
  "rolling_mean",
@@ -10,6 +11,7 @@ __all__ = [
10
11
 
11
12
  import re
12
13
  import os
14
+ import io
13
15
  from contextlib import contextmanager
14
16
  from pathlib import Path
15
17
  from inspect import signature, getdoc
@@ -33,6 +35,38 @@ def get_file_size(path: str):
33
35
  size /= 1024.0
34
36
  else:
35
37
  return ""
38
+
39
+ def get_lines(f, indices):
40
+ """Read lines by indexing from an opened file pointer `f`. Negative indexing is supported to read lines from end.
41
+ Returns a single str of line if one integer given, otherwise a list of lines.
42
+ This consumes a lot less memory then indexing over `f.readlines()[index]`.
43
+
44
+ >>> with open('some_file','r') as f:
45
+ >>> get_lines(f, -1) # last line
46
+ >>> get_lines(f, range(5)) # first 5 lines
47
+ >>> get_lines(f, range(-5,0)) # last 5 lines
48
+ """
49
+ if not isinstance(f, io.TextIOWrapper):
50
+ raise TypeError(f"f should be file-like object. got {type(f)}")
51
+
52
+ return_line = False
53
+ if isinstance(indices, int):
54
+ indices = [indices]
55
+ return_line = True
56
+
57
+ if not isinstance(indices, (tuple,list, range)):
58
+ raise TypeError(f"indices should int/list/tuple/range, got {type(indices)}")
59
+
60
+ f.seek(0)
61
+ if min(indices) < 0:
62
+ if not hasattr(f, '_nlines'): # do this once, assuming file is not changed while reading
63
+ f._nlines = sum(1 for _ in enumerate(f))
64
+ f.seek(0)
65
+
66
+ indices = [i + (f._nlines if i < 0 else 0) for i in indices] # make all positive
67
+
68
+ lines = [l for i, l in enumerate(f) if i in indices]
69
+ return lines[0] if return_line else lines
36
70
 
37
71
 
38
72
  def _sig_kwargs(from_func, skip_params=()):
@@ -447,8 +447,10 @@ class Files:
447
447
  >>> import json
448
448
  >>> import ipyvasp as ipv
449
449
  >>> files = ipv.Files(...)
450
- >>> files.mapf(lambda fp: json.load(fp),to_df=True)
451
- >>> files.mapf(lambda fp: [fp.readline() for _ in range(5)]) # read first five lines
450
+ >>> files.mapf(lambda fp: json.load(fp,cls=ipv.DecodeToNumpy),to_df=True) # or use ipv.load(path) in map
451
+ >>> files.mapf(lambda fp: ipv.get_lines(fp, range(5)) # read first five lines
452
+ >>> files.mapf(lambda fp: ipv.get_lines(fp, range(-5,0)) # read last five lines
453
+ >>> files.mapf(lambda fp: ipv.get_lines(fp, -1) # read last line
452
454
  """
453
455
  if not mode in 'rb':
454
456
  raise ValueError("Only 'r'/'rb' mode is allowed in this context!")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ipyvasp
3
- Version: 0.9.85
3
+ Version: 0.9.86
4
4
  Summary: A processing tool for VASP DFT input/output processing in Jupyter Notebook.
5
5
  Home-page: https://github.com/massgh/ipyvasp
6
6
  Author: Abdul Saboor
@@ -1 +0,0 @@
1
- __version__ = "0.9.85"
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