@@ -775,11 +775,13 @@ def full_figure_for_development(
775
775
return go .Figure (fig , skip_invalid = True )
776
776
777
777
778
- def get_chrome () -> None :
778
+ def plotly_get_chrome () -> None :
779
779
"""
780
780
Install Google Chrome for Kaleido (Required for Plotly image export).
781
- This function can be run from the command line using the command `plotly_get_chrome`
782
- defined in pyproject.toml
781
+ This function is a command-line wrapper for `plotly.io.get_chrome()`.
782
+
783
+ When running from the command line, use the command `plotly_get_chrome`;
784
+ when calling from Python code, use `plotly.io.get_chrome()`.
783
785
"""
784
786
785
787
usage = """
@@ -813,16 +815,60 @@ def get_chrome() -> None:
813
815
814
816
# Handle "--path" flag
815
817
chrome_install_path = None
816
- user_specified_path = False
817
818
if "--path" in cli_args :
818
819
path_index = cli_args .index ("--path" ) + 1
819
820
if path_index < len (cli_args ):
820
821
chrome_install_path = cli_args [path_index ]
821
822
cli_args .remove ("--path" )
822
823
cli_args .remove (chrome_install_path )
823
824
chrome_install_path = Path (chrome_install_path )
824
- user_specified_path = True
825
+
826
+ # If any arguments remain, command syntax was incorrect -- print usage and exit
827
+ if len (cli_args ) > 1 :
828
+ print (usage )
829
+ sys .exit (1 )
830
+
831
+ if not cli_yes :
832
+ print (
833
+ f"""
834
+ Plotly will install a copy of Google Chrome to be used for generating static images of plots.
835
+ Chrome will be installed at: { chrome_install_path } """
836
+ )
837
+ response = input ("Do you want to proceed? [y/n] " )
838
+ if not response or response [0 ].lower () != "y" :
839
+ print ("Cancelled" )
840
+ return
841
+ print ("Installing Chrome for Plotly..." )
842
+ exe_path = get_chrome (chrome_install_path )
843
+ print ("Chrome installed successfully." )
844
+ print (f"The Chrome executable is now located at: { exe_path } " )
845
+
846
+
847
+ def get_chrome (path : Union [str , Path , None ] = None ) -> Path :
848
+ """
849
+ Get the path to the Chrome executable for Kaleido.
850
+ This function is used by the `plotly_get_chrome` command line utility.
851
+
852
+ Parameters
853
+ ----------
854
+ path: str or Path or None
855
+ The path to the directory where Chrome should be installed.
856
+ If None, the default download path will be used.
857
+ """
858
+ if not kaleido_available () or kaleido_major () < 1 :
859
+ raise ValueError (
860
+ """
861
+ This command requires Kaleido v1.0.0 or greater.
862
+ Install it using `pip install 'kaleido>=1.0.0'` or `pip install 'plotly[kaleido]'`."
863
+ """
864
+ )
865
+
866
+ # Use default download path if no path was specified
867
+ if path :
868
+ user_specified_path = True
869
+ chrome_install_path = Path (path ) # Ensure it's a Path object
825
870
else :
871
+ user_specified_path = False
826
872
from choreographer .cli .defaults import default_download_path
827
873
828
874
chrome_install_path = default_download_path
@@ -848,25 +894,7 @@ def get_chrome() -> None:
848
894
"""
849
895
)
850
896
851
- # If any arguments remain, command syntax was incorrect -- print usage and exit
852
- if len (cli_args ) > 1 :
853
- print (usage )
854
- sys .exit (1 )
855
-
856
- if not cli_yes :
857
- print (
858
- f"""
859
- Plotly will install a copy of Google Chrome to be used for generating static images of plots.
860
- Chrome will be installed at: { chrome_install_path } """
861
- )
862
- response = input ("Do you want to proceed? [y/n] " )
863
- if not response or response [0 ].lower () != "y" :
864
- print ("Cancelled" )
865
- return
866
- print ("Installing Chrome for Plotly..." )
867
- exe_path = kaleido .get_chrome_sync (path = chrome_install_path )
868
- print ("Chrome installed successfully." )
869
- print (f"The Chrome executable is now located at: { exe_path } " )
897
+ return kaleido .get_chrome_sync (path = chrome_install_path )
870
898
871
899
872
900
__all__ = ["to_image" , "write_image" , "scope" , "full_figure_for_development" ]
0 commit comments