rgwfuncs 0.0.69__py3-none-any.whl → 0.0.71__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.
@@ -11,7 +11,6 @@ from .algebra_lib import * # noqa: F401, F403, E402
11
11
  from .str_lib import * # noqa: F401, F403, E402
12
12
  from .docs_lib import * # noqa: F401, F403, E402
13
13
 
14
-
15
14
  def interactive_shell(local_vars: Dict[str, Any], shell_color: str = '\033[37m') -> None:
16
15
  """
17
16
  Launches an interactive prompt for inspecting and modifying local variables, making all methods
@@ -34,13 +33,12 @@ def interactive_shell(local_vars: Dict[str, Any], shell_color: str = '\033[37m')
34
33
  print(f"{shell_color}Warning: Could not load history file: {e}\033[0m")
35
34
  atexit.register(readline.write_history_file, HISTORY_FILE)
36
35
 
37
-
38
36
  def colorize_output(text: str, shell_color: str) -> str:
39
- """Apply shell color to text if it doesn’t already contain ANSI codes."""
40
- if '\033[' not in text:
37
+ """Apply shell color only to text without ANSI codes, preserving existing codes."""
38
+ # Split text into segments around ANSI escape sequences
39
+ if '\x1b[' not in text and '\033[' not in text:
41
40
  return f"{shell_color}{text}\033[0m"
42
- return text
43
-
41
+ return text # Return unchanged if it contains ANSI codes
44
42
 
45
43
  if not isinstance(local_vars, dict):
46
44
  raise TypeError("local_vars must be a dictionary")
@@ -61,15 +59,19 @@ def interactive_shell(local_vars: Dict[str, Any], shell_color: str = '\033[37m')
61
59
  # Save original stdout write function
62
60
  original_write = sys.stdout.write
63
61
 
64
- # Define a pure function to wrap stdout.write
62
+ # Define a custom write function that respects existing ANSI codes
65
63
  def colored_write(text: str) -> None:
66
- original_write(colorize_output(text, shell_color))
64
+ # Write the text as-is if it contains ANSI codes, otherwise apply shell_color
65
+ colored_text = colorize_output(text, shell_color)
66
+ original_write(colored_text)
67
67
 
68
68
  # Temporarily replace stdout.write
69
69
  sys.stdout.write = colored_write
70
70
 
71
71
  # Start the interactive session
72
- console.interact(banner=banner, exitmsg=exitmsg)
72
+ try:
73
+ console.interact(banner=banner, exitmsg=exitmsg)
74
+ finally:
75
+ # Ensure original stdout.write is restored even on exceptions
76
+ sys.stdout.write = original_write
73
77
 
74
- # Restore original stdout.write after exiting
75
- sys.stdout.write = original_write
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: rgwfuncs
3
- Version: 0.0.69
3
+ Version: 0.0.71
4
4
  Summary: A functional programming paradigm for mathematical modelling and data science
5
5
  Home-page: https://github.com/ryangerardwilson/rgwfunc
6
6
  Author: Ryan Gerard Wilson
@@ -2,11 +2,11 @@ rgwfuncs/__init__.py,sha256=LSn54Tlyskcb6Wab_wUpPLB6UGMe5LdrB3GU88mDEbU,1712
2
2
  rgwfuncs/algebra_lib.py,sha256=rKFITfpWfgdBswnbMUuS41XgndEt-jUVz2ObO_ik7eM,42234
3
3
  rgwfuncs/df_lib.py,sha256=r6T-MwyDq9NAPW1Xf6NzSy7ZFicIKdemR-UKu6TZt5g,71111
4
4
  rgwfuncs/docs_lib.py,sha256=y3wSAOPO3qsA4HZ7xAtW8HimM8w-c8hjcEzMRLJ96ao,1960
5
- rgwfuncs/interactive_shell_lib.py,sha256=BYSeaW6MHXknLMS52Uzu2WhsWqeAHs-zcmpzkEevn2g,2927
5
+ rgwfuncs/interactive_shell_lib.py,sha256=SsStlBx3vW6NE88m_reLCqhB7gVVi_fWilOkYKKxgEo,3259
6
6
  rgwfuncs/str_lib.py,sha256=rtAdRlnSJIu3JhI-tA_A0wCiPK2m-zn5RoGpBxv_g-4,2228
7
- rgwfuncs-0.0.69.dist-info/LICENSE,sha256=jLvt20gcUZYB8UOvyBvyKQ1qhYYhD__qP7ZDx2lPFkU,1062
8
- rgwfuncs-0.0.69.dist-info/METADATA,sha256=-d8qJ2b_S3qA7y0dzjRHlvkPi-LZE5LosmyDh11peDA,60288
9
- rgwfuncs-0.0.69.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
10
- rgwfuncs-0.0.69.dist-info/entry_points.txt,sha256=j-c5IOPIQ0252EaOV6j6STio56sbXl2C4ym_fQ0lXx0,43
11
- rgwfuncs-0.0.69.dist-info/top_level.txt,sha256=aGuVIzWsKiV1f2gCb6mynx0zx5ma0B1EwPGFKVEMTi4,9
12
- rgwfuncs-0.0.69.dist-info/RECORD,,
7
+ rgwfuncs-0.0.71.dist-info/LICENSE,sha256=jLvt20gcUZYB8UOvyBvyKQ1qhYYhD__qP7ZDx2lPFkU,1062
8
+ rgwfuncs-0.0.71.dist-info/METADATA,sha256=sVSS56mX9nGBL0lQVm6-RD0Zmo_aZqH1uBN6itkgfRc,60288
9
+ rgwfuncs-0.0.71.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
10
+ rgwfuncs-0.0.71.dist-info/entry_points.txt,sha256=j-c5IOPIQ0252EaOV6j6STio56sbXl2C4ym_fQ0lXx0,43
11
+ rgwfuncs-0.0.71.dist-info/top_level.txt,sha256=aGuVIzWsKiV1f2gCb6mynx0zx5ma0B1EwPGFKVEMTi4,9
12
+ rgwfuncs-0.0.71.dist-info/RECORD,,