ltc-code 0.1.8__tar.gz → 0.1.82__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ltc-code
3
- Version: 0.1.8
3
+ Version: 0.1.82
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.9
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ltc-code"
3
- version = "0.1.8"
3
+ version = "0.1.82"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -0,0 +1,95 @@
1
+ schema_map = {
2
+ # Identifying who this is —---------------
3
+ "id": "student_id",
4
+ "name_title": "name_title",
5
+ "first_name": "fname",
6
+ "middle_name": "mname",
7
+ "last_name": "lname",
8
+ "name_suffix": "suffix",
9
+ "name": "name",
10
+ "roles": "roles",
11
+ "address": "address",
12
+ "birth_date": "dob",
13
+ "is_parent2": "is_parent2",
14
+ # language
15
+ "localization": "localization",
16
+ "evaluation_singleselect_05": "evaluation_singleselect_05",
17
+ "evaluation_singleselect_06": "evaluation_singleselect_06",
18
+ "evaluation_singleselect_07": "evaluation_singleselect_07",
19
+ "evaluation_singleselect_08": "evaluation_singleselect_08",
20
+ "language1": "preferred_language",
21
+ # disabilities?
22
+ "current_iep": "sped",
23
+ "evaluation_singleselect_02": "evaluation_singleselect_02",
24
+ "evaluation_singleselect_03": "evaluation_singleselect_03",
25
+ "evaluation_singleselect_04": "evaluation_singleselect_04",
26
+ "custom_primary_disability": "custom_primary_disability",
27
+ "custom_sped_program": "custom_sped_program",
28
+ # potential start year and grade
29
+ "custom_years": "custom_years",
30
+ "custom_grade": "custom_grade",
31
+ # external ids
32
+ "external_id": "external_id",
33
+ "lausd_id": "lausd_id",
34
+ "facts_student_id": "facts_student_id",
35
+ # previous school
36
+ "custom_singleselect_07": "custom_singleselect_07",
37
+ "custom_singleselect_08": "custom_singleselect_08",
38
+ "custom_singleselect_09": "custom_singleselect_09",
39
+ "previous_school_1": "prior_school",
40
+ # parent name
41
+ "emergency_contact_1": "p_name",
42
+ "custom_emr1": "custom_emr1",
43
+ # Basic info on application / enrollment —---------------
44
+ "apply_year": "school_year",
45
+ "apply_grade": "entry_grade",
46
+ "enroll_grade": "grade",
47
+ "custom_current_grade": "custom_current_grade",
48
+ "custom_school_selection": "custom_school_selection",
49
+ "school_lead": "school_lead",
50
+ # Priority information —---------------
51
+ # sibling
52
+ "sibling0_another": "sib_enroll_cmo",
53
+ "sibling1_another": "sib1_enroll_cmo",
54
+ "sibling2_another": "sib2_enroll_cmo",
55
+ "alumni_multi_option": "alumni_multi_option",
56
+ "sibling0_name": "sib_name",
57
+ "sibling_preference": "sibling_preference",
58
+ "sibling_verified_by": "sibling_verified_by",
59
+ "sibling3_apply": "sib_concur_cmo",
60
+ # parent works there
61
+ "staff_member": "p_employed",
62
+ # green dot family / employee
63
+ "referral_method": "referral_method",
64
+ # parent education / where they live
65
+ "education_degree": "education_degree",
66
+ "custom_singleselect_01": "custom_singleselect_01",
67
+ # ESL
68
+ "custom_singleselect_eseld": "lep",
69
+ "custom_textfield_12": "custom_textfield_12",
70
+ "english_proficiency": "english_proficiency",
71
+ # school prior / feeder variables
72
+ "custom_prior_ms_feeder": "custom_prior_ms_feeder",
73
+ "custom_prior_school": "custom_prior_school",
74
+ "custom_prior_elementary_feeder": "custom_prior_elementary_feeder",
75
+ "feeder_school": "feeder_school",
76
+ # attendance area
77
+ "attendance_area_preference": "attendance_area_preference",
78
+ # ever expelled or disciplined
79
+ "custom_boolean_01": "custom_boolean_01",
80
+ "custom_textfield_07": "custom_textfield_07",
81
+ # Identifying offer and enrollment flags —---------------
82
+ "status": "status",
83
+ "application_submit_date": "application_date",
84
+ "inquiry_submit_date": "inquiry_submit_date",
85
+ "signature_current_datetime": "signature_current_datetime",
86
+ "lottery_number": "lottery_number",
87
+ "lottery_number_edited": "lottery_number_edited",
88
+ "first_call_offer_date": "first_call_offer_date",
89
+ "offered_seat_sibling_accepted": "offered_seat_sibling_accepted",
90
+ "waitlist_position": "waitlist_position",
91
+ "waitlist_number": "waitlist_number",
92
+ "declined_seat_exit_code": "declined_seat_exit_code",
93
+ "declined_seat_reason": "declined_seat_reason",
94
+ "enrollment_type": "enrollment_type",
95
+ }
@@ -0,0 +1,581 @@
1
+ # KIPP HOUSTON LOTTO
2
+ df = df.select(
3
+ # --------------------------------------------------
4
+ # Metadata
5
+ # --------------------------------------------------
6
+ pl.col("school_year"),
7
+ pl.col("cmo_name"),
8
+ pl.col("data_type"),
9
+ pl.col("ren_num"),
10
+
11
+ # --------------------------------------------------
12
+ # Student name
13
+ # --------------------------------------------------
14
+ pl.col("First Name").alias("fname"),
15
+ pl.col("stu_MiddleName").alias("mname"),
16
+ pl.col("Last Name").alias("lname"),
17
+
18
+ # Ambiguous / duplicate DOB fields; keep raw
19
+ pl.col("Date Of Birth"),
20
+ pl.col("stu_DOB"),
21
+
22
+ # --------------------------------------------------
23
+ # Grades
24
+ # --------------------------------------------------
25
+ pl.col("Apply Grade").alias("entry_grade"),
26
+ pl.col("Grade").alias("grade"),
27
+
28
+ # Current grade, not necessarily application grade
29
+ pl.col("Stu_CurrGrade"),
30
+
31
+ # --------------------------------------------------
32
+ # Application IDs / student IDs
33
+ # --------------------------------------------------
34
+ pl.col("SubmissionRecordID").alias("application_id"),
35
+ pl.col("ExternalStudentID").alias("student_id"),
36
+ pl.col("LotteryFamilyCode").alias("family_id"),
37
+ pl.col("Confirmation ID"),
38
+ pl.col("ActionSessionID"),
39
+
40
+ # --------------------------------------------------
41
+ # Application dates / admin timestamps
42
+ # --------------------------------------------------
43
+ pl.col("Submitted").alias("application_date"),
44
+
45
+ # Ambiguous: lottery-specific app date
46
+ pl.col("LotterySubmissionDate"),
47
+
48
+ # Ambiguous: unclear how this differs from Submitted
49
+ pl.col("Started"),
50
+
51
+ pl.col("ApprovalDate"),
52
+ pl.col("DeliveryDate").alias("last_update_date"),
53
+ pl.col("stu_RegistrationDate").alias("registration_complete_date"),
54
+ pl.col("p_Date").alias("parent_signature_date"),
55
+
56
+ # --------------------------------------------------
57
+ # Lottery / status
58
+ # --------------------------------------------------
59
+ pl.col("LotteryStatus").alias("lottery_status"),
60
+ pl.col("LotteryPosition").alias("lottery_number"),
61
+ pl.col("LotteryPriority").alias("priority_group"),
62
+
63
+ # Ambiguous alt lottery number field
64
+ pl.col("stu_NumberPickedInLottery"),
65
+
66
+ pl.col("Status").alias("application_status"),
67
+ pl.col("ApprovalHistory"),
68
+ pl.col("DeliveryHistory"),
69
+ pl.col("SWMMatchStatus"),
70
+
71
+ # --------------------------------------------------
72
+ # Offer / enrollment proxies
73
+ # --------------------------------------------------
74
+ pl.col("stu_OfferingSpot").alias("offer"),
75
+ pl.col("Accepted School1"),
76
+ pl.col("Accepted School2"),
77
+ pl.col("Accepted School3"),
78
+ pl.col("Accepted School4"),
79
+
80
+ # Ambiguous post-offer/enrollment process variables
81
+ pl.col("stu_SignedCte"),
82
+ pl.col("stu_HomeVisit"),
83
+ pl.col("stu_HSPacketAgree"),
84
+ pl.col("stu_ExportToFE"),
85
+
86
+ # --------------------------------------------------
87
+ # School applying to / school attended
88
+ # --------------------------------------------------
89
+ pl.col("School Applying To").alias("school_name"),
90
+
91
+ # Ambiguous school-applied-to alternatives; keep raw
92
+ pl.col("hid_ApplyingSchoolName"),
93
+ pl.col("lottery_ApplyingToWhichSchool"),
94
+ pl.col("Applied School"),
95
+ pl.col("School"),
96
+
97
+ # Ambiguous: current/prior/next-year school fields
98
+ pl.col("Stu_CurrSchool"),
99
+ pl.col("stu_CurrentlyAttendingSchool"),
100
+ pl.col("stu_SchoolNextYear"),
101
+ pl.col("stu_School"),
102
+ pl.col("stu_School2"),
103
+
104
+ # Zoned / feeder school fields
105
+ pl.col("Zoned School").alias("feeder_school"),
106
+ pl.col("hid_ZonedSchoolName"),
107
+ pl.col("lottery_ZonedForWhichSchools"),
108
+ pl.col("zone_school_id"),
109
+ pl.col("zone_school_address"),
110
+ pl.col("zone_school_address2"),
111
+ pl.col("zone_school_grades"),
112
+ pl.col("zone_school_grades2"),
113
+
114
+ # --------------------------------------------------
115
+ # Address / geography
116
+ # --------------------------------------------------
117
+ pl.col("Stu_address").alias("address1"),
118
+ pl.col("Stu_address2").alias("address2"),
119
+ pl.col("Stu_address3"),
120
+ pl.col("Stu_city").alias("city"),
121
+ pl.lit("TX").alias("state"),
122
+
123
+ # Duplicate/alternate zip fields; keep raw
124
+ pl.col("stu_Zip"),
125
+ pl.col("Zip"),
126
+ pl.col("stu_ZipOther"),
127
+
128
+ pl.col("stu_CurrSchoolDistrict"),
129
+
130
+ # --------------------------------------------------
131
+ # Parent / guardian
132
+ # --------------------------------------------------
133
+ pl.col("p1_FirstName").alias("p1_fname"),
134
+ pl.col("p1_LastName").alias("p1_lname"),
135
+ pl.col("p2_FirstName").alias("p2_fname"),
136
+ pl.col("p2_LastName").alias("p2_lname"),
137
+ pl.col("p_Sig").alias("p_name"),
138
+
139
+ pl.col("Stu_kippsterparent").alias("p_employed"),
140
+
141
+ # Ambiguous / alternate parent employment fields
142
+ pl.col("Parent Employee Priority"),
143
+ pl.col("stu_KIPPParentName"),
144
+ pl.col("stu_KIPPsterParentSchool"),
145
+
146
+ # --------------------------------------------------
147
+ # Sibling priority / sibling names
148
+ # --------------------------------------------------
149
+ pl.col("Stu_kippsibling").alias("sib_enroll_cmo"),
150
+ pl.col("Stu_kippsiblingfirstname").alias("sib_fname"),
151
+ pl.col("Stu_kippsiblinglastname").alias("sib_lname"),
152
+ pl.col("Stu_kippsiblingschool").alias("sib_school"),
153
+
154
+ pl.col("sib1_FirstName").alias("sib1_fname"),
155
+ pl.col("sib1_LastName").alias("sib1_lname"),
156
+ pl.col("sib2_FirstName").alias("sib2_fname"),
157
+ pl.col("sib2_LastName").alias("sib2_lname"),
158
+ pl.col("sib3_FirstName").alias("sib3_fname"),
159
+ pl.col("sib3_LastName").alias("sib3_lname"),
160
+
161
+ # Ambiguous / alternate sibling priority fields
162
+ pl.col("Sibling Priority"),
163
+ pl.col("stu_KIPPSiblingName"),
164
+ pl.col("stu_KIPPSiblingAlum").alias("sib_grad_cmo"),
165
+ pl.col("stu_KIPPSiblingAlumFirstName"),
166
+ pl.col("stu_KIPPSiblingLastName"),
167
+ pl.col("stu_KIPPSiblingAlumSchool"),
168
+ pl.col("stu_KIPPSiblingAlumGradYear"),
169
+
170
+ # --------------------------------------------------
171
+ # Priority / geography priority
172
+ # --------------------------------------------------
173
+ pl.col("Priority Tier"),
174
+ pl.col("Stu_priorityzone"),
175
+ pl.col("nozonedschool"),
176
+ pl.col("outofdistrict"),
177
+ pl.col("stu_RequestingZonedSchool"),
178
+ pl.col("lottery_HasAffiliationToKIPP"),
179
+ pl.col("stu_CurrKipp"),
180
+
181
+ # --------------------------------------------------
182
+ # Late app / submission type
183
+ # --------------------------------------------------
184
+ pl.col("stu_Deadline").alias("late_app"),
185
+ pl.col("stu_SubmissionType").alias("application_source"),
186
+
187
+ # --------------------------------------------------
188
+ # Language / demographics / student attributes
189
+ # --------------------------------------------------
190
+ pl.col("stu_Language").alias("preferred_language"),
191
+ pl.col("stu_LanguageOther"),
192
+ pl.col("stu_HomeLanguage"),
193
+ pl.col("Stu_age"),
194
+ pl.col("stu_QualifyPK"),
195
+ pl.col("stu_BirthCertificate"),
196
+ pl.col("stu_LunchAppResults"),
197
+ pl.col("stu_ResidencyQuestionaire"),
198
+ pl.col("stu_SpecNeedQuestionnaire").alias("sped"),
199
+ pl.col("stu_TXCharter"),
200
+
201
+ # --------------------------------------------------
202
+ # School application flags
203
+ # --------------------------------------------------
204
+ pl.col("stu_SHARP"),
205
+ pl.col("stu_Sharpstown"),
206
+ pl.col("stu_SHINE"),
207
+ pl.col("stu_KMS"),
208
+ pl.col("stu_KHHS"),
209
+ pl.col("stu_Unity"),
210
+ pl.col("stu_WestHoustonAcademy"),
211
+ pl.col("stu_3D"),
212
+ pl.col("stu_BellaireMiddle"),
213
+ pl.col("stu_BellairePrimary"),
214
+ pl.col("stu_CONNECTMiddle"),
215
+ pl.col("stu_CONNEXTPrimary"),
216
+ pl.col("stu_Coastal"),
217
+ pl.col("stu_Courage"),
218
+ pl.col("stu_DREAM"),
219
+ pl.col("stu_Explore"),
220
+ pl.col("stu_Generations"),
221
+ pl.col("stu_Intrepid"),
222
+ pl.col("stu_Polaris"),
223
+ pl.col("stu_Legacy"),
224
+ pl.col("stu_Liberation"),
225
+ pl.col("stu_NortheastCollegePrep"),
226
+ pl.col("stu_PEACE"),
227
+ pl.col("stu_Spirit"),
228
+ pl.col("stu_Sunnyside"),
229
+ pl.col("stu_Voyage"),
230
+ pl.col("stu_ZENITH"),
231
+
232
+ # --------------------------------------------------
233
+ # Notes / admin follow-up fields
234
+ # --------------------------------------------------
235
+ pl.col("Tags"),
236
+ pl.col("Notes"),
237
+ pl.col("Notes86"),
238
+ pl.col("Notes18"),
239
+ pl.col("Notes34"),
240
+ pl.col("stu_NotesComments"),
241
+ pl.col("stu_WD"),
242
+ pl.col("stu_PostLotteryParentCommunicationDate"),
243
+ pl.col("stu_CloseWaitlistDate"),
244
+ pl.col("stu_CloseWaitlistForSchool"),
245
+ pl.col("stu_ApplyOtherSchools"),
246
+ pl.col("stu_ConsiderOtherKipp"),
247
+ pl.col("stu_OtherSchool1"),
248
+ pl.col("stu_OtherSchool2"),
249
+ pl.col("stu_OtherSchool3"),
250
+ pl.col("stu_OtherSchool4"),
251
+ pl.col("stu_OtherSchool5"),
252
+ )
253
+
254
+
255
+
256
+
257
+ # Kipp houston registration data
258
+ registration = registration.select(
259
+ # --------------------------------------------------
260
+ # Metadata
261
+ # --------------------------------------------------
262
+ pl.col("school_year"),
263
+ pl.col("cmo_name"),
264
+ pl.col("data_type"),
265
+ pl.col("ren_num"),
266
+
267
+ # --------------------------------------------------
268
+ # Student name
269
+ # --------------------------------------------------
270
+ pl.col("First Name").alias("fname"),
271
+ pl.col("stu_MiddleName").alias("mname"),
272
+ pl.col("Last Name").alias("lname"),
273
+
274
+ # Ambiguous / duplicate student-name fields; keep raw
275
+ pl.col("stu_FirstName"),
276
+ pl.col("stu_LastName"),
277
+ pl.col("stu_Suffix").alias("suffix"),
278
+
279
+ # --------------------------------------------------
280
+ # DOB
281
+ # --------------------------------------------------
282
+ # Ambiguous / duplicate DOB fields; keep raw
283
+ pl.col("DateOfBirth"),
284
+ pl.col("stu_DoB"),
285
+
286
+ # --------------------------------------------------
287
+ # Grades
288
+ # --------------------------------------------------
289
+ pl.col("Grade").alias("grade"),
290
+ pl.col("stu_Grade").alias("enrollment_grade"),
291
+
292
+ # --------------------------------------------------
293
+ # School / enrollment school
294
+ # --------------------------------------------------
295
+ pl.col("School").alias("enrollment_school_name"),
296
+
297
+ # Ambiguous duplicate school field; keep raw
298
+ pl.col("stu_School"),
299
+
300
+ # --------------------------------------------------
301
+ # Enrollment / registration status
302
+ # --------------------------------------------------
303
+ pl.col("Enroll Status").alias("enroll_status"),
304
+ pl.col("stu_Status"),
305
+ pl.col("Status").alias("registration_status"),
306
+
307
+ # --------------------------------------------------
308
+ # IDs
309
+ # --------------------------------------------------
310
+ pl.col("ID"),
311
+ pl.col("SubmissionRecordID").alias("application_id"),
312
+ pl.col("stu_ID").alias("student_id"),
313
+ pl.col("SnapCode"),
314
+ pl.col("FamilyMemberID"),
315
+ pl.col("FamilyID").alias("family_id"),
316
+ pl.col("ActionSessionID"),
317
+ pl.col("stu_TSDSLocalID"),
318
+
319
+ # --------------------------------------------------
320
+ # Registration / admin dates
321
+ # --------------------------------------------------
322
+ pl.col("Submitted").alias("registration_submit_date"),
323
+
324
+ # Ambiguous: starts around June; maybe registration/enrollment start date
325
+ pl.col("Started"),
326
+
327
+ pl.col("ApprovalDate"),
328
+ pl.col("DeliveryDate").alias("last_update_date"),
329
+ pl.col("p_Date").alias("parent_signature_date"),
330
+
331
+ # Only exists 2017-2018; unclear exact meaning
332
+ pl.col("stu_Date"),
333
+
334
+ # --------------------------------------------------
335
+ # Lottery fields included in registration data
336
+ # --------------------------------------------------
337
+ # Mostly non-useful constants in registration files, but keep for checks
338
+ pl.col("LotteryStatus"),
339
+ pl.col("LotteryPosition").alias("lottery_number"),
340
+ pl.col("LotteryPriority").alias("priority_group"),
341
+ pl.col("LotterySubmissionDate"),
342
+
343
+ # --------------------------------------------------
344
+ # Prior / zoned school
345
+ # --------------------------------------------------
346
+ pl.col("stu_ZonedDistrict"),
347
+ pl.col("stu_ZonedSchool").alias("feeder_school"),
348
+ pl.col("stu_PrevKIPP"),
349
+ pl.col("stu_PrevKIPPYear"),
350
+
351
+ # Prior school name; other prev-school fields mostly broad missing per notes
352
+ pl.col("stu_PrevSch1Name").alias("prior_school"),
353
+
354
+ # --------------------------------------------------
355
+ # Address / geography
356
+ # --------------------------------------------------
357
+ pl.col("stu_Addrnum"),
358
+ pl.col("stu_AddrStreet"),
359
+ pl.col("stu_AddrCity").alias("city"),
360
+ pl.col("stu_AddrZip").alias("zip"),
361
+
362
+ # --------------------------------------------------
363
+ # Parent / guardian
364
+ # --------------------------------------------------
365
+ pl.col("p1_FirstName").alias("p1_fname"),
366
+ pl.col("p1_LastName").alias("p1_lname"),
367
+ pl.col("p2_FirstName").alias("p2_fname"),
368
+ pl.col("p2_LastName").alias("p2_lname"),
369
+
370
+ # Parent volunteer fields, not employment priority
371
+ pl.col("p1_Volunteer"),
372
+ pl.col("p2_Volunteer"),
373
+
374
+ pl.col("p_Agree"),
375
+ pl.col("p_Sig").alias("p_name"),
376
+
377
+ # --------------------------------------------------
378
+ # Sibling variables
379
+ # --------------------------------------------------
380
+ # Count/number of KIPP siblings, not binary
381
+ pl.col("stu_KIPPSibling"),
382
+
383
+ pl.col("stu_KIPPSib1Fname").alias("sib1_fname"),
384
+ pl.col("stu_KIPPSib1Lname").alias("sib1_lname"),
385
+ pl.col("stu_KIPPSib1Grade").alias("sib1_grade"),
386
+ pl.col("stu_KIPPSib1Sch").alias("sib_school"),
387
+
388
+ # --------------------------------------------------
389
+ # Language / student attributes
390
+ # --------------------------------------------------
391
+ pl.col("Language").alias("preferred_language"),
392
+ pl.col("stu_SNAPTANF"),
393
+ pl.col("stu_SNAPTANFNumber"),
394
+
395
+ # --------------------------------------------------
396
+ # Returning student indicators
397
+ # --------------------------------------------------
398
+ # Only 2018; useful for separating new vs returning registrations
399
+ pl.col("stu_ReturningNo"),
400
+ pl.col("stu_ReturningYesNo"),
401
+ )
402
+
403
+
404
+ # other files
405
+ app = app.select(
406
+ # --------------------------------------------------
407
+ # Metadata
408
+ # --------------------------------------------------
409
+ pl.col("school_year"),
410
+ pl.col("cmo_name"),
411
+ pl.col("data_type"),
412
+ pl.col("ren_num"),
413
+
414
+ # --------------------------------------------------
415
+ # Student IDs / application IDs
416
+ # --------------------------------------------------
417
+ pl.col("Application ID").alias("application_id"),
418
+ pl.col("Application_ID"),
419
+ pl.col("Applicant_ID"),
420
+ pl.col("Account ID").alias("account_id"),
421
+ pl.col("Account_ID"),
422
+ pl.col("SM_Student_Id"),
423
+ pl.col("SIS_Student_Id"),
424
+ pl.col("SIS ID"),
425
+ pl.col("Student_ID_Schoolmint"),
426
+ pl.col("Student_ID_Local").alias("student_id"),
427
+ pl.col("Student_ID_State"),
428
+
429
+ # --------------------------------------------------
430
+ # Student name
431
+ # --------------------------------------------------
432
+ pl.col("Students First Name").alias("fname"),
433
+ pl.col("Student Middle Name").alias("mname"),
434
+ pl.col("Students Last Name").alias("lname"),
435
+
436
+ # Duplicate/alternate name fields from KIPP Texas-style exporter; keep raw
437
+ pl.col("First_Name"),
438
+ pl.col("Middle_Name"),
439
+ pl.col("Last_Name"),
440
+
441
+ # --------------------------------------------------
442
+ # DOB
443
+ # --------------------------------------------------
444
+ pl.col("Student Birth Date").alias("dob"),
445
+
446
+ # Duplicate/alternate DOB from KIPP Texas-style exporter; keep raw
447
+ pl.col("Birth_Date"),
448
+
449
+ # --------------------------------------------------
450
+ # School applying to
451
+ # --------------------------------------------------
452
+ pl.col("School Applying to").alias("school_name"),
453
+ pl.col("School_Name"),
454
+ pl.col("School_Id"),
455
+
456
+ # --------------------------------------------------
457
+ # Grades
458
+ # --------------------------------------------------
459
+ pl.col("Grade Applying To").alias("entry_grade"),
460
+ pl.col("Current Grade"),
461
+
462
+ # KIPP Texas-style exporter fields; keep raw if ambiguous/alternate
463
+ pl.col("Grade"),
464
+ pl.col("Current_Grade_Level"),
465
+
466
+ # --------------------------------------------------
467
+ # Application / enrollment period
468
+ # --------------------------------------------------
469
+ pl.col("Enrollment Period"),
470
+ pl.col("Academic_Year"),
471
+
472
+ # --------------------------------------------------
473
+ # Application status
474
+ # --------------------------------------------------
475
+ pl.col("Application Status").alias("application_status"),
476
+ pl.col("Status"),
477
+ pl.col("Public_Status"),
478
+
479
+ # Status updated timestamp
480
+ pl.col("Status_Timestamp").alias("status_timestamp"),
481
+
482
+ # --------------------------------------------------
483
+ # Application type / rank
484
+ # --------------------------------------------------
485
+ pl.col("Application Type").alias("application_type"),
486
+ pl.col("Application_Type"),
487
+ pl.col("Applicant_Rank").alias("rank"),
488
+
489
+ # --------------------------------------------------
490
+ # Dates
491
+ # --------------------------------------------------
492
+ pl.col("Submission Date").alias("application_date"),
493
+ pl.col("Submission_Date"),
494
+ pl.col("Created_At"),
495
+
496
+ pl.col("Offered Date").alias("offer_date"),
497
+ pl.col("Offered_Date"),
498
+
499
+ pl.col("Accepted Date").alias("offer_accept_date"),
500
+ pl.col("Accepted_Date"),
501
+
502
+ pl.col("Registration Completed Date").alias("registration_complete_date"),
503
+ pl.col("Registration_Completed_Date"),
504
+
505
+ # Ambiguous: completion vs verification gap needs checking
506
+ pl.col("Registration_Verified_Date"),
507
+
508
+ # --------------------------------------------------
509
+ # Lottery / waitlist
510
+ # --------------------------------------------------
511
+ pl.col("Waitlist Number").alias("waitlist_number"),
512
+ pl.col("Waitlist_Number"),
513
+
514
+ # Ambiguous: compare global vs non-global lottery numbers
515
+ pl.col("Lottery_Global_Number"),
516
+ pl.col("Lottery_Number"),
517
+ pl.col("Lottery_Tickets"),
518
+
519
+ # --------------------------------------------------
520
+ # Parent / guardian
521
+ # --------------------------------------------------
522
+ pl.col("Primary Guardian First Name").alias("p1_fname"),
523
+ pl.col("Primary Guardian Last Name").alias("p1_lname"),
524
+ pl.col("Secondary Guardian First Name").alias("p2_fname"),
525
+ pl.col("Secondary Guardian Last Name").alias("p2_lname"),
526
+
527
+ # Parent/guardian employed by organization
528
+ pl.col("Is one of the parents or guardians employed by this organization?").alias("p_employed"),
529
+
530
+ # --------------------------------------------------
531
+ # Address / geography
532
+ # --------------------------------------------------
533
+ pl.col("StudentAddress: Street 1").alias("address1"),
534
+ pl.col("StudentAddress: Street 2").alias("address2"),
535
+ pl.col("StudentAddress: City").alias("city"),
536
+ pl.col("StudentAddress: ZIP").alias("zip"),
537
+ pl.col("District"),
538
+ pl.col("District_Name"),
539
+
540
+ # --------------------------------------------------
541
+ # Current / prior school
542
+ # --------------------------------------------------
543
+ pl.col("Current School").alias("prior_school"),
544
+ pl.col("Current_School_Name"),
545
+
546
+ # --------------------------------------------------
547
+ # Language
548
+ # --------------------------------------------------
549
+ pl.col("Account Preferred Language").alias("preferred_language"),
550
+
551
+ # --------------------------------------------------
552
+ # Admin/source fields
553
+ # --------------------------------------------------
554
+ pl.col("admin_info_source"),
555
+ pl.col("Homeless Shelter"),
556
+
557
+ # --------------------------------------------------
558
+ # Priority fields
559
+ # --------------------------------------------------
560
+ # Broad priority text/code fields; keep both because they differ by exporter
561
+ pl.col("Priorities"),
562
+ pl.col("Priority_List"),
563
+
564
+ # --------------------------------------------------
565
+ # Sibling priority fields
566
+ # --------------------------------------------------
567
+ pl.col(
568
+ "Does the student have a brother or sister currently attending a school within this organization?"
569
+ ).alias("sib_enroll_cmo"),
570
+
571
+ pl.col(
572
+ "Does the student have a brother or sister who has graduated from a school within this organization?"
573
+ ).alias("sib_grad_cmo"),
574
+
575
+ pl.col("Sibling 1 Name").alias("sib1_name"),
576
+ pl.col("Sibling 1 Grade").alias("sib1_grade"),
577
+ pl.col("Sibling 1 School").alias("sib1_school"),
578
+
579
+ pl.col("Sibling 2 Name").alias("sib2_name"),
580
+ pl.col("Sibling 2 School").alias("sib2_school"),
581
+ )
File without changes