File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_code.cpython-37.opt-2.pyc
B
��g�) � @ s� d dl Z d dlZd dlZd dlZd dlZyd dlZW n ek
rL dZY nX d dlmZm Z m
Z
mZ dd� Zdd� Z
dd� ZG d d
� d
ej�Zdd� ZG d
d� dej�ZG dd� dej�Zedd��rpedk �rpejZe�dej�ZejZefe_eje_ejZej ejejfe_ej!e_ej"Z#ej eje�$ej�fe#_ej!e#_da%dd� Z&ee&�Z'ee'�Z(G dd� dej�Z)ddd�Z*e+dk�r�e*� dS )� N)�run_doctest�run_unittest�cpython_only�check_impl_detailc c s8 x2| D ]*}t |�}|�d�r*d|j V q|V qW d S )Nz<code objectz<code object %s>)�repr�
startswith�co_name)�tZelt�r� r �*/usr/local/lib/python3.7/test/test_code.py�constsv s
r
c C s@ x&dD ]}t d|t| d| �f � qW t dtt| j��� d S )N) �nameZargcountZkwonlyargcount�namesZvarnamesZcellvarsZfreevarsZnlocals�flagsz%s: %sZco_zconsts:)�print�getattr�tupler
� co_consts)�co�attrr r r �dump s
r c C s dt � �|�� �S )NzForeign getitem: )�super�__getitem__)�self�ir r r �external_getitem� s r c @ s$ e Zd Zedd� �Zedd� �ZdS )�CodeTestc C sD dd l }|�ddd�}| �|jd� | �|jd� | �|jd� d S )Nr �filename�funcname� )� _testcapiZ
code_newempty�assertEqual�co_filenamer �co_firstlineno)r r! r r r r �
test_newempty� s
zCodeTest.test_newemptyc s� ddl m�m� dd� �� fdd�����fdd�}G d d
� d
t�}||dt� |j}|jd j}| �||� | � |j
jtj
@ t|j
j�� |dd
dg�}| �|d d� d S )Nr )�FunctionType�CodeTypec s � fdd�j S )Nc s � S )Nr r )� __class__r r �<lambda>� � zICodeTest.test_closure_injection.<locals>.create_closure.<locals>.<lambda>)�__closure__)r( r )r( r �create_closure� s z7CodeTest.test_closure_injection.<locals>.create_closurec sF � | j | j| j| j| j| j| j| j| j| j | j
| j| j| j
d | j�S )N)r( )�co_argcount�co_kwonlyargcount�
co_nlocals�co_stacksize�co_flags�co_coder �co_names�co_varnamesr# r r$ � co_lnotab�co_freevars�co_cellvars)�c)r'