
    ڏDjZ                     ~    d Z ddlZddlZddlZddlZddlZddlZddlZddlZ ej                  e
      Z	 	 ddZd Zy)a  
The Cython debugger

The current directory should contain a directory named 'cython_debug', or a
path to the cython project directory should be given (the parent directory of
cython_debug).

Additional gdb args can be provided only if a path to the project directory is
given.
    Nc                    |smt         j                  j                  | dd      }t        j                  |      }|s5t	        j
                  dt         j                  j                  |       z         t        j                         \  }}t        j                  |d      }	 |j                  |       |j                  t        j                  dt        t              z   dz                |rn|sat         j                  j                  | dd      }	t        |	      }
	 |
j!                         }|
j#                          |j                  d|z         |j                  d	j                  d
 D                     |s*|j                  t        j                  dz   dz                |j                  d       |j#                          |S # |
j#                          w xY w# |j#                          w xY w)Ncython_debugzcython_debug_info_*z1No cython debug files were found in %s. Aborting.wa              # This is a gdb command file
            # See https://sourceware.org/gdb/onlinedocs/gdb/Command-Files.html

            set breakpoint pending on
            set print pretty on

            python
            try:
                # Activate virtualenv, if we were launched from one
                import os
                import sys
                virtualenv = os.getenv('VIRTUAL_ENV')
                if virtualenv:
                    scripts_dir = 'Scripts' if sys.platform == "win32" else 'bin'
                    path_to_activate_this_py = os.path.join(virtualenv, scripts_dir, 'activate_this.py')
                    print("gdb command file: Activating virtualenv: %s; path_to_activate_this_py: %s" % (
                        virtualenv, path_to_activate_this_py))
                    with open(path_to_activate_this_py) as f:
                        exec(f.read(), dict(__file__=path_to_activate_this_py))
                from Cython.Debugger import libcython, libpython
            except Exception as ex:
                from traceback import print_exc
                print("There was an error in Python code originating from the file " + z)
                print("It used the Python interpreter " + str(sys.executable))
                print_exc()
                exit(1)
            end
            interpreterzfile %s

c              3   &   K   | ]	  }d |z    yw)zcy import %s
N ).0fns     YC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Debugger/Cygdb.py	<genexpr>z$make_command_file.<locals>.<genexpr>X   s     J.3Js   a%                      python
                    import sys
                    # Check if the Python executable provides a symbol table.
                    if not hasattr(gdb.selected_inferior().progspace, "symbol_file"):
                        sys.stderr.write(
                            "z was not compiled with debug symbols (or it was "
                            "stripped). Some functionality may not work (properly).\n")
                    end
                zsource .cygdbinit
)ospathjoinglobsysexitabspathtempfilemkstempfdopenwritetextwrapdedentrepr__file__openreadclose)path_to_debug_infoprefix_code	no_importskip_interpreterpatterndebug_filesfdtempfilenamefr   interpreter_filer   s               r   make_command_filer*      s   '',,1-46 ii(HHH#%77??3E#FH I  '')B
		"cA@		 ![. ^bbj]k/!l.o/!  	<  # ww||$6V#': -"2"7"7"9K$**,k12GGDIIJkJJK# )! $/)/2	) 	 	 GG)*		+ %**,& 	
	s&   A9G G (BG GG G)c                     t        j                  dd      } | j                  ddd       | j                  dd	d
d       | j                  dddd       | j                  dddddd       | j                  ddddd       | j                         }|j                  }|j
                  }|d
u }|j                  [|rYt        j                  j                  |d         r7dd
l	}|j
                  dd
 }|j
                  d   }|j                  d| d       t        j                  }|j                  dk(  rt        j                  }|j                  d k\  rt        j                  }t        j                   |!       |j"                  }t$        j'                  d"|       t)        |||#      }t$        j+                  d$|j,                  ||       t/        |      5 }	t$        j'                  d%| |	j0                                t$        j+                  d&|j,                         t3        j4                  |j,                  d'|g|z         }
t$        j+                  d(|j,                  |
j6                         	 	 t$        j'                  d)|
j6                         |
j9                         }t$        j'                  d*|
j6                  |       	 t$        j'                  d+ |	j<                                d
d
d
       t$        j'                  d,|       t        j>                  |       t$        j'                  d-|       y
# t:        $ r Y nw xY w# 1 sw Y   [xY w).z
    Start the Cython debugger. This tells gdb to import the Cython and Python
    extensions (libcython.py and libpython.py) and it enables gdb's pending
    breakpoints.
    cygdbzCython debugger)progdescriptiongdb_argv*z/Arguments to forward to gdb; specified after --)nargshelpz--build-dir	build_dirNz(Directory containing cython_build/ files)destdefaultr2   z--gdb-executablegdbz$gdb executable to use [default: gdb]z	--verbosez-v	verbositycountr   z8Verbose mode. Multiple -v options increase the verbosity)r4   actionr5   r2   z--skip-interpreterr#   F
store_truez]Do not automatically point GDB to the same interpreter used to generate debugging information)r4   r5   r9   r2      zPUsing deprecated positional parameter to find build directory. Use "--build-dir z" argument instead.   )levelzoptions = %r)r"   r#   z3Launching %s with command file: %s and gdb_argv: %sz%Command file (%s) contains: """
%s"""zSpawning %s...z-commandzSpawned %s (pid %d)z#Waiting for gdb (pid %d) to exit...z3Wait for gdb (pid %d) to exit is done. Returned: %rz%Closing temp command file with fd: %szRemoving temp command file: %szRemoved temp command file: %s) argparseArgumentParseradd_argument
parse_argsr3   r/   r   r   isdirwarningswarnloggingWARNr7   INFODEBUGbasicConfigr#   loggerdebugr*   infor6   r   r   
subprocessPopenpidwaitKeyboardInterruptfilenoremove)parseroptionsr    r/   r"   rC   logging_levelr#   r'   r   prets               r   mainrY   m   s    $$%F 
#N  P
KG  I
*E3  5 T!G  I ,-u\D  E
 !G **H"d*I X"''--2L##AB'$--a0hi{h|  }P  Q  	RLLMAAm,//
LL)$%7/86FHL KKE\8-	l	 Qx=|]X]]_]$gkk2gkk:|DxOP)7;;>BAEEJffhRTUTYTY[^_ <ohoo>OPQ LL1<@IIl
LL0,? %  Q Qs2   BM0AL1&M1	L=:M<L==MM
) FF)__doc__r   r   r   r   r   rM   r>   rE   	getLogger__name__rJ   r*   rY   r	       r   <module>r_      sL   	 
 
      			8	$ 798=PfD@r^   