Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- lib/python3.12/site-packages/matplotlib/mpl-data/images/back-symbolic.svg +46 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/back.svg +46 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/back_large.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave-symbolic.svg +68 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave.pdf +70 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave.svg +68 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/forward-symbolic.svg +46 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/forward.svg +46 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/forward_large.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/hand.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/hand.svg +130 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/help-symbolic.svg +52 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/help.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/help.svg +52 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/help_large.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/home_large.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/matplotlib.pdf +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/matplotlib_large.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/move-symbolic.svg +73 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/qt4_editor_options.pdf +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/qt4_editor_options.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/qt4_editor_options.svg +48 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots-symbolic.svg +81 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots.svg +81 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/zoom_to_rect-symbolic.svg +40 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/zoom_to_rect.pdf +68 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/images/zoom_to_rect.svg +40 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/Minduka_Present_Blue_Pack.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/README.txt +2 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/Stocks.csv +526 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/data_x_x2_x3.csv +11 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/eeg.dat +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/embedding_in_wx3.xrc +65 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/grace_hopper.jpg +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/logo2.png +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/membrane.dat +0 -0
- lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/msft.csv +66 -0
- lib/python3.12/site-packages/zmq/__init__.pxd +1 -0
- lib/python3.12/site-packages/zmq/__init__.py +94 -0
- lib/python3.12/site-packages/zmq/__init__.pyi +28 -0
- lib/python3.12/site-packages/zmq/_future.py +737 -0
- lib/python3.12/site-packages/zmq/_future.pyi +95 -0
- lib/python3.12/site-packages/zmq/_typing.py +11 -0
- lib/python3.12/site-packages/zmq/asyncio.py +224 -0
- lib/python3.12/site-packages/zmq/auth/__init__.py +13 -0
- lib/python3.12/site-packages/zmq/auth/__pycache__/__init__.cpython-312.pyc +0 -0
- lib/python3.12/site-packages/zmq/auth/__pycache__/asyncio.cpython-312.pyc +0 -0
- lib/python3.12/site-packages/zmq/auth/__pycache__/base.cpython-312.pyc +0 -0
lib/python3.12/site-packages/matplotlib/mpl-data/images/back-symbolic.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/back.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/back_large.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave-symbolic.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave.pdf
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
%PDF-1.4
|
| 2 |
+
%�� ��
|
| 3 |
+
1 0 obj
|
| 4 |
+
<< /Pages 2 0 R /Type /Catalog >>
|
| 5 |
+
endobj
|
| 6 |
+
8 0 obj
|
| 7 |
+
<< /ExtGState 4 0 R /Font 3 0 R /Pattern 5 0 R
|
| 8 |
+
/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /Shading 6 0 R
|
| 9 |
+
/XObject 7 0 R >>
|
| 10 |
+
endobj
|
| 11 |
+
10 0 obj
|
| 12 |
+
<< /Annots [ ] /Contents 9 0 R
|
| 13 |
+
/Group << /CS /DeviceRGB /S /Transparency /Type /Group >>
|
| 14 |
+
/MediaBox [ 0 0 72 72 ] /Parent 2 0 R /Resources 8 0 R /Type /Page >>
|
| 15 |
+
endobj
|
| 16 |
+
9 0 obj
|
| 17 |
+
<< /Filter /FlateDecode /Length 11 0 R >>
|
| 18 |
+
stream
|
| 19 |
+
x�u�Kn1D�:�N@���2A���
|
| 20 |
+
|
| 21 |
+
Z���-p���"=��\�-X�� ��az�ݫD��IT���b%��\�5Qr��Z���uz�(�T?PT���RJw��@��f�������4�J��l�W�A|Z���-A�f�H�E����m 6�Lft"�V�S�+�Ȯ���\,�i�v!���Rf�#�F�����2�o���v#���`:l���%�N�v�LEڵ��з]J=�����H�ыa,�5c`��f=��i0W��`5E?�u!7�x�2vk�t
|
| 22 |
+
endstream
|
| 23 |
+
endobj
|
| 24 |
+
11 0 obj
|
| 25 |
+
500
|
| 26 |
+
endobj
|
| 27 |
+
3 0 obj
|
| 28 |
+
<< >>
|
| 29 |
+
endobj
|
| 30 |
+
4 0 obj
|
| 31 |
+
<< /A1 << /CA 0 /Type /ExtGState /ca 0 >>
|
| 32 |
+
/A2 << /CA 1 /Type /ExtGState /ca 1 >> >>
|
| 33 |
+
endobj
|
| 34 |
+
5 0 obj
|
| 35 |
+
<< >>
|
| 36 |
+
endobj
|
| 37 |
+
6 0 obj
|
| 38 |
+
<< >>
|
| 39 |
+
endobj
|
| 40 |
+
7 0 obj
|
| 41 |
+
<< >>
|
| 42 |
+
endobj
|
| 43 |
+
2 0 obj
|
| 44 |
+
<< /Count 1 /Kids [ 10 0 R ] /Type /Pages >>
|
| 45 |
+
endobj
|
| 46 |
+
12 0 obj
|
| 47 |
+
<< /CreationDate (D:20160601123507-04'00')
|
| 48 |
+
/Creator (matplotlib 1.5.2rc2.post1933.dev0+gb775a26, http://matplotlib.org)
|
| 49 |
+
/Producer (matplotlib pdf backend) >>
|
| 50 |
+
endobj
|
| 51 |
+
xref
|
| 52 |
+
0 13
|
| 53 |
+
0000000000 65535 f
|
| 54 |
+
0000000016 00000 n
|
| 55 |
+
0000001161 00000 n
|
| 56 |
+
0000000978 00000 n
|
| 57 |
+
0000000999 00000 n
|
| 58 |
+
0000001098 00000 n
|
| 59 |
+
0000001119 00000 n
|
| 60 |
+
0000001140 00000 n
|
| 61 |
+
0000000065 00000 n
|
| 62 |
+
0000000383 00000 n
|
| 63 |
+
0000000208 00000 n
|
| 64 |
+
0000000958 00000 n
|
| 65 |
+
0000001221 00000 n
|
| 66 |
+
trailer
|
| 67 |
+
<< /Info 12 0 R /Root 1 0 R /Size 13 >>
|
| 68 |
+
startxref
|
| 69 |
+
1395
|
| 70 |
+
%%EOF
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/filesave.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/forward-symbolic.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/forward.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/forward_large.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/hand.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/hand.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/help-symbolic.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/help.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/help.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/help_large.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/home_large.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/matplotlib.pdf
ADDED
|
Binary file (22.9 kB). View file
|
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/matplotlib_large.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/move-symbolic.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/qt4_editor_options.pdf
ADDED
|
Binary file (1.57 kB). View file
|
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/qt4_editor_options.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/qt4_editor_options.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots-symbolic.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/subplots.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/zoom_to_rect-symbolic.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/zoom_to_rect.pdf
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
%PDF-1.4
|
| 2 |
+
%�� ��
|
| 3 |
+
1 0 obj
|
| 4 |
+
<< /Pages 2 0 R /Type /Catalog >>
|
| 5 |
+
endobj
|
| 6 |
+
8 0 obj
|
| 7 |
+
<< /ExtGState 4 0 R /Font 3 0 R /Pattern 5 0 R
|
| 8 |
+
/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /Shading 6 0 R
|
| 9 |
+
/XObject 7 0 R >>
|
| 10 |
+
endobj
|
| 11 |
+
10 0 obj
|
| 12 |
+
<< /Annots [ ] /Contents 9 0 R
|
| 13 |
+
/Group << /CS /DeviceRGB /S /Transparency /Type /Group >>
|
| 14 |
+
/MediaBox [ 0 0 72 72 ] /Parent 2 0 R /Resources 8 0 R /Type /Page >>
|
| 15 |
+
endobj
|
| 16 |
+
9 0 obj
|
| 17 |
+
<< /Filter /FlateDecode /Length 11 0 R >>
|
| 18 |
+
stream
|
| 19 |
+
x�mRKn1��>�b},��W$i��n��/m��H�ؠ$��,鍞�Hz}O9����$��ӷ�??���x��U�q�;�y� �
|
| 20 |
+
endstream
|
| 21 |
+
endobj
|
| 22 |
+
11 0 obj
|
| 23 |
+
375
|
| 24 |
+
endobj
|
| 25 |
+
3 0 obj
|
| 26 |
+
<< >>
|
| 27 |
+
endobj
|
| 28 |
+
4 0 obj
|
| 29 |
+
<< /A1 << /CA 0 /Type /ExtGState /ca 0 >>
|
| 30 |
+
/A2 << /CA 1 /Type /ExtGState /ca 1 >> >>
|
| 31 |
+
endobj
|
| 32 |
+
5 0 obj
|
| 33 |
+
<< >>
|
| 34 |
+
endobj
|
| 35 |
+
6 0 obj
|
| 36 |
+
<< >>
|
| 37 |
+
endobj
|
| 38 |
+
7 0 obj
|
| 39 |
+
<< >>
|
| 40 |
+
endobj
|
| 41 |
+
2 0 obj
|
| 42 |
+
<< /Count 1 /Kids [ 10 0 R ] /Type /Pages >>
|
| 43 |
+
endobj
|
| 44 |
+
12 0 obj
|
| 45 |
+
<< /CreationDate (D:20160601123507-04'00')
|
| 46 |
+
/Creator (matplotlib 1.5.2rc2.post1933.dev0+gb775a26, http://matplotlib.org)
|
| 47 |
+
/Producer (matplotlib pdf backend) >>
|
| 48 |
+
endobj
|
| 49 |
+
xref
|
| 50 |
+
0 13
|
| 51 |
+
0000000000 65535 f
|
| 52 |
+
0000000016 00000 n
|
| 53 |
+
0000001036 00000 n
|
| 54 |
+
0000000853 00000 n
|
| 55 |
+
0000000874 00000 n
|
| 56 |
+
0000000973 00000 n
|
| 57 |
+
0000000994 00000 n
|
| 58 |
+
0000001015 00000 n
|
| 59 |
+
0000000065 00000 n
|
| 60 |
+
0000000383 00000 n
|
| 61 |
+
0000000208 00000 n
|
| 62 |
+
0000000833 00000 n
|
| 63 |
+
0000001096 00000 n
|
| 64 |
+
trailer
|
| 65 |
+
<< /Info 12 0 R /Root 1 0 R /Size 13 >>
|
| 66 |
+
startxref
|
| 67 |
+
1270
|
| 68 |
+
%%EOF
|
lib/python3.12/site-packages/matplotlib/mpl-data/images/zoom_to_rect.svg
ADDED
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/Minduka_Present_Blue_Pack.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/README.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
This is the sample data needed for some of matplotlib's examples and
|
| 2 |
+
docs. See matplotlib.cbook.get_sample_data for more info.
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/Stocks.csv
ADDED
|
@@ -0,0 +1,526 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Data source: https://finance.yahoo.com
|
| 2 |
+
Date,IBM,AAPL,MSFT,XRX,AMZN,DELL,GOOGL,ADBE,^GSPC,^IXIC
|
| 3 |
+
1990-01-01,10.970438003540039,0.24251236021518707,0.40375930070877075,11.202081680297852,,,,1.379060983657837,329.0799865722656,415.79998779296875
|
| 4 |
+
1990-02-01,11.554415702819824,0.24251236021518707,0.43104037642478943,10.39472484588623,,,,1.7790844440460205,331.8900146484375,425.79998779296875
|
| 5 |
+
1990-02-05,,,,,,,,,,
|
| 6 |
+
1990-03-01,11.951693534851074,0.28801724314689636,0.4834197461605072,11.394058227539062,,,,2.2348830699920654,339.94000244140625,435.5
|
| 7 |
+
1990-04-01,12.275476455688477,0.2817564308643341,0.5063362717628479,10.139430046081543,,,,2.2531447410583496,330.79998779296875,420.1000061035156
|
| 8 |
+
1990-05-01,13.514284133911133,0.295173317193985,0.6372847557067871,9.704153060913086,,,,2.0985164642333984,361.2300109863281,459.0
|
| 9 |
+
1990-05-04,,,,,,,,,,
|
| 10 |
+
1990-06-01,13.380948066711426,0.3211067020893097,0.6634747385978699,9.749448776245117,,,,2.164785146713257,358.0199890136719,462.29998779296875
|
| 11 |
+
1990-07-01,12.697657585144043,0.3013734817504883,0.5805402994155884,9.489465713500977,,,,2.069063901901245,356.1499938964844,438.20001220703125
|
| 12 |
+
1990-08-01,11.601561546325684,0.26549553871154785,0.5368908047676086,8.553519248962402,,,,1.4750508069992065,322.55999755859375,381.20001220703125
|
| 13 |
+
1990-08-06,,,,,,,,,,
|
| 14 |
+
1990-09-01,12.251119613647461,0.20872052013874054,0.5499854683876038,7.255113124847412,,,,1.1210384368896484,306.04998779296875,344.5
|
| 15 |
+
1990-10-01,12.15034294128418,0.22131578624248505,0.5565334558486938,6.248927116394043,,,,1.416249394416809,304.0,329.79998779296875
|
| 16 |
+
1990-11-01,13.08609390258789,0.26449888944625854,0.6307373642921448,7.361023426055908,,,,1.4900128841400146,322.2200012207031,359.1000061035156
|
| 17 |
+
1990-11-05,,,,,,,,,,
|
| 18 |
+
1990-12-01,13.161062240600586,0.31051647663116455,0.6569272875785828,7.519896507263184,,,,1.7186784744262695,330.2200012207031,373.79998779296875
|
| 19 |
+
1991-01-01,14.762505531311035,0.40078282356262207,0.8566243648529053,10.554410934448242,,,,2.242394208908081,343.92999267578125,414.20001220703125
|
| 20 |
+
1991-02-01,14.995450973510742,0.4134202301502228,0.9057300686836243,12.286416053771973,,,,2.8402483463287354,367.07000732421875,453.1000061035156
|
| 21 |
+
1991-02-04,,,,,,,,,,
|
| 22 |
+
1991-03-01,13.39067268371582,0.49208223819732666,0.92646324634552,12.511940002441406,,,,3.1869795322418213,375.2200012207031,482.29998779296875
|
| 23 |
+
1991-04-01,12.111870765686035,0.39800751209259033,0.8642628788948059,12.511940002441406,,,,3.0589873790740967,375.3399963378906,484.7200012207031
|
| 24 |
+
1991-05-01,12.479341506958008,0.34011581540107727,0.9581103920936584,12.73144817352295,,,,2.9850986003875732,389.8299865722656,506.1099853515625
|
| 25 |
+
1991-05-06,,,,,,,,,,
|
| 26 |
+
1991-06-01,11.555957794189453,0.30108359456062317,0.89208984375,11.853414535522461,,,,2.5565452575683594,371.1600036621094,475.9200134277344
|
| 27 |
+
1991-07-01,12.04675579071045,0.33554431796073914,0.9624748229980469,12.397871017456055,,,,3.1678967475891113,387.80999755859375,502.0400085449219
|
| 28 |
+
1991-08-01,11.526222229003906,0.3845158815383911,1.1163398027420044,13.037229537963867,,,,3.012463331222534,395.42999267578125,525.6799926757812
|
| 29 |
+
1991-08-06,,,,,,,,,,
|
| 30 |
+
1991-09-01,12.478833198547363,0.3599340617656708,1.1654454469680786,13.740047454833984,,,,3.0346662998199463,387.8599853515625,526.8800048828125
|
| 31 |
+
1991-10-01,11.83155345916748,0.37447676062583923,1.2292828559875488,14.41578483581543,,,,3.1431360244750977,392.45001220703125,542.97998046875
|
| 32 |
+
1991-11-01,11.139124870300293,0.36902356147766113,1.2734787464141846,13.965290069580078,,,,2.846613883972168,375.2200012207031,523.9000244140625
|
| 33 |
+
1991-11-04,,,,,,,,,,
|
| 34 |
+
1991-12-01,10.851117134094238,0.4109107553958893,1.4568067789077759,15.42939281463623,,,,3.8844411373138428,417.0899963378906,586.3400268554688
|
| 35 |
+
1992-01-01,10.973037719726562,0.4719553291797638,1.5746610164642334,17.584869384765625,,,,3.639812469482422,408.7799987792969,620.2100219726562
|
| 36 |
+
1992-02-01,10.592026710510254,0.49199995398521423,1.61721932888031,18.04088020324707,,,,3.3547844886779785,412.70001220703125,633.469970703125
|
| 37 |
+
1992-02-06,,,,,,,,,,
|
| 38 |
+
1992-03-01,10.317353248596191,0.4253714978694916,1.5517452955245972,16.302349090576172,,,,3.043056011199951,403.69000244140625,603.77001953125
|
| 39 |
+
1992-04-01,11.213163375854492,0.43906375765800476,1.4437123537063599,17.062589645385742,,,,2.631263494491577,414.95001220703125,578.6799926757812
|
| 40 |
+
1992-05-01,11.213163375854492,0.4363253116607666,1.5844820737838745,17.263996124267578,,,,2.705594062805176,415.3500061035156,585.3099975585938
|
| 41 |
+
1992-05-07,,,,,,,,,,
|
| 42 |
+
1992-06-01,12.25231647491455,0.3505205810070038,1.3749638795852661,16.055517196655273,,,,2.705594062805176,408.1400146484375,563.5999755859375
|
| 43 |
+
1992-07-01,11.861115455627441,0.34207984805107117,1.4289811849594116,17.38025665283203,,,,2.263554334640503,424.2099914550781,580.8300170898438
|
| 44 |
+
1992-08-01,10.84400749206543,0.33659130334854126,1.4633547067642212,17.525571823120117,,,,1.9359338283538818,414.0299987792969,563.1199951171875
|
| 45 |
+
1992-08-06,,,,,,,,,,
|
| 46 |
+
1992-09-01,10.243829727172852,0.3310767114162445,1.58120858669281,18.464359283447266,,,,1.6753284931182861,417.79998779296875,583.27001953125
|
| 47 |
+
1992-10-01,8.483662605285645,0.38518592715263367,1.7432584762573242,17.436922073364258,,,,2.12785267829895,418.67999267578125,605.1699829101562
|
| 48 |
+
1992-11-01,8.658098220825195,0.42187052965164185,1.8291932344436646,18.493711471557617,,,,2.030792474746704,431.3500061035156,652.72998046875
|
| 49 |
+
1992-11-05,,,,,,,,,,
|
| 50 |
+
1992-12-01,6.505843639373779,0.43931084871292114,1.6769649982452393,18.788379669189453,,,,1.8814688920974731,435.7099914550781,676.9500122070312
|
| 51 |
+
1993-01-01,6.651134490966797,0.43747296929359436,1.6990629434585571,20.329378128051758,,,,2.4787611961364746,438.7799987792969,696.3400268554688
|
| 52 |
+
1993-02-01,7.022435188293457,0.38968151807785034,1.6376806497573853,19.618152618408203,,,,2.670894145965576,443.3800048828125,670.77001953125
|
| 53 |
+
1993-02-04,,,,,,,,,,
|
| 54 |
+
1993-03-01,6.6405534744262695,0.37947842478752136,1.8169171810150146,19.766319274902344,,,,2.573633909225464,451.6700134277344,690.1300048828125
|
| 55 |
+
1993-04-01,6.346868991851807,0.3776364326477051,1.6794201135635376,18.451818466186523,,,,3.434307336807251,440.19000244140625,661.4199829101562
|
| 56 |
+
1993-05-01,6.885295867919922,0.4172421991825104,1.8193715810775757,18.12286949157715,,,,3.959200859069824,450.19000244140625,700.530029296875
|
| 57 |
+
1993-05-06,,,,,,,,,,
|
| 58 |
+
1993-06-01,6.51603364944458,0.29166528582572937,1.7285257577896118,19.299583435058594,,,,3.7042527198791504,450.5299987792969,703.9500122070312
|
| 59 |
+
1993-07-01,5.872671604156494,0.2049039751291275,1.453533411026001,17.638439178466797,,,,2.9742372035980225,448.1300048828125,704.7000122070312
|
| 60 |
+
1993-08-01,6.037637233734131,0.19567380845546722,1.4756313562393188,17.759246826171875,,,,2.5536391735076904,463.55999755859375,742.8400268554688
|
| 61 |
+
1993-08-05,,,,,,,,,,
|
| 62 |
+
1993-09-01,5.574150562286377,0.1733584851026535,1.620492935180664,17.849544525146484,,,,2.1931254863739014,458.92999267578125,762.780029296875
|
| 63 |
+
1993-10-01,6.105024337768555,0.22805523872375488,1.5738422870635986,19.34462547302246,,,,2.6137242317199707,467.8299865722656,779.260009765625
|
| 64 |
+
1993-11-01,7.150176048278809,0.2336171418428421,1.5713871717453003,20.107433319091797,,,,2.786593437194824,461.7900085449219,754.3900146484375
|
| 65 |
+
1993-11-04,,,,,,,,,,
|
| 66 |
+
1993-12-01,7.535686016082764,0.21771006286144257,1.5836634635925293,22.01595687866211,,,,2.68115496635437,466.45001220703125,776.7999877929688
|
| 67 |
+
1994-01-01,7.535686016082764,0.24376071989536285,1.672054648399353,24.171361923217773,,,,3.64516544342041,481.6099853515625,800.469970703125
|
| 68 |
+
1994-02-01,7.052198886871338,0.27167221903800964,1.620492935180664,23.894229888916016,,,,3.5310842990875244,467.1400146484375,792.5
|
| 69 |
+
1994-02-04,,,,,,,,,,
|
| 70 |
+
1994-03-01,7.31842041015625,0.24837146699428558,1.6646885871887207,23.706161499023438,,,,2.9274797439575195,445.7699890136719,743.4600219726562
|
| 71 |
+
1994-04-01,7.703606128692627,0.22409436106681824,1.8169171810150146,24.543949127197266,,,,3.2354440689086914,450.9100036621094,733.8400268554688
|
| 72 |
+
1994-05-01,8.440468788146973,0.21849241852760315,2.1115520000457764,24.947307586669922,,,,3.4773480892181396,456.5,735.1900024414062
|
| 73 |
+
1994-05-05,,,,,,,,,,
|
| 74 |
+
1994-06-01,7.905290126800537,0.19873161613941193,2.028071165084839,24.444643020629883,,,,3.2959203720092773,444.2699890136719,705.9600219726562
|
| 75 |
+
1994-07-01,8.325791358947754,0.2526327669620514,2.023160934448242,25.569963455200195,,,,3.756444215774536,458.260009765625,722.1599731445312
|
| 76 |
+
1994-08-01,9.217235565185547,0.27138155698776245,2.2834222316741943,26.789077758789062,,,,3.847325563430786,475.489990234375,765.6199951171875
|
| 77 |
+
1994-08-04,,,,,,,,,,
|
| 78 |
+
1994-09-01,9.405942916870117,0.25350791215896606,2.2048532962799072,26.88198471069336,,,,3.9382081031799316,462.7099914550781,764.2899780273438
|
| 79 |
+
1994-10-01,10.064526557922363,0.324998676776886,2.474935293197632,25.811735153198242,,,,4.368794918060303,472.3500061035156,777.489990234375
|
| 80 |
+
1994-11-01,9.557921409606934,0.28031668066978455,2.470024824142456,24.741479873657227,,,,4.004726409912109,453.69000244140625,750.3200073242188
|
| 81 |
+
1994-11-04,,,,,,,,,,
|
| 82 |
+
1994-12-01,9.9633207321167,0.2943686842918396,2.401276111602783,25.12115478515625,,,,3.6103241443634033,459.2699890136719,751.9600219726562
|
| 83 |
+
1995-01-01,9.77692985534668,0.3047473132610321,2.332528591156006,27.753808975219727,,,,3.5117223262786865,470.4200134277344,755.2000122070312
|
| 84 |
+
1995-02-01,10.200541496276855,0.29814332723617554,2.474935293197632,28.13443946838379,,,,4.345465660095215,487.3900146484375,793.72998046875
|
| 85 |
+
1995-02-06,,,,,,,,,,
|
| 86 |
+
1995-03-01,11.169903755187988,0.2667955756187439,2.7941226959228516,29.989917755126953,,,,6.016797065734863,500.7099914550781,817.2100219726562
|
| 87 |
+
1995-04-01,12.870043754577637,0.2895018756389618,3.2115228176116943,31.52293586730957,,,,7.08742618560791,514.7100219726562,843.97998046875
|
| 88 |
+
1995-05-01,12.649023056030273,0.31457316875457764,3.326920747756958,28.96788215637207,,,,6.326970100402832,533.4000244140625,864.5800170898438
|
| 89 |
+
1995-05-04,,,,,,,,,,
|
| 90 |
+
1995-06-01,13.091790199279785,0.3524453043937683,3.5503528118133545,30.15083122253418,,,,7.057007789611816,544.75,933.4500122070312
|
| 91 |
+
1995-07-01,14.847586631774902,0.3415350615978241,3.5552642345428467,30.697277069091797,,,,7.513277530670166,562.0599975585938,1001.2100219726562
|
| 92 |
+
1995-08-01,14.09753131866455,0.32635587453842163,3.6338343620300293,31.08300018310547,,,,6.210629463195801,561.8800048828125,1020.1099853515625
|
| 93 |
+
1995-08-08,,,,,,,,,,
|
| 94 |
+
1995-09-01,12.916881561279297,0.28348639607429504,3.5552642345428467,34.767181396484375,,,,6.301961898803711,584.4099731445312,1043.5400390625
|
| 95 |
+
1995-10-01,13.292764663696289,0.27635207772254944,3.92846941947937,33.5381965637207,,,,6.941293239593506,581.5,1036.06005859375
|
| 96 |
+
1995-11-01,13.207347869873047,0.2901458144187927,3.4226772785186768,35.478694915771484,,,,8.243063926696777,605.3699951171875,1059.199951171875
|
| 97 |
+
1995-11-08,,,,,,,,,,
|
| 98 |
+
1995-12-01,12.52143669128418,0.24333631992340088,3.447230815887451,35.68303298950195,,,,7.557409763336182,615.9299926757812,1052.1300048828125
|
| 99 |
+
1996-01-01,14.868143081665039,0.21089188754558563,3.6338343620300293,32.199371337890625,,,,4.14438533782959,636.02001953125,1059.7900390625
|
| 100 |
+
1996-02-01,16.80373764038086,0.2099376916885376,3.876908779144287,33.924922943115234,,,,4.089058876037598,640.4299926757812,1100.050048828125
|
| 101 |
+
1996-02-07,,,,,,,,,,
|
| 102 |
+
1996-03-01,15.278267860412598,0.1875123232603073,4.051232814788818,32.900360107421875,,,,3.936483860015869,645.5,1101.4000244140625
|
| 103 |
+
1996-04-01,14.797598838806152,0.1860809624195099,4.448990821838379,38.40559768676758,,,,5.248644828796387,654.1699829101562,1190.52001953125
|
| 104 |
+
1996-05-01,14.660264015197754,0.1994406133890152,4.6650567054748535,41.25652313232422,,,,4.538435459136963,669.1199951171875,1243.4300537109375
|
| 105 |
+
1996-05-08,,,,,,,,,,
|
| 106 |
+
1996-06-01,13.641029357910156,0.1603158563375473,4.719073295593262,42.07575225830078,,,,4.385625839233398,670.6300048828125,1185.02001953125
|
| 107 |
+
1996-07-01,14.812233924865723,0.1679503321647644,4.630680561065674,39.836021423339844,,,,3.7132644653320312,639.9500122070312,1080.5899658203125
|
| 108 |
+
1996-08-01,15.759532928466797,0.18512675166130066,4.812370777130127,43.394588470458984,,,,4.269299030303955,651.989990234375,1141.5
|
| 109 |
+
1996-08-07,,,,,,,,,,
|
| 110 |
+
1996-09-01,17.209583282470703,0.16938161849975586,5.180670261383057,42.40607833862305,,,,4.5600385665893555,687.3300170898438,1226.9200439453125
|
| 111 |
+
1996-10-01,17.831613540649414,0.17558389902114868,5.391822814941406,36.86507034301758,,,,4.244296073913574,705.27001953125,1221.510009765625
|
| 112 |
+
1996-11-01,22.03032875061035,0.184172585606575,6.162785530090332,38.95176315307617,,,,4.841867923736572,757.02001953125,1292.6099853515625
|
| 113 |
+
1996-11-06,,,,,,,,,,
|
| 114 |
+
1996-12-01,20.998197555541992,0.15936164557933807,6.491794109344482,41.83340072631836,,,,4.581387996673584,740.739990234375,1291.030029296875
|
| 115 |
+
1997-01-01,21.743183135986328,0.12691716849803925,8.01407527923584,46.8797492980957,,,,4.642676830291748,786.1599731445312,1379.8499755859375
|
| 116 |
+
1997-02-01,19.924028396606445,0.1240537017583847,7.660515785217285,49.97840881347656,,,,4.47982120513916,790.8200073242188,1309.0
|
| 117 |
+
1997-02-06,,,,,,,,,,
|
| 118 |
+
1997-03-01,19.067983627319336,0.13932174444198608,7.203826904296875,45.4803581237793,,,,4.924733638763428,757.1199951171875,1221.699951171875
|
| 119 |
+
1997-04-01,22.298084259033203,0.12977975606918335,9.546177864074707,49.431339263916016,,,,4.807621955871582,801.3400268554688,1260.760009765625
|
| 120 |
+
1997-05-01,24.034704208374023,0.12691716849803925,9.742606163024902,54.45485305786133,,,,5.483453750610352,848.280029296875,1400.3199462890625
|
| 121 |
+
1997-05-07,,,,,,,,,,
|
| 122 |
+
1997-05-28,,,,,,,,,,
|
| 123 |
+
1997-06-01,25.13742446899414,0.10878564417362213,9.929201126098633,63.396705627441406,0.07708299905061722,,,4.3084282875061035,885.1400146484375,1442.0699462890625
|
| 124 |
+
1997-07-01,29.45465660095215,0.1335965245962143,11.107746124267578,66.42845916748047,0.11979199945926666,,,4.592585563659668,954.3099975585938,1593.81005859375
|
| 125 |
+
1997-08-01,28.23609161376953,0.1660410314798355,10.385887145996094,60.97687911987305,0.11692699790000916,,,4.851738929748535,899.469970703125,1587.3199462890625
|
| 126 |
+
1997-08-07,,,,,,,,,,
|
| 127 |
+
1997-09-01,29.579116821289062,0.16556398570537567,10.395710945129395,67.9932632446289,0.21692700684070587,,,6.2071452140808105,947.280029296875,1685.68994140625
|
| 128 |
+
1997-10-01,27.48627281188965,0.13001829385757446,10.214018821716309,64.32245635986328,0.25416699051856995,,,5.889601707458496,914.6199951171875,1593.6099853515625
|
| 129 |
+
1997-11-01,30.555805206298828,0.13550494611263275,11.117568969726562,63.00460433959961,0.20624999701976776,,,5.180382251739502,955.4000244140625,1600.550048828125
|
| 130 |
+
1997-11-06,,,,,,,,,,
|
| 131 |
+
1997-12-01,29.25237274169922,0.10019782930612564,10.155089378356934,59.91267013549805,0.2510420083999634,,,5.087874889373779,970.4299926757812,1570.3499755859375
|
| 132 |
+
1998-01-01,27.609769821166992,0.1397988647222519,11.721570014953613,65.44635009765625,0.24583299458026886,,,4.750911235809326,980.280029296875,1619.3599853515625
|
| 133 |
+
1998-02-01,29.19993782043457,0.1803557574748993,13.317505836486816,72.36756134033203,0.3208329975605011,,,5.452751159667969,1049.3399658203125,1770.510009765625
|
| 134 |
+
1998-02-06,,,,,,,,,,
|
| 135 |
+
1998-03-01,29.10112953186035,0.2099376916885376,14.06391716003418,86.66805267333984,0.35637998580932617,,,5.576151371002197,1101.75,1835.6800537109375
|
| 136 |
+
1998-04-01,32.4630012512207,0.20898354053497314,14.162128448486328,92.79229736328125,0.3822920024394989,,,6.177727699279785,1111.75,1868.4100341796875
|
| 137 |
+
1998-05-01,32.918251037597656,0.2032574564218521,13.327329635620117,84.10579681396484,0.3671880066394806,,,4.930263519287109,1090.8199462890625,1778.8699951171875
|
| 138 |
+
1998-05-06,,,,,,,,,,
|
| 139 |
+
1998-06-01,32.225502014160156,0.2190026193857193,17.029911041259766,83.08383178710938,0.831250011920929,,,5.238887786865234,1133.8399658203125,1894.739990234375
|
| 140 |
+
1998-07-01,37.19002914428711,0.26433059573173523,17.27544403076172,86.6082992553711,0.9239580035209656,,,3.988961935043335,1120.6700439453125,1872.3900146484375
|
| 141 |
+
1998-08-01,31.611520767211914,0.23808826506137848,15.075493812561035,72.04536437988281,0.6979169845581055,,,3.2419238090515137,957.280029296875,1499.25
|
| 142 |
+
1998-08-06,,,,,,,,,,
|
| 143 |
+
1998-09-01,36.12905502319336,0.2910497486591339,17.295076370239258,69.53275299072266,0.9302080273628235,,,4.283971786499023,1017.010009765625,1693.8399658203125
|
| 144 |
+
1998-10-01,41.75224685668945,0.2834153473377228,16.637067794799805,80.36154174804688,1.0536459684371948,,,4.59221076965332,1098.6700439453125,1771.3900146484375
|
| 145 |
+
1998-11-01,46.4265251159668,0.2438134402036667,19.170928955078125,88.54693603515625,1.600000023841858,,,5.535391330718994,1163.6300048828125,1949.5400390625
|
| 146 |
+
1998-11-06,,,,,,,,,,
|
| 147 |
+
1998-12-01,51.91548538208008,0.3125200569629669,21.793180465698242,97.19573974609375,2.6770830154418945,,,5.782783031463623,1229.22998046875,2192.68994140625
|
| 148 |
+
1999-01-01,51.59874725341797,0.3144294023513794,27.499271392822266,102.47120666503906,2.92343807220459,,,5.912916660308838,1279.6400146484375,2505.889892578125
|
| 149 |
+
1999-02-01,47.797481536865234,0.2657618522644043,23.5904541015625,91.21175384521484,3.203125,,,4.984185218811035,1238.3299560546875,2288.030029296875
|
| 150 |
+
1999-02-08,,,,,,,,,,
|
| 151 |
+
1999-03-01,49.97552490234375,0.27435049414634705,28.16712188720703,88.21611785888672,4.304687976837158,,,7.027392387390137,1286.3699951171875,2461.39990234375
|
| 152 |
+
1999-04-01,58.98025894165039,0.35116779804229736,25.554689407348633,97.44929504394531,4.301562786102295,,,7.854666709899902,1335.1800537109375,2542.860107421875
|
| 153 |
+
1999-05-01,65.41220092773438,0.3363769054412842,25.35825538635254,93.19886779785156,2.96875,,,9.187017440795898,1301.8399658203125,2470.52001953125
|
| 154 |
+
1999-05-06,,,,,,,,,,
|
| 155 |
+
1999-05-27,,,,,,,,,,
|
| 156 |
+
1999-06-01,72.96644592285156,0.35355332493782043,28.343910217285156,97.96764373779297,3.128124952316284,,,10.182408332824707,1372.7099609375,2686.1201171875
|
| 157 |
+
1999-07-01,70.95524597167969,0.4251234233379364,26.96893310546875,81.35432434082031,2.50156307220459,,,10.634023666381836,1328.719970703125,2638.489990234375
|
| 158 |
+
1999-08-01,70.32015991210938,0.49812400341033936,29.090301513671875,79.7938461303711,3.109375,,,12.354691505432129,1320.4100341796875,2739.35009765625
|
| 159 |
+
1999-08-06,,,,,,,,,,
|
| 160 |
+
1999-09-01,68.37564849853516,0.48333317041397095,28.46175193786621,69.8066177368164,3.996875047683716,,,14.07535457611084,1282.7099609375,2746.159912109375
|
| 161 |
+
1999-10-01,55.519859313964844,0.6116815209388733,29.090301513671875,47.42917251586914,3.53125,,,17.35419464111328,1362.9300537109375,2966.429931640625
|
| 162 |
+
1999-11-01,58.239349365234375,0.747186541557312,28.613975524902344,45.75767135620117,4.253125190734863,,,17.044021606445312,1388.9100341796875,3336.159912109375
|
| 163 |
+
1999-11-08,,,,,,,,,,
|
| 164 |
+
1999-12-01,61.04003143310547,0.7848799824714661,36.6919059753418,37.92245101928711,3.8062500953674316,,,16.687326431274414,1469.25,4069.31005859375
|
| 165 |
+
2000-01-01,63.515560150146484,0.7920366525650024,30.75990104675293,35.14961242675781,3.2281250953674316,,,13.668244361877441,1394.4599609375,3940.35009765625
|
| 166 |
+
2000-02-01,58.14006042480469,0.8750578165054321,28.088550567626953,36.62297058105469,3.4437499046325684,,,25.31960105895996,1366.4200439453125,4696.68994140625
|
| 167 |
+
2000-02-08,,,,,,,,,,
|
| 168 |
+
2000-03-01,67.05181884765625,1.0368047952651978,33.39197540283203,43.779178619384766,3.3499999046325684,,,27.631258010864258,1498.5799560546875,4572.830078125
|
| 169 |
+
2000-04-01,63.157623291015625,0.947104275226593,21.920852661132812,45.03520965576172,2.7593750953674316,,,30.027847290039062,1452.4300537109375,3860.659912109375
|
| 170 |
+
2000-05-01,60.785640716552734,0.6412634253501892,19.661985397338867,46.097347259521484,2.4156250953674316,,,27.948402404785156,1420.5999755859375,3400.909912109375
|
| 171 |
+
2000-05-08,,,,,,,,,,
|
| 172 |
+
2000-06-01,62.13500213623047,0.7996708750724792,25.142194747924805,35.529056549072266,1.8156249523162842,,,32.277984619140625,1454.5999755859375,3966.110107421875
|
| 173 |
+
2000-07-01,63.65913009643555,0.7758141756057739,21.940492630004883,25.79067039489746,1.506250023841858,,,28.43518829345703,1430.8299560546875,3766.989990234375
|
| 174 |
+
2000-08-01,74.86860656738281,0.9304049015045166,21.940492630004883,27.82395362854004,2.075000047683716,,,32.28449630737305,1517.6800537109375,4206.35009765625
|
| 175 |
+
2000-08-08,,,,,,,,,,
|
| 176 |
+
2000-09-01,63.94328689575195,0.3931553065776825,18.95485496520996,25.980575561523438,1.921875,,,38.555137634277344,1436.510009765625,3672.820068359375
|
| 177 |
+
2000-10-01,55.92375183105469,0.29868337512016296,21.645862579345703,14.6140718460083,1.8312499523162842,,,37.785430908203125,1429.4000244140625,3369.6298828125
|
| 178 |
+
2000-11-01,53.08496856689453,0.2519250810146332,18.03167152404785,12.016016960144043,1.234375,,,31.482683181762695,1314.949951171875,2597.929931640625
|
| 179 |
+
2000-11-08,,,,,,,,,,
|
| 180 |
+
2000-12-01,48.32046127319336,0.22711420059204102,13.631781578063965,8.067792892456055,0.778124988079071,,,28.90570068359375,1320.280029296875,2470.52001953125
|
| 181 |
+
2001-01-01,63.6693229675293,0.33017459511756897,19.190568923950195,14.251648902893066,0.8656250238418579,,,21.702556610107422,1366.010009765625,2772.72998046875
|
| 182 |
+
2001-02-01,56.790767669677734,0.2786443829536438,18.54237174987793,10.536102294921875,0.5093749761581421,,,14.440549850463867,1239.93994140625,2151.830078125
|
| 183 |
+
2001-02-07,,,,,,,,,,
|
| 184 |
+
2001-03-01,54.73835754394531,0.3369686007499695,17.18704605102539,10.535667419433594,0.5115000009536743,,,17.375865936279297,1160.3299560546875,1840.260009765625
|
| 185 |
+
2001-04-01,65.52893829345703,0.38918623328208923,21.292295455932617,15.900238990783691,0.7889999747276306,,,22.32872772216797,1249.4599609375,2116.239990234375
|
| 186 |
+
2001-05-01,63.62804412841797,0.3046000301837921,21.741714477539062,17.430465698242188,0.8345000147819519,,,19.768779754638672,1255.8199462890625,2110.489990234375
|
| 187 |
+
2001-05-08,,,,,,,,,,
|
| 188 |
+
2001-06-01,64.6737060546875,0.35498547554016113,22.942251205444336,16.83243751525879,0.7074999809265137,,,23.362648010253906,1224.3800048828125,2160.5400390625
|
| 189 |
+
2001-07-01,59.949947357177734,0.28688937425613403,20.80202293395996,14.035829544067383,0.6244999766349792,,,18.640790939331055,1211.22998046875,2027.1300048828125
|
| 190 |
+
2001-08-01,56.952762603759766,0.2832247018814087,17.929533004760742,16.18165397644043,0.44699999690055847,,,16.711578369140625,1133.5799560546875,1805.4300537109375
|
| 191 |
+
2001-08-08,,,,,,,,,,
|
| 192 |
+
2001-09-01,52.33213424682617,0.23680917918682098,16.081575393676758,13.6312894821167,0.2985000014305115,,,11.92334270477295,1040.93994140625,1498.800048828125
|
| 193 |
+
2001-10-01,61.660858154296875,0.26810887455940247,18.275238037109375,12.312134742736816,0.3490000069141388,,,13.133195877075195,1059.780029296875,1690.199951171875
|
| 194 |
+
2001-11-01,65.95150756835938,0.3252120614051819,20.17975616455078,14.774558067321777,0.5659999847412109,,,15.958827018737793,1139.449951171875,1930.5799560546875
|
| 195 |
+
2001-11-07,,,,,,,,,,
|
| 196 |
+
2001-12-01,69.1006088256836,0.3343726694583893,20.820878982543945,18.32748794555664,0.5410000085830688,,,15.446427345275879,1148.0799560546875,1950.4000244140625
|
| 197 |
+
2002-01-01,61.63407897949219,0.37742963433265686,20.022619247436523,19.928070068359375,0.7095000147819519,,,16.771486282348633,1130.199951171875,1934.030029296875
|
| 198 |
+
2002-02-01,56.052799224853516,0.3313194811344147,18.334945678710938,17.07868194580078,0.7049999833106995,,,18.105239868164062,1106.72998046875,1731.489990234375
|
| 199 |
+
2002-02-06,,,,,,,,,,
|
| 200 |
+
2002-03-01,59.49020767211914,0.3613981306552887,18.95407485961914,18.907917022705078,0.7149999737739563,,,20.051130294799805,1147.3900146484375,1845.3499755859375
|
| 201 |
+
2002-04-01,47.912540435791016,0.3705587685108185,16.424144744873047,15.56605339050293,0.8345000147819519,,,19.893611907958984,1076.9200439453125,1688.22998046875
|
| 202 |
+
2002-05-01,46.01911926269531,0.35574817657470703,15.999865531921387,15.777122497558594,0.9114999771118164,,,17.971961975097656,1067.1400146484375,1615.72998046875
|
| 203 |
+
2002-05-08,,,,,,,,,,
|
| 204 |
+
2002-06-01,41.26642990112305,0.2705524265766144,17.190977096557617,10.55325984954834,0.8125,,,14.188389778137207,989.8200073242188,1463.2099609375
|
| 205 |
+
2002-07-01,40.349422454833984,0.23299239575862885,15.079033851623535,12.224191665649414,0.7225000262260437,,,11.933782577514648,911.6199951171875,1328.260009765625
|
| 206 |
+
2002-08-01,43.203697204589844,0.22520573437213898,15.424735069274902,12.329721450805664,0.746999979019165,,,10.01123046875,916.0700073242188,1314.8499755859375
|
| 207 |
+
2002-08-07,,,,,,,,,,
|
| 208 |
+
2002-09-01,33.49409484863281,0.22138899564743042,13.746496200561523,8.706437110900879,0.796500027179718,,,9.513158798217773,815.280029296875,1172.06005859375
|
| 209 |
+
2002-10-01,45.344242095947266,0.24535933136940002,16.804426193237305,11.678934097290039,0.9679999947547913,,,11.782204627990723,885.760009765625,1329.75
|
| 210 |
+
2002-11-01,49.92806625366211,0.23665708303451538,18.127525329589844,15.337401390075684,1.1675000190734863,,,14.71778678894043,936.3099975585938,1478.780029296875
|
| 211 |
+
2002-11-06,,,,,,,,,,
|
| 212 |
+
2002-12-01,44.5990104675293,0.2187930941581726,16.248149871826172,14.15894889831543,0.9445000290870667,,,12.360349655151367,879.8200073242188,1335.510009765625
|
| 213 |
+
2003-01-01,45.00184631347656,0.21925139427185059,14.91561222076416,15.56605339050293,1.0924999713897705,,,13.167760848999023,855.7000122070312,1320.9100341796875
|
| 214 |
+
2003-02-01,44.85797119140625,0.22917553782463074,14.896756172180176,15.829883575439453,1.1004999876022339,,,13.712512969970703,841.1500244140625,1337.52001953125
|
| 215 |
+
2003-02-06,,,,,,,,,,
|
| 216 |
+
2003-03-01,45.22197723388672,0.2158920168876648,15.266251564025879,15.302220344543457,1.3014999628067017,,,15.372973442077637,848.1799926757812,1341.1700439453125
|
| 217 |
+
2003-04-01,48.95253372192383,0.21711383759975433,16.123830795288086,17.342517852783203,1.434499979019165,,,17.22471046447754,916.9199829101562,1464.31005859375
|
| 218 |
+
2003-05-01,50.76301956176758,0.2740640342235565,15.518482208251953,19.224523544311523,1.7944999933242798,,,17.618791580200195,963.5900268554688,1595.9100341796875
|
| 219 |
+
2003-05-07,,,,,,,,,,
|
| 220 |
+
2003-06-01,47.655845642089844,0.29101142287254333,16.16796875,18.626508712768555,1.815999984741211,,,15.997578620910645,974.5,1622.800048828125
|
| 221 |
+
2003-07-01,46.933773040771484,0.32185351848602295,16.653514862060547,18.995861053466797,2.0820000171661377,,,16.333431243896484,990.3099975585938,1735.02001953125
|
| 222 |
+
2003-08-01,47.37279510498047,0.34521347284317017,16.722881317138672,18.960683822631836,2.315999984741211,,,19.37755012512207,1008.010009765625,1810.449951171875
|
| 223 |
+
2003-08-06,,,,,,,,,,
|
| 224 |
+
2003-09-01,51.1259651184082,0.3163566291332245,17.530014038085938,18.046072006225586,2.4214999675750732,,,19.657007217407227,995.969970703125,1786.93994140625
|
| 225 |
+
2003-10-01,51.79159927368164,0.3494885563850403,16.48325538635254,18.468202590942383,2.7214999198913574,,,21.84463119506836,1050.7099609375,1932.2099609375
|
| 226 |
+
2003-11-01,52.405128479003906,0.3192576766014099,16.303056716918945,21.423110961914062,2.698499917984009,,,20.621614456176758,1058.199951171875,1960.260009765625
|
| 227 |
+
2003-11-06,,,,,,,,,,
|
| 228 |
+
2003-12-01,53.74093246459961,0.32628077268600464,17.35569190979004,24.272485733032227,2.63100004196167,,,19.5084171295166,1111.9200439453125,2003.3699951171875
|
| 229 |
+
2004-01-01,57.53900146484375,0.3444499373435974,17.533241271972656,25.74994659423828,2.5199999809265137,,,19.119047164916992,1131.1300048828125,2066.14990234375
|
| 230 |
+
2004-02-01,55.95598602294922,0.36521488428115845,16.82303810119629,24.87051010131836,2.1505000591278076,,,18.600963592529297,1144.93994140625,2029.8199462890625
|
| 231 |
+
2004-02-06,,,,,,,,,,
|
| 232 |
+
2004-03-01,53.3401985168457,0.4128514230251312,15.808448791503906,25.6268310546875,2.1640000343322754,,,19.62464141845703,1126.2099609375,1994.219970703125
|
| 233 |
+
2004-04-01,51.208683013916016,0.39361342787742615,16.56939125061035,23.6217041015625,2.180000066757202,,,20.729951858520508,1107.300048828125,1920.1500244140625
|
| 234 |
+
2004-05-01,51.45262145996094,0.4284247159957886,16.632802963256836,23.815183639526367,2.424999952316284,,,22.293439865112305,1120.6800537109375,1986.739990234375
|
| 235 |
+
2004-05-06,,,,,,,,,,
|
| 236 |
+
2004-06-01,51.300846099853516,0.4968261420726776,18.110280990600586,25.503700256347656,2.7200000286102295,,,23.227535247802734,1140.8399658203125,2047.7900390625
|
| 237 |
+
2004-07-01,50.672325134277344,0.4937727451324463,18.065902709960938,24.378023147583008,1.9459999799728394,,,21.075881958007812,1101.719970703125,1887.3599853515625
|
| 238 |
+
2004-08-01,49.28722381591797,0.5265995860099792,17.31130027770996,23.6217041015625,1.906999945640564,,,22.91964340209961,1104.239990234375,1838.0999755859375
|
| 239 |
+
2004-08-06,,,,,,,,,,
|
| 240 |
+
2004-09-01,50.00397872924805,0.5916416049003601,17.5849609375,24.764976501464844,2.0429999828338623,,64.8648681640625,24.718441009521484,1114.5799560546875,1896.8399658203125
|
| 241 |
+
2004-10-01,52.34260559082031,0.800052285194397,17.788476943969727,25.978591918945312,1.7065000534057617,,95.41541290283203,28.003637313842773,1130.199951171875,1974.989990234375
|
| 242 |
+
2004-11-01,54.96117401123047,1.0237311124801636,17.050731658935547,26.945974349975586,1.9839999675750732,,91.0810775756836,30.26772117614746,1173.8199462890625,2096.81005859375
|
| 243 |
+
2004-11-08,,,,,,,,,,
|
| 244 |
+
2004-12-01,57.60344696044922,0.9832708239555359,18.939943313598633,29.918479919433594,2.2144999504089355,,96.49149322509766,31.357276916503906,1211.9200439453125,2175.43994140625
|
| 245 |
+
2005-01-01,54.58831024169922,1.1741228103637695,18.628063201904297,27.930959701538086,2.1610000133514404,,97.90790557861328,28.444419860839844,1181.27001953125,2062.409912109375
|
| 246 |
+
2005-02-01,54.09749221801758,1.3698610067367554,17.83417510986328,27.438472747802734,1.7589999437332153,,94.0890884399414,30.86894416809082,1203.5999755859375,2051.719970703125
|
| 247 |
+
2005-02-08,,,,,,,,,,
|
| 248 |
+
2005-03-01,53.49815368652344,1.2724499702453613,17.18527603149414,26.6469669342041,1.7135000228881836,,90.34534454345703,33.57841110229492,1180.5899658203125,1999.22998046875
|
| 249 |
+
2005-04-01,44.7164421081543,1.1011403799057007,17.988739013671875,23.305103302001953,1.6180000305175781,,110.110107421875,29.735000610351562,1156.8499755859375,1921.6500244140625
|
| 250 |
+
2005-05-01,44.23051071166992,1.2141252756118774,18.3442440032959,23.867952346801758,1.7755000591278076,,138.77377319335938,33.119998931884766,1191.5,2068.219970703125
|
| 251 |
+
2005-05-06,,,,,,,,,,
|
| 252 |
+
2005-06-01,43.555538177490234,1.124043345451355,17.71768569946289,24.254899978637695,1.6545000076293945,,147.22222900390625,28.610000610351562,1191.3299560546875,2056.9599609375
|
| 253 |
+
2005-07-01,48.991188049316406,1.3023751974105835,18.26690673828125,23.234752655029297,2.257499933242798,,144.02401733398438,29.639999389648438,1234.1800537109375,2184.830078125
|
| 254 |
+
2005-08-01,47.3240966796875,1.431849479675293,19.529403686523438,23.58652687072754,2.134999990463257,,143.1431427001953,27.040000915527344,1220.3299560546875,2152.090087890625
|
| 255 |
+
2005-08-08,,,,,,,,,,
|
| 256 |
+
2005-09-01,47.202552795410156,1.6370543241500854,18.40694236755371,24.00865936279297,2.265000104904175,,158.3883819580078,29.850000381469727,1228.81005859375,2151.68994140625
|
| 257 |
+
2005-10-01,48.1793098449707,1.7585887908935547,18.385473251342773,23.867952346801758,1.9930000305175781,,186.25625610351562,32.25,1207.010009765625,2120.300048828125
|
| 258 |
+
2005-11-01,52.309974670410156,2.0709757804870605,19.80194664001465,24.976051330566406,2.4230000972747803,,202.65765380859375,32.61000061035156,1249.47998046875,2232.820068359375
|
| 259 |
+
2005-11-08,,,,,,,,,,
|
| 260 |
+
2005-12-01,48.483585357666016,2.1952593326568604,18.762245178222656,25.76755142211914,2.3575000762939453,,207.63763427734375,36.959999084472656,1248.2900390625,2205.320068359375
|
| 261 |
+
2006-01-01,47.95273208618164,2.305800437927246,20.19721794128418,25.169517517089844,2.240999937057495,,216.5465545654297,39.72999954223633,1280.0799560546875,2305.820068359375
|
| 262 |
+
2006-02-01,47.32752227783203,2.0914342403411865,19.27882957458496,26.207246780395508,1.871999979019165,,181.49148559570312,38.54999923706055,1280.6600341796875,2281.389892578125
|
| 263 |
+
2006-02-08,,,,,,,,,,
|
| 264 |
+
2006-03-01,48.76497268676758,1.9152405261993408,19.588937759399414,26.734920501708984,1.8265000581741333,,195.1951904296875,34.95000076293945,1294.8699951171875,2339.7900390625
|
| 265 |
+
2006-04-01,48.6880989074707,2.149454355239868,17.385986328125,24.694625854492188,1.7604999542236328,,209.17918395996094,39.20000076293945,1310.6099853515625,2322.570068359375
|
| 266 |
+
2006-05-01,47.24531936645508,1.8251585960388184,16.306108474731445,24.149375915527344,1.7304999828338623,,186.09609985351562,28.6299991607666,1270.0899658203125,2178.8798828125
|
| 267 |
+
2006-05-08,,,,,,,,,,
|
| 268 |
+
2006-06-01,45.58832931518555,1.7488168478012085,16.83946990966797,24.465961456298828,1.934000015258789,,209.8748779296875,30.360000610351562,1270.199951171875,2172.090087890625
|
| 269 |
+
2006-07-01,45.938453674316406,2.075251340866089,17.388734817504883,24.78256607055664,1.344499945640564,,193.49349975585938,28.510000228881836,1276.6600341796875,2091.469970703125
|
| 270 |
+
2006-08-01,48.051090240478516,2.0718915462493896,18.574007034301758,26.048952102661133,1.5414999723434448,,189.45445251464844,32.439998626708984,1303.8199462890625,2183.75
|
| 271 |
+
2006-08-08,,,,,,,,,,
|
| 272 |
+
2006-09-01,48.820682525634766,2.350689172744751,19.839282989501953,27.368104934692383,1.6059999465942383,,201.15115356445312,37.459999084472656,1335.8499755859375,2258.429931640625
|
| 273 |
+
2006-10-01,55.01115798950195,2.475886821746826,20.82581329345703,29.90088653564453,1.9045000076293945,,238.4334259033203,38.25,1377.93994140625,2366.7099609375
|
| 274 |
+
2006-11-01,54.766883850097656,2.798962354660034,21.29731559753418,29.021446228027344,2.0169999599456787,,242.64764404296875,40.15999984741211,1400.6300048828125,2431.77001953125
|
| 275 |
+
2006-11-08,,,,,,,,,,
|
| 276 |
+
2006-12-01,58.07079315185547,2.5907039642333984,21.73406219482422,29.812957763671875,1.9730000495910645,,230.47047424316406,41.119998931884766,1418.300048828125,2415.2900390625
|
| 277 |
+
2007-01-01,59.266300201416016,2.617882013320923,22.461923599243164,30.252676010131836,1.8834999799728394,,251.00100708007812,38.869998931884766,1438.239990234375,2463.929931640625
|
| 278 |
+
2007-02-01,55.55428695678711,2.583681344985962,20.50397491455078,30.37578582763672,1.9570000171661377,,224.949951171875,39.25,1406.8199462890625,2416.14990234375
|
| 279 |
+
2007-02-07,,,,,,,,,,
|
| 280 |
+
2007-03-01,56.51309585571289,2.8371317386627197,20.3559513092041,29.707414627075195,1.9895000457763672,,229.30931091308594,41.70000076293945,1420.8599853515625,2421.639892578125
|
| 281 |
+
2007-04-01,61.27952575683594,3.0475287437438965,21.867843627929688,32.539215087890625,3.066499948501587,,235.92591857910156,41.560001373291016,1482.3699951171875,2525.090087890625
|
| 282 |
+
2007-05-01,63.91150665283203,3.700700044631958,22.415639877319336,33.18999099731445,3.4570000171661377,,249.20420837402344,44.060001373291016,1530.6199951171875,2604.52001953125
|
| 283 |
+
2007-05-08,,,,,,,,,,
|
| 284 |
+
2007-06-01,63.347747802734375,3.7266552448272705,21.59428596496582,32.5040397644043,3.4205000400543213,,261.6116027832031,40.150001525878906,1503.3499755859375,2603.22998046875
|
| 285 |
+
2007-07-01,66.59786987304688,4.023471355438232,21.242568969726562,30.70998764038086,3.927000045776367,,255.2552490234375,40.290000915527344,1455.27001953125,2546.27001953125
|
| 286 |
+
2007-08-01,70.23324584960938,4.228675365447998,21.052053451538086,30.12954330444336,3.995500087738037,,257.88287353515625,42.75,1473.989990234375,2596.360107421875
|
| 287 |
+
2007-08-08,,,,,,,,,,
|
| 288 |
+
2007-09-01,71.1520004272461,4.68641471862793,21.662628173828125,30.49891471862793,4.65749979019165,,283.9189147949219,43.65999984741211,1526.75,2701.5
|
| 289 |
+
2007-10-01,70.13726806640625,5.800380706787109,27.067256927490234,30.674802780151367,4.457499980926514,,353.8538513183594,47.900001525878906,1549.3800048828125,2859.1201171875
|
| 290 |
+
2007-11-01,63.529457092285156,5.564334392547607,24.70686912536621,29.6898193359375,4.5279998779296875,,346.8468322753906,42.13999938964844,1481.1400146484375,2660.9599609375
|
| 291 |
+
2007-11-07,,,,,,,,,,
|
| 292 |
+
2007-12-01,65.52474212646484,6.048642158508301,26.26405906677246,28.4762020111084,4.631999969482422,,346.0860900878906,42.72999954223633,1468.3599853515625,2652.280029296875
|
| 293 |
+
2008-01-01,64.92465209960938,4.133399963378906,24.050800323486328,27.21040916442871,3.884999990463257,,282.43243408203125,34.93000030517578,1378.550048828125,2389.860107421875
|
| 294 |
+
2008-02-01,69.0161361694336,3.8176541328430176,20.066930770874023,25.923078536987305,3.2235000133514404,,235.82582092285156,33.650001525878906,1330.6300048828125,2271.47998046875
|
| 295 |
+
2008-02-06,,,,,,,,,,
|
| 296 |
+
2008-03-01,70.05885314941406,4.381966590881348,21.01883316040039,26.399211883544922,3.565000057220459,,220.45545959472656,35.59000015258789,1322.699951171875,2279.10009765625
|
| 297 |
+
2008-04-01,73.44194030761719,5.311798572540283,21.122520446777344,24.706567764282227,3.93149995803833,,287.43243408203125,37.290000915527344,1385.5899658203125,2412.800048828125
|
| 298 |
+
2008-05-01,78.75386810302734,5.763737201690674,20.974388122558594,24.016834259033203,4.080999851226807,,293.1932067871094,44.060001373291016,1400.3800048828125,2522.659912109375
|
| 299 |
+
2008-05-07,,,,,,,,,,
|
| 300 |
+
2008-06-01,72.41636657714844,5.11300802230835,20.449499130249023,23.981456756591797,3.6665000915527344,,263.4734802246094,39.38999938964844,1280.0,2292.97998046875
|
| 301 |
+
2008-07-01,78.18988800048828,4.853753566741943,19.118900299072266,24.197914123535156,3.816999912261963,,237.1121063232422,41.349998474121094,1267.3800048828125,2325.550048828125
|
| 302 |
+
2008-08-01,74.37141418457031,5.176827907562256,20.285959243774414,24.712379455566406,4.040500164031982,,231.8768768310547,42.83000183105469,1282.8299560546875,2367.52001953125
|
| 303 |
+
2008-08-06,,,,,,,,,,
|
| 304 |
+
2008-09-01,71.73551177978516,3.470762014389038,19.91908073425293,20.454687118530273,3.638000011444092,,200.46046447753906,39.470001220703125,1166.3599853515625,2091.8798828125
|
| 305 |
+
2008-10-01,57.02163314819336,3.2854056358337402,16.66515350341797,14.2785062789917,2.861999988555908,,179.85986328125,26.639999389648438,968.75,1720.949951171875
|
| 306 |
+
2008-11-01,50.04803466796875,2.8298041820526123,15.090431213378906,12.444729804992676,2.134999990463257,,146.6266326904297,23.15999984741211,896.239990234375,1535.5699462890625
|
| 307 |
+
2008-11-06,,,,,,,,,,
|
| 308 |
+
2008-12-01,51.90673828125,2.6062774658203125,14.606595039367676,14.189484596252441,2.563999891281128,,153.97897338867188,21.290000915527344,903.25,1577.030029296875
|
| 309 |
+
2009-01-01,56.52627944946289,2.7522425651550293,12.848398208618164,11.888165473937988,2.940999984741211,,169.43443298339844,19.309999465942383,825.8800048828125,1476.4200439453125
|
| 310 |
+
2009-02-01,56.76066589355469,2.7272019386291504,12.13459587097168,9.274202346801758,3.239500045776367,,169.16416931152344,16.700000762939453,735.0900268554688,1377.8399658203125
|
| 311 |
+
2009-02-06,,,,,,,,,,
|
| 312 |
+
2009-03-01,60.08320999145508,3.209982395172119,13.897279739379883,8.146258354187012,3.671999931335449,,174.20420837402344,21.389999389648438,797.8699951171875,1528.5899658203125
|
| 313 |
+
2009-04-01,64.00231170654297,3.8423893451690674,15.3270902633667,11.028571128845215,4.026000022888184,,198.1831817626953,27.350000381469727,872.8099975585938,1717.300048828125
|
| 314 |
+
2009-05-01,65.90607452392578,4.147140979766846,15.803704261779785,12.274019241333008,3.8994998931884766,,208.82382202148438,28.18000030517578,919.1400146484375,1774.3299560546875
|
| 315 |
+
2009-05-06,,,,,,,,,,
|
| 316 |
+
2009-06-01,65.09091186523438,4.349293231964111,18.0966796875,11.69642448425293,4.183000087738037,,211.00601196289062,28.299999237060547,919.3200073242188,1835.0400390625
|
| 317 |
+
2009-07-01,73.51245880126953,4.989336013793945,17.906352996826172,14.879191398620605,4.288000106811523,,221.7467498779297,32.41999816894531,987.47998046875,1978.5
|
| 318 |
+
2009-08-01,73.58724975585938,5.1365203857421875,18.766645431518555,15.714898109436035,4.059500217437744,,231.06607055664062,31.420000076293945,1020.6199951171875,2009.06005859375
|
| 319 |
+
2009-08-06,,,,,,,,,,
|
| 320 |
+
2009-09-01,74.90744018554688,5.659914016723633,19.69136619567871,14.061647415161133,4.668000221252441,,248.1731719970703,33.040000915527344,1057.0799560546875,2122.419921875
|
| 321 |
+
2009-10-01,75.53370666503906,5.756102561950684,21.230228424072266,13.72740650177002,5.940499782562256,,268.3283386230469,32.939998626708984,1036.18994140625,2045.1099853515625
|
| 322 |
+
2009-11-01,79.12847900390625,6.1045241355896,22.51645278930664,14.055986404418945,6.795499801635742,,291.7917785644531,35.08000183105469,1095.6300048828125,2144.60009765625
|
| 323 |
+
2009-11-06,,,,,,,,,,
|
| 324 |
+
2009-12-01,82.34589385986328,6.434925556182861,23.438796997070312,15.443329811096191,6.72599983215332,,310.30029296875,36.779998779296875,1115.0999755859375,2269.14990234375
|
| 325 |
+
2010-01-01,76.99246215820312,5.86481237411499,21.670120239257812,15.999075889587402,6.270500183105469,,265.2352294921875,32.29999923706055,1073.8699951171875,2147.35009765625
|
| 326 |
+
2010-02-01,79.99315643310547,6.248349666595459,22.04693031311035,17.19167137145996,5.920000076293945,,263.6636657714844,34.650001525878906,1104.489990234375,2238.260009765625
|
| 327 |
+
2010-02-08,,,,,,,,,,
|
| 328 |
+
2010-03-01,81.0396728515625,7.176041126251221,22.629026412963867,17.88887596130371,6.78849983215332,,283.8438415527344,35.369998931884766,1169.4300537109375,2397.9599609375
|
| 329 |
+
2010-04-01,81.51359558105469,7.972740650177002,23.594758987426758,20.0878963470459,6.855000019073486,,263.11309814453125,33.599998474121094,1186.68994140625,2461.18994140625
|
| 330 |
+
2010-05-01,79.1503677368164,7.84417724609375,19.932706832885742,17.157638549804688,6.2729997634887695,,243.0580596923828,32.08000183105469,1089.4100341796875,2257.0400390625
|
| 331 |
+
2010-05-06,,,,,,,,,,
|
| 332 |
+
2010-06-01,78.42550659179688,7.680809020996094,17.857412338256836,14.817129135131836,5.4629998207092285,,222.69769287109375,26.43000030517578,1030.7099609375,2109.239990234375
|
| 333 |
+
2010-07-01,81.55033874511719,7.855478763580322,20.03040885925293,18.038850784301758,5.894499778747559,,242.66766357421875,28.719999313354492,1101.5999755859375,2254.699951171875
|
| 334 |
+
2010-08-01,78.20323944091797,7.4233856201171875,18.214401245117188,15.64971923828125,6.241499900817871,,225.2352294921875,27.700000762939453,1049.3299560546875,2114.030029296875
|
| 335 |
+
2010-08-06,,,,,,,,,,
|
| 336 |
+
2010-09-01,85.6181411743164,8.664690971374512,19.10737419128418,19.168588638305664,7.853000164031982,,263.1581726074219,26.149999618530273,1141.199951171875,2368.6201171875
|
| 337 |
+
2010-10-01,91.65619659423828,9.190831184387207,20.808244705200195,21.757949829101562,8.261500358581543,,307.15716552734375,28.149999618530273,1183.260009765625,2507.409912109375
|
| 338 |
+
2010-11-01,90.290283203125,9.501388549804688,19.70814323425293,21.311634063720703,8.770000457763672,,278.1331481933594,27.799999237060547,1180.550048828125,2498.22998046875
|
| 339 |
+
2010-11-08,,,,,,,,,,
|
| 340 |
+
2010-12-01,94.08943176269531,9.84980583190918,21.909496307373047,21.423206329345703,9.0,,297.28228759765625,30.780000686645508,1257.6400146484375,2652.8701171875
|
| 341 |
+
2011-01-01,103.8599853515625,10.361597061157227,21.76820182800293,19.823131561279297,8.482000350952148,,300.48046875,33.04999923706055,1286.1199951171875,2700.080078125
|
| 342 |
+
2011-02-01,103.78302001953125,10.785745620727539,20.865453720092773,20.065792083740234,8.66450023651123,,307.00701904296875,34.5,1327.219970703125,2782.27001953125
|
| 343 |
+
2011-02-08,,,,,,,,,,
|
| 344 |
+
2011-03-01,104.95984649658203,10.64222526550293,20.04909324645996,19.879127502441406,9.006500244140625,,293.6736755371094,33.15999984741211,1325.8299560546875,2781.070068359375
|
| 345 |
+
2011-04-01,109.79368591308594,10.691693305969238,20.467607498168945,18.910266876220703,9.790499687194824,,272.32232666015625,33.54999923706055,1363.6099853515625,2873.5400390625
|
| 346 |
+
2011-05-01,108.73165130615234,10.621461868286133,19.7490291595459,19.135168075561523,9.834500312805176,,264.7747802734375,34.630001068115234,1345.199951171875,2835.300048828125
|
| 347 |
+
2011-05-06,,,,,,,,,,
|
| 348 |
+
2011-06-01,110.91179656982422,10.25013542175293,20.665348052978516,19.510000228881836,10.224499702453613,,253.4434356689453,31.450000762939453,1320.6400146484375,2773.52001953125
|
| 349 |
+
2011-07-01,117.571044921875,11.923834800720215,21.778095245361328,17.562105178833008,11.12600040435791,,302.14715576171875,27.709999084472656,1292.280029296875,2756.3798828125
|
| 350 |
+
2011-08-01,111.14454650878906,11.75130844116211,21.142244338989258,15.623312950134277,10.761500358581543,,270.7507629394531,25.239999771118164,1218.8900146484375,2579.4599609375
|
| 351 |
+
2011-08-08,,,,,,,,,,
|
| 352 |
+
2011-09-01,113.55061340332031,11.644124984741211,19.90796661376953,13.119815826416016,10.81149959564209,,257.77777099609375,24.170000076293945,1131.4200439453125,2415.39990234375
|
| 353 |
+
2011-10-01,119.88819122314453,12.360504150390625,21.299680709838867,15.485393524169922,10.67549991607666,,296.6166076660156,29.40999984741211,1253.300048828125,2684.409912109375
|
| 354 |
+
2011-11-01,122.07645416259766,11.670994758605957,20.459848403930664,15.42860221862793,9.614500045776367,,299.9949951171875,27.420000076293945,1246.9599609375,2620.340087890625
|
| 355 |
+
2011-11-08,,,,,,,,,,
|
| 356 |
+
2011-12-01,119.88117218017578,12.367225646972656,20.92014503479004,15.068914413452148,8.654999732971191,,323.2732849121094,28.270000457763672,1257.5999755859375,2605.14990234375
|
| 357 |
+
2012-01-01,125.56623077392578,13.939234733581543,23.79706382751465,14.749091148376465,9.722000122070312,,290.3453369140625,30.950000762939453,1312.4100341796875,2813.840087890625
|
| 358 |
+
2012-02-01,128.25875854492188,16.564136505126953,25.57801628112793,15.662582397460938,8.98449993133545,,309.4344482421875,32.88999938964844,1365.6800537109375,2966.889892578125
|
| 359 |
+
2012-02-08,,,,,,,,,,
|
| 360 |
+
2012-03-01,136.5597381591797,18.308074951171875,26.1682071685791,15.377117156982422,10.125499725341797,,320.9409484863281,34.310001373291016,1408.469970703125,3091.570068359375
|
| 361 |
+
2012-04-01,135.53221130371094,17.83262062072754,25.97353172302246,14.882647514343262,11.595000267028809,,302.72772216796875,33.54999923706055,1397.9100341796875,3046.360107421875
|
| 362 |
+
2012-05-01,126.25150299072266,17.64176368713379,23.677928924560547,13.811394691467285,10.645500183105469,,290.7207336425781,31.049999237060547,1310.3299560546875,2827.340087890625
|
| 363 |
+
2012-05-08,,,,,,,,,,
|
| 364 |
+
2012-06-01,128.5418243408203,17.83323097229004,24.976381301879883,15.054808616638184,11.417499542236328,,290.3253173828125,32.369998931884766,1362.1600341796875,2935.050048828125
|
| 365 |
+
2012-07-01,128.80467224121094,18.650381088256836,24.06191635131836,13.332178115844727,11.664999961853027,,316.8017883300781,30.8799991607666,1379.3199462890625,2939.52001953125
|
| 366 |
+
2012-08-01,128.06199645996094,20.314008712768555,25.1641845703125,14.178669929504395,12.41349983215332,,342.88787841796875,31.270000457763672,1406.5799560546875,3066.9599609375
|
| 367 |
+
2012-08-08,,,,,,,,,,
|
| 368 |
+
2012-09-01,136.92532348632812,20.458269119262695,24.459667205810547,14.120949745178223,12.715999603271484,,377.62762451171875,32.439998626708984,1440.6700439453125,3116.22998046875
|
| 369 |
+
2012-10-01,128.39756774902344,18.256948471069336,23.456958770751953,12.4627103805542,11.644499778747559,,340.490478515625,34.029998779296875,1412.1600341796875,2977.22998046875
|
| 370 |
+
2012-11-01,125.45381927490234,17.94904899597168,21.878910064697266,13.178736686706543,12.602499961853027,,349.5345458984375,34.61000061035156,1416.1800537109375,3010.239990234375
|
| 371 |
+
2012-11-07,,,,,,,,,,
|
| 372 |
+
2012-12-01,126.98394775390625,16.39484405517578,22.13326644897461,13.19808578491211,12.543499946594238,,354.0440368652344,37.68000030517578,1426.18994140625,3019.510009765625
|
| 373 |
+
2013-01-01,134.6208953857422,14.03252124786377,22.746475219726562,15.598185539245605,13.274999618530273,,378.2232360839844,37.83000183105469,1498.1099853515625,3142.1298828125
|
| 374 |
+
2013-02-01,133.1359405517578,13.598445892333984,23.036500930786133,15.79291820526123,13.213500022888184,,401.0010070800781,39.310001373291016,1514.6800537109375,3160.18994140625
|
| 375 |
+
2013-02-06,,,,,,,,,,
|
| 376 |
+
2013-03-01,141.99786376953125,13.716739654541016,23.903995513916016,16.74711036682129,13.32450008392334,,397.49249267578125,43.52000045776367,1569.18994140625,3267.52001953125
|
| 377 |
+
2013-04-01,134.8347625732422,13.720457077026367,27.655447006225586,16.822824478149414,12.690500259399414,,412.69769287109375,45.08000183105469,1597.5699462890625,3328.7900390625
|
| 378 |
+
2013-05-01,138.48284912109375,13.935823440551758,29.15936851501465,17.234567642211914,13.460000038146973,,436.0460510253906,42.90999984741211,1630.739990234375,3455.909912109375
|
| 379 |
+
2013-05-08,,,,,,,,,,
|
| 380 |
+
2013-06-01,127.82191467285156,12.368638038635254,29.060949325561523,17.783567428588867,13.884499549865723,,440.6256408691406,45.560001373291016,1606.280029296875,3403.25
|
| 381 |
+
2013-07-01,130.45040893554688,14.115401268005371,26.789243698120117,19.142587661743164,15.060999870300293,,444.3193054199219,47.279998779296875,1685.72998046875,3626.3701171875
|
| 382 |
+
2013-08-01,121.90938568115234,15.19745922088623,28.101774215698242,19.695158004760742,14.048999786376953,,423.8738708496094,45.75,1632.969970703125,3589.8701171875
|
| 383 |
+
2013-08-07,,,,,,,,,,
|
| 384 |
+
2013-09-01,124.47478485107422,14.96906566619873,28.19812774658203,20.306934356689453,15.631999969482422,,438.3934020996094,51.939998626708984,1681.550048828125,3771.47998046875
|
| 385 |
+
2013-10-01,120.46192169189453,16.41180992126465,30.002870559692383,19.72601890563965,18.201499938964844,,515.8057861328125,54.220001220703125,1756.5400390625,3919.7099609375
|
| 386 |
+
2013-11-01,120.77778625488281,17.45956802368164,32.30753707885742,22.58371353149414,19.680999755859375,,530.3253173828125,56.779998779296875,1805.81005859375,4059.889892578125
|
| 387 |
+
2013-11-06,,,,,,,,,,
|
| 388 |
+
2013-12-01,126.7584228515625,17.71782684326172,31.937856674194336,24.151473999023438,19.93950080871582,,560.9158935546875,59.880001068115234,1848.3599853515625,4176.58984375
|
| 389 |
+
2014-01-01,119.39906311035156,15.80967903137207,32.304969787597656,21.634523391723633,17.934499740600586,,591.0760498046875,59.189998626708984,1782.5899658203125,4103.8798828125
|
| 390 |
+
2014-02-01,125.13655090332031,16.61942481994629,32.70622634887695,21.913677215576172,18.104999542236328,,608.4334106445312,68.62999725341797,1859.449951171875,4308.1201171875
|
| 391 |
+
2014-02-06,,,,,,,,,,
|
| 392 |
+
2014-03-01,130.79644775390625,17.052499771118164,35.256614685058594,22.53180694580078,16.818500518798828,,557.8128051757812,65.73999786376953,1872.3399658203125,4198.990234375
|
| 393 |
+
2014-04-01,133.50091552734375,18.747455596923828,34.7491340637207,24.246538162231445,15.206500053405762,,534.8800048828125,61.689998626708984,1883.949951171875,4114.56005859375
|
| 394 |
+
2014-05-01,125.27215576171875,20.11072540283203,35.21359634399414,24.767969131469727,15.6274995803833,,571.6500244140625,64.54000091552734,1923.5699462890625,4242.6201171875
|
| 395 |
+
2014-05-07,,,,,,,,,,
|
| 396 |
+
2014-06-01,123.88963317871094,20.782461166381836,36.12032699584961,24.94846534729004,16.23900032043457,,584.6699829101562,72.36000061035156,1960.22998046875,4408.18017578125
|
| 397 |
+
2014-07-01,130.99761962890625,21.37957000732422,37.38497543334961,26.72607421875,15.649499893188477,,579.5499877929688,69.25,1930.6700439453125,4369.77001953125
|
| 398 |
+
2014-08-01,131.4281463623047,22.922651290893555,39.35124206542969,27.834640502929688,16.95199966430664,,582.3599853515625,71.9000015258789,2003.3699951171875,4580.27001953125
|
| 399 |
+
2014-08-06,,,,,,,,,,
|
| 400 |
+
2014-09-01,130.50729370117188,22.643360137939453,40.40761947631836,26.66560935974121,16.121999740600586,,588.4099731445312,69.19000244140625,1972.2900390625,4493.39013671875
|
| 401 |
+
2014-10-01,113.0242691040039,24.27278709411621,40.92185974121094,26.89417266845703,15.27299976348877,,567.8699951171875,70.12000274658203,2018.050048828125,4630.740234375
|
| 402 |
+
2014-11-01,111.49117279052734,26.729284286499023,41.67144012451172,28.27128028869629,16.93199920654297,,549.0800170898438,73.68000030517578,2067.56005859375,4791.6298828125
|
| 403 |
+
2014-11-06,,,,,,,,,,
|
| 404 |
+
2014-12-01,111.05672454833984,24.915250778198242,40.74142074584961,28.068769454956055,15.517499923706055,,530.6599731445312,72.69999694824219,2058.89990234375,4736.0498046875
|
| 405 |
+
2015-01-01,106.12132263183594,26.445661544799805,35.434940338134766,26.79075813293457,17.726499557495117,,537.5499877929688,70.12999725341797,1994.989990234375,4635.240234375
|
| 406 |
+
2015-02-01,112.09505462646484,28.996322631835938,38.460933685302734,27.767194747924805,19.007999420166016,,562.6300048828125,79.0999984741211,2104.5,4963.52978515625
|
| 407 |
+
2015-02-06,,,,,,,,,,
|
| 408 |
+
2015-03-01,111.87759399414062,28.197509765625,35.91679000854492,26.139816284179688,18.604999542236328,,554.7000122070312,73.94000244140625,2067.889892578125,4900.8798828125
|
| 409 |
+
2015-04-01,119.3988265991211,28.360668182373047,42.96587371826172,23.521541595458984,21.089000701904297,,548.77001953125,76.05999755859375,2085.510009765625,4941.419921875
|
| 410 |
+
2015-05-01,118.25563049316406,29.523195266723633,41.39352035522461,23.3579158782959,21.46150016784668,,545.3200073242188,79.08999633789062,2107.389892578125,5070.02978515625
|
| 411 |
+
2015-05-06,,,,,,,,,,
|
| 412 |
+
2015-06-01,114.24130249023438,28.542850494384766,39.253108978271484,21.762542724609375,21.704500198364258,,540.0399780273438,81.01000213623047,2063.110107421875,4986.8701171875
|
| 413 |
+
2015-07-01,113.77072143554688,27.60302734375,41.520286560058594,22.683992385864258,26.8075008392334,,657.5,81.98999786376953,2103.840087890625,5128.27978515625
|
| 414 |
+
2015-08-01,103.86784362792969,25.65966796875,38.692989349365234,20.93431854248047,25.644500732421875,,647.8200073242188,78.56999969482422,1972.1800537109375,4776.509765625
|
| 415 |
+
2015-08-06,,,,,,,,,,
|
| 416 |
+
2015-09-01,102.66226959228516,25.21347999572754,39.61040496826172,20.028608322143555,25.594499588012695,,638.3699951171875,82.22000122070312,1920.030029296875,4620.16015625
|
| 417 |
+
2015-10-01,99.1993637084961,27.31651496887207,47.11008071899414,19.46390151977539,31.295000076293945,,737.3900146484375,88.66000366210938,2079.360107421875,5053.75
|
| 418 |
+
2015-11-01,98.7319564819336,27.042200088500977,48.64043045043945,21.868392944335938,33.2400016784668,,762.8499755859375,91.45999908447266,2080.409912109375,5108.669921875
|
| 419 |
+
2015-11-06,,,,,,,,,,
|
| 420 |
+
2015-12-01,98.37144470214844,24.16438102722168,49.98638916015625,22.03421974182129,33.794498443603516,,778.010009765625,93.94000244140625,2043.93994140625,5007.41015625
|
| 421 |
+
2016-01-01,89.20050811767578,22.3461971282959,49.63501739501953,20.343839645385742,29.350000381469727,,761.3499755859375,89.12999725341797,1940.239990234375,4613.9501953125
|
| 422 |
+
2016-02-01,93.6608657836914,22.196985244750977,45.841888427734375,20.051719665527344,27.625999450683594,,717.219970703125,85.1500015258789,1932.22998046875,4557.9501953125
|
| 423 |
+
2016-02-08,,,,,,,,,,
|
| 424 |
+
2016-03-01,109.36297607421875,25.15644073486328,50.11842727661133,23.285871505737305,29.68199920654297,,762.9000244140625,93.80000305175781,2059.739990234375,4869.85009765625
|
| 425 |
+
2016-04-01,105.3841552734375,21.636524200439453,45.25450134277344,20.178363800048828,32.97949981689453,,707.8800048828125,94.22000122070312,2065.300048828125,4775.35986328125
|
| 426 |
+
2016-05-01,111.01663208007812,23.049110412597656,48.094825744628906,20.956079483032227,36.13949966430664,,748.8499755859375,99.47000122070312,2096.949951171875,4948.0498046875
|
| 427 |
+
2016-05-06,,,,,,,,,,
|
| 428 |
+
2016-06-01,110.65898895263672,22.20018196105957,46.75897216796875,19.947153091430664,35.78099822998047,,703.530029296875,95.79000091552734,2098.860107421875,4842.669921875
|
| 429 |
+
2016-07-01,117.10401916503906,24.199600219726562,51.79398727416992,21.839828491210938,37.94049835205078,,791.3400268554688,97.86000061035156,2173.60009765625,5162.1298828125
|
| 430 |
+
2016-08-01,115.83541107177734,24.638490676879883,52.506752014160156,20.885658264160156,38.45800018310547,,789.8499755859375,102.30999755859375,2170.949951171875,5213.22021484375
|
| 431 |
+
2016-08-08,,,,,,,,,,
|
| 432 |
+
2016-09-01,116.81381225585938,26.394628524780273,52.96271896362305,21.479366302490234,41.865501403808594,13.321450233459473,804.0599975585938,108.54000091552734,2168.27001953125,5312.0
|
| 433 |
+
2016-10-01,113.019287109375,26.509033203125,55.095947265625,20.878395080566406,39.49100112915039,13.680961608886719,809.9000244140625,107.51000213623047,2126.14990234375,5189.14013671875
|
| 434 |
+
2016-11-01,119.29200744628906,25.803936004638672,55.40858840942383,19.980859756469727,37.528499603271484,14.926712036132812,775.8800048828125,102.80999755859375,2198.81005859375,5323.68017578125
|
| 435 |
+
2016-11-08,,,,,,,,,,
|
| 436 |
+
2016-12-01,123.1717300415039,27.180198669433594,57.52321243286133,18.655929565429688,37.493499755859375,15.31966781616211,792.4500122070312,102.94999694824219,2238.830078125,5383.1201171875
|
| 437 |
+
2017-01-01,129.5013427734375,28.47795867919922,59.84672927856445,22.670724868774414,41.17399978637695,17.554771423339844,820.1900024414062,113.37999725341797,2278.8701171875,5614.7900390625
|
| 438 |
+
2017-02-01,133.43417358398438,32.148292541503906,59.22650909423828,24.339130401611328,42.25199890136719,17.69411849975586,844.9299926757812,118.33999633789062,2363.639892578125,5825.43994140625
|
| 439 |
+
2017-02-08,,,,,,,,,,
|
| 440 |
+
2017-03-01,130.24111938476562,33.85976028442383,61.33644485473633,24.011991500854492,44.32699966430664,17.858545303344727,847.7999877929688,130.1300048828125,2362.719970703125,5911.740234375
|
| 441 |
+
2017-04-01,119.88253784179688,33.85739517211914,63.75787353515625,23.72492027282715,46.2495002746582,18.70298194885254,924.52001953125,133.74000549316406,2384.199951171875,6047.60986328125
|
| 442 |
+
2017-05-01,114.1535415649414,36.00456237792969,65.0430908203125,23.328956604003906,49.73099899291992,19.338397979736328,987.0900268554688,141.86000061035156,2411.800048828125,6198.52001953125
|
| 443 |
+
2017-05-08,,,,,,,,,,
|
| 444 |
+
2017-06-01,116.17494201660156,34.084716796875,64.56354522705078,23.700172424316406,48.400001525878906,17.030832290649414,929.6799926757812,141.44000244140625,2423.409912109375,6140.419921875
|
| 445 |
+
2017-07-01,109.25714874267578,35.19940948486328,68.0947265625,25.520694732666016,49.388999938964844,17.911497116088867,945.5,146.49000549316406,2470.300048828125,6348.1201171875
|
| 446 |
+
2017-08-01,108.01860809326172,38.81330490112305,70.03360748291016,26.852062225341797,49.029998779296875,20.882347106933594,955.239990234375,155.16000366210938,2471.64990234375,6428.66015625
|
| 447 |
+
2017-08-08,,,,,,,,,,
|
| 448 |
+
2017-09-01,110.72441864013672,36.6182861328125,70.14307403564453,27.700807571411133,48.067501068115234,21.517763137817383,973.719970703125,149.17999267578125,2519.360107421875,6495.9599609375
|
| 449 |
+
2017-10-01,117.57792663574219,40.163211822509766,78.32596588134766,25.408233642578125,55.263999938964844,23.067289352416992,1033.0400390625,175.16000366210938,2575.260009765625,6727.669921875
|
| 450 |
+
2017-11-01,117.50923919677734,40.83085632324219,79.2582015991211,24.86334991455078,58.837501525878906,21.80481719970703,1036.1700439453125,181.47000122070312,2647.580078125,6873.97021484375
|
| 451 |
+
2017-11-09,,,,,,,,,,
|
| 452 |
+
2017-12-01,118.25981140136719,40.3528938293457,80.95279693603516,24.43583106994629,58.4734992980957,22.65203857421875,1053.4000244140625,175.24000549316406,2673.610107421875,6903.39013671875
|
| 453 |
+
2018-01-01,126.18390655517578,39.9236946105957,89.91493225097656,28.855159759521484,72.54450225830078,19.982173919677734,1182.219970703125,199.75999450683594,2823.81005859375,7411.47998046875
|
| 454 |
+
2018-02-01,120.11751556396484,42.472713470458984,88.74141693115234,25.634004592895508,75.62249755859375,20.7039852142334,1103.9200439453125,209.1300048828125,2713.830078125,7273.009765625
|
| 455 |
+
2018-02-08,,,,,,,,,,
|
| 456 |
+
2018-03-01,119.43197631835938,40.170265197753906,86.7812271118164,24.33201026916504,72.36699676513672,20.402997970581055,1037.1400146484375,216.0800018310547,2640.8701171875,7063.4501953125
|
| 457 |
+
2018-04-01,112.83880615234375,39.566917419433594,88.92057037353516,26.82056999206543,78.30650329589844,20.00168228149414,1018.5800170898438,221.60000610351562,2648.050048828125,7066.27001953125
|
| 458 |
+
2018-05-01,109.99760437011719,44.7408332824707,93.97891998291016,23.179109573364258,81.48100280761719,22.479249954223633,1100.0,249.27999877929688,2705.27001953125,7442.1201171875
|
| 459 |
+
2018-05-09,,,,,,,,,,
|
| 460 |
+
2018-06-01,109.95153045654297,44.4903450012207,94.16664123535156,20.467208862304688,84.98999786376953,23.571720123291016,1129.18994140625,243.80999755859375,2718.3701171875,7510.2998046875
|
| 461 |
+
2018-07-01,114.06781768798828,45.73533630371094,101.30004119873047,22.375450134277344,88.87200164794922,25.784528732299805,1227.219970703125,244.67999267578125,2816.2900390625,7671.7900390625
|
| 462 |
+
2018-08-01,115.2877197265625,54.709842681884766,107.2684097290039,24.00385284423828,100.635498046875,26.8017520904541,1231.800048828125,263.510009765625,2901.52001953125,8109.5400390625
|
| 463 |
+
2018-08-09,,,,,,,,,,
|
| 464 |
+
2018-09-01,120.2962646484375,54.445865631103516,109.63678741455078,23.24565315246582,100.1500015258789,27.066509246826172,1207.0799560546875,269.95001220703125,2913.97998046875,8046.35009765625
|
| 465 |
+
2018-10-01,91.83122253417969,52.78649139404297,102.38966369628906,24.236047744750977,79.90049743652344,25.190916061401367,1090.5799560546875,245.75999450683594,2711.739990234375,7305.89990234375
|
| 466 |
+
2018-11-01,98.86396026611328,43.07142639160156,106.3008041381836,23.4099178314209,84.50849914550781,29.396371841430664,1109.6500244140625,250.88999938964844,2760.169921875,7330.5400390625
|
| 467 |
+
2018-11-08,,,,,,,,,,
|
| 468 |
+
2018-12-01,91.58279418945312,38.17780685424805,97.78714752197266,17.18350601196289,75.09850311279297,24.59708595275879,1044.9599609375,226.24000549316406,2506.85009765625,6635.27978515625
|
| 469 |
+
2019-01-01,108.30086517333984,40.28346252441406,100.5406265258789,24.84735679626465,85.9365005493164,24.456159591674805,1125.8900146484375,247.82000732421875,2704.10009765625,7281.740234375
|
| 470 |
+
2019-02-01,111.28997039794922,41.90748596191406,107.85758972167969,27.216707229614258,81.99150085449219,28.095136642456055,1126.550048828125,262.5,2784.489990234375,7532.52978515625
|
| 471 |
+
2019-02-07,,,,,,,,,,
|
| 472 |
+
2019-03-01,115.00740814208984,46.17075729370117,114.03240966796875,28.167972564697266,89.0374984741211,29.539655685424805,1176.8900146484375,266.489990234375,2834.39990234375,7729.31982421875
|
| 473 |
+
2019-04-01,114.33090209960938,48.77644348144531,126.27296447753906,29.61660385131836,96.32599639892578,33.9285774230957,1198.9599609375,289.25,2945.830078125,8095.39013671875
|
| 474 |
+
2019-05-01,103.50668334960938,42.55390930175781,119.58222198486328,27.175188064575195,88.75350189208984,29.972509384155273,1106.5,270.8999938964844,2752.06005859375,7453.14990234375
|
| 475 |
+
2019-05-09,,,,,,,,,,
|
| 476 |
+
2019-06-01,113.73433685302734,48.293270111083984,130.00108337402344,31.43656349182129,94.68150329589844,25.56848907470703,1082.800048828125,294.6499938964844,2941.760009765625,8006.240234375
|
| 477 |
+
2019-07-01,122.26231384277344,51.98261260986328,132.24281311035156,28.701255798339844,93.33899688720703,29.061506271362305,1218.199951171875,298.8599853515625,2980.3798828125,8175.419921875
|
| 478 |
+
2019-08-01,111.7796401977539,50.93339920043945,133.78579711914062,25.92054557800293,88.81449890136719,25.9359073638916,1190.530029296875,284.510009765625,2926.4599609375,7962.8798828125
|
| 479 |
+
2019-08-08,,,,,,,,,,
|
| 480 |
+
2019-09-01,121.34967803955078,54.85721969604492,135.37051391601562,26.743131637573242,86.79550170898438,26.10200309753418,1221.1400146484375,276.25,2976.739990234375,7999.33984375
|
| 481 |
+
2019-10-01,111.59463500976562,60.929054260253906,139.59625244140625,30.58913803100586,88.83300018310547,26.620418548583984,1258.800048828125,277.92999267578125,3037.56005859375,8292.3603515625
|
| 482 |
+
2019-11-01,112.19547271728516,65.45783996582031,147.39544677734375,35.09682083129883,90.04000091552734,24.40582847595215,1304.0899658203125,309.5299987792969,3140.97998046875,8665.4697265625
|
| 483 |
+
2019-11-07,,,,,,,,,,
|
| 484 |
+
2019-12-01,113.17443084716797,72.13994598388672,154.07154846191406,33.23965072631836,92.39199829101562,25.86544418334961,1339.3900146484375,329.80999755859375,3230.780029296875,8972.599609375
|
| 485 |
+
2020-01-01,121.35601806640625,76.03622436523438,166.31326293945312,32.28398132324219,100.43599700927734,24.546754837036133,1432.780029296875,351.1400146484375,3225.52001953125,9150.9404296875
|
| 486 |
+
2020-02-01,109.88997650146484,67.1553726196289,158.28240966796875,29.225305557250977,94.1875,20.364192962646484,1339.25,345.1199951171875,2954.219970703125,8567.3701171875
|
| 487 |
+
2020-02-07,,,,,,,,,,
|
| 488 |
+
2020-03-01,94.6399154663086,62.61878204345703,154.502197265625,17.190288543701172,97.48600006103516,19.90617561340332,1161.949951171875,318.239990234375,2584.590087890625,7700.10009765625
|
| 489 |
+
2020-04-01,107.12150573730469,72.34808349609375,175.5648956298828,16.6003360748291,123.69999694824219,21.486589431762695,1346.699951171875,353.6400146484375,2912.429931640625,8889.5498046875
|
| 490 |
+
2020-05-01,106.55841827392578,78.29256439208984,179.52272033691406,14.412978172302246,122.11849975585938,24.98464012145996,1433.52001953125,386.6000061035156,3044.31005859375,9489.8701171875
|
| 491 |
+
2020-05-07,,,,,,,,,,
|
| 492 |
+
2020-06-01,104.41674041748047,90.0749740600586,199.92588806152344,13.877481460571289,137.9409942626953,27.652219772338867,1418.050048828125,435.30999755859375,3100.2900390625,10058.76953125
|
| 493 |
+
2020-07-01,106.29290008544922,104.9491958618164,201.3994598388672,15.366937637329102,158.23399353027344,30.11343765258789,1487.949951171875,444.32000732421875,3271.1201171875,10745.26953125
|
| 494 |
+
2020-08-01,106.61280059814453,127.44819641113281,221.55807495117188,17.406635284423828,172.54800415039062,33.25917053222656,1629.530029296875,513.3900146484375,3500.31005859375,11775.4599609375
|
| 495 |
+
2020-08-07,,,,,,,,,,
|
| 496 |
+
2020-09-01,106.57222747802734,114.5876235961914,207.12527465820312,17.323570251464844,157.43649291992188,34.06950759887695,1465.5999755859375,490.42999267578125,3363.0,11167.509765625
|
| 497 |
+
2020-10-01,97.80435180664062,107.71099090576172,199.38504028320312,16.259458541870117,151.8074951171875,30.329862594604492,1616.1099853515625,447.1000061035156,3269.9599609375,10911.58984375
|
| 498 |
+
2020-11-01,108.19266510009766,117.79344177246094,210.8082733154297,20.478687286376953,158.40199279785156,34.74394989013672,1754.4000244140625,478.4700012207031,3621.6298828125,12198.740234375
|
| 499 |
+
2020-11-09,,,,,,,,,,
|
| 500 |
+
2020-12-01,111.85865020751953,131.51597595214844,219.60447692871094,21.694869995117188,162.84649658203125,36.88808059692383,1752.6400146484375,500.1199951171875,3756.070068359375,12888.2802734375
|
| 501 |
+
2021-01-01,105.84272766113281,130.7924346923828,229.0237274169922,19.891191482543945,160.30999755859375,36.6867561340332,1827.3599853515625,458.7699890136719,3714.239990234375,13070.6904296875
|
| 502 |
+
2021-02-01,105.68277740478516,120.18710327148438,229.4384002685547,24.100215911865234,154.64649963378906,40.80388259887695,2021.9100341796875,459.6700134277344,3811.14990234375,13192.349609375
|
| 503 |
+
2021-02-09,,,,,,,,,,
|
| 504 |
+
2021-03-01,119.9990005493164,121.25013732910156,233.32164001464844,22.955739974975586,154.70399475097656,44.367366790771484,2062.52001953125,475.3699951171875,3972.889892578125,13246.8701171875
|
| 505 |
+
2021-04-01,127.76121520996094,130.49156188964844,249.56121826171875,23.070621490478516,173.37100219726562,49.49113082885742,2353.5,508.3399963378906,4181.169921875,13962.6796875
|
| 506 |
+
2021-05-01,129.4361114501953,123.6920166015625,247.08718872070312,22.41118812561035,161.15350341796875,49.64715576171875,2356.85009765625,504.5799865722656,4204.10986328125,13748.740234375
|
| 507 |
+
2021-05-07,,,,,,,,,,
|
| 508 |
+
2021-06-01,133.47738647460938,136.1819610595703,268.70587158203125,22.44941520690918,172.00799560546875,50.16557312011719,2441.7900390625,585.6400146484375,4297.5,14503.9501953125
|
| 509 |
+
2021-07-01,128.35101318359375,145.03138732910156,282.6023864746094,23.305561065673828,166.37950134277344,48.63045883178711,2694.530029296875,621.6300048828125,4395.259765625,14672.6796875
|
| 510 |
+
2021-08-01,127.78646087646484,150.96749877929688,299.4349365234375,21.74091148376465,173.5395050048828,49.053245544433594,2893.949951171875,663.7000122070312,4522.68017578125,15259.240234375
|
| 511 |
+
2021-08-09,,,,,,,,,,
|
| 512 |
+
2021-09-01,127.95899963378906,140.906982421875,280.1719665527344,19.48086166381836,164.2519989013672,52.36507034301758,2673.52001953125,575.719970703125,4307.5400390625,14448.580078125
|
| 513 |
+
2021-10-01,115.22111511230469,149.1721954345703,329.56378173828125,17.397972106933594,168.6215057373047,55.35980224609375,2960.919921875,650.3599853515625,4605.3798828125,15498.3896484375
|
| 514 |
+
2021-11-01,112.8140869140625,164.60723876953125,328.5401611328125,18.003969192504883,175.35350036621094,56.077186584472656,2837.949951171875,669.8499755859375,4567.0,15537.6904296875
|
| 515 |
+
2021-11-04,,,,,,,,,,
|
| 516 |
+
2021-11-09,,,,,,,,,,
|
| 517 |
+
2021-12-01,130.48629760742188,177.08387756347656,334.8461608886719,22.1286563873291,166.7169952392578,55.77927017211914,2897.0400390625,567.0599975585938,4766.18017578125,15644.9697265625
|
| 518 |
+
2022-01-01,130.3984375,174.30149841308594,309.6171875,20.856517791748047,149.57350158691406,56.41482162475586,2706.070068359375,534.2999877929688,4515.5498046875,14239.8798828125
|
| 519 |
+
2022-02-01,119.60104370117188,164.66795349121094,297.4805908203125,19.47332763671875,153.56300354003906,50.60551452636719,2701.139892578125,467.67999267578125,4373.93994140625,13751.400390625
|
| 520 |
+
2022-02-10,,,,,,,,,,
|
| 521 |
+
2022-03-01,128.46168518066406,174.3538360595703,307.59356689453125,19.927804946899414,162.99749755859375,49.84086990356445,2781.35009765625,455.6199951171875,4530.41015625,14220.51953125
|
| 522 |
+
2022-04-01,130.6254425048828,157.418701171875,276.8751220703125,17.399999618530273,124.28150177001953,46.68299102783203,2282.18994140625,395.95001220703125,4131.93017578125,12334.6396484375
|
| 523 |
+
2022-05-01,137.1759796142578,148.6216278076172,271.2382507324219,18.81999969482422,120.20950317382812,49.939998626708984,2275.239990234375,416.4800109863281,4132.14990234375,12081.3896484375
|
| 524 |
+
2022-05-09,,,,,,,,,,
|
| 525 |
+
2022-06-01,141.86000061035156,137.44000244140625,256.4800109863281,15.819999694824219,107.4000015258789,48.939998626708984,2240.14990234375,365.6300048828125,3821.550048828125,11181.5400390625
|
| 526 |
+
2022-06-28,141.86000061035156,137.44000244140625,256.4800109863281,15.819999694824219,107.4000015258789,48.939998626708984,2240.14990234375,365.6300048828125,3821.550048828125,11181.5400390625
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/data_x_x2_x3.csv
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
0 0 0
|
| 2 |
+
1 1 1
|
| 3 |
+
2 4 8
|
| 4 |
+
3 9 27
|
| 5 |
+
4 16 64
|
| 6 |
+
5 25 125
|
| 7 |
+
6 36 216
|
| 8 |
+
7 49 343
|
| 9 |
+
8 64 512
|
| 10 |
+
9 81 729
|
| 11 |
+
10 100 1000
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/eeg.dat
ADDED
|
Binary file (25.6 kB). View file
|
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/embedding_in_wx3.xrc
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" ?>
|
| 2 |
+
<resource>
|
| 3 |
+
<object class="wxFrame" name="MainFrame">
|
| 4 |
+
<title>embedding_in_wx3</title>
|
| 5 |
+
<object class="wxPanel" name="MainPanel">
|
| 6 |
+
<object class="wxBoxSizer">
|
| 7 |
+
<orient>wxVERTICAL</orient>
|
| 8 |
+
<object class="sizeritem">
|
| 9 |
+
<object class="wxStaticText">
|
| 10 |
+
<label>Check out this whizz-bang stuff!</label>
|
| 11 |
+
<style>wxALIGN_CENTRE</style>
|
| 12 |
+
</object>
|
| 13 |
+
<option>0</option>
|
| 14 |
+
<flag>wxALL|wxEXPAND</flag>
|
| 15 |
+
<border>5</border>
|
| 16 |
+
</object>
|
| 17 |
+
<object class="sizeritem">
|
| 18 |
+
<object class="wxBoxSizer">
|
| 19 |
+
<orient>wxHORIZONTAL</orient>
|
| 20 |
+
<object class="sizeritem">
|
| 21 |
+
<object class="wxButton" name="whiz_button">
|
| 22 |
+
<label>whiz</label>
|
| 23 |
+
</object>
|
| 24 |
+
<option>0</option>
|
| 25 |
+
<flag>wxALL|wxEXPAND</flag>
|
| 26 |
+
<border>2</border>
|
| 27 |
+
</object>
|
| 28 |
+
<object class="sizeritem">
|
| 29 |
+
<object class="wxButton" name="bang_button">
|
| 30 |
+
<label>bang</label>
|
| 31 |
+
</object>
|
| 32 |
+
<option>0</option>
|
| 33 |
+
<flag>wxALL|wxEXPAND</flag>
|
| 34 |
+
<border>2</border>
|
| 35 |
+
</object>
|
| 36 |
+
<object class="sizeritem">
|
| 37 |
+
<object class="wxStaticText" name="">
|
| 38 |
+
<label>bang count:</label>
|
| 39 |
+
<style>wxALIGN_RIGHT</style>
|
| 40 |
+
</object>
|
| 41 |
+
<option>1</option>
|
| 42 |
+
<flag>wxALL|wxEXPAND</flag>
|
| 43 |
+
<border>2</border>
|
| 44 |
+
</object>
|
| 45 |
+
<object class="sizeritem">
|
| 46 |
+
<object class="wxTextCtrl" name="bang_count">
|
| 47 |
+
<value>0</value>
|
| 48 |
+
</object>
|
| 49 |
+
<option>0</option>
|
| 50 |
+
<flag>wxEXPAND</flag>
|
| 51 |
+
</object>
|
| 52 |
+
</object>
|
| 53 |
+
<option>0</option>
|
| 54 |
+
<flag>wxLEFT|wxRIGHT|wxEXPAND</flag>
|
| 55 |
+
<border>5</border>
|
| 56 |
+
</object>
|
| 57 |
+
<object class="sizeritem">
|
| 58 |
+
<object class="wxPanel" name="plot_container_panel"/>
|
| 59 |
+
<option>1</option>
|
| 60 |
+
<flag>wxEXPAND</flag>
|
| 61 |
+
</object>
|
| 62 |
+
</object>
|
| 63 |
+
</object>
|
| 64 |
+
</object>
|
| 65 |
+
</resource>
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/grace_hopper.jpg
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/logo2.png
ADDED
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/membrane.dat
ADDED
|
Binary file (48 kB). View file
|
|
|
lib/python3.12/site-packages/matplotlib/mpl-data/sample_data/msft.csv
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Date,Open,High,Low,Close,Volume,Adj. Close*
|
| 2 |
+
19-Sep-03,29.76,29.97,29.52,29.96,92433800,29.79
|
| 3 |
+
18-Sep-03,28.49,29.51,28.42,29.50,67268096,29.34
|
| 4 |
+
17-Sep-03,28.76,28.95,28.47,28.50,47221600,28.34
|
| 5 |
+
16-Sep-03,28.41,28.95,28.32,28.90,52060600,28.74
|
| 6 |
+
15-Sep-03,28.37,28.61,28.33,28.36,41432300,28.20
|
| 7 |
+
12-Sep-03,27.48,28.40,27.45,28.34,55777200,28.18
|
| 8 |
+
11-Sep-03,27.66,28.11,27.59,27.84,37813300,27.68
|
| 9 |
+
10-Sep-03,28.03,28.18,27.48,27.55,54763500,27.40
|
| 10 |
+
9-Sep-03,28.65,28.71,28.31,28.37,44315200,28.21
|
| 11 |
+
8-Sep-03,28.39,28.92,28.34,28.84,46105300,28.68
|
| 12 |
+
5-Sep-03,28.23,28.75,28.17,28.38,64024500,28.22
|
| 13 |
+
4-Sep-03,28.10,28.47,27.99,28.43,59840800,28.27
|
| 14 |
+
3-Sep-03,27.42,28.40,27.38,28.30,109437800,28.14
|
| 15 |
+
2-Sep-03,26.70,27.30,26.47,27.26,74168896,27.11
|
| 16 |
+
29-Aug-03,26.46,26.55,26.35,26.52,34503000,26.37
|
| 17 |
+
28-Aug-03,26.50,26.58,26.24,26.51,46211200,26.36
|
| 18 |
+
27-Aug-03,26.51,26.58,26.30,26.42,30633900,26.27
|
| 19 |
+
26-Aug-03,26.31,26.67,25.96,26.57,47546000,26.42
|
| 20 |
+
25-Aug-03,26.31,26.54,26.23,26.50,36132900,26.35
|
| 21 |
+
22-Aug-03,26.78,26.95,26.21,26.22,65846300,26.07
|
| 22 |
+
21-Aug-03,26.65,26.73,26.13,26.24,63802700,26.09
|
| 23 |
+
20-Aug-03,26.30,26.53,26.00,26.45,56739300,26.30
|
| 24 |
+
19-Aug-03,25.85,26.65,25.77,26.62,72952896,26.47
|
| 25 |
+
18-Aug-03,25.56,25.83,25.46,25.70,45817400,25.56
|
| 26 |
+
15-Aug-03,25.61,25.66,25.43,25.54,27607900,25.40
|
| 27 |
+
14-Aug-03,25.66,25.71,25.52,25.63,37338300,25.49
|
| 28 |
+
13-Aug-03,25.79,25.89,25.50,25.60,39636900,25.46
|
| 29 |
+
12-Aug-03,25.71,25.77,25.45,25.73,38208400,25.59
|
| 30 |
+
11-Aug-03,25.61,25.99,25.54,25.61,36433900,25.47
|
| 31 |
+
8-Aug-03,25.88,25.98,25.50,25.58,33241400,25.44
|
| 32 |
+
7-Aug-03,25.72,25.81,25.45,25.71,44258500,25.57
|
| 33 |
+
6-Aug-03,25.54,26.19,25.43,25.65,56294900,25.51
|
| 34 |
+
5-Aug-03,26.31,26.54,25.60,25.66,58825800,25.52
|
| 35 |
+
4-Aug-03,26.15,26.41,25.75,26.18,51825600,26.03
|
| 36 |
+
1-Aug-03,26.33,26.51,26.12,26.17,42649700,26.02
|
| 37 |
+
31-Jul-03,26.60,26.99,26.31,26.41,64504800,26.26
|
| 38 |
+
30-Jul-03,26.46,26.57,26.17,26.23,41240300,26.08
|
| 39 |
+
29-Jul-03,26.88,26.90,26.24,26.47,62391100,26.32
|
| 40 |
+
28-Jul-03,26.94,27.00,26.49,26.61,52658300,26.46
|
| 41 |
+
25-Jul-03,26.28,26.95,26.07,26.89,54173000,26.74
|
| 42 |
+
24-Jul-03,26.78,26.92,25.98,26.00,53556600,25.85
|
| 43 |
+
23-Jul-03,26.42,26.65,26.14,26.45,49828200,26.30
|
| 44 |
+
22-Jul-03,26.28,26.56,26.13,26.38,51791000,26.23
|
| 45 |
+
21-Jul-03,26.87,26.91,26.00,26.04,48480800,25.89
|
| 46 |
+
18-Jul-03,27.11,27.23,26.75,26.89,63388400,26.74
|
| 47 |
+
17-Jul-03,27.14,27.27,26.54,26.69,72805000,26.54
|
| 48 |
+
16-Jul-03,27.56,27.62,27.20,27.52,49838900,27.37
|
| 49 |
+
15-Jul-03,27.47,27.53,27.10,27.27,53567600,27.12
|
| 50 |
+
14-Jul-03,27.63,27.81,27.05,27.40,60464400,27.25
|
| 51 |
+
11-Jul-03,26.95,27.45,26.89,27.31,50377300,27.16
|
| 52 |
+
10-Jul-03,27.25,27.42,26.59,26.91,55350800,26.76
|
| 53 |
+
9-Jul-03,27.56,27.70,27.25,27.47,62300700,27.32
|
| 54 |
+
8-Jul-03,27.26,27.80,27.25,27.70,61896800,27.55
|
| 55 |
+
7-Jul-03,27.02,27.55,26.95,27.42,88960800,27.27
|
| 56 |
+
3-Jul-03,26.69,26.95,26.41,26.50,39440900,26.35
|
| 57 |
+
2-Jul-03,26.50,26.93,26.45,26.88,94069296,26.73
|
| 58 |
+
1-Jul-03,25.59,26.20,25.39,26.15,60926000,26.00
|
| 59 |
+
30-Jun-03,25.94,26.12,25.50,25.64,48073100,25.50
|
| 60 |
+
27-Jun-03,25.95,26.34,25.53,25.63,76040304,25.49
|
| 61 |
+
26-Jun-03,25.39,26.51,25.21,25.75,51758100,25.61
|
| 62 |
+
25-Jun-03,25.64,25.99,25.14,25.26,60483500,25.12
|
| 63 |
+
24-Jun-03,25.65,26.04,25.52,25.70,51820300,25.56
|
| 64 |
+
23-Jun-03,26.14,26.24,25.49,25.78,52584500,25.64
|
| 65 |
+
20-Jun-03,26.34,26.38,26.01,26.33,86048896,26.18
|
| 66 |
+
19-Jun-03,26.09,26.39,26.01,26.07,63626900,25.92
|
lib/python3.12/site-packages/zmq/__init__.pxd
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
from zmq.backend.cython cimport Context, Frame, Socket, libzmq
|
lib/python3.12/site-packages/zmq/__init__.py
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Python bindings for 0MQ"""
|
| 2 |
+
|
| 3 |
+
# Copyright (C) PyZMQ Developers
|
| 4 |
+
# Distributed under the terms of the Modified BSD License.
|
| 5 |
+
|
| 6 |
+
from __future__ import annotations
|
| 7 |
+
|
| 8 |
+
import os
|
| 9 |
+
import sys
|
| 10 |
+
from contextlib import contextmanager
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
@contextmanager
|
| 14 |
+
def _libs_on_path():
|
| 15 |
+
"""context manager for libs directory on $PATH
|
| 16 |
+
|
| 17 |
+
Works around mysterious issue where os.add_dll_directory
|
| 18 |
+
does not resolve imports (conda-forge Python >= 3.8)
|
| 19 |
+
"""
|
| 20 |
+
|
| 21 |
+
if not sys.platform.startswith("win"):
|
| 22 |
+
yield
|
| 23 |
+
return
|
| 24 |
+
|
| 25 |
+
libs_dir = os.path.abspath(
|
| 26 |
+
os.path.join(
|
| 27 |
+
os.path.dirname(__file__),
|
| 28 |
+
os.pardir,
|
| 29 |
+
"pyzmq.libs",
|
| 30 |
+
)
|
| 31 |
+
)
|
| 32 |
+
if not os.path.exists(libs_dir):
|
| 33 |
+
# no bundled libs
|
| 34 |
+
yield
|
| 35 |
+
return
|
| 36 |
+
|
| 37 |
+
path_before = os.environ.get("PATH")
|
| 38 |
+
try:
|
| 39 |
+
os.environ["PATH"] = os.pathsep.join([path_before or "", libs_dir])
|
| 40 |
+
yield
|
| 41 |
+
finally:
|
| 42 |
+
if path_before is None:
|
| 43 |
+
os.environ.pop("PATH")
|
| 44 |
+
else:
|
| 45 |
+
os.environ["PATH"] = path_before
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
# zmq top-level imports
|
| 49 |
+
|
| 50 |
+
# workaround for Windows
|
| 51 |
+
with _libs_on_path():
|
| 52 |
+
from zmq import backend
|
| 53 |
+
|
| 54 |
+
from . import constants # noqa
|
| 55 |
+
from .constants import * # noqa
|
| 56 |
+
from zmq.backend import * # noqa
|
| 57 |
+
from zmq import sugar
|
| 58 |
+
from zmq.sugar import * # noqa
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
def get_includes():
|
| 62 |
+
"""Return a list of directories to include for linking against pyzmq with cython."""
|
| 63 |
+
from os.path import abspath, dirname, exists, join, pardir
|
| 64 |
+
|
| 65 |
+
base = dirname(__file__)
|
| 66 |
+
parent = abspath(join(base, pardir))
|
| 67 |
+
includes = [parent] + [join(parent, base, subdir) for subdir in ('utils',)]
|
| 68 |
+
if exists(join(parent, base, 'include')):
|
| 69 |
+
includes.append(join(parent, base, 'include'))
|
| 70 |
+
return includes
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
def get_library_dirs():
|
| 74 |
+
"""Return a list of directories used to link against pyzmq's bundled libzmq."""
|
| 75 |
+
from os.path import abspath, dirname, join, pardir
|
| 76 |
+
|
| 77 |
+
base = dirname(__file__)
|
| 78 |
+
parent = abspath(join(base, pardir))
|
| 79 |
+
return [join(parent, base)]
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
COPY_THRESHOLD = 65536
|
| 83 |
+
DRAFT_API = backend.has("draft")
|
| 84 |
+
|
| 85 |
+
__all__ = (
|
| 86 |
+
[
|
| 87 |
+
'get_includes',
|
| 88 |
+
'COPY_THRESHOLD',
|
| 89 |
+
'DRAFT_API',
|
| 90 |
+
]
|
| 91 |
+
+ constants.__all__
|
| 92 |
+
+ sugar.__all__
|
| 93 |
+
+ backend.__all__
|
| 94 |
+
)
|
lib/python3.12/site-packages/zmq/__init__.pyi
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import List
|
| 2 |
+
|
| 3 |
+
from . import backend, sugar
|
| 4 |
+
|
| 5 |
+
COPY_THRESHOLD: int
|
| 6 |
+
DRAFT_API: bool
|
| 7 |
+
__version__: str
|
| 8 |
+
|
| 9 |
+
# mypy doesn't like overwriting symbols with * so be explicit
|
| 10 |
+
# about what comes from backend, not from sugar
|
| 11 |
+
# see tools/backend_imports.py to generate this list
|
| 12 |
+
# note: `x as x` is required for re-export
|
| 13 |
+
# see https://github.com/python/mypy/issues/2190
|
| 14 |
+
from .backend import IPC_PATH_MAX_LEN as IPC_PATH_MAX_LEN
|
| 15 |
+
from .backend import curve_keypair as curve_keypair
|
| 16 |
+
from .backend import curve_public as curve_public
|
| 17 |
+
from .backend import has as has
|
| 18 |
+
from .backend import proxy as proxy
|
| 19 |
+
from .backend import proxy_steerable as proxy_steerable
|
| 20 |
+
from .backend import strerror as strerror
|
| 21 |
+
from .backend import zmq_errno as zmq_errno
|
| 22 |
+
from .backend import zmq_poll as zmq_poll
|
| 23 |
+
from .constants import *
|
| 24 |
+
from .error import *
|
| 25 |
+
from .sugar import *
|
| 26 |
+
|
| 27 |
+
def get_includes() -> list[str]: ...
|
| 28 |
+
def get_library_dirs() -> list[str]: ...
|
lib/python3.12/site-packages/zmq/_future.py
ADDED
|
@@ -0,0 +1,737 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Future-returning APIs for coroutines."""
|
| 2 |
+
|
| 3 |
+
# Copyright (c) PyZMQ Developers.
|
| 4 |
+
# Distributed under the terms of the Modified BSD License.
|
| 5 |
+
from __future__ import annotations
|
| 6 |
+
|
| 7 |
+
import warnings
|
| 8 |
+
from asyncio import Future
|
| 9 |
+
from collections import deque
|
| 10 |
+
from functools import partial
|
| 11 |
+
from itertools import chain
|
| 12 |
+
from typing import (
|
| 13 |
+
Any,
|
| 14 |
+
Awaitable,
|
| 15 |
+
Callable,
|
| 16 |
+
NamedTuple,
|
| 17 |
+
TypeVar,
|
| 18 |
+
cast,
|
| 19 |
+
)
|
| 20 |
+
|
| 21 |
+
import zmq as _zmq
|
| 22 |
+
from zmq import EVENTS, POLLIN, POLLOUT
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
class _FutureEvent(NamedTuple):
|
| 26 |
+
future: Future
|
| 27 |
+
kind: str
|
| 28 |
+
args: tuple
|
| 29 |
+
kwargs: dict
|
| 30 |
+
msg: Any
|
| 31 |
+
timer: Any
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
# These are incomplete classes and need a Mixin for compatibility with an eventloop
|
| 35 |
+
# defining the following attributes:
|
| 36 |
+
#
|
| 37 |
+
# _Future
|
| 38 |
+
# _READ
|
| 39 |
+
# _WRITE
|
| 40 |
+
# _default_loop()
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
class _Async:
|
| 44 |
+
"""Mixin for common async logic"""
|
| 45 |
+
|
| 46 |
+
_current_loop: Any = None
|
| 47 |
+
_Future: type[Future]
|
| 48 |
+
|
| 49 |
+
def _get_loop(self) -> Any:
|
| 50 |
+
"""Get event loop
|
| 51 |
+
|
| 52 |
+
Notice if event loop has changed,
|
| 53 |
+
and register init_io_state on activation of a new event loop
|
| 54 |
+
"""
|
| 55 |
+
if self._current_loop is None:
|
| 56 |
+
self._current_loop = self._default_loop()
|
| 57 |
+
self._init_io_state(self._current_loop)
|
| 58 |
+
return self._current_loop
|
| 59 |
+
current_loop = self._default_loop()
|
| 60 |
+
if current_loop is not self._current_loop:
|
| 61 |
+
# warn? This means a socket is being used in multiple loops!
|
| 62 |
+
self._current_loop = current_loop
|
| 63 |
+
self._init_io_state(current_loop)
|
| 64 |
+
return current_loop
|
| 65 |
+
|
| 66 |
+
def _default_loop(self) -> Any:
|
| 67 |
+
raise NotImplementedError("Must be implemented in a subclass")
|
| 68 |
+
|
| 69 |
+
def _init_io_state(self, loop=None) -> None:
|
| 70 |
+
pass
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
class _AsyncPoller(_Async, _zmq.Poller):
|
| 74 |
+
"""Poller that returns a Future on poll, instead of blocking."""
|
| 75 |
+
|
| 76 |
+
_socket_class: type[_AsyncSocket]
|
| 77 |
+
_READ: int
|
| 78 |
+
_WRITE: int
|
| 79 |
+
raw_sockets: list[Any]
|
| 80 |
+
|
| 81 |
+
def _watch_raw_socket(self, loop: Any, socket: Any, evt: int, f: Callable) -> None:
|
| 82 |
+
"""Schedule callback for a raw socket"""
|
| 83 |
+
raise NotImplementedError()
|
| 84 |
+
|
| 85 |
+
def _unwatch_raw_sockets(self, loop: Any, *sockets: Any) -> None:
|
| 86 |
+
"""Unschedule callback for a raw socket"""
|
| 87 |
+
raise NotImplementedError()
|
| 88 |
+
|
| 89 |
+
def poll(self, timeout=-1) -> Awaitable[list[tuple[Any, int]]]: # type: ignore
|
| 90 |
+
"""Return a Future for a poll event"""
|
| 91 |
+
future = self._Future()
|
| 92 |
+
if timeout == 0:
|
| 93 |
+
try:
|
| 94 |
+
result = super().poll(0)
|
| 95 |
+
except Exception as e:
|
| 96 |
+
future.set_exception(e)
|
| 97 |
+
else:
|
| 98 |
+
future.set_result(result)
|
| 99 |
+
return future
|
| 100 |
+
|
| 101 |
+
loop = self._get_loop()
|
| 102 |
+
|
| 103 |
+
# register Future to be called as soon as any event is available on any socket
|
| 104 |
+
watcher = self._Future()
|
| 105 |
+
|
| 106 |
+
# watch raw sockets:
|
| 107 |
+
raw_sockets: list[Any] = []
|
| 108 |
+
|
| 109 |
+
def wake_raw(*args):
|
| 110 |
+
if not watcher.done():
|
| 111 |
+
watcher.set_result(None)
|
| 112 |
+
|
| 113 |
+
watcher.add_done_callback(
|
| 114 |
+
lambda f: self._unwatch_raw_sockets(loop, *raw_sockets)
|
| 115 |
+
)
|
| 116 |
+
|
| 117 |
+
wrapped_sockets: list[_AsyncSocket] = []
|
| 118 |
+
|
| 119 |
+
def _clear_wrapper_io(f):
|
| 120 |
+
for s in wrapped_sockets:
|
| 121 |
+
s._clear_io_state()
|
| 122 |
+
|
| 123 |
+
for socket, mask in self.sockets:
|
| 124 |
+
if isinstance(socket, _zmq.Socket):
|
| 125 |
+
if not isinstance(socket, self._socket_class):
|
| 126 |
+
# it's a blocking zmq.Socket, wrap it in async
|
| 127 |
+
socket = self._socket_class.from_socket(socket)
|
| 128 |
+
wrapped_sockets.append(socket)
|
| 129 |
+
if mask & _zmq.POLLIN:
|
| 130 |
+
socket._add_recv_event('poll', future=watcher)
|
| 131 |
+
if mask & _zmq.POLLOUT:
|
| 132 |
+
socket._add_send_event('poll', future=watcher)
|
| 133 |
+
else:
|
| 134 |
+
raw_sockets.append(socket)
|
| 135 |
+
evt = 0
|
| 136 |
+
if mask & _zmq.POLLIN:
|
| 137 |
+
evt |= self._READ
|
| 138 |
+
if mask & _zmq.POLLOUT:
|
| 139 |
+
evt |= self._WRITE
|
| 140 |
+
self._watch_raw_socket(loop, socket, evt, wake_raw)
|
| 141 |
+
|
| 142 |
+
def on_poll_ready(f):
|
| 143 |
+
if future.done():
|
| 144 |
+
return
|
| 145 |
+
if watcher.cancelled():
|
| 146 |
+
try:
|
| 147 |
+
future.cancel()
|
| 148 |
+
except RuntimeError:
|
| 149 |
+
# RuntimeError may be called during teardown
|
| 150 |
+
pass
|
| 151 |
+
return
|
| 152 |
+
if watcher.exception():
|
| 153 |
+
future.set_exception(watcher.exception())
|
| 154 |
+
else:
|
| 155 |
+
try:
|
| 156 |
+
result = super(_AsyncPoller, self).poll(0)
|
| 157 |
+
except Exception as e:
|
| 158 |
+
future.set_exception(e)
|
| 159 |
+
else:
|
| 160 |
+
future.set_result(result)
|
| 161 |
+
|
| 162 |
+
watcher.add_done_callback(on_poll_ready)
|
| 163 |
+
|
| 164 |
+
if wrapped_sockets:
|
| 165 |
+
watcher.add_done_callback(_clear_wrapper_io)
|
| 166 |
+
|
| 167 |
+
if timeout is not None and timeout > 0:
|
| 168 |
+
# schedule cancel to fire on poll timeout, if any
|
| 169 |
+
def trigger_timeout():
|
| 170 |
+
if not watcher.done():
|
| 171 |
+
watcher.set_result(None)
|
| 172 |
+
|
| 173 |
+
timeout_handle = loop.call_later(1e-3 * timeout, trigger_timeout)
|
| 174 |
+
|
| 175 |
+
def cancel_timeout(f):
|
| 176 |
+
if hasattr(timeout_handle, 'cancel'):
|
| 177 |
+
timeout_handle.cancel()
|
| 178 |
+
else:
|
| 179 |
+
loop.remove_timeout(timeout_handle)
|
| 180 |
+
|
| 181 |
+
future.add_done_callback(cancel_timeout)
|
| 182 |
+
|
| 183 |
+
def cancel_watcher(f):
|
| 184 |
+
if not watcher.done():
|
| 185 |
+
watcher.cancel()
|
| 186 |
+
|
| 187 |
+
future.add_done_callback(cancel_watcher)
|
| 188 |
+
|
| 189 |
+
return future
|
| 190 |
+
|
| 191 |
+
|
| 192 |
+
class _NoTimer:
|
| 193 |
+
@staticmethod
|
| 194 |
+
def cancel():
|
| 195 |
+
pass
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
T = TypeVar("T", bound="_AsyncSocket")
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
class _AsyncSocket(_Async, _zmq.Socket[Future]):
|
| 202 |
+
# Warning : these class variables are only here to allow to call super().__setattr__.
|
| 203 |
+
# They be overridden at instance initialization and not shared in the whole class
|
| 204 |
+
_recv_futures = None
|
| 205 |
+
_send_futures = None
|
| 206 |
+
_state = 0
|
| 207 |
+
_shadow_sock: _zmq.Socket
|
| 208 |
+
_poller_class = _AsyncPoller
|
| 209 |
+
_fd = None
|
| 210 |
+
|
| 211 |
+
def __init__(
|
| 212 |
+
self,
|
| 213 |
+
context=None,
|
| 214 |
+
socket_type=-1,
|
| 215 |
+
io_loop=None,
|
| 216 |
+
_from_socket: _zmq.Socket | None = None,
|
| 217 |
+
**kwargs,
|
| 218 |
+
) -> None:
|
| 219 |
+
if isinstance(context, _zmq.Socket):
|
| 220 |
+
context, _from_socket = (None, context)
|
| 221 |
+
if _from_socket is not None:
|
| 222 |
+
super().__init__(shadow=_from_socket.underlying) # type: ignore
|
| 223 |
+
self._shadow_sock = _from_socket
|
| 224 |
+
else:
|
| 225 |
+
super().__init__(context, socket_type, **kwargs) # type: ignore
|
| 226 |
+
self._shadow_sock = _zmq.Socket.shadow(self.underlying)
|
| 227 |
+
|
| 228 |
+
if io_loop is not None:
|
| 229 |
+
warnings.warn(
|
| 230 |
+
f"{self.__class__.__name__}(io_loop) argument is deprecated in pyzmq 22.2."
|
| 231 |
+
" The currently active loop will always be used.",
|
| 232 |
+
DeprecationWarning,
|
| 233 |
+
stacklevel=3,
|
| 234 |
+
)
|
| 235 |
+
self._recv_futures = deque()
|
| 236 |
+
self._send_futures = deque()
|
| 237 |
+
self._state = 0
|
| 238 |
+
self._fd = self._shadow_sock.FD
|
| 239 |
+
|
| 240 |
+
@classmethod
|
| 241 |
+
def from_socket(cls: type[T], socket: _zmq.Socket, io_loop: Any = None) -> T:
|
| 242 |
+
"""Create an async socket from an existing Socket"""
|
| 243 |
+
return cls(_from_socket=socket, io_loop=io_loop)
|
| 244 |
+
|
| 245 |
+
def close(self, linger: int | None = None) -> None:
|
| 246 |
+
if not self.closed and self._fd is not None:
|
| 247 |
+
event_list: list[_FutureEvent] = list(
|
| 248 |
+
chain(self._recv_futures or [], self._send_futures or [])
|
| 249 |
+
)
|
| 250 |
+
for event in event_list:
|
| 251 |
+
if not event.future.done():
|
| 252 |
+
try:
|
| 253 |
+
event.future.cancel()
|
| 254 |
+
except RuntimeError:
|
| 255 |
+
# RuntimeError may be called during teardown
|
| 256 |
+
pass
|
| 257 |
+
self._clear_io_state()
|
| 258 |
+
super().close(linger=linger)
|
| 259 |
+
|
| 260 |
+
close.__doc__ = _zmq.Socket.close.__doc__
|
| 261 |
+
|
| 262 |
+
def get(self, key):
|
| 263 |
+
result = super().get(key)
|
| 264 |
+
if key == EVENTS:
|
| 265 |
+
self._schedule_remaining_events(result)
|
| 266 |
+
return result
|
| 267 |
+
|
| 268 |
+
get.__doc__ = _zmq.Socket.get.__doc__
|
| 269 |
+
|
| 270 |
+
def recv_multipart(
|
| 271 |
+
self, flags: int = 0, copy: bool = True, track: bool = False
|
| 272 |
+
) -> Awaitable[list[bytes] | list[_zmq.Frame]]:
|
| 273 |
+
"""Receive a complete multipart zmq message.
|
| 274 |
+
|
| 275 |
+
Returns a Future whose result will be a multipart message.
|
| 276 |
+
"""
|
| 277 |
+
return self._add_recv_event(
|
| 278 |
+
'recv_multipart', kwargs=dict(flags=flags, copy=copy, track=track)
|
| 279 |
+
)
|
| 280 |
+
|
| 281 |
+
def recv( # type: ignore
|
| 282 |
+
self, flags: int = 0, copy: bool = True, track: bool = False
|
| 283 |
+
) -> Awaitable[bytes | _zmq.Frame]:
|
| 284 |
+
"""Receive a single zmq frame.
|
| 285 |
+
|
| 286 |
+
Returns a Future, whose result will be the received frame.
|
| 287 |
+
|
| 288 |
+
Recommend using recv_multipart instead.
|
| 289 |
+
"""
|
| 290 |
+
return self._add_recv_event(
|
| 291 |
+
'recv', kwargs=dict(flags=flags, copy=copy, track=track)
|
| 292 |
+
)
|
| 293 |
+
|
| 294 |
+
def recv_into( # type: ignore
|
| 295 |
+
self, buf, /, *, nbytes: int = 0, flags: int = 0
|
| 296 |
+
) -> Awaitable[int]:
|
| 297 |
+
"""Receive a single zmq frame into a pre-allocated buffer.
|
| 298 |
+
|
| 299 |
+
Returns a Future, whose result will be the number of bytes received.
|
| 300 |
+
"""
|
| 301 |
+
return self._add_recv_event(
|
| 302 |
+
'recv_into', args=(buf,), kwargs=dict(nbytes=nbytes, flags=flags)
|
| 303 |
+
)
|
| 304 |
+
|
| 305 |
+
def send_multipart( # type: ignore
|
| 306 |
+
self, msg_parts: Any, flags: int = 0, copy: bool = True, track=False, **kwargs
|
| 307 |
+
) -> Awaitable[_zmq.MessageTracker | None]:
|
| 308 |
+
"""Send a complete multipart zmq message.
|
| 309 |
+
|
| 310 |
+
Returns a Future that resolves when sending is complete.
|
| 311 |
+
"""
|
| 312 |
+
kwargs['flags'] = flags
|
| 313 |
+
kwargs['copy'] = copy
|
| 314 |
+
kwargs['track'] = track
|
| 315 |
+
return self._add_send_event('send_multipart', msg=msg_parts, kwargs=kwargs)
|
| 316 |
+
|
| 317 |
+
def send( # type: ignore
|
| 318 |
+
self,
|
| 319 |
+
data: Any,
|
| 320 |
+
flags: int = 0,
|
| 321 |
+
copy: bool = True,
|
| 322 |
+
track: bool = False,
|
| 323 |
+
**kwargs: Any,
|
| 324 |
+
) -> Awaitable[_zmq.MessageTracker | None]:
|
| 325 |
+
"""Send a single zmq frame.
|
| 326 |
+
|
| 327 |
+
Returns a Future that resolves when sending is complete.
|
| 328 |
+
|
| 329 |
+
Recommend using send_multipart instead.
|
| 330 |
+
"""
|
| 331 |
+
kwargs['flags'] = flags
|
| 332 |
+
kwargs['copy'] = copy
|
| 333 |
+
kwargs['track'] = track
|
| 334 |
+
kwargs.update(dict(flags=flags, copy=copy, track=track))
|
| 335 |
+
return self._add_send_event('send', msg=data, kwargs=kwargs)
|
| 336 |
+
|
| 337 |
+
def _deserialize(self, recvd, load):
|
| 338 |
+
"""Deserialize with Futures"""
|
| 339 |
+
f = self._Future()
|
| 340 |
+
|
| 341 |
+
def _chain(_):
|
| 342 |
+
"""Chain result through serialization to recvd"""
|
| 343 |
+
if f.done():
|
| 344 |
+
# chained future may be cancelled, which means nobody is going to get this result
|
| 345 |
+
# if it's an error, that's no big deal (probably zmq.Again),
|
| 346 |
+
# but if it's a successful recv, this is a dropped message!
|
| 347 |
+
if not recvd.cancelled() and recvd.exception() is None:
|
| 348 |
+
warnings.warn(
|
| 349 |
+
# is there a useful stacklevel?
|
| 350 |
+
# ideally, it would point to where `f.cancel()` was called
|
| 351 |
+
f"Future {f} completed while awaiting {recvd}. A message has been dropped!",
|
| 352 |
+
RuntimeWarning,
|
| 353 |
+
)
|
| 354 |
+
return
|
| 355 |
+
if recvd.exception():
|
| 356 |
+
f.set_exception(recvd.exception())
|
| 357 |
+
else:
|
| 358 |
+
buf = recvd.result()
|
| 359 |
+
try:
|
| 360 |
+
loaded = load(buf)
|
| 361 |
+
except Exception as e:
|
| 362 |
+
f.set_exception(e)
|
| 363 |
+
else:
|
| 364 |
+
f.set_result(loaded)
|
| 365 |
+
|
| 366 |
+
recvd.add_done_callback(_chain)
|
| 367 |
+
|
| 368 |
+
def _chain_cancel(_):
|
| 369 |
+
"""Chain cancellation from f to recvd"""
|
| 370 |
+
if recvd.done():
|
| 371 |
+
return
|
| 372 |
+
if f.cancelled():
|
| 373 |
+
recvd.cancel()
|
| 374 |
+
|
| 375 |
+
f.add_done_callback(_chain_cancel)
|
| 376 |
+
|
| 377 |
+
return f
|
| 378 |
+
|
| 379 |
+
def poll(self, timeout=None, flags=_zmq.POLLIN) -> Awaitable[int]: # type: ignore
|
| 380 |
+
"""poll the socket for events
|
| 381 |
+
|
| 382 |
+
returns a Future for the poll results.
|
| 383 |
+
"""
|
| 384 |
+
|
| 385 |
+
if self.closed:
|
| 386 |
+
raise _zmq.ZMQError(_zmq.ENOTSUP)
|
| 387 |
+
|
| 388 |
+
p = self._poller_class()
|
| 389 |
+
p.register(self, flags)
|
| 390 |
+
poll_future = cast(Future, p.poll(timeout))
|
| 391 |
+
|
| 392 |
+
future = self._Future()
|
| 393 |
+
|
| 394 |
+
def unwrap_result(f):
|
| 395 |
+
if future.done():
|
| 396 |
+
return
|
| 397 |
+
if poll_future.cancelled():
|
| 398 |
+
try:
|
| 399 |
+
future.cancel()
|
| 400 |
+
except RuntimeError:
|
| 401 |
+
# RuntimeError may be called during teardown
|
| 402 |
+
pass
|
| 403 |
+
return
|
| 404 |
+
if f.exception():
|
| 405 |
+
future.set_exception(poll_future.exception())
|
| 406 |
+
else:
|
| 407 |
+
evts = dict(poll_future.result())
|
| 408 |
+
future.set_result(evts.get(self, 0))
|
| 409 |
+
|
| 410 |
+
if poll_future.done():
|
| 411 |
+
# hook up result if already done
|
| 412 |
+
unwrap_result(poll_future)
|
| 413 |
+
else:
|
| 414 |
+
poll_future.add_done_callback(unwrap_result)
|
| 415 |
+
|
| 416 |
+
def cancel_poll(future):
|
| 417 |
+
"""Cancel underlying poll if request has been cancelled"""
|
| 418 |
+
if not poll_future.done():
|
| 419 |
+
try:
|
| 420 |
+
poll_future.cancel()
|
| 421 |
+
except RuntimeError:
|
| 422 |
+
# RuntimeError may be called during teardown
|
| 423 |
+
pass
|
| 424 |
+
|
| 425 |
+
future.add_done_callback(cancel_poll)
|
| 426 |
+
|
| 427 |
+
return future
|
| 428 |
+
|
| 429 |
+
def _add_timeout(self, future, timeout):
|
| 430 |
+
"""Add a timeout for a send or recv Future"""
|
| 431 |
+
|
| 432 |
+
def future_timeout():
|
| 433 |
+
if future.done():
|
| 434 |
+
# future already resolved, do nothing
|
| 435 |
+
return
|
| 436 |
+
|
| 437 |
+
# raise EAGAIN
|
| 438 |
+
future.set_exception(_zmq.Again())
|
| 439 |
+
|
| 440 |
+
return self._call_later(timeout, future_timeout)
|
| 441 |
+
|
| 442 |
+
def _call_later(self, delay, callback):
|
| 443 |
+
"""Schedule a function to be called later
|
| 444 |
+
|
| 445 |
+
Override for different IOLoop implementations
|
| 446 |
+
|
| 447 |
+
Tornado and asyncio happen to both have ioloop.call_later
|
| 448 |
+
with the same signature.
|
| 449 |
+
"""
|
| 450 |
+
return self._get_loop().call_later(delay, callback)
|
| 451 |
+
|
| 452 |
+
@staticmethod
|
| 453 |
+
def _remove_finished_future(future, event_list, event=None):
|
| 454 |
+
"""Make sure that futures are removed from the event list when they resolve
|
| 455 |
+
|
| 456 |
+
Avoids delaying cleanup until the next send/recv event,
|
| 457 |
+
which may never come.
|
| 458 |
+
"""
|
| 459 |
+
# "future" instance is shared between sockets, but each socket has its own event list.
|
| 460 |
+
if not event_list:
|
| 461 |
+
return
|
| 462 |
+
# only unconsumed events (e.g. cancelled calls)
|
| 463 |
+
# will be present when this happens
|
| 464 |
+
try:
|
| 465 |
+
event_list.remove(event)
|
| 466 |
+
except ValueError:
|
| 467 |
+
# usually this will have been removed by being consumed
|
| 468 |
+
return
|
| 469 |
+
|
| 470 |
+
def _add_recv_event(
|
| 471 |
+
self,
|
| 472 |
+
kind: str,
|
| 473 |
+
*,
|
| 474 |
+
args: tuple | None = None,
|
| 475 |
+
kwargs: dict[str, Any] | None = None,
|
| 476 |
+
future: Future | None = None,
|
| 477 |
+
) -> Future:
|
| 478 |
+
"""Add a recv event, returning the corresponding Future"""
|
| 479 |
+
f = future or self._Future()
|
| 480 |
+
if args is None:
|
| 481 |
+
args = ()
|
| 482 |
+
if kwargs is None:
|
| 483 |
+
kwargs = {}
|
| 484 |
+
if kind.startswith('recv') and kwargs.get('flags', 0) & _zmq.DONTWAIT:
|
| 485 |
+
# short-circuit non-blocking calls
|
| 486 |
+
recv = getattr(self._shadow_sock, kind)
|
| 487 |
+
try:
|
| 488 |
+
r = recv(*args, **kwargs)
|
| 489 |
+
except Exception as e:
|
| 490 |
+
f.set_exception(e)
|
| 491 |
+
else:
|
| 492 |
+
f.set_result(r)
|
| 493 |
+
return f
|
| 494 |
+
|
| 495 |
+
timer = _NoTimer
|
| 496 |
+
if hasattr(_zmq, 'RCVTIMEO'):
|
| 497 |
+
timeout_ms = self._shadow_sock.rcvtimeo
|
| 498 |
+
if timeout_ms >= 0:
|
| 499 |
+
timer = self._add_timeout(f, timeout_ms * 1e-3)
|
| 500 |
+
|
| 501 |
+
# we add it to the list of futures before we add the timeout as the
|
| 502 |
+
# timeout will remove the future from recv_futures to avoid leaks
|
| 503 |
+
_future_event = _FutureEvent(
|
| 504 |
+
f, kind, args=args, kwargs=kwargs, msg=None, timer=timer
|
| 505 |
+
)
|
| 506 |
+
self._recv_futures.append(_future_event)
|
| 507 |
+
|
| 508 |
+
if self._shadow_sock.get(EVENTS) & POLLIN:
|
| 509 |
+
# recv immediately, if we can
|
| 510 |
+
self._handle_recv()
|
| 511 |
+
if self._recv_futures and _future_event in self._recv_futures:
|
| 512 |
+
# Don't let the Future sit in _recv_events after it's done
|
| 513 |
+
# no need to register this if we've already been handled
|
| 514 |
+
# (i.e. immediately-resolved recv)
|
| 515 |
+
f.add_done_callback(
|
| 516 |
+
partial(
|
| 517 |
+
self._remove_finished_future,
|
| 518 |
+
event_list=self._recv_futures,
|
| 519 |
+
event=_future_event,
|
| 520 |
+
)
|
| 521 |
+
)
|
| 522 |
+
self._add_io_state(POLLIN)
|
| 523 |
+
return f
|
| 524 |
+
|
| 525 |
+
def _add_send_event(self, kind, msg=None, kwargs=None, future=None):
|
| 526 |
+
"""Add a send event, returning the corresponding Future"""
|
| 527 |
+
f = future or self._Future()
|
| 528 |
+
# attempt send with DONTWAIT if no futures are waiting
|
| 529 |
+
# short-circuit for sends that will resolve immediately
|
| 530 |
+
# only call if no send Futures are waiting
|
| 531 |
+
if kind in ('send', 'send_multipart') and not self._send_futures:
|
| 532 |
+
flags = kwargs.get('flags', 0)
|
| 533 |
+
nowait_kwargs = kwargs.copy()
|
| 534 |
+
nowait_kwargs['flags'] = flags | _zmq.DONTWAIT
|
| 535 |
+
|
| 536 |
+
# short-circuit non-blocking calls
|
| 537 |
+
send = getattr(self._shadow_sock, kind)
|
| 538 |
+
# track if the send resolved or not
|
| 539 |
+
# (EAGAIN if DONTWAIT is not set should proceed with)
|
| 540 |
+
finish_early = True
|
| 541 |
+
try:
|
| 542 |
+
r = send(msg, **nowait_kwargs)
|
| 543 |
+
except _zmq.Again as e:
|
| 544 |
+
if flags & _zmq.DONTWAIT:
|
| 545 |
+
f.set_exception(e)
|
| 546 |
+
else:
|
| 547 |
+
# EAGAIN raised and DONTWAIT not requested,
|
| 548 |
+
# proceed with async send
|
| 549 |
+
finish_early = False
|
| 550 |
+
except Exception as e:
|
| 551 |
+
f.set_exception(e)
|
| 552 |
+
else:
|
| 553 |
+
f.set_result(r)
|
| 554 |
+
|
| 555 |
+
if finish_early:
|
| 556 |
+
# short-circuit resolved, return finished Future
|
| 557 |
+
# schedule wake for recv if there are any receivers waiting
|
| 558 |
+
if self._recv_futures:
|
| 559 |
+
self._schedule_remaining_events()
|
| 560 |
+
return f
|
| 561 |
+
|
| 562 |
+
timer = _NoTimer
|
| 563 |
+
if hasattr(_zmq, 'SNDTIMEO'):
|
| 564 |
+
timeout_ms = self._shadow_sock.get(_zmq.SNDTIMEO)
|
| 565 |
+
if timeout_ms >= 0:
|
| 566 |
+
timer = self._add_timeout(f, timeout_ms * 1e-3)
|
| 567 |
+
|
| 568 |
+
# we add it to the list of futures before we add the timeout as the
|
| 569 |
+
# timeout will remove the future from recv_futures to avoid leaks
|
| 570 |
+
_future_event = _FutureEvent(
|
| 571 |
+
f, kind, args=(), kwargs=kwargs, msg=msg, timer=timer
|
| 572 |
+
)
|
| 573 |
+
self._send_futures.append(_future_event)
|
| 574 |
+
# Don't let the Future sit in _send_futures after it's done
|
| 575 |
+
f.add_done_callback(
|
| 576 |
+
partial(
|
| 577 |
+
self._remove_finished_future,
|
| 578 |
+
event_list=self._send_futures,
|
| 579 |
+
event=_future_event,
|
| 580 |
+
)
|
| 581 |
+
)
|
| 582 |
+
|
| 583 |
+
self._add_io_state(POLLOUT)
|
| 584 |
+
return f
|
| 585 |
+
|
| 586 |
+
def _handle_recv(self):
|
| 587 |
+
"""Handle recv events"""
|
| 588 |
+
if not self._shadow_sock.get(EVENTS) & POLLIN:
|
| 589 |
+
# event triggered, but state may have been changed between trigger and callback
|
| 590 |
+
return
|
| 591 |
+
f = None
|
| 592 |
+
while self._recv_futures:
|
| 593 |
+
f, kind, args, kwargs, _, timer = self._recv_futures.popleft()
|
| 594 |
+
# skip any cancelled futures
|
| 595 |
+
if f.done():
|
| 596 |
+
f = None
|
| 597 |
+
else:
|
| 598 |
+
break
|
| 599 |
+
|
| 600 |
+
if not self._recv_futures:
|
| 601 |
+
self._drop_io_state(POLLIN)
|
| 602 |
+
|
| 603 |
+
if f is None:
|
| 604 |
+
return
|
| 605 |
+
|
| 606 |
+
timer.cancel()
|
| 607 |
+
|
| 608 |
+
if kind == 'poll':
|
| 609 |
+
# on poll event, just signal ready, nothing else.
|
| 610 |
+
f.set_result(None)
|
| 611 |
+
return
|
| 612 |
+
elif kind == 'recv_multipart':
|
| 613 |
+
recv = self._shadow_sock.recv_multipart
|
| 614 |
+
elif kind == 'recv':
|
| 615 |
+
recv = self._shadow_sock.recv
|
| 616 |
+
elif kind == 'recv_into':
|
| 617 |
+
recv = self._shadow_sock.recv_into
|
| 618 |
+
else:
|
| 619 |
+
raise ValueError(f"Unhandled recv event type: {kind!r}")
|
| 620 |
+
|
| 621 |
+
kwargs['flags'] |= _zmq.DONTWAIT
|
| 622 |
+
try:
|
| 623 |
+
result = recv(*args, **kwargs)
|
| 624 |
+
except Exception as e:
|
| 625 |
+
f.set_exception(e)
|
| 626 |
+
else:
|
| 627 |
+
f.set_result(result)
|
| 628 |
+
|
| 629 |
+
def _handle_send(self):
|
| 630 |
+
if not self._shadow_sock.get(EVENTS) & POLLOUT:
|
| 631 |
+
# event triggered, but state may have been changed between trigger and callback
|
| 632 |
+
return
|
| 633 |
+
f = None
|
| 634 |
+
while self._send_futures:
|
| 635 |
+
f, kind, args, kwargs, msg, timer = self._send_futures.popleft()
|
| 636 |
+
# skip any cancelled futures
|
| 637 |
+
if f.done():
|
| 638 |
+
f = None
|
| 639 |
+
else:
|
| 640 |
+
break
|
| 641 |
+
|
| 642 |
+
if not self._send_futures:
|
| 643 |
+
self._drop_io_state(POLLOUT)
|
| 644 |
+
|
| 645 |
+
if f is None:
|
| 646 |
+
return
|
| 647 |
+
|
| 648 |
+
timer.cancel()
|
| 649 |
+
|
| 650 |
+
if kind == 'poll':
|
| 651 |
+
# on poll event, just signal ready, nothing else.
|
| 652 |
+
f.set_result(None)
|
| 653 |
+
return
|
| 654 |
+
elif kind == 'send_multipart':
|
| 655 |
+
send = self._shadow_sock.send_multipart
|
| 656 |
+
elif kind == 'send':
|
| 657 |
+
send = self._shadow_sock.send
|
| 658 |
+
else:
|
| 659 |
+
raise ValueError(f"Unhandled send event type: {kind!r}")
|
| 660 |
+
|
| 661 |
+
kwargs['flags'] |= _zmq.DONTWAIT
|
| 662 |
+
try:
|
| 663 |
+
result = send(msg, **kwargs)
|
| 664 |
+
except Exception as e:
|
| 665 |
+
f.set_exception(e)
|
| 666 |
+
else:
|
| 667 |
+
f.set_result(result)
|
| 668 |
+
|
| 669 |
+
# event masking from ZMQStream
|
| 670 |
+
def _handle_events(self, fd=0, events=0):
|
| 671 |
+
"""Dispatch IO events to _handle_recv, etc."""
|
| 672 |
+
if self._shadow_sock.closed:
|
| 673 |
+
return
|
| 674 |
+
|
| 675 |
+
zmq_events = self._shadow_sock.get(EVENTS)
|
| 676 |
+
if zmq_events & _zmq.POLLIN:
|
| 677 |
+
self._handle_recv()
|
| 678 |
+
if zmq_events & _zmq.POLLOUT:
|
| 679 |
+
self._handle_send()
|
| 680 |
+
self._schedule_remaining_events()
|
| 681 |
+
|
| 682 |
+
def _schedule_remaining_events(self, events=None):
|
| 683 |
+
"""Schedule a call to handle_events next loop iteration
|
| 684 |
+
|
| 685 |
+
If there are still events to handle.
|
| 686 |
+
"""
|
| 687 |
+
# edge-triggered handling
|
| 688 |
+
# allow passing events in, in case this is triggered by retrieving events,
|
| 689 |
+
# so we don't have to retrieve it twice.
|
| 690 |
+
if self._state == 0:
|
| 691 |
+
# not watching for anything, nothing to schedule
|
| 692 |
+
return
|
| 693 |
+
if events is None:
|
| 694 |
+
events = self._shadow_sock.get(EVENTS)
|
| 695 |
+
if events & self._state:
|
| 696 |
+
self._call_later(0, self._handle_events)
|
| 697 |
+
|
| 698 |
+
def _add_io_state(self, state):
|
| 699 |
+
"""Add io_state to poller."""
|
| 700 |
+
if self._state != state:
|
| 701 |
+
state = self._state = self._state | state
|
| 702 |
+
self._update_handler(self._state)
|
| 703 |
+
|
| 704 |
+
def _drop_io_state(self, state):
|
| 705 |
+
"""Stop poller from watching an io_state."""
|
| 706 |
+
if self._state & state:
|
| 707 |
+
self._state = self._state & (~state)
|
| 708 |
+
self._update_handler(self._state)
|
| 709 |
+
|
| 710 |
+
def _update_handler(self, state):
|
| 711 |
+
"""Update IOLoop handler with state.
|
| 712 |
+
|
| 713 |
+
zmq FD is always read-only.
|
| 714 |
+
"""
|
| 715 |
+
# ensure loop is registered and init_io has been called
|
| 716 |
+
# if there are any events to watch for
|
| 717 |
+
if state:
|
| 718 |
+
self._get_loop()
|
| 719 |
+
self._schedule_remaining_events()
|
| 720 |
+
|
| 721 |
+
def _init_io_state(self, loop=None):
|
| 722 |
+
"""initialize the ioloop event handler"""
|
| 723 |
+
if loop is None:
|
| 724 |
+
loop = self._get_loop()
|
| 725 |
+
loop.add_handler(self._shadow_sock, self._handle_events, self._READ)
|
| 726 |
+
self._call_later(0, self._handle_events)
|
| 727 |
+
|
| 728 |
+
def _clear_io_state(self):
|
| 729 |
+
"""unregister the ioloop event handler
|
| 730 |
+
|
| 731 |
+
called once during close
|
| 732 |
+
"""
|
| 733 |
+
fd = self._shadow_sock
|
| 734 |
+
if self._shadow_sock.closed:
|
| 735 |
+
fd = self._fd
|
| 736 |
+
if self._current_loop is not None:
|
| 737 |
+
self._current_loop.remove_handler(fd)
|
lib/python3.12/site-packages/zmq/_future.pyi
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""type annotations for async sockets"""
|
| 2 |
+
|
| 3 |
+
from __future__ import annotations
|
| 4 |
+
|
| 5 |
+
from asyncio import Future
|
| 6 |
+
from pickle import DEFAULT_PROTOCOL
|
| 7 |
+
from typing import Any, Awaitable, Literal, Sequence, TypeVar, overload
|
| 8 |
+
|
| 9 |
+
import zmq as _zmq
|
| 10 |
+
|
| 11 |
+
class _AsyncPoller(_zmq.Poller):
|
| 12 |
+
_socket_class: type[_AsyncSocket]
|
| 13 |
+
|
| 14 |
+
def poll(self, timeout=-1) -> Awaitable[list[tuple[Any, int]]]: ... # type: ignore
|
| 15 |
+
|
| 16 |
+
T = TypeVar("T", bound="_AsyncSocket")
|
| 17 |
+
|
| 18 |
+
class _AsyncSocket(_zmq.Socket[Future]):
|
| 19 |
+
@classmethod
|
| 20 |
+
def from_socket(cls: type[T], socket: _zmq.Socket, io_loop: Any = None) -> T: ...
|
| 21 |
+
def send( # type: ignore
|
| 22 |
+
self,
|
| 23 |
+
data: Any,
|
| 24 |
+
flags: int = 0,
|
| 25 |
+
copy: bool = True,
|
| 26 |
+
track: bool = False,
|
| 27 |
+
routing_id: int | None = None,
|
| 28 |
+
group: str | None = None,
|
| 29 |
+
) -> Awaitable[_zmq.MessageTracker | None]: ...
|
| 30 |
+
@overload # type: ignore
|
| 31 |
+
def recv(self, flags: int = 0, *, track: bool = False) -> Awaitable[bytes]: ...
|
| 32 |
+
@overload
|
| 33 |
+
def recv(
|
| 34 |
+
self, flags: int = 0, *, copy: Literal[True], track: bool = False
|
| 35 |
+
) -> Awaitable[bytes]: ...
|
| 36 |
+
@overload
|
| 37 |
+
def recv(
|
| 38 |
+
self, flags: int = 0, *, copy: Literal[False], track: bool = False
|
| 39 |
+
) -> Awaitable[_zmq.Frame]: ...
|
| 40 |
+
@overload
|
| 41 |
+
def recv(
|
| 42 |
+
self, flags: int = 0, copy: bool = True, track: bool = False
|
| 43 |
+
) -> Awaitable[bytes | _zmq.Frame]: ...
|
| 44 |
+
def recv_into( # type: ignore
|
| 45 |
+
self, buffer: Any, /, *, nbytes: int = 0, flags: int = 0
|
| 46 |
+
) -> Awaitable[int]: ...
|
| 47 |
+
def send_multipart( # type: ignore
|
| 48 |
+
self,
|
| 49 |
+
msg_parts: Sequence,
|
| 50 |
+
flags: int = 0,
|
| 51 |
+
copy: bool = True,
|
| 52 |
+
track: bool = False,
|
| 53 |
+
routing_id: int | None = None,
|
| 54 |
+
group: str | None = None,
|
| 55 |
+
) -> Awaitable[_zmq.MessageTracker | None]: ...
|
| 56 |
+
@overload # type: ignore
|
| 57 |
+
def recv_multipart(
|
| 58 |
+
self, flags: int = 0, *, track: bool = False
|
| 59 |
+
) -> Awaitable[list[bytes]]: ...
|
| 60 |
+
@overload
|
| 61 |
+
def recv_multipart(
|
| 62 |
+
self, flags: int = 0, *, copy: Literal[True], track: bool = False
|
| 63 |
+
) -> Awaitable[list[bytes]]: ...
|
| 64 |
+
@overload
|
| 65 |
+
def recv_multipart(
|
| 66 |
+
self, flags: int = 0, *, copy: Literal[False], track: bool = False
|
| 67 |
+
) -> Awaitable[list[_zmq.Frame]]: ...
|
| 68 |
+
@overload
|
| 69 |
+
def recv_multipart(
|
| 70 |
+
self, flags: int = 0, copy: bool = True, track: bool = False
|
| 71 |
+
) -> Awaitable[list[bytes] | list[_zmq.Frame]]: ...
|
| 72 |
+
|
| 73 |
+
# serialization wrappers
|
| 74 |
+
|
| 75 |
+
def send_string( # type: ignore
|
| 76 |
+
self,
|
| 77 |
+
u: str,
|
| 78 |
+
flags: int = 0,
|
| 79 |
+
copy: bool = True,
|
| 80 |
+
*,
|
| 81 |
+
encoding: str = 'utf-8',
|
| 82 |
+
**kwargs,
|
| 83 |
+
) -> Awaitable[_zmq.Frame | None]: ...
|
| 84 |
+
def recv_string( # type: ignore
|
| 85 |
+
self, flags: int = 0, encoding: str = 'utf-8'
|
| 86 |
+
) -> Awaitable[str]: ...
|
| 87 |
+
def send_pyobj( # type: ignore
|
| 88 |
+
self, obj: Any, flags: int = 0, protocol: int = DEFAULT_PROTOCOL, **kwargs
|
| 89 |
+
) -> Awaitable[_zmq.Frame | None]: ...
|
| 90 |
+
def recv_pyobj(self, flags: int = 0) -> Awaitable[Any]: ... # type: ignore
|
| 91 |
+
def send_json( # type: ignore
|
| 92 |
+
self, obj: Any, flags: int = 0, **kwargs
|
| 93 |
+
) -> Awaitable[_zmq.Frame | None]: ...
|
| 94 |
+
def recv_json(self, flags: int = 0, **kwargs) -> Awaitable[Any]: ... # type: ignore
|
| 95 |
+
def poll(self, timeout=-1) -> Awaitable[list[tuple[Any, int]]]: ... # type: ignore
|
lib/python3.12/site-packages/zmq/_typing.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import sys
|
| 4 |
+
|
| 5 |
+
if sys.version_info >= (3, 10):
|
| 6 |
+
from typing import TypeAlias
|
| 7 |
+
else:
|
| 8 |
+
try:
|
| 9 |
+
from typing_extensions import TypeAlias
|
| 10 |
+
except ImportError:
|
| 11 |
+
TypeAlias = type # type: ignore
|
lib/python3.12/site-packages/zmq/asyncio.py
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""AsyncIO support for zmq
|
| 2 |
+
|
| 3 |
+
Requires asyncio and Python 3.
|
| 4 |
+
"""
|
| 5 |
+
|
| 6 |
+
# Copyright (c) PyZMQ Developers.
|
| 7 |
+
# Distributed under the terms of the Modified BSD License.
|
| 8 |
+
from __future__ import annotations
|
| 9 |
+
|
| 10 |
+
import asyncio
|
| 11 |
+
import selectors
|
| 12 |
+
import sys
|
| 13 |
+
import warnings
|
| 14 |
+
from asyncio import Future, SelectorEventLoop
|
| 15 |
+
from weakref import WeakKeyDictionary
|
| 16 |
+
|
| 17 |
+
import zmq as _zmq
|
| 18 |
+
from zmq import _future
|
| 19 |
+
|
| 20 |
+
# registry of asyncio loop : selector thread
|
| 21 |
+
_selectors: WeakKeyDictionary = WeakKeyDictionary()
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
class ProactorSelectorThreadWarning(RuntimeWarning):
|
| 25 |
+
"""Warning class for notifying about the extra thread spawned by tornado
|
| 26 |
+
|
| 27 |
+
We automatically support proactor via tornado's AddThreadSelectorEventLoop"""
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def _get_selector_windows(
|
| 31 |
+
asyncio_loop,
|
| 32 |
+
) -> asyncio.AbstractEventLoop:
|
| 33 |
+
"""Get selector-compatible loop
|
| 34 |
+
|
| 35 |
+
Returns an object with ``add_reader`` family of methods,
|
| 36 |
+
either the loop itself or a SelectorThread instance.
|
| 37 |
+
|
| 38 |
+
Workaround Windows proactor removal of
|
| 39 |
+
*reader methods, which we need for zmq sockets.
|
| 40 |
+
"""
|
| 41 |
+
|
| 42 |
+
if asyncio_loop in _selectors:
|
| 43 |
+
return _selectors[asyncio_loop]
|
| 44 |
+
|
| 45 |
+
# detect add_reader instead of checking for proactor?
|
| 46 |
+
if hasattr(asyncio, "ProactorEventLoop") and isinstance(
|
| 47 |
+
asyncio_loop,
|
| 48 |
+
asyncio.ProactorEventLoop, # type: ignore
|
| 49 |
+
):
|
| 50 |
+
try:
|
| 51 |
+
from tornado.platform.asyncio import AddThreadSelectorEventLoop
|
| 52 |
+
except ImportError:
|
| 53 |
+
raise RuntimeError(
|
| 54 |
+
"Proactor event loop does not implement add_reader family of methods required for zmq."
|
| 55 |
+
" zmq will work with proactor if tornado >= 6.1 can be found."
|
| 56 |
+
" Use `asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())`"
|
| 57 |
+
" or install 'tornado>=6.1' to avoid this error."
|
| 58 |
+
)
|
| 59 |
+
|
| 60 |
+
warnings.warn(
|
| 61 |
+
"Proactor event loop does not implement add_reader family of methods required for zmq."
|
| 62 |
+
" Registering an additional selector thread for add_reader support via tornado."
|
| 63 |
+
" Use `asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())`"
|
| 64 |
+
" to avoid this warning.",
|
| 65 |
+
RuntimeWarning,
|
| 66 |
+
# stacklevel 5 matches most likely zmq.asyncio.Context().socket()
|
| 67 |
+
stacklevel=5,
|
| 68 |
+
)
|
| 69 |
+
|
| 70 |
+
selector_loop = _selectors[asyncio_loop] = AddThreadSelectorEventLoop(
|
| 71 |
+
asyncio_loop
|
| 72 |
+
) # type: ignore
|
| 73 |
+
|
| 74 |
+
# patch loop.close to also close the selector thread
|
| 75 |
+
loop_close = asyncio_loop.close
|
| 76 |
+
|
| 77 |
+
def _close_selector_and_loop():
|
| 78 |
+
# restore original before calling selector.close,
|
| 79 |
+
# which in turn calls eventloop.close!
|
| 80 |
+
asyncio_loop.close = loop_close
|
| 81 |
+
_selectors.pop(asyncio_loop, None)
|
| 82 |
+
selector_loop.close()
|
| 83 |
+
|
| 84 |
+
asyncio_loop.close = _close_selector_and_loop # type: ignore # mypy bug - assign a function to method
|
| 85 |
+
return selector_loop
|
| 86 |
+
else:
|
| 87 |
+
return asyncio_loop
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
def _get_selector_noop(loop) -> asyncio.AbstractEventLoop:
|
| 91 |
+
"""no-op on non-Windows"""
|
| 92 |
+
return loop
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
if sys.platform == "win32":
|
| 96 |
+
_get_selector = _get_selector_windows
|
| 97 |
+
else:
|
| 98 |
+
_get_selector = _get_selector_noop
|
| 99 |
+
|
| 100 |
+
|
| 101 |
+
class _AsyncIO:
|
| 102 |
+
_Future = Future
|
| 103 |
+
_WRITE = selectors.EVENT_WRITE
|
| 104 |
+
_READ = selectors.EVENT_READ
|
| 105 |
+
|
| 106 |
+
def _default_loop(self):
|
| 107 |
+
try:
|
| 108 |
+
return asyncio.get_running_loop()
|
| 109 |
+
except RuntimeError:
|
| 110 |
+
warnings.warn(
|
| 111 |
+
"No running event loop. zmq.asyncio should be used from within an asyncio loop.",
|
| 112 |
+
RuntimeWarning,
|
| 113 |
+
stacklevel=4,
|
| 114 |
+
)
|
| 115 |
+
# get_event_loop deprecated in 3.10:
|
| 116 |
+
return asyncio.get_event_loop()
|
| 117 |
+
|
| 118 |
+
|
| 119 |
+
class Poller(_AsyncIO, _future._AsyncPoller):
|
| 120 |
+
"""Poller returning asyncio.Future for poll results."""
|
| 121 |
+
|
| 122 |
+
def _watch_raw_socket(self, loop, socket, evt, f):
|
| 123 |
+
"""Schedule callback for a raw socket"""
|
| 124 |
+
selector = _get_selector(loop)
|
| 125 |
+
if evt & self._READ:
|
| 126 |
+
selector.add_reader(socket, lambda *args: f())
|
| 127 |
+
if evt & self._WRITE:
|
| 128 |
+
selector.add_writer(socket, lambda *args: f())
|
| 129 |
+
|
| 130 |
+
def _unwatch_raw_sockets(self, loop, *sockets):
|
| 131 |
+
"""Unschedule callback for a raw socket"""
|
| 132 |
+
selector = _get_selector(loop)
|
| 133 |
+
for socket in sockets:
|
| 134 |
+
selector.remove_reader(socket)
|
| 135 |
+
selector.remove_writer(socket)
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
class Socket(_AsyncIO, _future._AsyncSocket):
|
| 139 |
+
"""Socket returning asyncio Futures for send/recv/poll methods."""
|
| 140 |
+
|
| 141 |
+
_poller_class = Poller
|
| 142 |
+
|
| 143 |
+
def _get_selector(self, io_loop=None):
|
| 144 |
+
if io_loop is None:
|
| 145 |
+
io_loop = self._get_loop()
|
| 146 |
+
return _get_selector(io_loop)
|
| 147 |
+
|
| 148 |
+
def _init_io_state(self, io_loop=None):
|
| 149 |
+
"""initialize the ioloop event handler"""
|
| 150 |
+
self._get_selector(io_loop).add_reader(
|
| 151 |
+
self._fd, lambda: self._handle_events(0, 0)
|
| 152 |
+
)
|
| 153 |
+
|
| 154 |
+
def _clear_io_state(self):
|
| 155 |
+
"""clear any ioloop event handler
|
| 156 |
+
|
| 157 |
+
called once at close
|
| 158 |
+
"""
|
| 159 |
+
loop = self._current_loop
|
| 160 |
+
if loop and not loop.is_closed() and self._fd != -1:
|
| 161 |
+
self._get_selector(loop).remove_reader(self._fd)
|
| 162 |
+
|
| 163 |
+
|
| 164 |
+
Poller._socket_class = Socket
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
class Context(_zmq.Context[Socket]):
|
| 168 |
+
"""Context for creating asyncio-compatible Sockets"""
|
| 169 |
+
|
| 170 |
+
_socket_class = Socket
|
| 171 |
+
|
| 172 |
+
# avoid sharing instance with base Context class
|
| 173 |
+
_instance = None
|
| 174 |
+
|
| 175 |
+
# overload with no changes to satisfy pyright
|
| 176 |
+
def __init__(
|
| 177 |
+
self: Context,
|
| 178 |
+
io_threads: int | _zmq.Context = 1,
|
| 179 |
+
shadow: _zmq.Context | int = 0,
|
| 180 |
+
) -> None:
|
| 181 |
+
super().__init__(io_threads, shadow) # type: ignore
|
| 182 |
+
|
| 183 |
+
|
| 184 |
+
class ZMQEventLoop(SelectorEventLoop):
|
| 185 |
+
"""DEPRECATED: AsyncIO eventloop using zmq_poll.
|
| 186 |
+
|
| 187 |
+
pyzmq sockets should work with any asyncio event loop as of pyzmq 17.
|
| 188 |
+
"""
|
| 189 |
+
|
| 190 |
+
def __init__(self, selector=None):
|
| 191 |
+
_deprecated()
|
| 192 |
+
return super().__init__(selector)
|
| 193 |
+
|
| 194 |
+
|
| 195 |
+
_loop = None
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
def _deprecated():
|
| 199 |
+
if _deprecated.called: # type: ignore
|
| 200 |
+
return
|
| 201 |
+
_deprecated.called = True # type: ignore
|
| 202 |
+
|
| 203 |
+
warnings.warn(
|
| 204 |
+
"ZMQEventLoop and zmq.asyncio.install are deprecated in pyzmq 17. Special eventloop integration is no longer needed.",
|
| 205 |
+
DeprecationWarning,
|
| 206 |
+
stacklevel=3,
|
| 207 |
+
)
|
| 208 |
+
|
| 209 |
+
|
| 210 |
+
_deprecated.called = False # type: ignore
|
| 211 |
+
|
| 212 |
+
|
| 213 |
+
def install():
|
| 214 |
+
"""DEPRECATED: No longer needed in pyzmq 17"""
|
| 215 |
+
_deprecated()
|
| 216 |
+
|
| 217 |
+
|
| 218 |
+
__all__ = [
|
| 219 |
+
"Context",
|
| 220 |
+
"Socket",
|
| 221 |
+
"Poller",
|
| 222 |
+
"ZMQEventLoop",
|
| 223 |
+
"install",
|
| 224 |
+
]
|
lib/python3.12/site-packages/zmq/auth/__init__.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Utilities for ZAP authentication.
|
| 2 |
+
|
| 3 |
+
To run authentication in a background thread, see :mod:`zmq.auth.thread`.
|
| 4 |
+
For integration with the asyncio event loop, see :mod:`zmq.auth.asyncio`.
|
| 5 |
+
|
| 6 |
+
Authentication examples are provided in the pyzmq codebase, under
|
| 7 |
+
`/examples/security/`.
|
| 8 |
+
|
| 9 |
+
.. versionadded:: 14.1
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
from .base import *
|
| 13 |
+
from .certs import *
|
lib/python3.12/site-packages/zmq/auth/__pycache__/__init__.cpython-312.pyc
ADDED
|
Binary file (555 Bytes). View file
|
|
|
lib/python3.12/site-packages/zmq/auth/__pycache__/asyncio.cpython-312.pyc
ADDED
|
Binary file (3.35 kB). View file
|
|
|
lib/python3.12/site-packages/zmq/auth/__pycache__/base.cpython-312.pyc
ADDED
|
Binary file (17.9 kB). View file
|
|
|