hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
Ë
nñúh©ãó¤—UdZddlmZddlmZddlmZmZddlmZddl    Z    ddl
Z
ddl Z ddl m Z mZmZmZmZmZddlZddlZddlmZdd    lmZdd
lmZdd lmZmZmZm Z dd l!m"Z"m#Z#dd l$m%Z%ddl&m'Z'ddl(m)Z)m*Z*m+Z+ddl,m-Z-ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5ddl6m7Z7ddl8m9Z9ddl:m;Z;ddl<m=Z=ddl>m?Z?ddl@mAZAer$ddlBmCZCmDZDddlEmFZFddl mGZGddlHmIZImJZJmKZKmLZLmMZMmNZNdZOdZPdZQdZRd ZSd!ZTd"eP›d#eQ›d#eR›d#eS›d#e?d$d%z›d#e?d&›d'eT›d(ZUd)eP›d#eQ›d*ZVd+eP›d#eQ›d#eR›d#e?d$›d#e?d&›d,eT›d# ZWgd-¢ZXed.d/d/«ZYd0eZd1<dad2„Z[dad3„Z\d4Z]d0eZd5<d6Z^d0eZd7<d8Z_d0eZd9<d:Z`d0eZd;<d<Zad0eZd=<dbd>„ZbGd?„d@«ZcGdA„dBec«ZdGdC„dD«ZeGdE„dF«ZfGdG„dHefejΫZhe"eU«dIdIddJdIddIddJdKddLœ                                                                                                     dcdM„«ZidddN„ZjdedO„ZkdfdP„ZldgdQ„ZmdhdR„Zn    di                            djdS„Zoe#e?d&e?dTdUz¬V«GdW„dXef««ZpdkdY„ZqdldZ„ZrGd[„d\«ZsGd]„d^ep«ZtGd_„d`et«Zuy)ma°
Module contains tools for processing Stata files into DataFrames
 
The StataReader below was originally written by Joe Presbrey as part of PyDTA.
It has been extended and improved by Skipper Seabold from the Statsmodels
project who also developed the StataWriter and was finally added to pandas in
a once again improved version.
 
You can find more information on http://presbrey.mit.edu/PyDTA and
https://www.statsmodels.org/devel/
é)Ú annotations)Úabc)ÚdatetimeÚ    timedelta)ÚBytesION)ÚIOÚ TYPE_CHECKINGÚAnyStrÚCallableÚFinalÚcast)Úlib)Ú infer_dtype)Úmax_len_string_array)ÚCategoricalConversionWarningÚInvalidColumnNameÚPossiblePrecisionLossÚValueLabelTypeMismatch)ÚAppenderÚdoc)Úfind_stack_level)ÚExtensionDtype)Ú ensure_objectÚis_numeric_dtypeÚis_string_dtype)ÚCategoricalDtype)Ú CategoricalÚ DatetimeIndexÚNaTÚ    TimestampÚisnaÚ to_datetimeÚ to_timedelta)Ú    DataFrame)ÚIndex)Ú
RangeIndex)ÚSeries)Ú _shared_docs)Ú
get_handle)ÚHashableÚSequence)Ú TracebackType)ÚLiteral)ÚCompressionOptionsÚFilePathÚ
ReadBufferÚSelfÚStorageOptionsÚ WriteBufferzîVersion of given Stata file is {version}. pandas supports importing versions 105, 108, 111 (Stata 7SE), 113 (Stata 8/9), 114 (Stata 10/11), 115 (Stata 12), 117 (Stata 13), 118 (Stata 14/15/16),and 119 (Stata 15/16, over 32,767 variables).zÌconvert_dates : bool, default True
    Convert date variables to DataFrame time values.
convert_categoricals : bool, default True
    Read value labels and convert columns to Categorical/Factor variables.aindex_col : str, optional
    Column to set as index.
convert_missing : bool, default False
    Flag indicating whether to convert missing values to their Stata
    representations.  If False, missing values are replaced with nan.
    If True, columns containing missing values are returned with
    object data types and missing values are represented by
    StataMissingValue objects.
preserve_dtypes : bool, default True
    Preserve Stata datatypes. If False, numeric data are upcast to pandas
    default types for foreign data (float64 or int64).
columns : list or None
    Columns to retain.  Columns will be returned in the given order.  None
    returns all columns.
order_categoricals : bool, default True
    Flag indicating whether converted categorical data are ordered.zzchunksize : int, default None
    Return StataReader object for iterations, returns chunks with
    given number of lines.z=iterator : bool, default False
    Return StataReader object.zúNotes
-----
Categorical variables read through an iterator may not have the same
categories and dtype. This occurs when  a variable stored in a DTA
file is associated to an incomplete set of value labels that only
label a strict subset of the values.a>
Read Stata file into DataFrame.
 
Parameters
----------
filepath_or_buffer : str, path object or file-like object
    Any valid string path is acceptable. The string could be a URL. Valid
    URL schemes include http, ftp, s3, and file. For file URLs, a host is
    expected. A local file could be: ``file://localhost/path/to/table.dta``.
 
    If you want to pass in a path object, pandas accepts any ``os.PathLike``.
 
    By file-like object, we refer to objects with a ``read()`` method,
    such as a file handle (e.g. via builtin ``open`` function)
    or ``StringIO``.
ú
Údecompression_optionsÚfilepath_or_bufferÚstorage_optionsz¼
 
Returns
-------
DataFrame or pandas.api.typing.StataReader
 
See Also
--------
io.stata.StataReader : Low-level reader for Stata data files.
DataFrame.to_stata: Export Stata data files.
 
a
 
Examples
--------
 
Creating a dummy stata for this example
 
>>> df = pd.DataFrame({'animal': ['falcon', 'parrot', 'falcon', 'parrot'],
...                     'speed': [350, 18, 361, 15]})  # doctest: +SKIP
>>> df.to_stata('animals.dta')  # doctest: +SKIP
 
Read a Stata dta file:
 
>>> df = pd.read_stata('animals.dta')  # doctest: +SKIP
 
Read a Stata dta file in 10,000 line chunks:
 
>>> values = np.random.randint(0, 10, size=(20_000, 1), dtype="uint8")  # doctest: +SKIP
>>> df = pd.DataFrame(values, columns=["i"])  # doctest: +SKIP
>>> df.to_stata('filename.dta')  # doctest: +SKIP
 
>>> with pd.read_stata('filename.dta', chunksize=10000) as itr: # doctest: +SKIP
>>>     for chunk in itr:
...         # Operate on a single chunk, e.g., chunk.mean()
...         pass  # doctest: +SKIP
z­Reads observations from Stata file, converting them into a dataframe
 
Parameters
----------
nrows : int
    Number of lines to read from data file, if None read whole file.
z
 
Returns
-------
DataFrame
zæClass for reading Stata dta files.
 
Parameters
----------
path_or_buf : path (string), buffer or path object
    string, path object (pathlib.Path or py._path.local.LocalPath) or object
    implementing a binary read() functions.
z
 
)    ú%tcú%tCú%tdú%dú%twú%tmú%tqú%thú%tyé¨ér Ú stata_epochcóÀ‡‡‡‡‡‡—tjjtjjcŠŠtjt    ddd«z
j
Štjt    ddd«z
j
ЉdzdzdzЉdzdzdzŠd"ˆˆfd„ }d"ˆˆfd„ }d"ˆˆˆˆfd„ }t j|«}d    }|j«rd
}d |j|<|jt j«}|jd «rt}|}|||d «}    nž|jd«r=tjdt!«¬«t#|t$¬«}    |r    t&|    |<|    S|jd«rt}|}
|||
d«}    n+|jd«r(tj|dzz} |dzdz}
|| |
«}    nò|jd«r(tj|dzz} |dzdz} || | «}    n¹|jd«r+tj|dzz} |dzdzdz} || | «}    n}|jd«r+tj|dzz} |dzdzdz} || | «}    nA|jd«r!|} t j(|«}|| |«}    nt+d |›d!«‚|r    t&|    |<|    S)#a
    Convert from SIF to datetime. https://www.stata.com/help.cgi?datetime
 
    Parameters
    ----------
    dates : Series
        The Stata Internal Format date to convert to datetime according to fmt
    fmt : str
        The format to convert to. Can be, tc, td, tw, tm, tq, th, ty
        Returns
 
    Returns
    -------
    converted : Series
        The converted dates
 
    Examples
    --------
    >>> dates = pd.Series([52])
    >>> _stata_elapsed_date_to_datetime_vec(dates , "%tw")
    0   1961-01-01
    dtype: datetime64[ns]
 
    Notes
    -----
    datetime/c - tc
        milliseconds since 01jan1960 00:00:00.000, assuming 86,400 s/day
    datetime/C - tC - NOT IMPLEMENTED
        milliseconds since 01jan1960 00:00:00.000, adjusted for leap seconds
    date - td
        days since 01jan1960 (01jan1960 = 0)
    weekly date - tw
        weeks since 1960w1
        This assumes 52 weeks in a year, then adds 7 * remainder of the weeks.
        The datetime value is the start of the week in terms of days in the
        year, not ISO calendar weeks.
    monthly date - tm
        months since 1960m1
    quarterly date - tq
        quarters since 1960q1
    half-yearly date - th
        half-years since 1960h1 yearly
    date - ty
        years since 0000
    rArBéiéèc ó•—|j«‰kr&|j«‰kDrtd|z|zd¬«St|dd«}t    t ||«Dcgc]\}}t ||d«‘Œc}}|¬«Scc}}w)zú
        Convert year and month to datetimes, using pandas vectorized versions
        when the date range falls within the range supported by pandas.
        Otherwise it falls back to a slower but more robust method
        using datetime.
        édz%Y%m©ÚformatÚindexNrB©rK)ÚmaxÚminr"Úgetattrr'Úzipr)ÚyearÚmonthrKÚyÚmÚMAX_YEARÚMIN_YEARs     €€úBH:\Change_password\venv_build\Lib\site-packages\pandas/io/stata.pyÚconvert_year_month_safezD_stata_elapsed_date_to_datetime_vec.<locals>.convert_year_month_safe!stø€ð 8‰8‹:˜Ò   T§X¡X£Z°(Ò%:ܘs T™z¨EÑ1¸&ÔAÐ Aä˜D '¨4Ó0ˆEܼ¸TÀ5Ó9I×J±°°Aœ8 A q¨!Õ,ÓJÐRWÔXÐ XùÓJsÁA=
c
óJ•—|j«‰dz
kr.|j«‰kDrt|d¬«t|d¬«zSt    |dd«}t ||«Dcgc](\}}t |dd«tt|«¬«z‘Œ*}}}t||¬    «Scc}}w)
z{
        Converts year (e.g. 1999) and days since the start of the year to a
        datetime or datetime64 Series
        rBú%YrIÚd©ÚunitrKN©ÚdaysrL)
rMrNr"r#rOrPrrÚintr')rQr_rKrSr[ÚvaluerUrVs      €€rWÚconvert_year_days_safezC_stata_elapsed_date_to_datetime_vec.<locals>.convert_year_days_safe.s›ø€ð
8‰8‹:˜ A™Ò &¨4¯8©8«:¸Ò+@ܘt¨DÔ1´LÀÈCÔ4PÑPÐ Pä˜D '¨4Ó0ˆEäGJÈ4ÐQUÃ÷Ù?C¸qÀ!”˜˜A˜qÓ!¤I´3°q³6Ô$:Ó:ðˆEñô˜% uÔ-Ð -ùósÁ"-Bc    óü•—t|dd«}|dk(rX|j«‰kDs|j«‰kr|Dcgc]}|tt    |«¬«z‘Œ}}t ||¬«S|dk(r[|j«‰kDs|j«‰    kr@|Dcgc]}|tt    |«dz¬«z‘Œ}}t ||¬«St d    «‚t|«}t||¬
«}||zScc}wcc}w) z¾
        Convert base dates and deltas to datetimes, using pandas vectorized
        versions if the deltas satisfy restrictions required to be expressed
        as dates in pandas.
        rKNr[r^rLÚmsrF)Ú microsecondszformat not understoodr\)    rOrMrNrr`r'Ú
ValueErrorr"r#)
ÚbaseÚdeltasr]rKr[ÚvaluesÚ MAX_DAY_DELTAÚ MAX_MS_DELTAÚ MIN_DAY_DELTAÚ MIN_MS_DELTAs
      €€€€rWÚconvert_delta_safez?_stata_elapsed_date_to_datetime_vec.<locals>.convert_delta_safe<s÷ø€ô ˜ ¨Ó.ˆØ 3Š;؏z‰z‹|˜mÒ+¨v¯z©z«|¸mÒ/KØAGÖH¸A˜$¤´°A³Ô!7Ó7ÐHÐHܘf¨EÔ2Ð2Ø TŠ\؏z‰z‹|˜lÒ*¨f¯j©j«l¸\Ò.IàLRöØGHDœ9´3°q³6¸D±=ÔBÓBððô˜f¨EÔ2Ð2äÐ4Ó5Ð 5ܘ4Ó ˆÜ˜f¨4Ô0ˆØf‰}ÐùòIùòs ¾C4Â"C9FTgð?©r8Útcrd©r9ÚtCz9Encountered %tC format. Leaving in Stata Internal Format.©Ú
stacklevel©Údtype)r:Útdr;r[r[©r<Útwé4é©r=Útmé ©r>Útqéé©r?Úthéé©r@Útyz    Date fmt ú not understood)Úreturnr')r rNrQrMrr_ÚnpÚisnanÚanyÚ_valuesÚastypeÚint64Ú
startswithrCÚwarningsÚwarnrr'ÚobjectrÚ    ones_likerf)ÚdatesÚfmtrXrbrnÚbad_locsÚhas_bad_valuesrgrdÚ
conv_datesr_rQrRÚ quarter_monthÚ first_monthrjrkrUrlrmrVs               @@@@@@rWÚ#_stata_elapsed_date_to_datetime_vecrís®ý€ô\#Ÿ™×+Ñ+¬Y¯]©]×-?Ñ-?ЀHˆhÜ—]‘]¤X¨d°A°qÓ%9Ñ9×?Ñ?€MÜ—]‘]¤X¨d°A°qÓ%9Ñ9×?Ñ?€MØ  2Ñ%¨Ñ,¨tÑ3€LØ  2Ñ%¨Ñ,¨tÑ3€Lö Yö .÷ðô2x‰x˜‹€HØ€N؇||„~؈Ø"%ˆ ‰ hÑØ L‰LœŸ™Ó "€Eà
‡~~mÔ$ÜˆØ ˆÙ'¨¨b°$Ó7Š
Ø     ‰˜ Ô    &܏ ‰ Ø GÜ'Ó)õ    
ô˜E¬Ô0ˆ
Ù Ü#&ˆJxÑ  ØÐà     ‰Ð0Ô    1܈؈Ù'¨¨d°CÓ8Š
ð
‰˜ Ô    &Ü×Ñ %¨2¡+Ñ-ˆØ˜‘
˜aшÙ+¨D°$Ó7‰
Ø     ‰˜ Ô    &Ü×Ñ %¨2¡+Ñ-ˆØ˜‘˜qÑ ˆÙ,¨T°5Ó9‰
Ø     ‰˜ Ô    &Ü×Ñ %¨1¡*Ñ,ˆØ ™ a™¨!Ñ+ˆ Ù,¨T°=ÓA‰
Ø     ‰˜ Ô    &Ü×Ñ %¨1¡*Ñ,ˆØ˜‘˜a‘ !Ñ#ˆÙ,¨T°5Ó9‰
Ø     ‰˜ Ô    &؈ܗl‘l 5Ó)ˆ Ù,¨T°;Ó?‰
ä˜9 S E¨Ð9Ó:Ð:áÜ"ˆ
8Ñà Ðóc󇇇    —|jŠ    dЉdz Š    d#                            d$ˆˆˆ    fd„ }t|«}|jŠ    |j«rPtj|j
d«rt t«|j|<nt|j|<|dvr||d¬«}|jdz }nƒ|d    vr#tjd
t«¬ «|}n\|d vr||d¬«}|j‰z}n=|d vr<||dd¬«}d|jtjz
z|jdzz}ný|dvr;||d¬«}d|jtjz
z|jzdz
}n¾|dvr>||d¬«}d|jtjz
z|jdz
dzz}n||dvrN||d¬«}d|jtjz
z|jdkDj!t"«z}n*|dvr||d¬«}|j}nt%d|›d«‚t'|t(j*d¬«}t-j.dd «d!}|||<t'|‰    d¬"«S)%aO
    Convert from datetime to SIF. https://www.stata.com/help.cgi?datetime
 
    Parameters
    ----------
    dates : Series
        Series or array containing datetime or datetime64[ns] to
        convert to the Stata Internal Format given by fmt
    fmt : str
        The format to convert to. Can be, tc, td, tw, tm, tq, th, ty
    lž"R:rFFcóÚ•—i}tj|jd«r|rP|tt«j d«z
}|j jtj«dz|d<|s|r=t|«}|jj|d<|jj|d<|r%|j jtj«t|dd¬«j jtj«z
}|‰ z|d    <n»t|d
¬ «d k(r |r9|j tz
}dˆ fd „ }tj |«}    |    |«|d<|r<|j#d„«}
|
j dz|d<|
j |ddzz
|d<|r0dd„} tj | «}    |    |«|d    <n t%d«‚t'|‰¬«S)NÚMÚnsrFÚdeltarQrRrZrIr_F©Úskipnarcó\•—‰|jzd|jzz|jzS)Ni@B)r_Úsecondsre)ÚxÚ
US_PER_DAYs €rWÚfzC_datetime_to_stata_elapsed_vec.<locals>.parse_dates_safe.<locals>.f³s)ø€Ø%¨¯©Ñ.°¸1¿9¹9Ñ1DÑDÀqÇ~Á~ÑUÐUržcó:—d|jz|jzS)NrH)rQrR©r¨s rWú<lambda>zJ_datetime_to_stata_elapsed_vec.<locals>.parse_dates_safe.<locals>.<lambda>¹s€°3¸¿¹±<À!Ç'Á'Ñ3I€ržrHcóJ—|t|jdd«z
jS)NrB)rrQr_r¬s rWÚgzC_datetime_to_stata_elapsed_vec.<locals>.parse_dates_safe.<locals>.g¾s €Ø¤¨¯©°°AÓ 6Ñ6×<Ñ<Ð<ržzQColumns containing dates must contain either datetime64, datetime or null values.rL)r¨rrŠÚfloat)r¨rrŠr`)rÚ is_np_dtypervr rCÚas_unitrŽÚviewr‹rrÚ_datarQrRr"rÚ    vectorizeÚapplyrfr$)r–r£rQr_r[Ú
time_deltaÚ
date_indexÚ
days_in_nsrªÚvÚ
year_monthr¯Ú
NS_PER_DAYr©rKs            €€€rWÚparse_dates_safez8_datetime_to_stata_elapsed_vec.<locals>.parse_dates_safes¯ø€ð ˆÜ ?‰?˜5Ÿ;™;¨Õ ,ÙØ"¤Y¬{Ó%;×%CÑ%CÀDÓ%IÑI
Ø'×/Ñ/×4Ñ4´R·X±XÓ>À$ÑF'‘
Ù‘tÜ*¨5Ó1
Ø&×,Ñ,×1Ñ1&‘    Ø'×-Ñ-×3Ñ3'‘
ÚØ"Ÿ]™]×/Ñ/´·±Ó9¼Kؐf‘I dô=ç‘'Ÿ$™$œrŸx™x›.ñ)
ð'¨*Ñ4&’    ä ˜ uÔ -°Ò ;ÙØŸ ™ ¬ Ñ3õVô—L‘L “OÙ˜u›X'‘
ÙØ"Ÿ[™[Ñ)IÓJ
Ø&×.Ñ.°#Ñ5&‘    Ø'×/Ñ/°!°F±)¸c±/ÑA'‘
Ùó=ô—L‘L “OÙ˜e›H&’    äð7óð ô
˜ %Ô(Ð(ržr¡roT)r£rqz'Stata Internal Format tC not supported.rs)r:rwrx)rQr_rzr{r|)rQr~rBrrr‚rƒr…r†r‡úFormat z! is not a known Stata date format)rvÚcopyú<dóàr©rKr¿)FFF)r–r'r£ÚboolrQrÃr_rÃ)rKr!rrr±rvr"rCrŽr£r’r“rrQr_rRrr`rfr'r‹Úfloat64ÚstructÚunpack)
r–r—r½Úbad_locr[ršÚ missing_valuer¼r©rKs
       @@@rWÚ_datetime_to_stata_elapsed_vecrɍsoú€ð K‰K€EØ/€JؘdÑ"€JðNSð,)Øð,)Ø"ð,)Ø26ð,)ØFJ÷,)ô\5‹k€GØ K‰K€E؇{{„}Ü ?‰?˜5Ÿ;™;¨Ô ,Ü%0´Ó%=ˆEM‰M˜'Ò "ä%0ˆEM‰M˜'Ñ "à
ˆmÑÙ ˜U¨$Ô /ˆØ—W‘W˜t‘^Š
Ø      Ñ    Ü ‰ Ø 5Ü'Ó)õ    
ðŠ
Ø      Ñ    Ù ˜U¨$Ô /ˆØ—W‘W 
Ñ*Š
Ø      Ñ    Ù ˜U¨°DÔ 9ˆØ˜1Ÿ6™6¤K×$4Ñ$4Ñ4Ñ5¸¿¹À!¹ ÑC‰
Ø      Ñ    Ù ˜U¨Ô .ˆØ˜1Ÿ6™6¤K×$4Ñ$4Ñ4Ñ5¸¿¹Ñ?À!ÑC‰
Ø      Ñ    Ù ˜U¨Ô .ˆØ˜!Ÿ&™&¤;×#3Ñ#3Ñ3Ñ4¸¿¹À!¹ ÈÑ7IÑI‰
Ø      Ñ    Ù ˜U¨Ô .ˆØ˜!Ÿ&™&¤;×#3Ñ#3Ñ3Ñ4¸¿¹À!¹ ×7KÑ7KÌCÓ7PÑP‰
Ø      Ñ    Ù ˜U¨Ô .ˆØ—V‘V‰
ä˜7 3 %Ð'HÐIÓJÐJä˜
¬"¯*©*¸5ÔA€JÜ—M‘M $Ð(KÓLÈQÑO€MØ'€JˆwÑä * E°Ô 6Ð6ržzÔ
Fixed width strings in Stata .dta files are limited to 244 (or fewer)
characters.  Column '{0}' does not satisfy this restriction. Use the
'version=117' parameter to write the newer (Stata 13 and later) format.
Úexcessive_string_length_errorz™
Column converted from {0} to {1}, and some data are outside of the lossless
conversion range. This may result in a loss of precision in the saved data.
Úprecision_loss_doczä
Stata value labels (pandas categories) must be strings. Column {0} contains
non-string labels which will be converted to strings.  Please check that the
Stata data file created has not lost information due to duplicate labels.
Úvalue_label_mismatch_doca;
Not all pandas column names were valid Stata variable names.
The following replacements have been made:
 
    {0}
 
If this is not what you expect, please make sure you have Stata-compliant
column names in your DataFrame (strings only, max 32 characters, only
alphanumerics and underscores, no Stata reserved words)
Úinvalid_name_docaï
One or more series with value labels are not fully labeled. Reading this
dataset with an iterator results in categorical variable with different
categories. This occurs since it is not possible to know all possible values
until the entire dataset has been read. To avoid this warning, you can either
read dataset without an iterator, or manually convert categorical data by
``convert_categoricals`` to False and then accessing the variable labels
through the value_labels method of the reader.
Úcategorical_conversion_warningc
óŒ —d}tjtjtjftjtjtjftj
tjtj ftjtj tjftjtjtjff}tjdd«d}tjdd«d}|D]û}t||jt«xr||jj dv}||j#«}|r]||jj dvrdnd    }||j%|«j'||jj(«||<n·t||jt«ršt+||jd
d «/||j'||jj(«||<nQt-||j«r9||j'd «||<d |j.||j#«|f<||j}    |j0ddk(}
|D]§} |    | dk(sŒ |
s6||j3«tj4| d «j2kr| d }    n| d}    | dtjk(r,||j3«dk\rt6j9dd«}||j'|    «||<Œ©|    tjk(rV|
sT||j3«dkDs||j;«dkr5||j'tj«||<n|    tjk(rV|
sT||j3«dkDs||j;«dkrÌ||j'tj «||<n¥|    tjk(r½|
s,||j3«dkr=||j;«dk\r'||j'tj «||<n=||j'tj«||<||j3«dk\s||j;«dkrìt6j9dd«}nÕ|    tj<tjfvr³tj>||«jA«rtCd|›d«‚||j3«} |    tj<k(r+| |kDr&||j'tj«||<n-|    tjk(r| |kDrtCd|›d| ›d|›d«‚|sŒ¯|jA«sŒÁtDjF||jjH} | |j.||f<Œþ|r$tKjL|tNtQ«¬«|S) a-
    Checks the dtypes of the columns of a pandas DataFrame for
    compatibility with the data types and ranges supported by Stata, and
    converts if necessary.
 
    Parameters
    ----------
    data : DataFrame
        The DataFrame to check and convert
 
    Notes
    -----
    Numeric columns in Stata must be one of int8, int16, int32, float32 or
    float64, with some additional value restrictions.  int8 and int16 columns
    are checked for violations of the value restrictions and upcast if needed.
    int64 data is not usable in Stata, and so it is downcast to int32 whenever
    the value are in the int32 range, and sidecast to float64 when larger than
    this range.  If the int64 values are outside of the range of those
    perfectly representable as float64 values, a warning is raised.
 
    bool columns are cast to int8.  uint columns are converted to int of the
    same size if there is no loss in precision, otherwise are upcast to a
    larger type.  uint64 is currently not supported since it is concerted to
    object in a DataFrame.
    Úú<fóÿÿÿ~rrÀóÿÿÿÿÿÿßÚiubÚiuFÚ numpy_dtypeNr”rBr…lÚuint64rÄrHéÿÿÿéäé€ÿÿéäÿÿé€lüÿÿÿrzColumn zM contains infinity or -infinitywhich is outside the range supported by Stata.z has a maximum value (z() outside the range supported by Stata (ú)rs))r‹Úbool_Úint8Úuint8Úint16Úuint16Úint32Úuint32rr×rÄrÅrÆÚ
isinstancervrÚkindr!ÚfillnarrÖrOrÚlocÚshaperMÚiinforËrJrNÚfloat32ÚisinfrrfÚStataMissingValueÚBASE_MISSING_VALUESÚnamer’r“rr)ÚdataÚwsÚconversion_dataÚ float32_maxÚ float64_maxÚcolÚis_nullable_intÚ orig_missingÚfvrvÚempty_dfÚc_dataraÚsentinels              rWÚ_cast_to_stata_typesrü#s €ð4
€Bô
‰”2—7‘7œBŸG™GÐ$Ü     ‰”2—7‘7œBŸH™HÐ%Ü     ‰”B—H‘HœbŸh™hÐ'Ü     ‰”B—H‘HœbŸh™hÐ'Ü     ‰”B—H‘HœbŸj™jÐ)ð     ð ô—-‘- Ð&9Ó:¸1Ñ=€KÜ—-‘- Ð&IÓJÈ1ÑM€KàóH7ˆô t˜C‘y—‘¬Ó 7ò .ؐS‘    —‘×$Ñ$¨Ð-ð    ð
˜C‘y—~‘~Ó'ˆ ٠ؘ3‘i—o‘o×*Ñ*¨dÑ2‘¸ˆBà˜S™    ×(Ñ(¨Ó,×3Ñ3°D¸±I·O±O×4OÑ4OÓPˆDŠIÜ ˜˜S™    Ÿ™¬Ô 8ܐt˜C‘y—‘¨ °tÓ<ÐHØ  ™I×,Ñ,¨T°#©Y¯_©_×-HÑ-HÓIS’    Ü   c¡§¡Ô1ð! ™I×,Ñ,¨XÓ6S‘    à26—‘˜˜c™Ÿ™Ó)¨3Ð.Ñ/àS‘    —‘ˆØ—:‘:˜a‘= AÑ%ˆØ%ò
    4ˆFؘ˜q™    Ó!Ù˜t C™yŸ}™}›´"·(±(¸6À!¹9Ó2E×2IÑ2IÒIØ" 1™I‘Eà" 1™IEؘ!‘9¤§¡Ò(ؘC‘y—}‘}“¨%Ò/Ü/×6Ñ6°xÀÓK˜à  ™I×,Ñ,¨UÓ3S’    ð
    4ð ”B—G‘GÒ ¡HؐC‰y}‰}‹ Ò$¨¨S©    ¯ © «¸$Ó(>Ø  ™I×,Ñ,¬R¯X©XÓ6S“    Ø ”b—h‘hÒ ¡xؐC‰y}‰}‹ Ò&¨$¨s©)¯-©-«/¸FÓ*BØ  ™I×,Ñ,¬R¯X©XÓ6S“    Ø ”b—h‘hÒ ÙØS‘    — ‘ “ :Ò-°$°s±)·-±-³/À[Ò2Pà  ™I×,Ñ,¬R¯X©XÓ6S“    à  ™I×,Ñ,¬R¯Z©ZÓ8S‘    Ø˜‘9—=‘=“? eÒ+¨t°C©y¯}©}«À(Ò/JÜ+×2Ñ2°7¸IÓF‘BØ ”r—z‘z¤2§:¡:Ð.Ñ .܏x‰x˜˜S™    Ó"×&Ñ&Ô(ܠؘc˜Uð#EðEóðð˜‘I—M‘M“OˆEØœŸ
™
Ò" u¨{Ò':Ø  ™I×,Ñ,¬R¯Z©ZÓ8S’    Øœ"Ÿ*™*Ò$ؘ;Ò&Ü$Ø! # Ð&<¸U¸GðD/Ø/:¨m¸1ð>óðó Ø×ÑÖ!ä,×@Ñ@ÀÀcÁÇÁ×AUÑAUÑVØ.6—‘˜ sÐ*Ó+ðQH7ñR
܏ ‰ Ø Ü !Ü'Ó)õ    
ð €Kržcó6—eZdZdZ    d                    dd„Zdd„Zd    d„Zy)
ÚStataValueLabelzé
    Parse a categorical column and prepare formatted output
 
    Parameters
    ----------
    catarray : Series
        Categorical Series to encode
    encoding : {"latin-1", "utf-8"}
        Encoding to use for value labels.
    có¾—|dvr td«‚|j|_||_|jj
}t |«|_|j«y)N©úlatin-1úutf-8ú%Only latin-1 and utf-8 are supported.)    rfrïÚlabnameÚ    _encodingÚcatÚ
categoriesÚ    enumerateÚ value_labelsÚ_prepare_value_labels)ÚselfÚcatarrayÚencodingrs    rWÚ__init__zStataValueLabel.__init__¯sS€ð Ð/Ñ /ÜÐDÓEÐ EØ—}‘}ˆŒ Ø!ˆŒØ—\‘\×,Ñ,ˆ
Ü% jÓ1ˆÔà ×"Ñ"Õ$ržcóL—d|_g|_d|_tjgtj
¬«|_tjgtj
¬«|_d|_g}g}|jD]ÿ}|d}t|t«sLt|«}tjtj|j «t"t%«¬«|j'|j(«}|j+|j«|xjt|«dzz c_|j+|d«|jj+|«|xjdz c_Œ|jdkDr t-d«‚tj|tj
¬«|_tj|tj
¬«|_dd|jzzd|jzz|jz|_y    )
zEncode value labels.rrurBrsi}zaStata value labels for a single variable must have a combined length less than 32,000 characters.érN)Útext_lenÚtxtÚnr‹ÚarrayrãÚoffÚvalÚlenr    råÚstrr’r“rÌrJrrrÚencoderÚappendrf)r ÚoffsetsriÚvlÚcategorys     rWr
z%StataValueLabel._prepare_value_labels»s“€ðˆŒ Ø "ˆŒØˆŒä—8‘8˜B¤b§h¡hÔ/ˆŒä—8‘8˜B¤b§h¡hÔ/ˆŒØˆŒð ˆØ ˆØ×#Ñ#ò    ˆBØ$& q¡EˆHܘh¬Ô,ܘx›=Ü— ‘ Ü,×3Ñ3°D·L±LÓAÜ*Ü/Ó1õð
 —‘ t§~¡~Ó6ˆHØ N‰N˜4Ÿ=™=Ô )Ø MŠMœS ›]¨QÑ.Ñ .MØ M‰M˜"˜Q™%Ô  Ø H‰HO‰O˜HÔ %Ø FŠFa‰KFð    ð  =‰=˜5Ò  ÜðFóð ô —8‘8˜G¬2¯8©8Ô4ˆŒÜ—8‘8˜F¬"¯(©(Ô3ˆŒð˜1˜tŸv™v™:Ñ%¨¨D¯F©F©
Ñ2°T·]±]ÑBˆržcó´—|j}t«}d}|jtj|dz|j
««t |j«ddj|«}|dvrdnd}t||dz«}|j|«td«D]'}|jtjd    |««Œ)|jtj|dz|j««|jtj|dz|j««|jD]*}|jtj|dz|««Œ,|jD]*}    |jtj|dz|    ««Œ,|jD]}
|j|
|z«Œ|j!«S)
a!
        Generate the binary representation of the value labels.
 
        Parameters
        ----------
        byteorder : str
            Byte order of the output
 
        Returns
        -------
        value_label : bytes
            Bytes containing the formatted value label
        óÚiNé )rÚutf8é€rBr‚Úc)rrÚwriterÅÚpackrrrrÚ
_pad_bytesÚrangerrrrrÚgetvalue) r Ú    byteorderr ÚbioÚ    null_byterÚlab_lenr ÚoffsetraÚtexts            rWÚgenerate_value_labelz$StataValueLabel.generate_value_labelçs‰€ð—>‘>ˆÜ‹iˆØˆ    ð         ‰    ”&—+‘+˜i¨#™o¨t¯x©xÓ8Ô9ôd—l‘lÓ# C RÐ(×/Ñ/°Ó9ˆØ Ð(9Ñ9‘"¸sˆÜ˜W g°¡kÓ2ˆØ     ‰    'Ôôq“ò    3ˆAØ I‰I”f—k‘k # yÓ1Õ 2ð    3ð
         ‰    ”&—+‘+˜i¨#™o¨t¯v©vÓ6Ô7ð         ‰    ”&—+‘+˜i¨#™o¨t¯}©}Ó=Ô>ð—h‘hò    <ˆFØ I‰I”f—k‘k )¨c¡/°6Ó:Õ ;ð    <ð—X‘Xò    ;ˆEØ I‰I”f—k‘k )¨c¡/°5Ó9Õ :ð    ;ð—H‘Hò    (ˆDØ I‰Id˜YÑ&Õ 'ð    (ð|‰|‹~ÐržN©r)r r'r úLiteral['latin-1', 'utf-8']rŠÚNone©rŠr3)r*rrŠÚbytes)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rr
r0©ržrWrþrþ£s7„ñ    ðIRð
%Øð
%Ø*Eð
%à     ó
%ó*CôX2ržrþcó*—eZdZdZ    d                            dd„Zy)ÚStataNonCatValueLabela 
    Prepare formatted version of value labels
 
    Parameters
    ----------
    labname : str
        Value label name
    value_labels: Dictionary
        Mapping of values to labels
    encoding : {"latin-1", "utf-8"}
        Encoding to use for value labels.
    có —|dvr td«‚||_||_t|j    «d„¬«|_|j «y)Nrrcó —|dS)Nrr:r¬s rWr­z0StataNonCatValueLabel.__init__.<locals>.<lambda>6s
€°°!±€rž)Úkey)rfrrÚsortedÚitemsr    r
)r rr    r s    rWrzStataNonCatValueLabel.__init__*sP€ð Ð/Ñ /ÜÐDÓEÐ EàˆŒ Ø!ˆŒÜ"Ø × Ñ Ó  ¡nô
ˆÔð     ×"Ñ"Õ$ržNr1)rrr    údict[float, str]r r2rŠr3)r6r7r8r9rr:ržrWr<r<s7„ñ ð"1:ð    %àð%ð'ð%ð.ð    %ð
 
ô %ržr<cóÈ—eZdZUdZiZded<dZded<eD])Zdee<edd    «D]Z    de
d
e    z«zee    ez<ŒŒ+d Z d ed <e jdd«dZded<ed    «D]uZ    e jde «dZdee<e    dkDreexxe
d
e    z«z cc<e jde j de««dezZe j de«Z ŒwdZd ed<e jdd«dZed    «D]uZ    e jde«dZdee<e    dkDreexxe
d
e    z«z cc<e jde j de««dezZe j de«ZŒwddde jde «de jde«ddœZded<d&d„Zed'd„«Zed(d „«Zd'd!„Zd'd"„Zd)d#„Zed*d$„«Zy%)+ría”
    An observation's missing value.
 
    Parameters
    ----------
    value : {int, float}
        The Stata missing value code
 
    Notes
    -----
    More information: <https://www.stata.com/help.cgi?missing>
 
    Integer missing values make the code '.', '.a', ..., '.z' to the ranges
    101 ... 127 (for int8), 32741 ... 32767  (for int16) and 2147483621 ...
    2147483647 (for int32).  Missing values for floating point data types are
    more complex but the pattern is simple to discern from the following table.
 
    np.float32 missing values (float in Stata)
    0000007f    .
    0008007f    .a
    0010007f    .b
    ...
    00c0007f    .x
    00c8007f    .y
    00d0007f    .z
 
    np.float64 missing values (double in Stata)
    000000000000e07f    .
    000000000001e07f    .a
    000000000002e07f    .b
    ...
    000000000018e07f    .x
    000000000019e07f    .y
    00000000001ae07f    .z
    rBÚMISSING_VALUES)éeéåéåÿÿr Úbasesú.rBéé`ór5Ú float32_basez<isrr`Ú increment_32rÑrÁÚ float64_baseÚqsrÀrErFrG)rßrárãrërÄrîcóp—||_|dkr t|«n
t|«}|j||_y)Nl)Ú_valuer`r°rDÚ_str©r ras  rWrzStataMissingValue.__init__…s1€ØˆŒ à# jÒ0”E”
´e¸E³lˆØ×'Ñ'¨Ñ.ˆ    ržcó—|jS)z²
        The Stata representation of the missing value: '.', '.a'..'.z'
 
        Returns
        -------
        str
            The representation of the missing value.
        )rS©r s rWÚstringzStataMissingValue.string‹s€ðy‰yÐržcó—|jS)z³
        The binary representation of the missing value.
 
        Returns
        -------
        {int, float}
            The binary representation of the missing value.
        )rRrVs rWrazStataMissingValue.value—s€ð{‰{Ðržcó—|jS©N)rWrVs rWÚ__str__zStataMissingValue.__str__£s €Ø{‰{Ðržcó$—t|«›d|›dS)Nú(rÝ)ÚtyperVs rWÚ__repr__zStataMissingValue.__repr__¦s€Üt“*˜Q˜t˜f AÐ&Ð&ržcó˜—t|t|««xr4|j|jk(xr|j|jk(SrZ)rår^rWra)r Úothers  rWÚ__eq__zStataMissingValue.__eq__©s?€ä uœd 4›jÓ )ò *Ø— ‘ ˜uŸ|™|Ñ+ò *à—
‘
˜eŸk™kÑ)ð    
ržcóÚ—|jtjur|jd}|S|jtjur|jd}|S|jtj
ur|jd}|S|jtj ur|jd}|S|jtjur|jd}|Std«‚)NrßrárãrërÄzUnsupported dtype)    r^r‹rßrîrárãrërÄrf)Úclsrvras   rWÚget_base_missing_valuez(StataMissingValue.get_base_missing_value°sۀà :‰:œŸ™Ñ  Ø×+Ñ+¨FÑ3ˆEðˆ ðZ‰Zœ2Ÿ8™8Ñ #Ø×+Ñ+¨GÑ4ˆEðˆ ðZ‰Zœ2Ÿ8™8Ñ #Ø×+Ñ+¨GÑ4ˆEðˆ ð Z‰Zœ2Ÿ:™:Ñ %Ø×+Ñ+¨IÑ6ˆEð
ˆ ð    Z‰Zœ2Ÿ:™:Ñ %Ø×+Ñ+¨IÑ6ˆEðˆ ôÐ0Ó1Ð 1ržN)rar°rŠr3©rŠr)rŠr°)rar”rŠrÃ)rvúnp.dtyperŠr°)r6r7r8r9rDÚ__annotations__rHÚbr(r ÚchrrMrÅrÆrNr?r&Ú    int_valuerOÚ increment_64rîrÚpropertyrWrar[r_rbÚ classmethodrer:ržrWrírí;se…ñ"ðJ(*€NÐ$Ó)Ø+€Eˆ5Ó+Ø ò6ˆàˆqÑِq˜"“ò    6ˆAØ$'©#¨b°1©f«+Ñ$5ˆN˜1˜q™5Ò !ñ    6ð6ð .€L%Ó-Ø%˜Ÿ ™  dÐ,?Ó@ÀÑC€L#ÓCÙ 2‹Yò4ˆØˆfm‰m˜D ,Ó/°Ñ2ˆØ!ˆsÑØ ˆqŠ5Ø ˜3Ó ¡3 r¨A¡v£;Ñ .Ó Ø!F—M‘M $¨ ¨¯ © °D¸#Ó(>Ó?ÀÑBÀ\ÑQˆ    Ø"v—{‘{ 4¨Ó3‰ ð 4ð>€L%Ó=Ø 6—=‘= Ð&IÓJÈ1ÑM€LÙ 2‹Yò3ˆØˆfm‰m˜D ,Ó/°Ñ2ˆØ!ˆsÑØ ˆqŠ5Ø ˜3Ó ¡3 r¨A¡v£;Ñ .Ó Ø!F—M‘M # { v§{¡{°4¸Ó'=Ó>¸qÑAÀLÑPˆ    Ø"v—{‘{ 3¨    Ó2‰ ð 3ðØØØ 6—=‘=  |Ó4°QÑ7Ø 6—=‘=  |Ó4°QÑ7ñ "Иóó/ð ò    óð    ðò    óð    óó'ó
ðò óñ ržrícó—eZdZdd„Zy)Ú StataParserc ó¨—ttdd«Dcgc]}|tjd|›«f‘Œc}dtjtj«fdtjtj
«fdtjtj «fdtjtj«fdtjtj«fgz«|_    tjtj«tjtj«tjtj«tjtj «tjtj
«tjtj«d    œ|_ tttd««td
«z«|_d d d dddd    œ|_d}d}d}d}dddtjt!j"d|«d«tjt!j"d|«d«ftjt!j"d|«d«tjt!j"d|«d«fdœ|_ddddddœ|_dddtjt!j"dd «d«tjt!j"dd!«d«dœ|_d"d#d$d%d&d'd(œ|_hd)£|_ycc}w)*NrBéõÚSéûéüéýéþéÿ)é€éöÿé÷ÿéøÿéùÿéúÿÚbhlfdÚQr[rªÚlÚhrisÿÿÿþrÒsÿÿÿÿÿÿïÿrÓ)rØrH)rÚrÙ)rÜrÛrÑrrÀ)rir‚rrªr[)ébéiéléfrHrErFrGrLrÁÚi1Úi2Úi4Úf4Úf8Úu8)rir‚rrªr[r€><ústr#Ú_NÚ_bÚ_nÚdoÚifÚinÚ_piÚ_rcÚ_seÚendÚforr`ÚNULLÚ_allÚbyteÚcaseÚelseÚenumÚgotoÚlongÚquadÚstrLÚwithÚ_coefÚ_consÚ_predÚ_skiprÚbreakÚcatchÚclassÚconstr°ÚlocalÚshortÚusingÚdeleteÚdoubleÚexportÚfriendÚglobalÚinlineÚpragmaÚbooleanÚcomplexÚdefaultÚtypedefÚvirtualÚcontinueÚdelegateÚexplicitÚexternalÚfunctionÚtypenameÚ    aggregateÚ    colvectorÚ    eltypedefÚ    protectedÚ    rowvector)Údictr(r‹rvrßrárãrërÄÚ    DTYPE_MAPràÚ DTYPE_MAP_XMLÚlistÚtupleÚTYPE_MAPÚ TYPE_MAP_XMLrÅrÆÚ VALID_RANGEÚOLD_TYPE_MAPPINGrDÚNUMPY_TYPE_MAPÚRESERVED_WORDS)r r Ú float32_minróÚ float64_minrôs      rWrzStataParser.__init__Âs•€ô Ü-2°1°c«]Ö ;¨ˆa”—‘˜A˜a˜S˜'Ó"Ò #Ò ;à”b—h‘hœrŸw™wÓ'Ð(Ø”b—h‘hœrŸx™xÓ(Ð)Ø”b—h‘hœrŸx™xÓ(Ð)Ø”b—h‘hœrŸz™zÓ*Ð+Ø”b—h‘hœrŸz™zÓ*Ð+ð ñ ó    
ˆŒô—8‘8œBŸH™HÓ%Ü—8‘8œBŸJ™JÓ'Ü—8‘8œBŸJ™JÓ'Ü—8‘8œBŸH™HÓ%Ü—8‘8œBŸH™HÓ%Ü—8‘8œBŸG™GÓ$ñ 3
ˆÔôœU¤5¨£:Ó.´°w³Ñ?Ó@ˆŒ ðØØØØØñ
ˆÔð*ˆ Ø)ˆ Ø9ˆ Ø9ˆ àØ Ø*ä—
‘
œ6Ÿ=™=¨¨{Ó;¸AÑ>Ó?Ü—
‘
œ6Ÿ=™=¨¨{Ó;¸AÑ>Ó?ðô
—
‘
œ6Ÿ=™=¨¨{Ó;¸AÑ>Ó?Ü—
‘
œ6Ÿ=™=¨¨{Ó;¸AÑ>Ó?ðñ 
ˆÔðØØØØñ !
ˆÔðØØÜ—‘œFŸM™M¨$Ð0CÓDÀQÑGÓHÜ—‘Ü— ‘ ˜dÐ$GÓHÈÑKóñ 
ˆÔðØØØØØñ 
ˆÔò=
ˆÕùò[ <s”!MNr4)r6r7r8rr:ržrWrprpÁs„ô[
ržrpcóX‡—eZdZUeZded<                                        d/                                                                                            d0ˆfd„ Zd1d„Zd1d„Zd2d„Z                                    d3d„Z
d1d„Z d1d    „Z d4d
„Z d4d „Zd4d „Zd4d „Zd4d„Zd4d„Zd4d„Zd4d„Zd5d„Zd6d„Zd1d„Zd1d„Z                d7d„Zd8d„Zd8d„Zd8d„Zd8d„Zd4d„Zd9d„Zd9d„Z d4d„Z!d:d„Z"d;d „Z#d<d!„Z$d1d"„Z%d1d#„Z&d=d$„Z'd>d?d%„Z(e)e*«                                d@                                                                    dAd&„«Z+dBd'„Z,dCd(„Z-dDd)„Z.                                        dEd*„Z/e0d9d+„«Z1e0d9d,„«Z2dFd-„Z3dGd.„Z4ˆxZ5S)HÚ StataReaderz    IO[bytes]Ú _path_or_bufc óú•—t‰ |«||_||_||_||_||_||_||_||_    |
|_
| |_ d|_ |    |_ d|_d|_|j€d|_ n t!|    t"«r|    dkr t%d«‚d|_d|_d|_d|_d|_d|_d|_d|_t7t8j:«|_y)NrÐFrBrz.chunksize must be a positive integer when set.)ÚsuperrÚ_convert_datesÚ_convert_categoricalsÚ
_index_colÚ_convert_missingÚ_preserve_dtypesÚ_columnsÚ_order_categoricalsÚ_original_path_or_bufÚ _compressionÚ_storage_optionsrÚ
_chunksizeÚ_using_iteratorÚ_enteredrår`rfÚ _close_fileÚ_missing_valuesÚ_can_read_value_labelsÚ_column_selector_setÚ_value_labels_readÚ
_data_readÚ_dtypeÚ _lines_readÚ_set_endiannessÚsysr*Ú_native_byteorder) r Ú path_or_bufÚ convert_datesÚconvert_categoricalsÚ    index_colÚconvert_missingÚpreserve_dtypesÚcolumnsÚorder_categoricalsÚ    chunksizeÚ compressionr7Ú    __class__s             €rWrzStataReader.__init__esûø€ô    ‰ÑÔð,ˆÔØ%9ˆÔ"Ø#ˆŒØ /ˆÔØ /ˆÔ؈Œ Ø#5ˆÔ Ø%0ˆÔ"Ø'ˆÔØ /ˆÔ؈ŒØ#ˆŒØ$ˆÔ؈Œ Ø ?‰?Ð "؈DOܘI¤sÔ+¨y¸Aª~ÜÐMÓNÐ Nð7;ˆÔØ$ˆÔØ&+ˆÔ#Ø$)ˆÔ!Ø"'ˆÔ؈ŒØ'+ˆŒ ؈Ôä!0´·±Ó!?ˆÕržcó>—t|d«s|j«yy)zK
        Ensure the file has been opened and its header data read.
        rÕN)ÚhasattrÚ
_open_filerVs rWÚ _ensure_openzStataReader._ensure_open–s€ôt˜^Ô,Ø O‰OÕ ð-ržcóZ—|js$tjdtt    «¬«t |j d|jd|j¬«}t|jd«r=|jj«r#|j|_ |j|_nN|5t|jj!««|_ ddd«|jj|_|j#«|j%«y#1swYŒExYw)z^
        Open the file (with compression options, etc.), and read header information.
        zStataReader is being used without using a context manager. Using StataReader as a context manager is the only supported method.rsÚrbF)r7Úis_textrùÚseekableN)rär’r“ÚResourceWarningrr)rßráràrüÚhandlerrÕÚcloserårÚreadÚ _read_headerÚ _setup_dtype)r Úhandless  rWrýzStataReader._open_filesî€ð}Š}Ü M‰MðWäÜ+Ó-õ     ô Ø × &Ñ &Ø Ø ×1Ñ1ØØ×)Ñ)ô 
ˆô 7—>‘> :Ô .°7·>±>×3JÑ3JÔ3Là '§¡ˆDÔ Ø&Ÿ}™}ˆDÕ ðñ CÜ$+¨G¯N©N×,?Ñ,?Ó,AÓ$BÔ!÷ Cà#×0Ñ0×6Ñ6ˆDÔ à ×ÑÔØ ×ÑÕ÷  Cð Cús Â4)D!Ä!D*có—d|_|S)zenter context managerT)rärVs rWÚ    __enter__zStataReader.__enter__¼s€àˆŒ ؈ ržcó>—|jr|j«yyrZ)rå)r Úexc_typeÚ    exc_valueÚ    tracebacks    rWÚ__exit__zStataReader.__exit__Ás€ð × Ò Ø × Ñ Õ ð ržcó†—tjdtt«¬«|jr|j    «yy)zØClose the handle if its open.
 
        .. deprecated: 2.0.0
 
           The close method is not part of the public API.
           The only supported way to use StataReader is to use it as a context manager.
        z¹The StataReader.close() method is not part of the public API and will be removed in a future version without notice. Using StataReader as a context manager is the only supported method.rsN)r’r“Ú FutureWarningrrårVs rWrzStataReader.closeÊs=€ô     ‰ ð Sô Ü'Ó)õ     
ð × Ò Ø × Ñ Õ ð ržcó@—|jdkrd|_yd|_y)zC
        Set string encoding which depends on file version
        évrrN)Ú_format_versionrrVs rWÚ _set_encodingzStataReader._set_encodingÜs €ð × Ñ  #Ò %Ø&ˆDNà$ˆDNržcóf—tjd|jjd««dS)NrirBr©rÅrÆrÕrrVs rWÚ
_read_int8zStataReader._read_int8åó)€Ü}‰}˜S $×"3Ñ"3×"8Ñ"8¸Ó";Ó<¸QÑ?Ð?ržcóf—tjd|jjd««dS)NÚBrBrrrVs rWÚ _read_uint8zStataReader._read_uint8èrržcó€—tj|j›d|jj    d««dS)NÚHr…r©rÅrÆÚ
_byteorderrÕrrVs rWÚ _read_uint16zStataReader._read_uint16ëó5€Ü}‰} §¡Ð0°Ð2°D×4EÑ4E×4JÑ4JÈ1Ó4MÓNÈqÑQÐQržcó€—tj|j›d|jj    d««dS)NÚIrrr rVs rWÚ _read_uint32zStataReader._read_uint32îr#ržcó€—tj|j›d|jj    d««dS)Nr€rrr rVs rWÚ _read_uint64zStataReader._read_uint64ñr#ržcó€—tj|j›d|jj    d««dS)Nr‚r…rr rVs rWÚ _read_int16zStataReader._read_int16ôr#ržcó€—tj|j›d|jj    d««dS)Nr rrr rVs rWÚ _read_int32zStataReader._read_int32÷r#ržcó€—tj|j›d|jj    d««dS)NrPrrr rVs rWÚ _read_int64zStataReader._read_int64úr#ržcóf—tjd|jjd««dS)Nr$rBrrrVs rWÚ _read_char8zStataReader._read_char8ýrržcóˆ—tj|j›d|z›|jj    d|z««S)Nr‚r…r )r Úcounts  rWÚ_read_int16_countzStataReader._read_int16_counts@€Ü}‰}؏‰Ð  e¡ ˜}Ð -Ø × Ñ × "Ñ " 1 u¡9Ó -ó
ð    
ržcór—|j«}|dk(r|j«y|j|«y)Nó<)r0Ú_read_new_headerÚ_read_old_header)r Ú
first_chars  rWrzStataReader._read_headers2€Ø×%Ñ%Ó'ˆ
Ø ˜Ò Ø × !Ñ !Õ #à × !Ñ ! *Õ -ržcó”—|jjd«t|jjd««|_|jdvr)t    t
j |j¬««‚|j«|jjd«|jjd«dk(rdnd|_|jjd    «|jd
kr|j«n|j«|_ |jjd «|j«|_ |jjd «|j«|_|jjd «|j!«|_|jjd«|jjd«|jjd«|j%«dz|_|j%«dz|_|j%«dz|_|j%«dz|_|j%«d z|_|j1«|_|jjd«|j%«dz|_|j%«d z|_|j%«dz|_|j;|j&«\|_|_|jjA|j(«|jC«|_"|jjA|j*«|jG|jdz«dd|_$|jjA|j,«|jK«|_&|jjA|j.«|jO«|_(|jjA|j2«|jS«|_*y)NrJr‚©éuréw©ÚversionésMSFú>ú<érr{é ééréé
é    r†érBéÿÿÿÿ)+rÕrr`rrfÚ_version_errorrJrr!r"r&Ú_nvarÚ    _get_nobsÚ_nobsÚ_get_data_labelÚ _data_labelÚ_get_time_stampÚ _time_stampr.Ú_seek_vartypesÚ_seek_varnamesÚ_seek_sortlistÚ _seek_formatsÚ_seek_value_label_namesÚ_get_seek_variable_labelsÚ_seek_variable_labelsÚ_data_locationÚ _seek_strlsÚ_seek_value_labelsÚ _get_dtypesÚ_typlistÚ    _dtyplistÚseekÚ _get_varlistÚ_varlistr3Ú_srtlistÚ _get_fmtlistÚ_fmtlistÚ _get_lbllistÚ_lbllistÚ_get_variable_labelsÚ_variable_labelsrVs rWr6zStataReader._read_new_header se€à ×Ñ×јrÔ"Ü" 4×#4Ñ#4×#9Ñ#9¸!Ó#<Ó=ˆÔØ × Ñ  Ñ 6Üœ^×2Ñ2¸4×;OÑ;OÐ2ÓPÓQÐ QØ ×ÑÔØ ×Ñ×јrÔ"Ø!%×!2Ñ!2×!7Ñ!7¸Ó!:¸fÒ!D™#È#ˆŒØ ×Ñ×јrÔ"à#'×#7Ñ#7¸3Ò#>ˆD× Ñ Ô ÀD×DUÑDUÓDWð     Œ
ð     ×Ñ×јqÔ!à—^‘^Ó%ˆŒ
Ø ×Ñ×јrÔ"Ø×/Ñ/Ó1ˆÔØ ×Ñ×јrÔ"Ø×/Ñ/Ó1ˆÔØ ×Ñ×јrÔ"Ø ×Ñ×јqÔ!Ø ×Ñ×јqÔ!à"×.Ñ.Ó0°2Ñ5ˆÔØ"×.Ñ.Ó0°2Ñ5ˆÔØ"×.Ñ.Ó0°2Ñ5ˆÔØ!×-Ñ-Ó/°!Ñ3ˆÔØ'+×'7Ñ'7Ó'9¸BÑ'>ˆÔ$ð&*×%CÑ%CÓ%EˆÔ"à ×Ñ×јqÔ!Ø"×.Ñ.Ó0°1Ñ4ˆÔØ×+Ñ+Ó-°Ñ1ˆÔØ"&×"2Ñ"2Ó"4°rÑ"9ˆÔà(,×(8Ñ(8¸×9LÑ9LÓ(MÑ%ˆŒ t”~à ×Ñ×јt×2Ñ2Ô3Ø×)Ñ)Ó+ˆŒ à ×Ñ×јt×2Ñ2Ô3Ø×.Ñ.¨t¯z©z¸A©~Ó>¸sÀÐCˆŒ à ×Ñ×јt×1Ñ1Ô2Ø×)Ñ)Ó+ˆŒ à ×Ñ×јt×;Ñ;Ô<Ø×)Ñ)Ó+ˆŒ à ×Ñ×јt×9Ñ9Ô:Ø $× 9Ñ 9Ó ;ˆÕržcóº—|jj|«g}g}t|j«D]€}|j    «}|dkr,|j |«|j t |««ŒD    |j |j|«|j |j|«Œ‚||fS#t$r}td|›d«|‚d}~wwxYw)Néýúcannot convert stata types [ú]) rÕr`r(rLr"rrrÌrÈÚKeyErrorrf)r Ú seek_vartypesÚtyplistÚdtyplistÚ_ÚtypÚerrs       rWr]zStataReader._get_dtypesEsڀð     ×Ñ×ј}Ô-؈؈ܐt—z‘zÓ"ò
    UˆAØ×#Ñ#Ó%ˆCؐdŠ{Ø—‘˜sÔ#Ø—‘¤ C£Õ)ðUØ—N‘N 4×#4Ñ#4°SÑ#9Ô:Ø—O‘O D×$6Ñ$6°sÑ$;Õ<ð
    Uð˜Ð Ð øô òUÜ$Ð'CÀCÀ5ÈÐ%JÓKÐQTÐTûðUúsÁ:<B<Â<    CÃCÃCcóȗ|jdkrdnd}t|j«Dcgc],}|j|jj |««‘Œ.c}Scc}w)Nré!適rr(rLÚ_decoderÕr©r rirrs   rWrazStataReader._get_varlistYsM€à×&Ñ&¨Ò,‰B°#ˆÜAFÀtÇzÁzÓARÖS¸A— ‘ ˜T×.Ñ.×3Ñ3°AÓ6Õ7ÒSÐSùÒSs«1Acó—|jdk\rd}n&|jdkDrd}n|jdkDrd}nd}t|j«Dcgc],}|j|jj |««‘Œ.c}Scc}w)Nré9éqé1éhr~r{rxrzs   rWrdzStataReader._get_fmtlist_sw€Ø × Ñ  3Ò &؉AØ × !Ñ ! CÒ '؉AØ × !Ñ ! CÒ '؉AàˆAäAFÀtÇzÁzÓARÖS¸A— ‘ ˜T×.Ñ.×3Ñ3°AÓ6Õ7ÒSÐSùÒSsÁ1Bcóî—|jdk\rd}n|jdkDrd}nd}t|j«Dcgc],}|j|jj |««‘Œ.c}Scc}w)Nrrwr…rvrHrxrzs   rWrfzStataReader._get_lbllistlsd€Ø × Ñ  3Ò &؉AØ × !Ñ ! CÒ '؉AàˆAÜAFÀtÇzÁzÓARÖS¸A— ‘ ˜T×.Ñ.×3Ñ3°AÓ6Õ7ÒSÐSùÒSs¾1A2có$—|jdk\rLt|j«Dcgc],}|j|jj d««‘Œ.}}|S|jdkDrLt|j«Dcgc],}|j|jj d««‘Œ.}}|St|j«Dcgc],}|j|jj d««‘Œ.}}|Scc}wcc}wcc}w)NriAr„éQr!rx)r rrÚvlblists   rWrhz StataReader._get_variable_labelsusÿ€Ø × Ñ  3Ò &äCHÈÏÉÓCTöØ>?— ‘ ˜T×.Ñ.×3Ñ3°CÓ8Õ9ðˆGððˆð× !Ñ ! CÒ 'äBGÈÏ
É
ÓBSöØ=>— ‘ ˜T×.Ñ.×3Ñ3°BÓ7Õ8ðˆGððˆôCHÈÏ
É
ÓBSöØ=>— ‘ ˜T×.Ñ.×3Ñ3°BÓ7Õ8ðˆGððˆùòùòùòs§1DÂ1DÃ1D có`—|jdk\r|j«S|j«S)Nr)rr(r&rVs rWrMzStataReader._get_nobs„s.€Ø × Ñ  3Ò &Ø×$Ñ$Ó&Ð &à×$Ñ$Ó&Ð &ržcóì—|jdk\r:|j«}|j|jj    |««S|jdk(r:|j «}|j|jj    |««S|jdkDr*|j|jj    d««S|j|jj    d««S)Nrr;r„r‚r!)rr"ryrÕrr©r Ústrlens  rWrOzStataReader._get_data_labelŠsÆ€Ø × Ñ  3Ò &Ø×&Ñ&Ó(ˆFØ—<‘< × 1Ñ 1× 6Ñ 6°vÓ >Ó?Ð ?Ø × !Ñ ! SÒ (Ø—_‘_Ó&ˆFØ—<‘< × 1Ñ 1× 6Ñ 6°vÓ >Ó?Ð ?Ø × !Ñ ! CÒ 'Ø—<‘< × 1Ñ 1× 6Ñ 6°rÓ :Ó;Ð ;à—<‘< × 1Ñ 1× 6Ñ 6°rÓ :Ó;Ð ;ržcó¬—|jdk\r:|j«}|jj|«j    d«S|jdk(r:|j«}|j |jj|««S|jdkDr*|j |jjd««St «‚)Nrrr;ré)rrrÕrÚdecoderyrfr†s  rWrQzStataReader._get_time_stamp–s®€Ø × Ñ  3Ò &Ø—_‘_Ó&ˆFØ×$Ñ$×)Ñ)¨&Ó1×8Ñ8¸ÓAÐ AØ × !Ñ ! SÒ (Ø—_‘_Ó&ˆFØ—<‘< × 1Ñ 1× 6Ñ 6°vÓ >Ó?Ð ?Ø × !Ñ ! CÒ 'Ø—<‘< × 1Ñ 1× 6Ñ 6°rÓ :Ó;Ð ;ä“,Ð ržcóò—|jdk(r=|jjd«|jd|jzzdzdzS|jdk\r|j «dzSt «‚)Nr;rrvéér)rrÕrrWrLr.rfrVs rWrXz%StataReader._get_seek_variable_labels¢ss€Ø × Ñ  3Ò &Ø × Ñ × "Ñ " 1Ô %ð×/Ñ/°2¸¿
¹
±?ÑCÀbÑHÈ2ÑMÐ MØ × !Ñ ! SÒ (Ø×#Ñ#Ó%¨Ñ*Ð *ä“,Ð ržc    óü—t|d«|_|jdvr)ttj    |j¬««‚|j «|j «dk(rdnd|_|j «|_|jjd«|j«|_ |j«|_|j«|_|j#«|_|jdkDr<|jj|j«Dcgc] }t|«‘Œ}}n”|jj|j«}t'j(|t&j*¬«}g}|D]C}||j,vr|j/|j,|«Œ0|j/|d    z
«ŒE    |Dcgc]}|j0|‘Œc}|_    |Dcgc]}|j8|‘Œc}|_|jdkDrQt=|j«D cgc],} |j?|jjd««‘Œ.c} |_ nPt=|j«D cgc],} |j?|jjd««‘Œ.c} |_ |jC|jdz«dd|_"|jG«|_$|jK«|_&|jO«|_(|jdkDrc    |j «} |jdkDr|jS«}n|jU«}| dk(rn|jj|«Œb|jjW«|_,ycc}wcc}w#t$rC}d
j5|D    cgc] }    t7|    «‘Œncc}    wc}    «}
td |
›d «|‚d}~wwxYwcc}w#t$rC}d
j5|D    cgc] }    t7|    «‘Œncc}    wc}    «} td | ›d «|‚d}~wwxYwcc} wcc} w)Nr)rr„r…éor}érésr=rBr@rAr…ruéú,rlrmzcannot convert stata dtypes [rvrHrJr)-r`rrfrKrJrrr!Ú    _filetyperÕrr"rLrMrNrOrPrQrRr‹Ú
frombufferràrÎrrËr^ÚjoinrrÇr_r(ryrbr3rcrdrerfrgrhrir,r*ÚtellrZ)r r8r$rpÚbufÚtyplistbÚtprsrtr¨Ú invalid_typesÚinvalid_dtypesrrÚ    data_typeÚdata_lens               rWr7zStataReader._read_old_header®sÌ€Ü" :¨a¡=Ó1ˆÔØ × Ñ Ð'JÑ JÜœ^×2Ñ2¸4×;OÑ;OÐ2ÓPÓQÐ QØ ×ÑÔØ!%§¡Ó!2°cÒ!9™#¸sˆŒØŸ™Ó*ˆŒØ ×Ñ×јqÔ!à×&Ñ&Ó(ˆŒ
Ø—^‘^Ó%ˆŒ
à×/Ñ/Ó1ˆÔà×/Ñ/Ó1ˆÔð × Ñ  #Ò %Ø'+×'8Ñ'8×'=Ñ'=¸d¿j¹jÓ'IÖJ !”s˜1•vÐJˆGÑJà×#Ñ#×(Ñ(¨¯©Ó4ˆCÜ—}‘} S´·±Ô9ˆH؈GØò -Ø˜×.Ñ.Ñ.Ø—N‘N 4×#8Ñ#8¸Ñ#<Õ=à—N‘N 2¨¡8Õ,ð     -ð     WØ;BÖC°C˜TŸ]™]¨3Ó/ÒCˆDŒMð    YØ=DÖE°c˜dŸn™n¨SÓ1ÒEˆDŒNð
× Ñ  #Ò %äBGÈÏ
É
ÓBSöØ=>— ‘ ˜T×.Ñ.×3Ñ3°BÓ7Õ8òˆDMô
BGÀtÇzÁzÓARöØ<=— ‘ ˜T×.Ñ.×3Ñ3°AÓ6Õ7òˆDŒMð×.Ñ.¨t¯z©z¸A©~Ó>¸sÀÐCˆŒ à×)Ñ)Ó+ˆŒ à×)Ñ)Ó+ˆŒ à $× 9Ñ 9Ó ;ˆÔð × Ñ  #Ò %ØØ ŸO™OÓ-    Ø×'Ñ'¨#Ò-Ø#×/Ñ/Ó1‘Hà#×/Ñ/Ó1HØ ’>ØØ×!Ñ!×&Ñ& xÔ0ðð#×/Ñ/×4Ñ4Ó6ˆÕùòoKùòDøÜò    WØŸH™H°gÖ%>°¤c¨!¥fÑ%>ùÔ%>Ó?ˆMÜÐ;¸M¸?È!ÐLÓMÐSVÐ Vûð    WüòFøÜò    YØ ŸX™X°wÖ&?°!¤s¨1¥vÑ&?ùÔ&?Ó@ˆNÜÐ<¸^Ð<LÈAÐNÓOÐUXÐ Xûð    Yüò
ùòs~Ä1OÇOÇO Ç5OÇ>P%ÈP ÈP%É1Q4Ê1Q9Ï OÏ    PÏPÏ)O<
Ï;PÐPРP%Ð%    Q1Ð.Q,Ð=Q
ÑQ,Ñ,Q1cóŽ—|j |jSg}t|j«D]n\}}||jvrBt    t
|«}|j d|›|j›|j|›f«ŒV|j d|›d|›f«Œptj|«|_|jS)z"Map between numpy and state dtypesÚsrs)
rërr^rÏr rrr!r‹rv)r Údtypesr rss    rWrzStataReader._setup_dtypeùs»€à ;‰;Ð "Ø—;‘;Ð àˆÜ § ¡ Ó.ò    4‰FˆAˆsؐd×)Ñ)Ñ)Üœ3 “nØ— ‘   1 #˜w¨4¯?©?Ð*;¸D×<OÑ<OÐPSÑ<TÐ;UÐ(VÐWÕXà— ‘   1 #˜w¨!¨C¨5¨    Ð2Õ3ð     4ô —h‘h˜vÓ&ˆŒ à{‰{Ðržcó—|jd«d}    |j|j«S#t$rJ|j}d|›d}t    j
|t t«¬«|jd«cYSwxYw)Nrrz@
One or more strings in the dta file could not be decoded using zÍ, and
so the fallback encoding of latin-1 is being used.  This can happen when a file
has been incorrectly encoded by Stata or some other software. You should verify
the string values returned are correct.rsr)Ú    partitionrŠrÚUnicodeDecodeErrorr’r“ÚUnicodeWarningr)r r r Úmsgs    rWryzStataReader._decode    sŠ€à K‰K˜Ó ˜qÑ !ˆð    'Ø—8‘8˜DŸN™NÓ+Ð +øÜ!ò    'ð—~‘~ˆHð@Ø@H¸zðJ(ð+ˆCô
M‰MØÜÜ+Ó-õ ð
—8‘8˜IÓ&Ò &ð    'ús–1±ABÂBcó.—|j«|jry|jdkrd|_i|_y|jdk\r&|jj |j «nY|j€J‚|j|jjz}|jj |j|z«d|_i|_    |jdk\r'|jjd«dk(r        d|_y|jjd«}|s        d|_y|jdkr+|j|jjd««}n*|j|jjd««}|jjd    «|j«}|j«}tj|jjd|z«|j ›d
|¬ «}tj|jjd|z«|j ›d
|¬ «}tj"|«}||}||}|jj|«}    i|j|<t%|«D]>}
|
|d z
kr||
d zn|} |j|    ||
| «|j|||
<Œ@|jdk\r|jjd «Œ>)Nr…Tr;és</valrrvrwr‚r‰©rvr2rBr†)rþrérÚ_value_label_dictrÕr`r\rërNÚitemsizerZrryr&r‹r•r!Úargsortr() r r.ÚslengthrrÚtxtlenrrÚiirr r—s             rWÚ_read_value_labelszStataReader._read_value_labelssÔ€Ø ×ÑÔØ × "Ò "à Ø × Ñ  3Ò &à&*ˆDÔ #ØBDˆDÔ "Ø à × Ñ  3Ò &Ø × Ñ × "Ñ " 4×#:Ñ#:Õ ;à—;‘;Ð*Ð *Ð*Ø—Z‘Z $§+¡+×"6Ñ"6Ñ6ˆFØ × Ñ × "Ñ " 4×#6Ñ#6¸Ñ#?Ô @à"&ˆÔØ!#ˆÔàØ×#Ñ# sÒ*Ø×$Ñ$×)Ñ)¨!Ó,°Ò8Øð>#'ˆÕð;×'Ñ'×,Ñ,¨QÓ/ˆGÙØð6#'ˆÕð5×#Ñ# sÒ*ØŸ,™, t×'8Ñ'8×'=Ñ'=¸bÓ'AÓB‘àŸ,™, t×'8Ñ'8×'=Ñ'=¸cÓ'BÓCØ × Ñ × "Ñ " 1Ô %à×!Ñ!Ó#ˆAØ×&Ñ&Ó(ˆFÜ—-‘-Ø×!Ñ!×&Ñ& q¨1¡uÓ-¸¿¹Ð7HÈÐ5KÐSTôˆCô—-‘-Ø×!Ñ!×&Ñ& q¨1¡uÓ-¸¿¹Ð7HÈÐ5KÐSTôˆCô—‘˜C“ˆBؐb‘'ˆCؐb‘'ˆCØ×#Ñ#×(Ñ(¨Ó0ˆCØ.0ˆD× "Ñ " 7Ñ +ܘ1“Xò Ø$%¨¨A©¢Ic˜!˜a™%’j°6Ø:>¿,¹,ؘ˜A™ Ð%ó;×&Ñ& wÑ/°°A±Ò7ð ð
×#Ñ# sÒ*Ø×!Ñ!×&Ñ& qÔ)ñCržcóÌ—|jj|j«ddi|_    |jj    d«dk7ry|j
dk(r|j «}ns|jj    d«}|j
dk(rdnd}|jd    k(r|d
||d d|z
z}n|d
||d |zdz}tjd |«d
}|j«}|j«}|jj    |«}|d k(r|d
dj|j«}n t|«}||jt|«<Œ6)NÚ0rÐr‚sGSOr;r~rr…rArrr€é‚rJ)rÕr`r[ÚGSOrrr(r!rÅrÆrr&rŠrr)r Úv_or˜Úv_sizersÚlengthÚvaÚ
decoded_vas        rWÚ _read_strlszStataReader._read_strlsWsX€Ø ×Ñ×јt×/Ñ/Ô0à˜9ˆŒØØ× Ñ ×%Ñ% aÓ(¨FÒ2Øà×#Ñ# sÒ*Ø×'Ñ'Ó)‘à×'Ñ'×,Ñ,¨RÓ0à"×2Ñ2°cÒ9™¸qØ—?‘? cÒ)ؘa ˜-¨#¨a°2¸±;Ð*@Ñ@‘Cð˜a ˜-¨#¨q°6©z¨nÐ*=Ñ=CÜ—m‘m C¨Ó-¨aÑ0Ø×"Ñ"Ó$ˆCØ×&Ñ&Ó(ˆFØ×"Ñ"×'Ñ'¨Ó/ˆBؐcŠzØ  "˜XŸ_™_¨T¯^©^Ó<‘
ô! ›W
à!+ˆDH‰H”S˜“XÑ ñ3ržcóH—d|_|j|j¬«S)NT©Únrows)rãrrârVs rWÚ__next__zStataReader.__next__vs€Ø#ˆÔ؏y‰y˜tŸ™ˆyÓ/Ð/ržcóB—|€ |j}|j|¬«S)a
        Reads lines from Stata file and returns as dataframe
 
        Parameters
        ----------
        size : int, defaults to None
            Number of lines to read.  If None, reads whole file.
 
        Returns
        -------
        DataFrame
        r¼)râr)r Úsizes  rWÚ    get_chunkzStataReader.get_chunkzs#€ð ˆ<Ø—?‘?ˆD؏y‰y˜tˆyÓ$Ð$ržc        óì ‡—|j«|€ |j}|€ |j}|€ |j}|€ |j}|€ |j
}|€ |j }|€ |j}|€ |j}|jdk(r­|dk(r¨d|_    d|_
t|j¬«}    t|    j«D]V\}
} |j|
} t!| t"j$«sŒ0| j&dk7sŒ@|    | j)| «|    | <ŒX||j+|    |«}    |    S|j,dk\r#|j.sd|_    |j1«|j2€J‚|j2} |j|j4z
| j6z}|| j6z}t9||«}|dkr|r|j;«t<‚|j4| j6z}|j>jA|jB|z«t9||j|j4z
«}t#jD|j>jG|«| |¬«}|xj4|z c_|j4|jk(rd|_    d|_
|jH|jJk7r7|jM«jO|j$jQ««}|r|j;«tS|«dk(rt|j¬«}    n/tjT|«}    tW|j«|    _|€(tY|j4|z
|j4«|    _-||j+|    |«}    t]|    |j^«D]7\} }t!|t`«sŒ|    | jc|jd«|    | <Œ9|jg|    «}    t|j«D
cgc]
\}
}|€Œ    |
‘Œ }}
}t#j$th«}|D]e}|    jjdd…|fj$} | ||j|fvsŒ4|    jm||    jjdd…|fj)| ««Œg|jo|    |«}    |rct|jp«D]K\}
Štsˆfd„ttD««sŒ|    jm|
tw|    jjdd…|
f‰««ŒM|r7|j,dkDr(|jy|    |jz|j||«}    |s^g}d    }|    D]4} |    | j$} | t#j$t"j~«t#j$t"j€«fvr&t#j$t"j‚«} d}n| t#j$t"j„«t#j$t"j†«t#j$t"jˆ«fvr%t#j$t"jŠ«} d}|j| |    | j)| «f«Œ7|rtjŽt‘|««}    | |    j“|    j•|««}    |    Scc}}
w)
NrT)rörsr;r©c3ó@•K—|]}‰j|«–—Œy­wrZ)r‘)Ú.0Údate_fmtr—s  €rWú    <genexpr>z#StataReader.read.<locals>.<genexpr>søèø€ÒN°Hs—~‘~ h×/ÑNùsƒr…F)KrþrØrÙrÛrÜrÝrÞrÚrNrçrêr$rbrrör_rår‹rvÚcharrÚ_do_select_columnsrrérºrërìr«rNr°Ú StopIterationrÕr`rZr•rr!rïÚbyteswapr³Ú newbyteorderrÚ from_recordsr%r&rKrPr^r`r¶ryÚ _insert_strlsr”ÚilocÚisetitemÚ_do_convert_missingrerÚ _date_formatsrÚ_do_convert_categoricalsrªrgÚfloat16rërÄrßrárãrrÚ    from_dictrÆÚ    set_indexÚpop)r r½rñròrórôrõrör÷rðr rõÚdtrvÚ max_read_lenÚread_lenr.Ú
read_linesÚraw_datarsÚdtypÚ valid_dtypesÚ object_typeÚidxÚ retyped_dataÚconvertr—s                          @rWrzStataReader.read‹sùø€ð     ×ÑÔð Ð  Ø ×/Ñ/ˆMØ Ð 'Ø#'×#=Ñ#=Ð  Ø Ð "Ø"×3Ñ3ˆOØ Ð "Ø"×3Ñ3ˆOØ ˆ?Ø—m‘mˆGØ Ð %Ø!%×!9Ñ!9Ð Ø Ð ØŸ™ˆIØ ˆ=Ø—J‘JˆEð
J‰J˜!ŠO ¨!¢Ø*.ˆDÔ 'Ø"ˆDŒOÜ T§]¡]Ô3ˆDä# D§L¡LÓ1ò 9‘3Ø—^‘^ AÑ&Ü˜b¤"§(¡(Õ+Ø—w‘w #“~Ø$(¨¡I×$4Ñ$4°RÓ$8˜˜Sš    ð     9ð
Ð"Ø×.Ñ.¨t°WÓ=ØˆKà ×  Ñ   CÒ '°$×2IÒ2IØ*.ˆDÔ 'Ø × Ñ Ô ð{‰{Ð&Ð&Ð&Ø— ‘ ˆØŸ
™
 T×%5Ñ%5Ñ5¸¿¹ÑGˆ ؘ5Ÿ>™>Ñ)ˆÜx Ó.ˆØ qŠ=ñ$Ø×'Ñ'Ô)ÜÐ Ø×!Ñ! E§N¡NÑ2ˆØ ×Ñ×јt×2Ñ2°VÑ;Ô<ܘ §
¡
¨T×-=Ñ-=Ñ =Ó>ˆ
Ü—=‘=Ø × Ñ × "Ñ " 8Ó ,°EÀô
ˆð     ×Ò˜JÑ&ÕØ × Ñ ˜tŸz™zÒ )Ø*.ˆDÔ 'Ø"ˆDŒOà ?‰?˜d×4Ñ4Ò 4Ø×(Ñ(Ó*×/Ñ/°·±×0KÑ0KÓ0MÓNˆHá Ø × #Ñ #Ô %ä ˆx‹=˜AÒ Ü T§]¡]Ô3‰Dä×)Ñ)¨(Ó3ˆDÜ  §¡Ó/ˆDŒLð Ð Ü#Ø× Ñ  :Ñ-¨t×/?Ñ/?óˆDŒJð Ð Ø×*Ñ*¨4°Ó9ˆDô˜D $§-¡-Ó0ò    :‰HˆCÜ˜#œsÕ#Ø  ™IŸO™O¨D¯L©LÓ9S’    ð    :ð×!Ñ! $Ó'ˆô*3°4·>±>Ó)B×W™g˜a ÀdÑFVšÐWˆ ÑWÜ—h‘hœvÓ&ˆ Øò    DˆCØ—I‘Iša ˜fÑ%×+Ñ+ˆEؘ[¨$¯.©.¸Ñ*=Ð>Ò>Ø— ‘ ˜c 4§9¡9ªQ°¨VÑ#4×#;Ñ#;¸EÓ#BÕCð    Dð
×'Ñ'¨¨oÓ>ˆá Ü# D§M¡MÓ2ò ‘3ÜÓNÄ ÔNÕNØ—M‘MØÔ>¸t¿y¹yÊÈAȹÐPSÓTõð ñ   D×$8Ñ$8¸3Ò$>Ø×0Ñ0ؐd×,Ñ,¨d¯m©mÐ=OóˆDò؈L؈GØó DØ˜S™    Ÿ™ØœRŸX™X¤b§j¡jÓ1´2·8±8¼B¿J¹JÓ3GÐHÑHÜŸH™H¤R§Z¡ZÓ0EØ"‘GØÜ—H‘HœRŸW™WÓ%Ü—H‘HœRŸX™XÓ&Ü—H‘HœRŸX™XÓ&ðñô
ŸH™H¤R§X¡XÓ.EØ"GØ×#Ñ# S¨$¨s©)×*:Ñ*:¸5Ó*AÐ$BÖCð DñÜ ×*Ñ*¬4° Ó+=Ó>à Ð  Ø—>‘> $§(¡(¨9Ó"5Ó6ˆDàˆ ùóWXs Ð&
[0Ð1[0cóð—i}tt|j««D]¥}|j|}||jvrŒ"t t |«}|j|\}}|jdd…|f}|j}    |    |k|    |kDz}
|
j«sŒ|rtjtj|
««d} tj||
d¬«\} } t|t¬«}t!| «D]'\}}t#|«}| | |k(}||j|<Œ)n‘|j$}|tj&tj(fvrtj(}t||¬«}|jj*ds|j-«}tj.|j|
<|||<Œ¨|r*|j1«D]\}}|j3||«Œ|S)NrT)Úreturn_inverseruÚ    WRITEABLE)r(rrör^rÍr rrÎrŽrr‹ÚnonzeroÚasarrayÚuniquer'r”rrírvrërÄÚflagsr¿ÚnanrArÏ)r rðrôÚ replacementsr r—ÚnminÚnmaxÚseriesÚsvalsÚmissingÚ missing_locÚumissingÚ umissing_locÚ replacementÚjÚumrÈrèrvrßras                      rWrÐzStataReader._do_convert_missing#sÐ€àˆ Ü”s˜4Ÿ<™<Ó(Ó)ó%    *ˆAØ—-‘- Ñ"ˆCؘ$×*Ñ*Ñ*Øä”s˜C“.ˆCØ×)Ñ)¨#Ñ.‰JˆD$Ø—Y‘Yšq !˜t‘_ˆFð—N‘NˆEؘt‘|¨°© Ñ5ˆGà—;‘;”=ØáÜ Ÿj™j¬¯©°GÓ)<Ó=¸aÑ@ Ü)+¯©°6¸'±?ÐSWÔ)XÑ&˜,Ü$ V´6Ô: Ü& xÓ0ò:‘EArÜ$5°bÓ$9Mà% l°aÑ&7Ñ8CØ,9K×$Ñ$ SÒ)ñ    :ð Ÿ ™ Ø¤§¡¬R¯Z©ZР8Ñ8ÜŸJ™JEÜ$ V°5Ô9 Ø"×*Ñ*×0Ñ0°Ò=ð#.×"2Ñ"2Ó"4Kô02¯v©v ×#Ñ# GÑ,Ø)ˆL˜‹OðK%    *ñL Ø*×0Ñ0Ó2ò *‘
UØ— ‘ ˜c 5Õ)ð *àˆ ržc ó0—t|d«rt|j«dk(r|St|j«D]R\}}|dk7rŒ |j ||j dd…|fDcgc]}|jt|«‘Œc}«ŒT|Scc}w)Nr´rr€)rürr´rr^rÏrÎr)r rðr rsÚks     rWrÍzStataReader._insert_strlsQs‡€Üt˜UÔ#¤s¨4¯8©8£}¸Ò'9؈KÜ § ¡ Ó.ò    J‰FˆAˆsؐcŠzØà M‰M˜!¸¿    ¹    Â!ÀQÀ$¹ÖH°1˜dŸh™h¤s¨1£vÓ.ÒHÕ Ið        Jð
ˆ ùòIsÁ)B có”—|js7t|«}t|«t|«k7r td«‚|j    |j
«}|r(dj t|««}td|›«‚g}g}g}g}    |D]•}
|j
j|
«} |j|j| «|j|j| «|j|j| «|    j|j| «Œ—||_
||_ ||_ |    |_ d|_||S)Nz"columns contains duplicate entriesz, z<The following columns were not found in the Stata data set: T)rèÚsetrrfÚ
differencerör–rÉÚget_locrr_r^rerg) r rðröÚ
column_setÚ    unmatchedÚjoinedrqrpÚfmtlistÚlbllistrõr s             rWrÈzStataReader._do_select_columns[s2€Ø×(Ó(ܘW›ˆJܐ:‹¤# g£,Ò.Ü Ð!EÓFÐFØ"×-Ñ-¨d¯l©lÓ;ˆIÙØŸ™¤4¨    £?Ó3Ü ð4Ø4:°8ð=óðð
ˆH؈G؈G؈GØò 1Ø—L‘L×(Ñ(¨Ó-Ø—‘ §¡¨qÑ 1Ô2Ø—‘˜tŸ}™}¨QÑ/Ô0Ø—‘˜tŸ}™}¨QÑ/Ô0Ø—‘˜tŸ}™}¨QÑ/Õ0ð  1ð&ˆDŒNØ#ˆDŒMØ#ˆDŒMØ#ˆDŒMØ(,ˆDÔ %àG‰}Ðržcó—|s|Sg}t||«D]c\}}||vrB||}tjt|j    «««}    ||}
|
j |    «} |j r| j«r|    } n6|j r(tjttt«¬«d} t|
| |¬«} | €>g}| jD],}||vr|j||«Œ|j|«Œ.nt|j!««}    | j#|«} t'| |j*d¬ «}|j||f«ŒN|j|||f«Œft/t1|«d¬«}|S#t$$rd}t'|d¬«j)«}t|j*|dkD«}ddj-|«z}d    |›d
|›d}t%|«|‚d}~wwxYw) zC
        Converts categorical columns to Categorical type.
        rsN)rÚorderedF)r¿rBzQ--------------------------------------------------------------------------------
r4z
Value labels for column a are not unique. These cannot be converted to
pandas categoricals.
 
Either read the file with `convert_categoricals` set to False or use the
low level interface in `StataReader` to separately read the values and the
value_labels.
 
The repeated labels are:
rÂ)rPr‹rrÉÚkeysÚisinrãÚallr’r“rÎrrrrrriÚrename_categoriesrfr'Ú value_countsrKr–r$rÆ)r rðÚvalue_label_dictrr÷Úcat_converted_datarõÚlabelrrÚcolumnÚ key_matchesÚinitial_categoriesÚcat_datarrrtÚvcÚ repeated_catsÚrepeatsr¦Ú
cat_seriess                      rWrÒz$StataReader._do_convert_categoricals{s€ñ ØˆKØÐܘd GÓ,ó=    <‰JˆCØÐ(Ò(à% eÑ,Ü—x‘x¤ R§W¡W£Y£Ó0Ø˜c™Ø$Ÿk™k¨$Ó/ Ø×'Ò'¨K¯O©OÔ,=Ø<@Ñ&ð ×+Ò+ä Ÿ ™ Ü:Ü8Ü'7Ó'9õð
*.Ð&Ü&ØÐ'9ÐCUôð&Ð-à!#JØ$,×$7Ñ$7ò8˜Ø# r™>Ø&×-Ñ-¨b°©lÕ;à&×-Ñ-¨hÕ7ñ    8ô"& b§i¡i£kÓ!2Jð3ð (×9Ñ9¸*ÓEHô&$ H°D·J±JÀUÔK
Ø"×)Ñ)¨3°
Ð*;Ö<à"×)Ñ)¨3°°S±    Ð*:Ö;ð{=    <ô|œÐ0Ó1¸Ô>ˆØˆ øô/"ò3Ü 
°Ô7×DÑDÓFBÜ$(¨¯©°"°q±&Ñ)9Ó$:MØ-°·    ±    ¸-Ó0HÑHGðؘðð    €    ð
ð
Cô% S›/¨sÐ2ûð!3úsÄ#FÆ    G?ÆAG:Ç:G?có:—|j«|jS)a
        Return data label of Stata file.
 
        Examples
        --------
        >>> df = pd.DataFrame([(1,)], columns=["variable"])
        >>> time_stamp = pd.Timestamp(2000, 2, 29, 14, 21)
        >>> data_label = "This is a data file."
        >>> path = "/My_path/filename.dta"
        >>> df.to_stata(path, time_stamp=time_stamp,    # doctest: +SKIP
        ...             data_label=data_label,  # doctest: +SKIP
        ...             version=None)  # doctest: +SKIP
        >>> with pd.io.stata.StataReader(path) as reader:  # doctest: +SKIP
        ...     print(reader.data_label)  # doctest: +SKIP
        This is a data file.
        )rþrPrVs rWÚ
data_labelzStataReader.data_labelÉs€ð$     ×ÑÔØ×ÑÐržcó:—|j«|jS)z2
        Return time stamp of Stata file.
        )rþrRrVs rWÚ
time_stampzStataReader.time_stampÞs€ð
     ×ÑÔØ×ÑÐržcót—|j«tt|j|j««S)a‘
        Return a dict associating each variable name with corresponding label.
 
        Returns
        -------
        dict
 
        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["col_1", "col_2"])
        >>> time_stamp = pd.Timestamp(2000, 2, 29, 14, 21)
        >>> path = "/My_path/filename.dta"
        >>> variable_labels = {"col_1": "This is an example"}
        >>> df.to_stata(path, time_stamp=time_stamp,  # doctest: +SKIP
        ...             variable_labels=variable_labels, version=None)  # doctest: +SKIP
        >>> with pd.io.stata.StataReader(path) as reader:  # doctest: +SKIP
        ...     print(reader.variable_labels())  # doctest: +SKIP
        {'index': '', 'col_1': 'This is an example', 'col_2': ''}
        >>> pd.read_stata(path)  # doctest: +SKIP
            index col_1 col_2
        0       0    1    2
        1       1    3    4
        )rþrÆrPrbrirVs rWÚvariable_labelszStataReader.variable_labelsæs,€ð0     ×ÑÔÜ”C˜Ÿ ™  t×'<Ñ'<Ó=Ó>Ð>ržcóR—|js|j«|jS)aX
        Return a nested dict associating each variable name to its value and label.
 
        Returns
        -------
        dict
 
        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["col_1", "col_2"])
        >>> time_stamp = pd.Timestamp(2000, 2, 29, 14, 21)
        >>> path = "/My_path/filename.dta"
        >>> value_labels = {"col_1": {3: "x"}}
        >>> df.to_stata(path, time_stamp=time_stamp,  # doctest: +SKIP
        ...             value_labels=value_labels, version=None)  # doctest: +SKIP
        >>> with pd.io.stata.StataReader(path) as reader:  # doctest: +SKIP
        ...     print(reader.value_labels())  # doctest: +SKIP
        {'col_1': {3: 'x'}}
        >>> pd.read_stata(path)  # doctest: +SKIP
            index col_1 col_2
        0       0    1    2
        1       1    x    4
        )rér°rªrVs rWr    zStataReader.value_labelss%€ð0×&Ò&Ø × #Ñ #Ô %à×%Ñ%Ð%rž)
TTNFTNTNÚinferN)rðúFilePath | ReadBuffer[bytes]rñrÃròrÃróú
str | NonerôrÃrõrÃröúSequence[str] | Noner÷rÃrøú
int | Nonerùr.r7úStorageOptions | NonerŠr3r4)rŠr1)r ztype[BaseException] | NonerzBaseException | NonerzTracebackType | NonerŠr3)rŠr`)rŠr5)r2r`rŠztuple[int, ...])ror`rŠz,tuple[list[int | str], list[str | np.dtype]])rŠz    list[str]rf)r8r5rŠr3)rŠrg)r r5rŠr)rŠr$rZ)rÀrrŠr$)NNNNNNNN)r½rrñú bool | Noneròr rórrôr rõr rörr÷r rŠr$)rðr$rôrÃrŠr$©rðr$rŠr$)rðr$röú Sequence[str]rŠr$)
rðr$rúdict[str, dict[float, str]]rr"r÷rÃrŠr$)rŠzdict[str, str])rŠr#)6r6r7r8Ú_stata_reader_docr9rhrrþrýr rrrrrr"r&r(r*r,r.r0r3rr6r]rardrfrhrMrOrQrXr7rryr°rºr¾rÁrÚ_read_method_docrrÐrÍrÈrÒrmrrrr    Ú __classcell__©rús@rWrÔrÔ`s¾ø…Ø€GàÓð
#Ø%)Ø $Ø %Ø $Ø(,Ø#'Ø $Ø*1Ø15ð/@à1ð/@ðð/@ð#ð    /@ð
ð /@ð ð /@ðð/@ð&ð/@ð!ð/@ðð/@ð(ð/@ð/ð/@ð
õ/@óbóó>ð
à,ðð(ðð(ð    ð
 
ó óó$%ó@ó@óRóRóRóRóRóRó@ó
ó .ó5<ðp!Ø ð!à    5ó!ó(Tó
TóTó ó'ó
<ó
ó
óI7óVó 'ó*7'ór,ó>0ô%ñ"ÐÓð!Ø%)Ø,0Ø $Ø'+Ø'+Ø(,Ø*.ðUàðUð#ðUð*ð    Uð
ð Uð %ð Uð%ðUð&ðUð(ðUð
òUó ðUón,ó\óð@LàðLð6ðLðð    Lð
!ð Lð
ó Lð\ò óð ð(ò óð ó?÷6&ržrÔTFr) rñròrórôrõrör÷røÚiteratorrùr7c óŠ—t|||||||||| |
¬« } |    s|r| S| 5| j«cddd«S#1swYyxYw)N)
rñròrórôrõrör÷rør7rù)rÔr) r6rñròrórôrõrör÷rør(rùr7Úreaders              rWÚ
read_statar+s\€ô ØØ#Ø1ØØ'Ø'ØØ-ØØ'Øô €Fñ‘9؈ à    ñ؏{‰{‹}÷÷òús    Ÿ9¹Acól—|j«dvry|j«dvrytd|›d«‚)N)rAÚlittlerA)r@Úbigr@z Endianness r‰)Úlowerrf)Ú
endiannesss rWríríDs>€Ø×ÑÓ˜_Ñ,ØØ    ×    Ñ    Ó    ˜|Ñ    +Øä˜; z l°/ÐBÓCÐCržcór—t|t«r|d|t|«z
zzS|d|t|«z
zzS)zQ
    Take a char string and pads it with null bytes until it's length chars.
    rú)rår5r©rïr·s  rWr'r'Ms@€ô$œÔؐg ¬#¨d«)Ñ!3Ñ4Ñ4Ð4Ø &˜F¤S¨£YÑ.Ñ/Ñ /Ð/ržcón—|dvr#tjtj«Std|›d«‚)zK
    Convert from one of the stata date formats to a type in TYPE_MAP.
    )rpr8rwr:ryr<r}r=r€r>r„r?rˆr@r¾z not implemented)r‹rvrÄÚNotImplementedError)r—s rWÚ_convert_datetime_to_stata_typer6Vs;€ð ðñô x‰xœŸ
™
Ó#Ð#ä! G¨C¨5Ð0@Ð"AÓBÐBržcó —i}|D]|}||jd«s d||z||<||vr&|j|j|«||i«ŒLt|t«s t d«‚|j|||i«Œ~|S)Nú%z0convert_dates key must be a column or an integer)r‘ÚupdaterKrår`rf)rñÚvarlistÚnew_dictr?s    rWÚ_maybe_convert_to_int_keysr<os–€Ø€HØò7ˆØ˜SÑ!×,Ñ,¨SÔ1Ø!$ }°SÑ'9Ñ!9ˆM˜#Ñ Ø '‰>Ø O‰O˜WŸ]™]¨3Ó/°¸sÑ1CÐDÕ Eä˜c¤3Ô'Ü Ð!SÓTÐTØ O‰O˜S -°Ñ"4Ð5Õ 6ð7ð €OržcóΗ|jtjur*tt    |j
««}t |d«S|jtjury|jtjury|jtjury|jtjury|jtjurytd|›d«‚)    aõ
    Convert dtype types to stata types. Returns the byte of the given ordinal.
    See TYPE_MAP and comments for an explanation. This is also explained in
    the dta spec.
    1 - 244 are strings of this length
                         Pandas    Stata
    251 - for int8      byte
    252 - for int16     int
    253 - for int32     long
    254 - for float32   float
    255 - for double    double
 
    If there are dates to convert, then dtype will already have the correct
    type inserted.
    rBrxrwrvrurtú
Data type ú not supported.© r^r‹Úobject_rrrŽrMrÄrërãrárßr5)rvr r«s   rWÚ_dtype_to_stata_typerB}s©€ð" ‡zz”R—Z‘ZÑô(¬ °f·n±nÓ(EÓFˆÜ8˜QÓÐØ    ‰”r—z‘zÑ    !ØØ    ‰”r—z‘zÑ    !ØØ    ‰”r—x‘xÑ    ØØ    ‰”r—x‘xÑ    ØØ    ‰”r—w‘wÑ    Øä! J¨u¨g°_Ð"EÓFÐFržcó—|dkrd}nd}|ry|jtjurltt    |j
««}||kDr.|dk\ryt tj|j««‚dtt|d««zdzS|tjk(ry|tjk(ry    |tjk(ry
|tjtj fvry t#d |›d «‚)a¢
    Map numpy dtype to stata's default format for this type. Not terribly
    important since users can change this in Stata. Semantics are
 
    object  -> "%DDs" where DD is the length of the string.  If not a string,
                raise ValueError
    float64 -> "%10.0g"
    float32 -> "%9.0g"
    int64   -> "%9.0g"
    int32   -> "%12.0g"
    int16   -> "%8.0g"
    int8    -> "%8.0g"
    strl    -> "%9s"
    r;éôrkz%9sr8rBr z%10.0gz%9.0gz%12.0gz%8.0gr>r?)r^r‹rArrrŽrfrÊrJrïrrMrÄrërãrßrár5)rvr Ú dta_versionÚ
force_strlÚ max_str_lenr«s      rWÚ_dtype_to_default_stata_fmtrH¡sâ€ð&SÒØ‰ àˆ Ù ØØ ‡zz”R—Z‘ZÑÜ'¬ °f·n±nÓ(EÓFˆØ kÒ !ؘcÒ!Øä Ô!>×!EÑ!EÀfÇkÁkÓ!RÓSÐSØ”Sœ˜X qÓ)Ó*Ñ*¨SÑ0Ð0Ø    ”"—*‘*Ò    ØØ    ”"—*‘*Ò    ØØ    ”"—(‘(Ò    ØØ    ”2—7‘7œBŸH™HÐ%Ñ    %Øä! J¨u¨g°_Ð"EÓFÐFržÚcompression_optionsÚfname)r7rIc󘇗eZdZUdZdZdZded<                                d(ddœ                                                                                            d)ˆfd„Zd*d    „Zd+d
„Z                    d,d „Z
d-d „Z d-d „Z d.d„Z d/d„Zd-d„Zd0d„Zd1d„Zd.d„Zd.d„Zd.d„Zd.d„Zd.d„Zd.d„Zd.d„Zd.d„Zd.d„Z        d2                    d3d„Zd.d„Zd.d„Zd.d„Zd.d „Zd.d!„Z d.d"„Z!d-d#„Z"d4d$„Z#d5d%„Z$e%d6d&„«Z&d7d'„Z'ˆxZ(S)8Ú StataWriterar
    A class for writing Stata binary dta files
 
    Parameters
    ----------
    fname : path (string), buffer or path object
        string, path object (pathlib.Path or py._path.local.LocalPath) or
        object implementing a binary write() functions. If using a buffer
        then the buffer will not be automatically closed after the file
        is written.
    data : DataFrame
        Input to save
    convert_dates : dict
        Dictionary mapping columns containing datetime types to stata internal
        format to use when writing the dates. Options are 'tc', 'td', 'tm',
        'tw', 'th', 'tq', 'ty'. Column can be either an integer or a name.
        Datetime columns that do not have a conversion type specified will be
        converted to 'tc'. Raises NotImplementedError if a datetime column has
        timezone information
    write_index : bool
        Write the index to Stata dataset.
    byteorder : str
        Can be ">", "<", "little", or "big". default is `sys.byteorder`
    time_stamp : datetime
        A datetime to use as file creation date.  Default is the current time
    data_label : str
        A label for the data set.  Must be 80 characters or smaller.
    variable_labels : dict
        Dictionary containing columns as keys and variable labels as values.
        Each label must be 80 characters or smaller.
    {compression_options}
 
        .. versionchanged:: 1.4.0 Zstandard support.
 
    {storage_options}
 
    value_labels : dict of dicts
        Dictionary containing columns as keys and dictionaries of column value
        to labels as values. The combined length of all labels for a single
        variable must be 32,000 characters or smaller.
 
        .. versionadded:: 1.4.0
 
    Returns
    -------
    writer : StataWriter instance
        The StataWriter instance has a write_file method, which will
        write the file to the given `fname`.
 
    Raises
    ------
    NotImplementedError
        * If datetimes contain timezone information
    ValueError
        * Columns listed in convert_dates are neither datetime64[ns]
          or datetime
        * Column dtype is not representable in Stata
        * Column listed in convert_dates is not in DataFrame
        * Categorical label contains more than 32,000 characters
 
    Examples
    --------
    >>> data = pd.DataFrame([[1.0, 1]], columns=['a', 'b'])
    >>> writer = StataWriter('./data_file.dta', data)
    >>> writer.write_file()
 
    Directly write a zip file
    >>> compression = {{"method": "zip", "archive_name": "data_file.dta"}}
    >>> writer = StataWriter('./data_file.zip', data, compression=compression)
    >>> writer.write_file()
 
    Save a DataFrame with dates
    >>> from datetime import datetime
    >>> data = pd.DataFrame([[datetime(2000,1,1)]], columns=['date'])
    >>> writer = StataWriter('./date_data_file.dta', data, {{'date' : 'tw'}})
    >>> writer.write_file()
    rDrr2rN©r    c óð•—t‰ |«||_|€in||_||_||_||_||_| |_g|_    tjgt¬«|_ |    |_d|_i|_|j#|«|
|_|€t&j(}t+|«|_||_tj0tj2tj4dœ|_y)Nru)rvrurt)r×rrðrØÚ _write_indexrRrPriÚ_non_cat_value_labelsÚ _value_labelsr‹rrÃÚ_has_value_labelsràÚ _output_fileÚ_converted_namesÚ_prepare_pandasr7rîr*rír!Ú_fnamerãrárßÚtype_converters) r rJrðrñÚ write_indexr*rrrrùr7r    rús             €rWrzStataWriter.__init__$    sÔø€ô    ‰ÑÔØˆŒ    Ø$1Ð$9™b¸}ˆÔØ'ˆÔØ%ˆÔØ%ˆÔØ /ˆÔØ%1ˆÔ"Ø46ˆÔÜ!#§¡¨"´DÔ!9ˆÔØ'ˆÔØ.2ˆÔØ57ˆÔà ×јTÔ"Ø.ˆÔà Ð ÜŸ ™ ˆIÜ)¨)Ó4ˆŒØˆŒ Ü%'§X¡X´B·H±HÄ2Ç7Á7ÑKˆÕržcó€—|jjj|j|j««y)zS
        Helper to call encode before writing to file for Python 3 compat.
        N)r    rr%rr)r Úto_writes  rWÚ_writezStataWriter._writeJ    s)€ð      ‰ ×Ñ×!Ñ! (§/¡/°$·.±.Ó"AÕBržcóN—|jjj|«y)z?
        Helper to assert file is open before writing.
        N)r    rr%rTs  rWÚ _write_byteszStataWriter._write_bytesP    s€ð      ‰ ×Ñ×!Ñ! %Õ(ržcó–—g}|j€|S|jj«D]›\}}||jvr|j|}n)||jvr t    |«}nt d|›d«‚t ||j«std|›d«‚t|||j«}|j|«Œ|S)zc
        Check for value labels provided for non-categorical columns. Value
        labels
        zCan't create value labels for z!, it wasn't found in the dataset.z6, value labels can only be applied to numeric columns.) rPrArTrörrnrrvrfr<rr)r rðÚnon_cat_value_labelsrÚlabelsÚcolnameÚsvls       rWÚ_prepare_non_cat_value_labelsz)StataWriter._prepare_non_cat_value_labelsV    sí€ð=?ÐØ × %Ñ %Ð -Ø'Ð 'à#×9Ñ9×?Ñ?ÓAò    -‰OˆGVؘ$×/Ñ/Ñ/Ø×/Ñ/°Ñ8‘ؘDŸL™LÑ(ܘg›,‘äØ4°W°Ið>,ð,óðô
$ D¨¡M×$7Ñ$7Ô8ô!Ø4°W°Ið>>ð>óðô(¨°¸¿¹ÓHˆCØ  × 'Ñ '¨Õ ,ð'    -ð($Ð#ržcó˜—|jDcgc]}t|t«‘Œ}}t|«s|S|xjt j |«zc_tj}g}t||«D]ª\}}|r‹t|||j¬«}|jj|«||jjj }|t
j"k(r t%d«‚||jjj&j)«}    |    j+«||«k\r¨|t
j,k(r$t j t
j.«}nZ|t
j.k(r$t j t
j0«}n#t j t
j2«}t j |    |¬«}    ||«|    |    dk(<|j||    f«Œ•|j|||f«Œ­t5j6t9|««Scc}w)zŠ
        Check for categorical columns, retain categorical information for
        Stata file and convert categorical data to int
        )r zCIt is not possible to export int64-based categorical data to Stata.rurJ)r¡rårrrRr‹rrírerPrþrrQrrÚcodesrvrrfrŽr¿rMrßrárãrÄr$rÔrÆ)
r rðrvÚis_catreÚdata_formattedrõÚ
col_is_catrbris
          rWÚ_prepare_categoricalsz!StataWriter._prepare_categoricalsw    s΀ð
DHÇ;Á;ÖO¸%”*˜UÔ$4Õ5ÐOˆÐOܐ6Œ{؈Kà ×Ò¤"§(¡(¨6Ó"2Ñ2Õä!2×!IÑ!IÐØˆÜ" 4¨Ó0ó    8‰OˆCÚÜ% d¨3¡i¸$¿.¹.ÔIØ×"Ñ"×)Ñ)¨#Ô.ؘS™    Ÿ ™ ×+Ñ+×1Ñ1ØœBŸH™HÒ$Ü$ðAóðð˜c™Ÿ™×,Ñ,×4Ñ4×9Ñ9Ó;ð—:‘:“<Ñ#9¸%Ó#@Ò@ؤ§¡Ò'Ü "§¡¬¯©Ó 2™Ø¤"§(¡(Ò*Ü "§¡¬¯©Ó 2™ä "§¡¬¯©Ó 4˜ÜŸX™X f°EÔ:Fñ(>¸eÓ'Dv ‘|Ñ$Ø×%Ñ% s¨F mÖ4à×%Ñ% s¨D°©IÐ&6Ö7ð5    8ô6×"Ñ"¤4¨Ó#7Ó8Ð8ùòGPsIcó
—|D]}}||j}|tjtjfvsŒ5|tjk(r|jd}n|jd}||j |«||<Œ|S)z†
        Checks floating point data columns for nans, and replaces these with
        the generic Stata for missing value (.)
        rªr[)rvr‹rërÄrDrç)r rðr$rvrós     rWÚ _replace_nanszStataWriter._replace_nans¡    s~€ð ò    6ˆAؘ‘G—M‘MˆEØœŸ™¤R§Z¡ZÐ0Ò0ØœBŸJ™JÒ&Ø"&×"5Ñ"5°cÑ":‘Kà"&×"5Ñ"5°cÑ":Kؘq™'Ÿ.™.¨Ó5Q’ð    6ðˆ ržcó—y)zNo-op, forward compatibilityNr:rVs rWÚ_update_strl_nameszStataWriter._update_strl_names²    óržcó†—|D];}|dks|dkDsŒ|dks|dkDsŒ|dks|dkDsŒ$|dk7sŒ*|j|d«}Œ=|S)aŠ
        Validate variable names for Stata export.
 
        Parameters
        ----------
        name : str
            Variable name
 
        Returns
        -------
        str
            The validated name with invalid characters replaced with
            underscores.
 
        Notes
        -----
        Stata 114 and 117 support ascii characters in a-z, A-Z, 0-9
        and _.
        ÚAÚZÚaÚzr²Ú9rr)Úreplace©r rïr$s   rWÚ_validate_variable_namez#StataWriter._validate_variable_nameµ    sX€ð(ò    ,ˆAàS’˜A ›Gؘ’W  C£Ø˜’W  C£Ø˜“Hà—|‘| A sÓ+‘ð    ,ðˆ ržcóö—i}t|j«}|dd}d}t|«D]Ú\}}|}t|t«s t    |«}|j |«}||j vrd|z}d|dcxkrdkrnnd|z}|dtt|«d«}||k(s\|j|«dkDrCdt    |«z|z}|dtt|«d«}|dz }|j|«dkDrŒC|||<|||<ŒÜt|«|_|jrCt||«D]4\}    }
|    |
k7sŒ |j|
|j|    <|j|
=Œ6|rzg} |j«D]\}}|›d|›} | j| «Œtj!d    j#| ««} t%j&| t(t+«¬
«||_|j/«|S) aÌ
        Checks column names to ensure that they are valid Stata column names.
        This includes checks for:
            * Non-string names
            * Stata keywords
            * Variables that start with numbers
            * Variables with names that are too long
 
        When an illegal variable name is detected, it is converted, and if
        dates are exported, the variable name is propagated to the date
        conversion dictionary
        Nrrrr²rtr!rBz   ->   z
    rs)rÉrörrårrwrÐrNrr2r%rØrPrArrÍrJr–r’r“rrrTrm)r rðÚconverted_namesröÚoriginal_columnsÚduplicate_var_idrôrïÚ    orig_namer$ÚoÚconversion_warningr¦rñs              rWÚ_check_column_nameszStataWriter._check_column_namesÓ    s$€ð02ˆÜt—|‘|Ó$ˆØ"¡1˜:ÐàÐÜ  Ó)ò    ‰GˆAˆt؈Iܘd¤CÔ(ܘ4“yà×/Ñ/°Ó5ˆDðt×*Ñ*Ñ*ؘT‘zðd˜1‘gÔ$ Õ$ؘT‘zàÐ,œ#œc $›i¨Ó,Ð-ˆDà˜9Ò$à—m‘m DÓ)¨AÒ-à¤Ð%5Ó!6Ñ6¸Ñ=DØР4¤#¤c¨$£i°Ó"4Ð5DØ$¨Ñ)Ð$ð    —m‘m DÓ)¨AÓ-ð
.2     Ñ*àˆGAŠJð5    ô8˜W“~ˆŒ ð × Ò Ü˜GÐ%5Ó6ò /‘1ؘ“6Ø-1×-@Ñ-@ÀÑ-CD×'Ñ'¨Ñ*Ø×+Ñ+¨AÑ.ð /ñ
Ø!#Ð Ø#2×#8Ñ#8Ó#:ò /‘    ˜4Ø"˜  8¨D¨6Ð2Ø"×)Ñ)¨#Õ.ð /ô"×(Ñ(¨¯©Ð7IÓ)JÓKˆBÜ M‰MØÜ!Ü+Ó-õ ð !0ˆÔØ ×ÑÔ!àˆ ržcó—g|_g|_|j«D]i\}}|jjt    ||j
|««|jjt ||j
|««ŒkyrZ)rÿrprArrHrðrB)r r¡rõrvs    rWÚ_set_formats_and_typesz"StataWriter._set_formats_and_types
so€Ø"$ˆŒ Ø"$ˆŒ Ø Ÿ,™,›.ò    M‰JˆCØ L‰L× Ñ Ô ;¸EÀ4Ç9Á9ÈSÁ>Ó RÔ SØ L‰L× Ñ Ô 4°U¸D¿I¹IÀc¹NÓ KÕ Lñ    Mržcó —|j«}|jr"|j«}t|t«r|}|j |«}t |«}|j|«}tjd|jd«|_ |j|«}|Dcgc]}|j‘Œ}}|jj|«}|xj|zc_ |j j#|«|j%|«}|j\|_|_||_|jj-«|_|j0}|D]D}||j2vrŒt5j6||j8d«sŒ6d|j2|<ŒFt;|j2|j.«|_|j2D]<}    t=|j2|    «}
tj8|
«|j>|    <Œ>|jA«|jC|«|j2?|j2D]/}    t|    tD«sŒ|j2|    |jF|    <Œ1yycc}w)NFrBr¡rp)$r¿rOÚ reset_indexrår$rrürkr‹ÚrepeatrérRrcrrörrQÚextendriÚnobsÚnvarrðÚtolistr:r¡rØrr±rvr<r6rÎÚ_encode_stringsrr`rÿ) r rðÚtempr_rbÚnon_cat_columnsÚhas_non_cat_val_labelsr¡rõr?Únew_types            rWrUzStataWriter._prepare_pandas#
sI€ðy‰y‹{ˆà × Ò Ø×#Ñ#Ó%ˆDܘ$¤    Ô*ؐð×'Ñ'¨Ó-ˆô$ DÓ)ˆð×!Ñ! $Ó'ˆô"$§¡¨5°$·*±*¸Q±-Ó!@ˆÔð $×AÑAÀ$ÓGÐà2FÖG¨3˜3Ÿ;›;ÐGˆÐGØ!%§¡×!2Ñ!2°?Ó!CÐØ ×ÒÐ"8Ñ8ÕØ ×Ñ×!Ñ!Ð"6Ô7ð×)Ñ)¨$Ó/ˆà#Ÿz™zшŒ    4”9؈Œ    Ø—|‘|×*Ñ*Ó,ˆŒ à—‘ˆðò    0ˆCؐd×)Ñ)Ñ)ØÜ‰˜t C™yŸ™°Õ4Ø+/×#Ñ# CÒ(ð        0ô 9Ø × Ñ  §¡ó
ˆÔð×&Ñ&ò    2ˆCÜ6°t×7JÑ7JÈ3Ñ7OÓPˆHÜ!Ÿx™x¨Ó1ˆFK‰K˜Ò ð    2ð
     ×ÑÔà ×#Ñ# FÔ+ð × Ñ Ð *Ø×*Ñ*ò AÜ˜c¤3Õ'Ø(,×(;Ñ(;¸CÑ(@D—L‘L Ò%ñ Að +ùòEHsÂ)J cóB—|j}t|dg«}t|j«D]î\}}||vs||vrŒ|j|}|j}|j
t jusŒGt|d¬«}|dk(s)t|«dk(s|j}td|›d«‚|j|jj|j«}tt!|j"««|j$ksŒà||j|<Œðy)    zõ
        Encode strings in dta-specific encoding
 
        Do not encode columns marked for date conversion or for strL
        conversion. The strL converter independently handles conversion and
        also accepts empty string arrays.
        Ú _convert_strlTr¤rWrzColumn `a` cannot be exported.
 
Only string-like object arrays
containing all strings or a mix of strings and None can be exported.
Object arrays containing only null values are prohibited. Other object
types cannot be exported and must first be converted to one of the
supported types.N)rØrOrrðrvr^r‹rArrrïrfrrrrrrŽÚ_max_string_length)    r rñÚ convert_strlr rõr rvÚinferred_dtypeÚencodeds             rWr‰zStataWriter._encode_stringse
s€ð×+Ñ+ˆ ä˜t _°bÓ9ˆ Ü §    ¡    Ó*ò    -‰FˆAˆsàMÑ! S¨LÑ%8ØØ—Y‘Y˜s‘^ˆFØ—L‘LˆEàz‰zœRŸZ™ZÒ'Ü!,¨V¸DÔ!AØ'¨8Ò3¼¸F» ÀqÒ8HØ Ÿ+™+CÜ$ð    Ø     ˆððóððŸ)™) C™.×,Ñ,×3Ñ3°D·N±NÓCô)¬°w·±Ó)GÓHØ×.Ñ.ó/ð&-D—I‘I˜c’Nñ3    -ržc    ó¾—t|jd|jd|j¬«5|_|jj
dn|jj t«c|_|j_|jjj|jj «    |j|j|j¬«|j«|j«|j!«|j#«|j%«|j'«|j)«|j+«|j-«|j/«}|j1|«|j3«|j5«|j7«|j«|j9«    ddd«y#t:$rØ}|jj=«t?|jt@tBjDf«rtBjFjI|j«rd    tCjJ|j«|‚#tL$r6tOjPd|j›dtRtU«¬    «Y|‚wxYw|‚d}~wwxYw#1swYyxYw)
a
        Export DataFrame object to Stata dta format.
 
        Examples
        --------
        >>> df = pd.DataFrame({"fully_labelled": [1, 2, 3, 3, 1],
        ...                    "partially_labelled": [1.0, 2.0, np.nan, 9.0, np.nan],
        ...                    "Y": [7, 7, 9, 8, 10],
        ...                    "Z": pd.Categorical(["j", "k", "l", "k", "j"]),
        ...                    })
        >>> path = "/My_path/filename.dta"
        >>> labels = {"fully_labelled": {1: "one", 2: "two", 3: "three"},
        ...           "partially_labelled": {1.0: "one", 2.0: "two"},
        ...           }
        >>> writer = pd.io.stata.StataWriter(path,
        ...                                  df,
        ...                                  value_labels=labels)  # doctest: +SKIP
        >>> writer.write_file()  # doctest: +SKIP
        >>> df = pd.read_stata(path)  # doctest: +SKIP
        >>> df  # doctest: +SKIP
            index fully_labelled  partially_labeled  Y  Z
        0       0            one                one  7  j
        1       1            two                two  7  k
        2       2          three                NaN  9  l
        3       3          three                9.0  8  k
        4       4            one                NaN 10  j
        ÚwbF)rùrr7ÚmethodN)rrz!This save was not successful but z. could not be deleted. This file is not valid.rs)+r)rVràr7r    rùrrrSÚcreated_handlesrÚ _write_headerrPrRÚ
_write_mapÚ_write_variable_typesÚ_write_varnamesÚ_write_sortlistÚ_write_formatsÚ_write_value_label_namesÚ_write_variable_labelsÚ_write_expansion_fieldsÚ_write_characteristicsÚ _prepare_dataÚ _write_dataÚ _write_strlsÚ_write_value_labelsÚ_write_file_close_tagÚ_closeÚ    ExceptionrrårÚosÚPathLikeÚpathÚisfileÚunlinkÚOSErrorr’r“rr)r ÚrecordsÚexcs   rWÚ
write_filezStataWriter.write_file‹
sJ€ô8Ø K‰KØ Ø×)Ñ)ØØ ×0Ñ0ô 
ð/    ð Œ\؏|‰|×'Ñ'¨Ñ1Ð=ð:>¿¹×9LÑ9LÌgËiÐ6Ô! 4§<¡<Ô#6Ø— ‘ ×,Ñ,×3Ñ3°D·L±L×4GÑ4GÔHð" Ø×"Ñ"Ø#×/Ñ/¸D×<LÑ<Lð#ôð—‘Ô!Ø×*Ñ*Ô,Ø×$Ñ$Ô&Ø×$Ñ$Ô&Ø×#Ñ#Ô%Ø×-Ñ-Ô/Ø×+Ñ+Ô-Ø×,Ñ,Ô.Ø×+Ñ+Ô-Ø×,Ñ,Ó.Ø× Ñ  Ô)Ø×!Ñ!Ô#Ø×(Ñ(Ô*Ø×*Ñ*Ô,Ø—‘Ô!Ø— ‘ • ÷A/    ð/    øôBò Ø— ‘ ×"Ñ"Ô$ܘdŸk™k¬C´·±Ð+=Ô>Ä2Ç7Á7Ç>Á>Ø—K‘KôDðÜŸ    ™     $§+¡+Ô.𐠠  øô#òÜ Ÿ ™ Ø?ÀÇ Á ¸}ðMBðBä+Ü'7Ó'9ö    ð     ðú𐠠  ûð ú÷C/    ð/    úsP¯B KÂ=D(G/Ç/    KÇ8A-K É&JÊK Ê;KËK ËKËK Ë KËKËKcó4—|jŒt|jjt«sJ‚|jj|jc}|j_|jjj |j ««yy)zÌ
        Close the file if it was created by the writer.
 
        If a buffer or file-like object was passed in, for example a GzipFile,
        then leave this file open for the caller to close.
        N)rSrår    rrr%r))r r+s  rWr§zStataWriter._closeØ
sp€ð × Ñ Ð (ܘdŸl™l×1Ñ1´7Ô;Ð ;Ð;Ø'+§|¡|×':Ñ':¸D×<MÑ<MÐ $ˆC—‘Ô$Ø L‰L× Ñ × %Ñ % c§l¡l£nÕ 5ð )ržcó—y©úNo-op, future compatibilityNr:rVs rWr™zStataWriter._write_mapå
rnržcó—yr´r:rVs rWr¦z!StataWriter._write_file_close_tagè
rnržcó—yr´r:rVs rWr¡z"StataWriter._write_characteristicsë
rnržcó—yr´r:rVs rWr¤zStataWriter._write_strlsî
rnržcó:—|jtdd««y)z"Write 5 zeros for expansion fieldsrÐr¨N)r[r'rVs rWr z#StataWriter._write_expansion_fieldsñ
s€à  ‰ ”J˜r 1Ó%Õ&ržcóz—|jD],}|j|j|j««Œ.yrZ)rQr]r0r!)r rs  rWr¥zStataWriter._write_value_labelsõ
s6€Ø×$Ñ$ò    HˆBØ × Ñ ˜b×5Ñ5°d·o±oÓFÕ Gñ    Hržc    óÊ—|j}|jtjdd««|j    |dk(xrdxsd«|j    d«|j    d«|jtj|dz|j
«dd«|jtj|d    z|j «dd
«|€+|j|jtd d «««n-|j|jt|dd d «««|€tj«}nt|t«s td «‚gd¢}t|«Dcic] \}}|dz|“Œ }}}|jd«||jz|jd«z}|j|j|««ycc}}w)Nrirr@úúr2r‚r…r rrÐéPú"time_stamp should be datetime type© ÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecrBú%d ú     %Y %H:%M)r!r]rÅr&r[r‡r†Ú_null_terminate_bytesr'rÚnowrårfrÚstrftimerR)    r rrr*Úmonthsr rRÚ month_lookupÚtss             rWr˜zStataWriter._write_headerù
s¨€ð
—O‘Oˆ    à ×Ñœ&Ÿ+™+ c¨3Ó/Ô0à  ‰ I Ñ$Ò/¨Ò9°6Ô:à  ‰ FÔà  ‰ FÔà ×Ñœ&Ÿ+™+ i°#¡o°t·y±yÓAÀ"À1ÐEÔFà ×Ñœ&Ÿ+™+ i°#¡o°t·y±yÓAÀ"À1ÐEÔFà Ð Ø × Ñ ˜d×8Ñ8¼ÀBÈÓ9KÓLÕ Mà × Ñ Ø×*Ñ*¬:°jÀÀ"°oÀrÓ+JÓKô ð
Ð Ü!Ÿ™›‰JܘJ¬Ô1ÜÐAÓBÐ Bò 
ˆô6?¸vÓ5F×G©¨¨E˜˜A™˜u™ ÐGˆ ÑGà × Ñ  Ó &ؘ:×+Ñ+Ñ,ñ -à×!Ñ! +Ó.ñ /ð     ð
     ×ј$×4Ñ4°RÓ8Õ9ùó HsÅ8Gcóp—|jD]'}|jtjd|««Œ)y)Nr)rpr]rÅr&)r rss  rWršz!StataWriter._write_variable_types0 s.€Ø—<‘<ò    5ˆCØ × Ñ œfŸk™k¨#¨sÓ3Õ 4ñ    5ržcóˆ—|jD]3}|j|«}t|ddd«}|j|«Œ5y)Nr!rv)r:Ú_null_terminate_strr'r[)r rïs  rWr›zStataWriter._write_varnames4 sE€ð—L‘Lò    ˆDØ×+Ñ+¨DÓ1ˆDܘd 3 B˜i¨Ó,ˆDØ K‰K˜Õ ñ    ržcó^—tdd|jdzz«}|j|«y)NrÐr…rB)r'r‡r[)r Úsrtlists  rWrœzStataWriter._write_sortlist< s'€ä˜R  d§i¡i°!¡mÑ!4Ó5ˆØ  ‰ GÕržcó\—|jD]}|jt|d««Œy)Nr~)rÿr[r')r r—s  rWrzStataWriter._write_formatsA s(€à—<‘<ò    -ˆCØ K‰Kœ
 3¨Ó+Õ ,ñ    -ržcó—t|j«D]m}|j|rA|j|}|j    |«}t |ddd«}|j |«ŒS|j t dd««Œoy)Nr!rvrÐ)r(r‡rRr:r×r'r[)r r rïs   rWržz$StataWriter._write_value_label_namesF sv€ät—y‘yÓ!ò    0ˆAà×%Ñ% aÒ(Ø—|‘| A‘Ø×/Ñ/°Ó5Ü! $ s¨ )¨RÓ0Ø— ‘ ˜DÕ!à— ‘ œJ r¨2Ó.Õ/ñ    0ržcó²—tdd«}|j€,t|j«D]}|j    |«Œy|j
D]„}||jvrc|j|}t |«dkDr td«‚td„|D««}|s td«‚|j    t|d««Œt|j    |«Œ†y)NrÐr‚r¾ú.Variable labels must be 80 characters or fewerc3ó8K—|]}t|«dk–—Œy­w)éN)Úord)rÄr$s  rWrÆz5StataWriter._write_variable_labels.<locals>.<genexpr>` sèø€Ò<°¤ A£¨¥ Ñ<ùs‚zKVariable labels must contain only characters that can be encoded in Latin-1)    r'rir(r‡r[rðrrfr)r Úblankr rõr
Ú    is_latin1s      rWrŸz"StataWriter._write_variable_labelsR sπä˜2˜rÓ"ˆà ×  Ñ  Ð (ܘ4Ÿ9™9Ó%ò #Ø— ‘ ˜EÕ"ð #à à—9‘9ò     #ˆCؐd×+Ñ+Ñ+Ø×-Ñ-¨cÑ2Üu“: ’?Ü$Ð%UÓVÐVÜÑ<°eÔ<Ó<    Ù Ü$ð4óðð— ‘ œJ u¨bÓ1Õ2à— ‘ ˜EÕ"ñ     #ržcó—|S)rµr:)r rðs  rWÚ_convert_strlszStataWriter._convert_strlsj s€àˆ ržcóD—|j}|j}|j}|j7t|«D])\}}||vsŒ t    |||j
|«||<Œ+|j |«}i}|jttj«k(}t|«D]Ô\}}||}||jkrŠtj«5tjddt¬«||j!d«}    ddd«    j#t$|f¬«||<d|›}
|
||<||j'|
«||<Œ¤||j(} |s| j+|j«} | ||<ŒÖ|j-d|¬«S#1swYŒŒxYw)    NÚignorezDowncasting object dtype arrays)rrÐ)ÚargsrsF)rKÚ column_dtypes)rðrprØrrÉrÿrär!rírîr*rr’Úcatch_warningsÚfilterwarningsrrçr¶r'rrvrËÚ
to_records) r rðrprñr rõr¡Únative_byteorderrsÚdcÚstypervs             rWr¢zStataWriter._prepare_datan sž€Øy‰yˆØ—,‘,ˆØ×+Ñ+ˆ à × Ñ Ð *Ü# D›/ò ‘3ؘ Ò%Ü >ؘS™     4§<¡<°¡?ó!D˜’Ið ð ×"Ñ" 4Ó(ˆðˆØŸ?™?¬o¼c¿m¹mÓ.LÑLÐÜ “oò    $‰FˆAˆsؘ!‘*ˆCؐd×-Ñ-Ò-Ü×,Ñ,Ó.ñ.Ü×+Ñ+Ø Ø9Ü!.õð
˜c™×)Ñ)¨"Ó-B÷ .ðŸH™H¤Z°s°f˜HÓ=S‘    Ø˜C˜5˜    Ø#s‘ Ø  ™I×,Ñ,¨UÓ3S’    à˜S™    Ÿ™Ù'Ø!×.Ñ.¨t¯©Ó?EØ#s’ ð%    $ð(‰ U¸&ˆÓAÐA÷#.ð.ús Ã1FÆF    cóB—|j|j««yrZ)r]Útobytes©r r¯s  rWr£zStataWriter._write_data• s€Ø ×ј'Ÿ/™/Ó+Õ,ržcó—|dz }|S)Nr2r:)r s rWr×zStataWriter._null_terminate_str˜ s€à    ˆV‰ ˆØˆržcóV—|j|«j|j«SrZ)r×rr)r r s  rWrÏz!StataWriter._null_terminate_bytes s"€Ø×'Ñ'¨Ó*×1Ñ1°$·.±.ÓAÐArž)NTNNNNrN)rJúFilePath | WriteBuffer[bytes]rðr$rñúdict[Hashable, str] | NonerXrÃr*rrúdatetime | Nonerrrrõrùr.r7rr    ú'dict[Hashable, dict[float, str]] | NonerŠr3)rZrrŠr3)rar5rŠr3)rðr$rŠzlist[StataNonCatValueLabel]r!r4©rïrrŠr©r¡r'rŠr3)rðr$rŠr3©NN©rrrrörŠr3)rŠúnp.rec.recarray)r¯rürŠr3)r rrŠr)r rrŠr5))r6r7r8r9rrrhrr[r]rcrirkrmrwrrrUr‰r±r§r™r¦r¡r¤r r¥r˜ršr›rœrržrŸrär¢r£Ú staticmethodr×rÏr&r's@rWrLrLÎs¼ø…ñ
Lð\ÐØ-6€IÐ*Ó6ð 59ؠؠ$Ø&*Ø!%Ø6:Ø*1Ø15ð$LðAEñ$Là,ð$Lðð$Lð2ð    $Lð
ð $Lð ð $Lð$ð$Lðð$Lð4ð$Lð(ð$Lð/ð$Lð>ð$Lð
õ$LóLCó )ð $Øð$à    $ó$óB(9óTó"+óó<GóRMó@AóD$-óLKóZ 6ó*ó*ó*ó*ó'óHð "&Ø&*ð5:àð5:ð$ð5:ð
ó    5:ón5óóó
-ó
 
0ó#ó0ó%BóN-ðòóð÷BržrLcóä—|ry|jtjur2tt    |j
««}t |d«}|dkr|Sy|jtjury|jtjury|jtjury|jtjury|jtjurytd    |›d
«‚) a
    Converts dtype types to stata types. Returns the byte of the given ordinal.
    See TYPE_MAP and comments for an explanation. This is also explained in
    the dta spec.
    1 - 2045 are strings of this length
                Pandas    Stata
    32768 - for object    strL
    65526 - for int8      byte
    65527 - for int16     int
    65528 - for int32     long
    65529 - for float32   float
    65530 - for double    double
 
    If there are dates to convert, then dtype will already have the correct
    type inserted.
    ryrBrkrzr{r|r}r~r>r?r@)rvr rFr«s    rWÚ_dtype_to_stata_type_117rÿ¡ s¾€ñ$ØØ ‡zz”R—Z‘ZÑô(¬ °f·n±nÓ(EÓFˆÜx Ó#ˆØ tÒ ØˆOØØ    ‰”r—z‘zÑ    !ØØ    ‰”r—z‘zÑ    !ØØ    ‰”r—x‘xÑ    ØØ    ‰”r—x‘xÑ    ØØ    ‰”r—w‘wÑ    Øä! J¨u¨g°_Ð"EÓFÐFržcób—t|t«r t|d«}|d|t|«z
zzS)zU
    Takes a bytes instance and pads it with null bytes until it's length chars.
    rr)rårr5rr3s  rWÚ_pad_bytes_newrË s3€ô$œÔܐT˜7Ó#ˆØ '˜V¤c¨$£iÑ/Ñ0Ñ 0Ð0ržcóH—eZdZdZ        d                                    dd„Zd    d„Zd
d„Zd d„Zy) ÚStataStrLWriteraÑ
    Converter for Stata StrLs
 
    Stata StrLs map 8 byte values to strings which are stored using a
    dictionary-like format where strings are keyed to two values.
 
    Parameters
    ----------
    df : DataFrame
        DataFrame to convert
    columns : Sequence[str]
        List of columns names to convert to StrL
    version : int, optional
        dta version.  Currently supports 117, 118 and 119
    byteorder : str, optional
        Can be ">", "<", "little", or "big". default is `sys.byteorder`
 
    Notes
    -----
    Supports creation of the StrL block of a dta file for dta versions
    117, 118 and 119.  These differ in how the GSO is stored.  118 and
    119 store the GSO lookup value as a uint32 and a uint64, while 117
    uses two uint32s. 118 and 119 also encode all strings as unicode
    which is required by the format.  117 uses 'latin-1' a fixed width
    encoding that extends the 7-bit ascii table with an additional 128
    characters.
    Ncó*—|dvr td«‚||_||_||_ddi|_|€t
j }t|«|_d}d}d|_    |dk(r d    }d}d
|_    n
|d k(rd }nd }ddd|z
zz|_
||_ ||_ y)Nr:z,Only dta versions 117, 118 and 119 supportedrЩrrr%r€rr;rrrr†r¨r…r) rfÚ_dta_verÚdfröÚ
_gso_tablerîr*rír!rÚ_o_offetÚ _gso_o_typeÚ _gso_v_type)r rrör>r*Ú
gso_v_typeÚ
gso_o_typeÚo_sizes        rWrzStataStrLWriter.__init__ñ s²€ð ˜/Ñ )ÜÐKÓLÐ L؈Œ àˆŒØˆŒ ؘv˜,ˆŒØ Ð ÜŸ ™ ˆIÜ)¨)Ó4ˆŒàˆ
؈
Ø ˆŒØ cŠ>؈F؈JØ&ˆDNØ ˜Š^؉FàˆFؘa 1 v¡:Ñ.Ñ/ˆŒ Ø%ˆÔØ%ˆÕržcó0—|\}}||j|zzSrZ)r    )r r?rºr}s    rWÚ _convert_keyzStataStrLWriter._convert_key s€Ø‰ˆˆ1ؐ4—=‘= 1Ñ$Ñ$Ð$ržcóŒ—|j}|j}t|j«}||j}|jDcgc]}||j    |«f‘Œ}}t j |jt
j¬«}t|j««D]b\}\}    }
t|«D]L\} \}} |
|} | €dn| } |j| d«}|€| dz|dzf}||| <|j|«||| f<ŒNŒdt|j«D]\}}|dd…|f||<Œ||fScc}w)aø
        Generates the GSO lookup table for the DataFrame
 
        Returns
        -------
        gso_table : dict
            Ordered dictionary using the string found as keys
            and their lookup position (v,o) as values
        gso_df : DataFrame
            DataFrame where strl columns have been converted to
            (v,o) values
 
        Notes
        -----
        Modifies the DataFrame in-place.
 
        The DataFrame returned encodes the (v,o) values as uint64s. The
        encoding depends on the dta version, and can be expressed as
 
        enc = v + o * 2 ** (o_size * 8)
 
        so that v is stored in the lower bits and o is in the upper
        bits. o_size is
 
          * 117: 4
          * 118: 6
          * 119: 5
        ruNrÐrB) rrrÉrörKr‹Úemptyrér×rÚiterrowsÚgetr)r Ú    gso_tableÚgso_dfröÚselectedrõÚ    col_indexrr}rßÚrowrôrºrr?r s                rWÚgenerate_tablezStataStrLWriter.generate_table sM€ð:—O‘Oˆ    Ø—‘ˆÜv—~‘~Ó&ˆØ˜$Ÿ,™,Ñ'ˆØ:>¿,¹,ÖG°3c˜7Ÿ=™=¨Ó-Ò.ÐGˆ    ÐG܏x‰x˜Ÿ™¬b¯i©iÔ8ˆÜ& x×'8Ñ'8Ó':Ó;ò
    4‰MˆA‰zSÜ(¨Ó3ò     4‘ ‘8C˜Ø˜#‘hà˜K‘b¨SØ—m‘m C¨Ó.Ø;à˜q™5 ! a¡%˜.CØ%(I˜c‘NØ!×.Ñ.¨sÓ3Q˜T’
ñ     4ð
    4ô  § ¡ Ó-ò    %‰FˆAˆsØšq !˜t™*ˆF3ŠKð    %ð˜&РРùò!HsÁ Ec    ó8—t«}tdd«}tj|jdzd«}tj|jdzd«}|j|j
z}|j|j z}|jdz}|j«D]Û\}    }
|
dk(rŒ |
\} } |j|«|jtj|| ««|jtj|| ««|j|«t|    d«} |jtj|t| «d    z««|j| «|j|«ŒÝ|j«S)
aç
        Generates the binary blob of GSOs that is written to the dta file.
 
        Parameters
        ----------
        gso_table : dict
            Ordered dictionary (str, vo)
 
        Returns
        -------
        gso : bytes
            Binary content of dta file to be placed between strl tags
 
        Notes
        -----
        Output format depends on dta version.  117 uses two uint32s to
        express v and o while 118+ uses a uint32 for v and a uint64 for o.
        r´Úasciirr³rr%rrrB) rr5rÅr&r!r r
rAr%rr))r rr+ÚgsoÚgso_typeÚnullÚv_typeÚo_typeÚlen_typeÚstrlÚvorºr}Ú utf8_strings              rWÚ generate_blobzStataStrLWriter.generate_blobI sO€ô:‹iˆÜE˜7Ó#ˆÜ—;‘;˜tŸ™°Ñ4°cÓ:ˆÜ{‰{˜4Ÿ?™?¨SÑ0°!Ó4ˆØ—‘ 4×#3Ñ#3Ñ3ˆØ—‘ 4×#3Ñ#3Ñ3ˆØ—?‘? SÑ(ˆØ!Ÿ™Ó)ò    ‰HˆD"ؐVŠ|ØØ‰DˆAˆqð I‰IcŒNð I‰I”f—k‘k &¨!Ó,Ô -ð I‰I”f—k‘k &¨!Ó,Ô -ð I‰IhÔ ô   gÓ.ˆKØ I‰I”f—k‘k (¬C° Ó,<¸qÑ,@ÓAÔ Bð I‰IkÔ "Ø I‰IdOð/    ð2|‰|‹~Ðrž)r;N)
rr$rör"r>r`r*rrŠr3)r?ztuple[int, int]rŠr`)rŠz,tuple[dict[str, tuple[int, int]], DataFrame])rzdict[str, tuple[int, int]]rŠr5)r6r7r8r9rrrr&r:ržrWrrÔ sV„ñð@Ø $ð &à ð&ðð&ðð    &ð
ð &ð
ó &óB%ó1!ôf=ržrcó*‡—eZdZdZdZdZ                                    dddœ                                                                                                    dˆfd„Zedd„«Zdd„Z            d                    dd    „Z
d d
„Z d d „Z d d „Z d d „Zd d„Zd d„Zd d„Zd d„Zd d„Zd d„Zd d„Zd d„Zd d„Zd d„Zd!d„Zd"d„ZˆxZS)#ÚStataWriter117a
    A class for writing Stata binary dta files in Stata 13 format (117)
 
    Parameters
    ----------
    fname : path (string), buffer or path object
        string, path object (pathlib.Path or py._path.local.LocalPath) or
        object implementing a binary write() functions. If using a buffer
        then the buffer will not be automatically closed after the file
        is written.
    data : DataFrame
        Input to save
    convert_dates : dict
        Dictionary mapping columns containing datetime types to stata internal
        format to use when writing the dates. Options are 'tc', 'td', 'tm',
        'tw', 'th', 'tq', 'ty'. Column can be either an integer or a name.
        Datetime columns that do not have a conversion type specified will be
        converted to 'tc'. Raises NotImplementedError if a datetime column has
        timezone information
    write_index : bool
        Write the index to Stata dataset.
    byteorder : str
        Can be ">", "<", "little", or "big". default is `sys.byteorder`
    time_stamp : datetime
        A datetime to use as file creation date.  Default is the current time
    data_label : str
        A label for the data set.  Must be 80 characters or smaller.
    variable_labels : dict
        Dictionary containing columns as keys and variable labels as values.
        Each label must be 80 characters or smaller.
    convert_strl : list
        List of columns names to convert to Stata StrL format.  Columns with
        more than 2045 characters are automatically written as StrL.
        Smaller columns can be converted by including the column name.  Using
        StrLs can reduce output file size when strings are longer than 8
        characters, and either frequently repeated or sparse.
    {compression_options}
 
        .. versionchanged:: 1.4.0 Zstandard support.
 
    value_labels : dict of dicts
        Dictionary containing columns as keys and dictionaries of column value
        to labels as values. The combined length of all labels for a single
        variable must be 32,000 characters or smaller.
 
        .. versionadded:: 1.4.0
 
    Returns
    -------
    writer : StataWriter117 instance
        The StataWriter117 instance has a write_file method, which will
        write the file to the given `fname`.
 
    Raises
    ------
    NotImplementedError
        * If datetimes contain timezone information
    ValueError
        * Columns listed in convert_dates are neither datetime64[ns]
          or datetime
        * Column dtype is not representable in Stata
        * Column listed in convert_dates is not in DataFrame
        * Categorical label contains more than 32,000 characters
 
    Examples
    --------
    >>> data = pd.DataFrame([[1.0, 1, 'a']], columns=['a', 'b', 'c'])
    >>> writer = pd.io.stata.StataWriter117('./data_file.dta', data)
    >>> writer.write_file()
 
    Directly write a zip file
    >>> compression = {"method": "zip", "archive_name": "data_file.dta"}
    >>> writer = pd.io.stata.StataWriter117(
    ...     './data_file.zip', data, compression=compression
    ...     )
    >>> writer.write_file()
 
    Or with long strings stored in strl format
    >>> data = pd.DataFrame([['A relatively long string'], [''], ['']],
    ...                     columns=['strls'])
    >>> writer = pd.io.stata.StataWriter117(
    ...     './data_file_with_long_strings.dta', data, convert_strl=['strls'])
    >>> writer.write_file()
    rkr;NrMc  óž•—g|_|    |jj|    «t‰ | ||||||||| |
| ¬« i|_d|_y)N)r*rrrr    rùr7rž)rr…r×rÚ_mapÚ
_strl_blob)r rJrðrñrXr*rrrr‘rùr7r    rús             €rWrzStataWriter117.__init__â sjø€ð".0ˆÔØ Ð #Ø × Ñ × %Ñ % lÔ 3ä ‰ÑØ Ø Ø Ø ØØ!Ø!Ø+Ø%Ø#Ø+ð    ô     
ð%'ˆŒ    ØˆržcóŠ—t|t«r t|d«}td|zdzd«|ztd|zdzd«zS)zSurround val with <tag></tag>rrAr@z</)rårr5)rÚtags  rWÚ_tagzStataWriter117._tag sI€ô cœ3Ô Ü˜˜WÓ%ˆCܐS˜3‘Y ‘_ gÓ.°Ñ4´u¸TÀC¹ZÈ#Ñ=MÈwÓ7WÑWÐWržcó–—|jj€J‚|jjj«|j|<y)z.Update map location for tag with file positionN)r    rr—r*)r r-s  rWÚ _update_mapzStataWriter117._update_map s8€à|‰|×"Ñ"Ð.Ð.Ð.ØŸ™×,Ñ,×1Ñ1Ó3ˆ    ‰    #Šržc    ój—|j}|jtdd««t«}|j    |j tt |j«d«d««|j    |j |dk(xrdxsdd««|jdkrd    nd
}|j    |j tj||z|j«d ««|jd k(rd
nd }|j    |j tj||z|j«d««||ddnd}|j|j«}|jd k(rdnd    }    tj||    zt|««}
|
|z}|j    |j |d««|€tj «}nt#|t«s t%d«‚gd¢} t'| «D  cic] \} } | dz| “Œ }} } |j)d«||j*z|j)d«z}dt|d«z}|j    |j |d««|j|j |j-«d««ycc} } w)zWrite the file headerz <stata_dta>rÚreleaser@ÚMSFÚLSFr*rrr%ÚKr;r€ÚNNr¾rÐrr
r¿rÀrBrÍrÎóÚ    timestampÚheader)r!r]r5rr%r.rÚ _dta_versionrÅr&r‡r†rrrrrÐrårfrrÑrRr))r rrr*r+Ú    nvar_typeÚ    nobs_sizer
Ú encoded_labelÚ
label_sizeÚ    label_lenrÒr rRrÓrÔÚstata_tss                 rWr˜zStataWriter117._write_header sG€ð —O‘Oˆ    Ø ×Ñœ%  ¨wÓ7Ô8Ü‹iˆà     ‰    $—)‘)œE¤# d×&7Ñ&7Ó"8¸'ÓBÀIÓNÔOà     ‰    $—)‘)˜I¨Ñ,Ò6°Ò?¸%ÀÓMÔNà×,Ñ,°Ò3‘C¸ˆ    Ø     ‰    $—)‘)œFŸK™K¨    °IÑ(=¸t¿y¹yÓIÈ3ÓOÔPà×,Ñ,°Ò3‘C¸ˆ    Ø     ‰    $—)‘)œFŸK™K¨    °IÑ(=¸t¿y¹yÓIÈ3ÓOÔPà#-Ð#9
˜3˜B‘¸rˆØŸ ™  T§^¡^Ó4ˆ Ø ×-Ñ-°Ò4‘S¸#ˆ
Ü—K‘K     ¨JÑ 6¼¸MÓ8JÓKˆ    Ø! MÑ1ˆ Ø     ‰    $—)‘)˜M¨7Ó3Ô4ð Ð Ü!Ÿ™›‰JܘJ¬Ô1ÜÐAÓBÐ Bò 
ˆô6?¸vÓ5F×G©¨¨E˜˜A™˜u™ ÐGˆ ÑGà × Ñ  Ó &ؘ:×+Ñ+Ñ,ñ -à×!Ñ! +Ó.ñ /ð     ð œU 2 wÓ/Ñ/ˆØ     ‰    $—)‘)˜H kÓ2Ô3Ø ×ј$Ÿ)™) C§L¡L£N°HÓ=Õ>ùóHsÈ    J/có—|js8d|jjj«dddddddddddddœ|_|jjj    |jd«t «}|jj «D]4}|jtj|jdz|««Œ6|j|j|j«d««y)zÇ
        Called twice during file write. The first populates the values in
        the map with 0s.  The second call writes the final map locations when
        all blocks have been written.
        r)Ú
stata_dataÚmapÚvariable_typesÚvarnamesÚsortlistÚformatsÚvalue_label_namesrÚcharacteristicsrðÚstrlsr    Ústata_data_closeú end-of-filerCr€N)r*r    rr—r`rrir%rÅr&r!r]r.r))r r+rs   rWr™zStataWriter117._write_mapM sրð yŠyàØ—|‘|×*Ñ*×/Ñ/Ó1Ø"#ØØØØ%&Ø#$Ø#$ØØØ !Ø$%Ø ñˆDŒIð"      ‰ ×Ñ× Ñ  §¡¨5Ñ!1Ô2Ü‹iˆØ—9‘9×#Ñ#Ó%ò    ?ˆCØ I‰I”f—k‘k $§/¡/°CÑ"7¸Ó=Õ >ð    ?à ×ј$Ÿ)™) C§L¡L£N°EÓ:Õ;ržcó—|jd«t«}|jD]4}|jt    j
|j dz|««Œ6|j|j|j«d««y)NrDr)
r0rrpr%rÅr&r!r]r.r))r r+rss   rWršz$StataWriter117._write_variable_typesk sk€Ø ×ÑÐ)Ô*Ü‹iˆØ—<‘<ò    ?ˆCØ I‰I”f—k‘k $§/¡/°CÑ"7¸Ó=Õ >ð    ?à ×ј$Ÿ)™) C§L¡L£NÐ4DÓEÕFržcóz—|jd«t«}|jdk(rdnd}|jD]O}|j    |«}t |ddj |j«|dz«}|j|«ŒQ|j|j|j«d««y)NrEr;r!r#rB) r0rr:r:r×rrrr%r]r.r))r r+Úvn_lenrïs    rWr›zStataWriter117._write_varnamesr sŸ€Ø ×јÔ$Ü‹iˆà×(Ñ(¨CÒ/‘°SˆØ—L‘Lò    ˆDØ×+Ñ+¨DÓ1ˆDÜ! $ s¨ )×"2Ñ"2°4·>±>Ó"BÀFÈQÁJÓOˆDØ I‰IdOð    ð     ×ј$Ÿ)™) C§L¡L£N°JÓ?Õ@ržcó´—|jd«|jdkrdnd}|j|jd|z|jdzzd««y)NrFr<r…rrrB)r0r:r]r.r‡)r Ú    sort_sizes  rWrœzStataWriter117._write_sortlist} sO€Ø ×јÔ$Ø×*Ñ*¨SÒ0‘A°aˆ    Ø ×ј$Ÿ)™) G¨iÑ$7¸4¿9¹9Àq¹=Ñ$IÈ:ÓVÕWržcóH—|jd«t«}|jdk(rdnd}|jD]6}|j    t |j |j«|««Œ8|j|j|j«d««y)NrGr;r~r|) r0rr:rÿr%rrrr]r.r))r r+Úfmt_lenr—s    rWrzStataWriter117._write_formats‚ s€Ø ×јÔ#Ü‹iˆØ×)Ñ)¨SÒ0‘"°bˆØ—<‘<ò    KˆCØ I‰I”n S§Z¡Z°·±Ó%?ÀÓIÕ Jð    Kà ×ј$Ÿ)™) C§L¡L£N°IÓ>Õ?ržcóÌ—|jd«t«}|jdk(rdnd}t|j«D]o}d}|j
|r|j |}|j|«}t|ddj|j«|dz«}|j|«Œq|j|j|j«d««y)NrHr;r!r#rÐrB)r0rr:r(r‡rRr:r×rrrr%r]r.r))r r+Úvl_lenr rïÚ encoded_names      rWržz'StataWriter117._write_value_label_namesŠ sȀØ ×ÑÐ,Ô-Ü‹iˆà×(Ñ(¨CÒ/‘°SˆÜt—y‘yÓ!ò    $ˆAàˆDØ×%Ñ% aÒ(Ø—|‘| A‘Ø×+Ñ+¨DÓ1ˆDÜ)¨$¨s°¨)×*:Ñ*:¸4¿>¹>Ó*JÈFÐUVÉJÓWˆLØ I‰IlÕ #ð    $ð     ×ј$Ÿ)™) C§L¡L£NÐ4GÓHÕIržcó$—|jd«t«}|jdk(rdnd}td|dz«}|j€[t |j «D]}|j|«Œ|j|j|j«d««y|jD]„}||jvrc|j|}t|«dkDr td«‚    |j|j«}|jt||dz««Œt|j|«Œ†|j|j|j«d««y#t $r}td|j›«|‚d}~wwxYw)    Nrr;r¾i@rÐrBrÝzDVariable labels must contain only characters that can be encoded in )r0rr:rrir(r‡r%r]r.r)rðrrfrrÚUnicodeEncodeError)    r r+rUrárrrõr
r“rts             rWrŸz%StataWriter117._write_variable_labels™ sm€à ×ÑÐ*Ô+Ü‹iˆà×(Ñ(¨CÒ/‘°SˆÜ˜r 6¨A¡:Ó.ˆà ×  Ñ  Ð (ܘ4Ÿ9™9Ó%ò !Ø—    ‘    ˜%Õ ð !à × Ñ ˜dŸi™i¨¯ © «Ð8IÓJÔ KØ à—9‘9ò    !ˆCؐd×+Ñ+Ñ+Ø×-Ñ-¨cÑ2Üu“: ’?Ü$Ð%UÓVÐVðØ#Ÿl™l¨4¯>©>Ó:Gð—    ‘    œ.¨°&¸1±*Ó=Õ>à—    ‘    ˜%Õ ð    !ð      ×ј$Ÿ)™) C§L¡L£NÐ4EÓFÕGøô*òÜ$ð-Ø-1¯^©^Ð,<ð>óððûðúsÃ+E(Å(    FÅ1F
Fcóh—|jd«|j|jdd««y)NrIrž)r0r]r.rVs rWr¡z%StataWriter117._write_characteristics¹ s+€Ø ×ÑÐ*Ô+Ø ×ј$Ÿ)™) CÐ):Ó;Õ<ržcó¨—|jd«|jd«|j|j««|jd«y)Nrðs<data>s</data>)r0r]rðrñs  rWr£zStataWriter117._write_data½ sA€Ø ×Ñ˜Ô Ø ×ј)Ô$Ø ×ј'Ÿ/™/Ó+Ô,Ø ×ј*Õ%ržcó|—|jd«|j|j|jd««y)NrJ)r0r]r.r+rVs rWr¤zStataWriter117._write_strlsà s-€Ø ×јÔ!Ø ×ј$Ÿ)™) D§O¡O°WÓ=Õ>ržcó—y)zNo-op in dta 117+Nr:rVs rWr z&StataWriter117._write_expansion_fieldsÇ rnržcó6—|jd«t«}|jD]@}|j|j«}|j |d«}|j |«ŒB|j|j |j«d««y)Nr    Úlbl)    r0rrQr0r!r.r%r]r))r r+rÚlabs    rWr¥z"StataWriter117._write_value_labelsÊ s|€Ø ×јÔ(Ü‹iˆØ×$Ñ$ò    ˆBØ×)Ñ)¨$¯/©/Ó:ˆCØ—)‘)˜C Ó'ˆCØ I‰IcNð    ð     ×ј$Ÿ)™) C§L¡L£N°NÓCÕDržcó~—|jd«|jtdd««|jd«y)NrKz </stata_dta>rrL)r0r]r5rVs rWr¦z$StataWriter117._write_file_close_tagÓ s4€Ø ×ÑÐ+Ô,Ø ×Ñœ% °Ó8Ô9Ø ×јÕ'ržcóº—|jj«D]>\}}||jvsŒ|jj|«}||j|<Œ@y)z†
        Update column names for conversion to strl if they might have been
        changed to comply with Stata naming rules
        N)rTrArrK)r ÚorigÚnewrßs    rWrmz!StataWriter117._update_strl_namesØ sZ€ð ×.Ñ.×4Ñ4Ó6ò    .‰IˆD#ؐt×)Ñ)Ò)Ø×(Ñ(×.Ñ.¨tÓ4Ø*-×"Ñ" 3Ò'ñ    .ržcó—t|«Dcgc]'\}}|j|dk(s||jvr|‘Œ)}}}|rCt|||j¬«}|j «\}}|}|j |«|_|Scc}}w)zg
        Convert columns to StrLs if either very large or in the
        convert_strl variable
        ryr=)rrprrr:rr&r+)r rðr rõÚ convert_colsÚsswÚtabÚnew_datas        rWräzStataWriter117._convert_strlsã s’€ô$ D›/÷
ᐐ3؏|‰|˜A‰ %Ò'¨3°$×2DÑ2DÑ+Dò ð
ˆ ñ
ñ Ü! $¨ ¸d×>OÑ>OÔPˆCØ×.Ñ.Ó0‰MˆCØˆDØ!×/Ñ/°Ó4ˆDŒO؈ ùó
s,BcóT—g|_g|_|j«D]‡\}}||jv}t    ||j
||j |¬«}|jj|«|jjt||j
||««Œ‰y)N)rErF)    rprÿrArrHrðr:rrÿ)r r¡rõrvrFr—s      rWrz%StataWriter117._set_formats_and_typesõ s—€ØˆŒ ؈Œ Ø Ÿ,™,›.ò     ‰JˆCØ × 2Ñ 2Ð2ˆJÜ-ØØ—    ‘    ˜#‘Ø ×-Ñ-Ø%ô    ˆCð L‰L× Ñ  Ô $Ø L‰L× Ñ Ü(¨°·    ±    ¸#±À
ÓKõ ñ     rž)    NTNNNNNrN)rJrôrðr$rñrõrXrÃr*rrrörrrrõr‘úSequence[Hashable] | Nonerùr.r7rr    r÷rŠr3)rú str | bytesr-rrŠr5)r-rrŠr3rúrûr4r!rù)r6r7r8r9rr:rrýr.r0r˜r™ršr›rœrržrŸr¡r£r¤r r¥r¦rmrärr&r's@rWr(r(‰ scø„ñSðjÐØ€Lð 59ؠؠ$Ø&*Ø!%Ø6:Ø26Ø*1Ø15ð#ðAEñ#à,ð#ðð#ð2ð    #ð
ð #ð ð #ð$ð#ðð#ð4ð#ð0ð#ð(ð#ð/ð#ð>ð#ð
õ#ðJòXóðXó 4ð"&Ø&*ð8?àð8?ð$ð8?ð
ó    8?ót<ó<Gó    AóXó
@ó JóHó@=ó&ó ?ó óEó(ó
    .ó÷$ržr(c󎇗eZdZUdZdZded<                                        d    ddœ                                                                                                            d
ˆfd„Zd d„ZˆxZS) ÚStataWriterUTF8uð
    Stata binary dta file writing in Stata 15 (118) and 16 (119) formats
 
    DTA 118 and 119 format files support unicode string data (both fixed
    and strL) format. Unicode is also supported in value labels, variable
    labels and the dataset label. Format 119 is automatically used if the
    file contains more than 32,767 variables.
 
    Parameters
    ----------
    fname : path (string), buffer or path object
        string, path object (pathlib.Path or py._path.local.LocalPath) or
        object implementing a binary write() functions. If using a buffer
        then the buffer will not be automatically closed after the file
        is written.
    data : DataFrame
        Input to save
    convert_dates : dict, default None
        Dictionary mapping columns containing datetime types to stata internal
        format to use when writing the dates. Options are 'tc', 'td', 'tm',
        'tw', 'th', 'tq', 'ty'. Column can be either an integer or a name.
        Datetime columns that do not have a conversion type specified will be
        converted to 'tc'. Raises NotImplementedError if a datetime column has
        timezone information
    write_index : bool, default True
        Write the index to Stata dataset.
    byteorder : str, default None
        Can be ">", "<", "little", or "big". default is `sys.byteorder`
    time_stamp : datetime, default None
        A datetime to use as file creation date.  Default is the current time
    data_label : str, default None
        A label for the data set.  Must be 80 characters or smaller.
    variable_labels : dict, default None
        Dictionary containing columns as keys and variable labels as values.
        Each label must be 80 characters or smaller.
    convert_strl : list, default None
        List of columns names to convert to Stata StrL format.  Columns with
        more than 2045 characters are automatically written as StrL.
        Smaller columns can be converted by including the column name.  Using
        StrLs can reduce output file size when strings are longer than 8
        characters, and either frequently repeated or sparse.
    version : int, default None
        The dta version to use. By default, uses the size of data to determine
        the version. 118 is used if data.shape[1] <= 32767, and 119 is used
        for storing larger DataFrames.
    {compression_options}
 
        .. versionchanged:: 1.4.0 Zstandard support.
 
    value_labels : dict of dicts
        Dictionary containing columns as keys and dictionaries of column value
        to labels as values. The combined length of all labels for a single
        variable must be 32,000 characters or smaller.
 
        .. versionadded:: 1.4.0
 
    Returns
    -------
    StataWriterUTF8
        The instance has a write_file method, which will write the file to the
        given `fname`.
 
    Raises
    ------
    NotImplementedError
        * If datetimes contain timezone information
    ValueError
        * Columns listed in convert_dates are neither datetime64[ns]
          or datetime
        * Column dtype is not representable in Stata
        * Column listed in convert_dates is not in DataFrame
        * Categorical label contains more than 32,000 characters
 
    Examples
    --------
    Using Unicode data and column names
 
    >>> from pandas.io.stata import StataWriterUTF8
    >>> data = pd.DataFrame([[1.0, 1, 'á´¬']], columns=['a', 'β', 'ĉ'])
    >>> writer = StataWriterUTF8('./data_file.dta', data)
    >>> writer.write_file()
 
    Directly write a zip file
    >>> compression = {"method": "zip", "archive_name": "data_file.dta"}
    >>> writer = StataWriterUTF8('./data_file.zip', data, compression=compression)
    >>> writer.write_file()
 
    Or with long strings stored in strl format
 
    >>> data = pd.DataFrame([['ᴀ relatively long Åtring'], [''], ['']],
    ...                     columns=['strls'])
    >>> writer = StataWriterUTF8('./data_file_with_long_strings.dta', data,
    ...                          convert_strl=['strls'])
    >>> writer.write_file()
    rzLiteral['utf-8']rNrMc óޕ—|
€|jddkrdnd}
n1|
dvr td«‚|
dk(r|jddkDr td«‚t‰| ||||||||| |    | | ¬« |
|_y)    NrBiÿrr<)rr<z"version must be either 118 or 119.zKYou must use version 119 for data sets containing more than32,767 variables)
rñrXr*rrrr    r‘rùr7)rérfr×rr:)r rJrðrñrXr*rrrr‘r>rùr7r    rús              €rWrzStataWriterUTF8.__init__isžø€ð" ˆ?Ø!ŸZ™Z¨™]¨eÒ3‘c¸‰GØ ˜JÑ &ÜÐAÓBÐ BØ ˜Š^ §
¡
¨1¡ °Ò 5Üð#óð ô
    ‰ÑØ Ø Ø'Ø#ØØ!Ø!Ø+Ø%Ø%Ø#Ø+ð    ô     
ð$ˆÕržcóЗ|D]`}t|«dkr#|dks|dkDr|dks|dkDr|dks|dkDr|dk7sdt|«cxkrd    ksn|d
vsŒO|j|d«}Œb|S) aÕ
        Validate variable names for Stata export.
 
        Parameters
        ----------
        name : str
            Variable name
 
        Returns
        -------
        str
            The validated name with invalid characters replaced with
            underscores.
 
        Notes
        -----
        Stata 118+ support most unicode characters. The only limitation is in
        the ascii range where the characters supported are a-z, A-Z, 0-9 and _.
        r#rprqrrrsr²rtrréÀ>õ×õ÷)ràrurvs   rWrwz'StataWriterUTF8._validate_variable_name•s~€ð*ò     ,ˆAô˜“F˜S’LؘSš A¨¢GؘSš A¨¢GؘSš A¨¢GؘSšàœ#˜a›&Ô& 3Ô&ؘ Ò$à—|‘| A sÓ+‘ð     ,ðˆ rž)
NTNNNNNNrN)rJrôrðr$rñrõrXrÃr*rrrörrrrõr‘rjr>rrùr.r7rr    r÷rŠr3rø)    r6r7r8r9rrhrrwr&r's@rWrmrmsØø…ñ^ð@#*€IÐÓ)ð 59ؠؠ$Ø&*Ø!%Ø6:Ø26Ø"Ø*1Ø15ð*$ðAEñ*$à,ð*$ðð*$ð2ð    *$ð
ð *$ð ð *$ð$ð*$ðð*$ð4ð*$ð0ð*$ðð*$ð(ð*$ð/ð*$ð>ð*$ð 
õ!*$÷X#ržrm)r–r'r—rrŠr'r!)r6rrñrÃròrÃrórrôrÃrõrÃrörr÷rÃrørr(rÃrùr.r7rrŠzDataFrame | StataReader)r0rrŠr)rïr
r·r`rŠr
)r—rrŠrg)rñrÆr:zlist[Hashable]rŠrÆ)rvrgr r'rŠr`)rF)r r'rEr`rFrÃrŠr)rvrgr r'rFrÃrŠr`)rïrkr·r`rŠr5)vr9Ú
__future__rÚ collectionsrrrÚiorr©rÅrîÚtypingrr    r
r r r r’Únumpyr‹Ú pandas._libsrÚpandas._libs.librÚpandas._libs.writersrÚ pandas.errorsrrrrÚpandas.util._decoratorsrrÚpandas.util._exceptionsrÚpandas.core.dtypes.baserÚpandas.core.dtypes.commonrrrÚpandas.core.dtypes.dtypesrÚpandasrrrr r!r"r#Úpandas.core.framer$Úpandas.core.indexes.baser%Úpandas.core.indexes.ranger&Úpandas.core.seriesr'Úpandas.core.shared_docsr(Úpandas.io.commonr)Úcollections.abcr*r+Útypesr,r-Úpandas._typingr.r/r0r1r2r3rKÚ_statafile_processing_params1Ú_statafile_processing_params2Ú_chunksize_paramsÚ_iterator_paramsÚ _reader_notesÚ_read_stata_docr%r$rÑrCrhrrÉrÊrËrÌrÍrÎrürþr<rírpÚIteratorrÔr+rír'r6r<rBrHrLrÿrrr(rmr:ržrWú<module>r’s ðò
õ#å÷õÛ    Û Û
÷÷óãåÝ(Ý5÷ó÷ õ5å2÷ñõ
7÷÷ñõ(Ý*Ý0Ý%Ý0å'á÷õ$Ý÷÷ð4ðð!NÐð !GÐð$Ðð
"Ðð(€ ððÐð ØÐð ØÐðØÐðØ Ð%Ñ&Ð)=Ñ=Ð>ð?Ø ÐÑ Ð!ð "ð€ðð?8€ðtðÐð ØÐð ð ÐððÐð ØÐð ØÐðØ Ð%Ñ&Ð'ð(Ø ÐÑ Ð!ð"à€ððÐò$O€ ñ˜d A qÓ)€ ˆUÓ)ó]ó@h7ðV(ИuóðАEóð #И%óð    Ð%ó    ð)Рóó}÷@vñvôr%˜Oô%÷>CñC÷L\
ñ\
ô~|&+˜sŸ|™|ô|&ñ~
ˆ/ÓðØ!%Ø Ø!Ø Ø$(Ø#Ø ØØ&-Ø-1ñ!Ø4ð!ðð!ðð    !ð
ð !ð ð !ðð!ð"ð!ðð!ðð!ðð!ð$ð!ð+ð!ðò!óð!óHDó0óCó2 ó!GðJGLð*GØð*GØ(+ð*GØ?Cð*Gàó*GñZØ Ð!2Ñ3Ø$Ð%:Ñ;¸gÑEôôL B+óL Bó    ðL Bó^'GóT1÷rñrôjz[ôzôz rnõrrž