U
    @f[                     @   s8  d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d d	l&m'Z' d d
l(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z8 d dl9m:Z: d dlm;Z; d dlm<Z< d dl=m>Z> e>dZ?ddhZ@ddhZAg ddfddZBdd ZCdd  ZDd!d" ZEd#d$ ZFd%d& ZGd'd( ZHd)d* ZId+d, ZJd-d. ZKd/d0 ZLd1d2 ZMed3d4 ZNd5d6 ZOd7d8 ZPd9d: ZQd d;lRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d<d= Zd d>lmZ d d?lmZ d d@lmZmZ d dAlmZmZmZmZ d dBlmZmZmZ dCdD Zd dElmZ dFdG Zd dHlmZ dIdJ Zd dKlmZmZ dLdM Zd dNlmZ dOdP Zd dQlmZ d dRlmZ dSdT ZedUdV ZedWdX Zd dYlmZ d dZlmZ d d[lmZ d d\lmZ d]d^ Zd_d` Zedadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zd dqlmZ d drlmZmZ d dslmZ d dtlmZmZ d dulmZ d dvlmZ dwdx Zedydz Zed{d| Zed}d~ Zd dlmZ d dlmZ dd Zd dlmZ d dlmZ dd Zdd Zdd Zdd ZdS )    N)meter)XFAILraisesignore_warnings)AtomBasic)SingletonRegistry)StrDummySymbolWild)
EIpioozoonanIntegerRationalFloatAlgebraicNumber)EqualityGreaterThanLessThan
RelationalStrictGreaterThanStrictLessThan
Unequality)Add)Mul)Pow)
DerivativeFunctionFunctionClassLambdaWildFunction)Interval)	vectorize)gmpy)SymPyDeprecationWarning)S)symbols)import_modulecloudpickleZ_assumptionsZ_mhashZis_EmptySetZexpr_free_symbolsT c           	         s   t  tr(dD ]tt fdd qdtjtjddg}trJ|tg |D ]|kr\qNtrzt  t	rpqN }n.t
r }ntt }t }t|}t|t|kst|sqNfdd}| || || | qNd	S )
z2 Check that pickling and copying round-trips.
    )r      c                      s   t  S N)pickledumpsr.   )aprotocolr.   G/tmp/pip-unpacked-wheel-6uje5nh9/sympy/utilities/tests/test_pickling.py<lambda>4       zcheck.<locals>.<lambda>         c              
      s   |D ]}|t kr.t| |rt||st|q|tks>| krptt" t| |t||ksdt|W 5 Q R X qt| |s~qqt| |}t|dst||st|t|||kstdt|||f qd S )N__call__z%s != %s, protocol: %s)not_equal_attrshasattrAssertionErrordeprecated_attrsr   r)   getattr)r3   bdiattr)
deprecatedr4   r.   r5   cO   s    

(


zcheck.<locals>.cN)
isinstancer   r   NotImplementedErrorcopydeepcopyr-   extendcallabletypeinspectismoduleloadsr2   r1   dirsetr>   )	r3   exclude
check_attrrE   	protocolsrA   d1Zd2rF   r.   )r3   rE   r4   r5   check.   s0    



rW   c                  C   s&   t t  tt ttfD ]} t|  qd S r0   )r   r   r   r*   rW   rF   r.   r.   r5   test_core_basicg   s    rY   c                   C   s   t td d S Nx)rW   r	   r.   r.   r.   r5   test_core_Strk   s    r\   c                  C   s6   t t dddttdddttdfD ]} t|  q$d S )Nr[   F)ZcommutativeZ_issue_3130)r
   r   r   rW   rX   r.   r.   r5   test_core_symboln   s    
  r]   c                  C   sL   t dtddtdfD ]} t|  qtttdfD ]} t| dd q6d S )Nr8   r9   z1.2FrT   )r   r   r   rW   r   sqrtrX   r.   r.   r5   test_core_numbersw   s    
r`   c                  C   s   t dd } t|  d S )Nr[   g      ?)r   rW   )yr.   r.   r5   test_core_float_copy~   s    rb   c                  C   sl   t d} t d}tt| |tt| |tt| |tt| |tt| |tt| |tt| |fD ]}t| qZd S )Nr[   ra   )	r   r   r   r   r   r   r   r   rW   )r[   ra   rF   r.   r.   r5   test_core_relational   s           rc   c                  C   s(   t d} tt| dfD ]}t| qd S Nr[   r:   )r   r   rW   r[   rF   r.   r.   r5   test_core_add   s    rf   c                  C   s(   t d} tt| dfD ]}t| qd S rd   )r   r   rW   re   r.   r.   r5   test_core_mul   s    rg   c                  C   s(   t d} tt| dfD ]}t| qd S rd   )r   r    rW   re   r.   r.   r5   test_core_power   s    rh   c                  C   s.   t d} tt| ttttfD ]}t| qd S rZ   )r   r!   r"   r#   r$   r%   rW   )r[   fr.   r.   r5   test_core_function   s
    rj   c                  C   s.   t d} ttd}|t t| |d d S )Nri      rS   )r"   listrangeappendr-   rW   )ri   rS   r.   r.   r5   test_core_undefinedfunctions   s    
rp   c                  C   s   t d} t|  d S )Nri   )r"   rW   )ri   r.   r.   r5   !test_core_undefinedfunctions_fail   s    rq   c                  C   s    t t ddfD ]} t|  qd S )Nr   r8   )r&   rW   rX   r.   r.   r5   test_core_interval   s    rr   c                  C   s   t t dfD ]} t|  qd S )Nr   )r'   rW   rX   r.   r.   r5   test_core_multidimensional   s    rs   c                  C   s   dddddg} t j t jg}|dd | D 7 }tr>|dd	 g7 }td
tdtdtddttttt t	t
tjtjtjtjtjtjfD ]}|D ]}|||kstqqd S )Nr   r/   r8   r9   r:   c                    s   g | ]  fd dqS )c                    s   t t |  S r0   )r1   rP   r2   r[   protor.   r5   r6      r7   z,test_Singletons.<locals>.<listcomp>.<lambda>r.   ).0r.   ru   r5   
<listcomp>   s   z#test_Singletons.<locals>.<listcomp>c                 S   s   t t | S r0   )r-   rP   r2   rt   r.   r.   r5   r6      r7   z!test_Singletons.<locals>.<lambda>)rI   rJ   r-   r   r   r   r   r   r   r   r   r*   ZGoldenRatioZTribonacciConstantZ
EulerGammaZCatalanZEmptySetZIdentityFunctionr>   )rU   Zcopiersobjfuncr.   r.   r5   test_Singletons   s*             r|   );	Piecewise
lowergammaacosh
chebyshevu
chebyshevtlnchebyshevt_rootlegendre	Heaviside	bernoullicothtanhassoc_legendresignargasin
DiracDeltarerfAbs
uppergammabinomialsinhcoscotacosacotgammabellhermiteharmonicLambertWzetalog	factorialasinhacothcoshdirichlet_etaEijkloggammaerfceilingim	fibonacci
tribonacci	conjugatetanchebyshevu_rootflooratanhr_   sinatanfflucasatan2	polygammaexpc               +   C   s  t ttttttttt	t
ttttttttttttttttttttttt t!t"t#t$t%t&t't(t)f+} t*t+t,t-t.t/t0t1t2t3t4f}t5d\}}}t6t7t8|||t9d|dk f|d |dkf|d dft:f}| D ]}t;| ||}t;| q|D ]}t;| |||}t;| q|D ]}t;| qd S )Nx,y,zr   ry   r8   r/   r9   T)<r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   r+   r   r   r   r}   r   rW   )Zone_varZtwo_varr[   ra   zZothersclsrF   r.   r.   r5   test_functions   sx                                        &


r   )GeometryEntity)Point)CircleEllipse)LineLinearEntityRaySegment)PolygonRegularPolygonTrianglec                  C   s   t dd} t dd}t dd}t dd}tt t | tt| dtt| ddtt| |tt| |tt| |tt| |tt| |||t	t	| ddt
t
| ||fD ]}t|dd qd S )	Nr/   r8   r9   r   r:   rk   Fr^   )r   r   r   r   r   r   r   r   r   r   r   rW   )p1p2Zp3Zp4rF   r.   r.   r5   test_geometry   s8    



      
         
  
r   )Integralc                  C   s&   t d} tt| fD ]}t| qd S rZ   )r   r   rW   re   r.   r.   r5   test_integrals  s    r   )Logicc                  C   s   t t dfD ]} t|  qd S Nr/   )r   rW   rX   r.   r.   r5   
test_logic  s    r   )MatrixSparseMatrixc                  C   s@   t t dddgttddgddggfD ]} t| ddgd q&d S )Nr/   r8   r9   r:   Z_smatZ_matrE   )r   r   rW   rX   r.   r.   r5   test_matrices  s    *r   )Sievec                  C   s   t t  fD ]} t|  q
d S r0   )r   rW   rX   r.   r.   r5   test_ntheory$  s    r   )Pauli)Unitc                  C   s"   t tttdfD ]} t|  qd S r   )r   r   r   rW   rX   r.   r.   r5   test_physics-  s    r   c                  C   s   ddl m} m} ddlm} ddlm}m} ddlm	}m
}m}m} ddlm}	 ddlm}
 ddlm} dd	lm} dd
lm} ddlm}m}m}m}m}m}m}m} ddl m!} ddl"m#} ddl$m%} | | dd||||||||||	|
||||||||||||||fD ]}t&| qd S )Nr   )ColorGradientColorScheme)ManagedWindow)Plot
ScreenShot)PlotAxesPlotAxesBasePlotAxesFramePlotAxesOrdinate)
PlotCamera)PlotController)	PlotCurve)PlotInterval)PlotMode)Cartesian2DCartesian3DCylindricalParametricCurve2DParametricCurve3DParametricSurfacePolar	Spherical)
PlotObject)PlotSurface)
PlotWindowg?g?)'&sympy.plotting.pygletplot.color_schemer   r   Z(sympy.plotting.pygletplot.managed_windowr   sympy.plotting.plotr   r   #sympy.plotting.pygletplot.plot_axesr   r   r   r   Z%sympy.plotting.pygletplot.plot_camerar   Z)sympy.plotting.pygletplot.plot_controllerr   Z$sympy.plotting.pygletplot.plot_curver   Z'sympy.plotting.pygletplot.plot_intervalr   Z#sympy.plotting.pygletplot.plot_moder   Z$sympy.plotting.pygletplot.plot_modesr   r   r   r   r   r   r   r   Z%sympy.plotting.pygletplot.plot_objectr   Z&sympy.plotting.pygletplot.plot_surfacer   Z%sympy.plotting.pygletplot.plot_windowr   rW   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   r.   r.   r5   test_plotting5  sT    (                    r   c                  C   sN   ddl m}  ddlm} ddlm} t| d t|ddd t|  d S )	Nr   )r   )r   )r   Zrainbowr/   F)Zvisible)r   r   r   r   r   r   rW   )r   r   r   r.   r.   r5   test_plotting2P  s    r   )ZZ)QQ)lex)Polyc                  C   sN   ddl m}  td}tt||fD ]}t| q"| | |fD ]}t| q<d S )Nr   )PurePolyr[   )sympy.polys.polytoolsr   r   r   rW   )r   r[   rF   r.   r.   r5   test_pickling_polys_polytoolsm  s    
r   c                  C   s   ddl m} m}m} | | tdgtdgtdggtfD ]}t|dgd q:||tdtdgtdtdgftfD ]}t| qx||tdtdgtdtdtdgtfD ]}t| qd S )Nr   )DMPDMFANPr/   r8   r9   repr   )Zsympy.polys.polyclassesr   r   r   r   rW   r   )r   r   r   rF   r.   r.   r5   test_pickling_polys_polyclasses|  s    *.
2r   c                  C   s^   ddl m}  | dtt}| |fD ]}t|ddgd q |j|jfD ]}t|ddgdd qBd S )Nr   )PolyRingr   r/   rl   F)rS   rT   )Zsympy.polys.ringsr  r   r   rW   ZdtypeZone)r  ZringrF   r.   r.   r5   test_pickling_polys_rings  s    r  c                   C   s   d S r0   r.   r.   r.   r.   r5   test_pickling_polys_fields  s    r  c                  C   s,   ddl m}  | | ddfD ]}t| qd S )Nr   )PythonRationalr/      )Z"sympy.polys.domains.pythonrationalr  rW   )r  rF   r.   r.   r5   test_pickling_polys_elements  s    r  c                  C   s  ddl m}  ddlm} | |  fD ]}t|dd q"|| fD ]}t|dd q>td k	rddlm} ddlm	} || fD ]}t|dd qz|| fD ]}t|dd qddl
m} dd	lm} ||ttd
fD ]}t|dd q|| fD ]}t|dd qd S )Nr   )PythonIntegerRing)PythonRationalFieldFr^   )GMPYIntegerRing)GMPYRationalField)AlgebraicField)ExpressionDomainr9   )Z%sympy.polys.domains.pythonintegerringr  Z'sympy.polys.domains.pythonrationalfieldr  rW   _gmpyZ#sympy.polys.domains.gmpyintegerringr	  Z%sympy.polys.domains.gmpyrationalfieldr
  Z"sympy.polys.domains.algebraicfieldr  Z$sympy.polys.domains.expressiondomainr  r   r_   )r  r  rF   r	  r
  r  r  r.   r.   r5   test_pickling_polys_domains  s&    

r  c                  C   s   ddl m} m}m}m} | |  fD ]}t| q"|| fD ]}t| q:|| fD ]}t| qR|||  fD ]}t| qnd S )Nr   )LexOrderGradedLexOrderReversedGradedLexOrderInverseOrder)sympy.polys.orderingsr  r  r  r  rW   )r  r  r  r  rF   r.   r.   r5   test_pickling_polys_orderings  s    


	r  c                  C   s^   ddl m} m} td\}}}| | dfD ]}t| q*||d|||ffD ]}t| qLd S )Nr   )MonomialOpsMonomialr   r9   )r/   r8   r9   )Zsympy.polys.monomialsr  r  r+   rW   )r  r  r[   ra   r   rF   r.   r.   r5   test_pickling_polys_monomials  s    
r  c                  C   s8  ddl m} m}m}m}m}m}m}m}m	}m
}	m}
m}m}m}m}m}m}m}m} | |  fD ]}t| q^|| fD ]}t| qv|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q |	|	 fD ]}t| q:|
|
 fD ]}t| qT|| fD ]}t| qn|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q|| fD ]}t| q
|| fD ]}t| q$d S )Nr   )HeuristicGCDFailedHomomorphismFailedIsomorphismFailedExtraneousFactorsEvaluationFailedRefinementFailedCoercionFailedNotInvertibleNotReversibleNotAlgebraicDomainErrorPolynomialErrorUnificationFailedGeneratorsErrorGeneratorsNeededUnivariatePolynomialErrorMultivariatePolynomialErrorOptionError	FlagError)Zsympy.polys.polyerrorsr  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  rW   )r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  rF   r.   r.   r5   test_pickling_polys_errors  sN    T






r+  c                  C   sd   ddl m} m} td}|d | d }| | |dfD ]}t| q6|||tfD ]}t| qRd S )Nr   )CRootOfRootSumr[   r9   )Zsympy.polys.rootoftoolsr,  r-  r   rW   r   )r,  r-  r[   ri   rF   r.   r.   r5   test_pickling_polys_rootoftools}  s    
r.  )LatexPrinter)MathMLContentPrinterMathMLPresentationPrinter)PrettyPrinter)
prettyForm
stringPict)Printer)PythonPrinterc                  C   s8   t t  ttttttdtt tt fD ]} t|  q&d S )Nr3   )	r/  r0  r1  r2  r3  r4  r5  r6  rW   rX   r.   r.   r5   test_printing  s          r7  c                   C   s   t t  d S r0   )rW   r0  r.   r.   r.   r5   test_printing1  s    r8  c                   C   s   t t  d S r0   )rW   r1  r.   r.   r.   r5   test_printing2  s    r9  c                   C   s   t t  d S r0   )rW   r2  r.   r.   r.   r5   test_printing3  s    r:  )Limit)Orderc                  C   s:   t d} t d}tt| |dtt| fD ]}t| q(d S )Ner[   r/   )r   r;  r<  rW   )r=  r[   rF   r.   r.   r5   test_series  s    r>  )Product)Sumc                  C   s>   t d} tt| | ddftt| | ddffD ]}t| q,d S )Nr[   r8   r:   )r   r?  r@  rW   re   r.   r.   r5   test_concrete  s    (rA  c                  C   s   t dddd} t|  d S )Nmessagez1.0zactive-deprecations)Zdeprecated_since_versionZactive_deprecations_target)r)   rW   )wr.   r.   r5   test_deprecation_warning  s    rD  c                   C   s    t t tjtjkstd S r0   )r1   rP   r2   r*   ZHalfr>   r.   r.   r.   r5   test_issue_18438  s    rE  c                  C   s   d} t | tdkstd S )Nsi   ^       sympy.core.powerPowsympy.core.numbersIntegerKR}bhHalf)R}bR}b.r8   )r1   rP   r_   r>   )datar.   r.   r5   !test_unpickle_from_older_versions  s    rG  )rN   rI   r1   Zsympy.physics.unitsr   Zsympy.testing.pytestr   r   r   Zsympy.core.basicr   r   Zsympy.core.singletonr   Zsympy.core.symbolr	   r
   r   r   Zsympy.core.numbersr   r   r   r   r   r   r   r   r   r   Zsympy.core.relationalr   r   r   r   r   r   r   Zsympy.core.addr   Zsympy.core.mulr   Zsympy.core.powerr    Zsympy.core.functionr!   r"   r#   r$   r%   Zsympy.sets.setsr&   Zsympy.core.multidimensionalr'   Zsympy.external.gmpyr(   r  Zsympy.utilities.exceptionsr)   r*   r+   Zsympy.externalr,   r-   r<   r?   rW   rY   r\   r]   r`   rb   rc   rf   rg   rh   rj   rp   rq   rr   rs   r|   Zsympy.functionsr}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_   r   r   r   r   r   r   r   r   Zsympy.geometry.entityr   Zsympy.geometry.pointr   Zsympy.geometry.ellipser   r   Zsympy.geometry.liner   r   r   r   Zsympy.geometry.polygonr   r   r   r   Zsympy.integrals.integralsr   r   Zsympy.core.logicr   r   Zsympy.matricesr   r   r   Zsympy.ntheory.generater   r   Zsympy.physics.paulialgebrar   r   r   r   r   Zsympy.polys.domains.integerringr   Z!sympy.polys.domains.rationalfieldr   r  r   r   r   r   r   r  r  r  r  r  r  r+  r.  Zsympy.printing.latexr/  Zsympy.printing.mathmlr0  r1  Zsympy.printing.pretty.prettyr2  Z sympy.printing.pretty.stringpictr3  r4  Zsympy.printing.printerr5  Zsympy.printing.pythonr6  r7  r8  r9  r:  Zsympy.series.limitsr;  Zsympy.series.orderr<  r>  Zsympy.concrete.productsr?  Zsympy.concrete.summationsr@  rA  rD  rE  rG  r.   r.   r.   r5   <module>   s   0$9	
	





<
a


