
    |h                         d Z ddlZddlmZ ddlZddlZddlZdZd Zd Zd Z	d Z
ed	k(  r e
ej                         yy)
zEnables use of Python Fire as a "main" function (i.e. "python -m fire").

This allows using Fire with third-party libraries without modifying their code.
    N)utila  usage: python -m fire [module] [arg] ..."

Python Fire is a library for creating CLIs from absolutely any Python
object or program. To run Python Fire from the command line on an
existing Python file, it can be invoked with "python -m fire [module]"
and passed a Python module using module notation:

"python -m fire packageA.packageB.module"

or with a file path:

"python -m fire packageA/packageB/module.py" c                 B   t         j                  j                  |       st        d      t         j                  j	                  |       }t        j                  ||       }|t        d      t        j                  |      }|j                  j                  |       ||fS )aL  Performs a module import given the filename.

  Args:
    path (str): the path to the file to be imported.

  Raises:
    IOError: if the given file does not exist or importlib fails to load it.

  Returns:
    Tuple[ModuleType, str]: returns the imported module and the module name,
      usually extracted from the path itself.
  zGiven file path does not exist.z*Unable to load module from specified path.)
ospathexistsOSErrorbasenamer   spec_from_file_locationmodule_from_specloaderexec_module)r   module_namespecmodules       L/var/www/html/test/engine/venv/lib/python3.12/site-packages/fire/__main__.pyimport_from_file_pathr   *   s     
	
3
44  &+		%	%k4	8$	\
>
??  &&++&!		    c                 4    t        j                  |       }|| fS )z-Imports a module and returns it and its name.)	importlibimport_module)r   r   s     r   import_from_module_namer   H   s    "";/&		r   c                 $   t         j                  j                  |       r(| j                  d      s	 t	        |       S t        |       S t         j                  j                  | v rt        d      t	        |       S # t
        $ r t        d      w xY w)a  Imports a given module or filename.

  If the module_or_filename exists in the file system and ends with .py, we
  attempt to import it. If that import fails, try to import it as a module.

  Args:
    module_or_filename (str): string name of path or module.

  Raises:
    ValueError: if the given file is invalid.
    IOError: if the file or module can not be found or imported.

  Returns:
    Tuple[ModuleType, str]: returns the imported module and the module name,
      usually extracted from the path itself.
  z.pyz%Fire can only be called on .py files.z4Fire was passed a filename which could not be found.)
r   r   r   endswithr   ImportError
ValueErrorr   sepr   )module_or_filenames    r   r   r   N   s    $ WW^^&'&&u-B&'9:: !!344WW[[&&
H
II	 !3	44  B@AABs   
A: :Bc                     t        |       dk  r$t        t               t        j                  d       | d   }t        |      \  }}t        j                  ||| dd        y)zAEntrypoint for fire when invoked as a module with python -m fire.      N)namecommand)lenprint
cli_stringsysexitr   fireFire)argsr   r   r   s       r   mainr+   p   sR     	Y]	*HHQKAw%&89&+))Fd12h7r   __main__)__doc__r   r   r   r&   r(   r%   r   r   r   r+   __name__argv r   r   <module>r1      sQ    
   	 
 1
<5D
8 zsxx. r   