DAG: N1-to-N20-T1-to-T5-Counties

schedule: 5 0 * * 2-6


N1-to-N20-T1-to-T5-Counties

Toggle wrap
  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
import datetime as dt

import airflow
from airflow.models import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.latest_only_operator import LatestOnlyOperator
from airflow.operators.python_operator import PythonOperator

from airflow.operators.docker_operator import DockerOperator
from airflow.operators.bash_operator import BashOperator

from airflow.utils.dates import days_ago
from pprint import pprint

DAG_ID = "N1-to-N20-T1-to-T5-Counties"  # must change before uploading to airflow !!!
START_DATE = days_ago(30)
# SCHEDULE_INTERVAL = dt.timedelta(hours=12)
# SCHEDULE_INTERVAL = "@daily"
SCHEDULE_INTERVAL = "5 0 * * 2-6"

MAX_ACTIVE_RUN = 1
MAX_CONCURRENT_TASKS = 3
RETRY_COUNT = 3
RETRY_DELAY = dt.timedelta(minutes=5)

EMAIL = "mobinalhassan1@gmail.com"
OWNER = "datascope"

default_args = {
    'owner': OWNER,
    'depends_on_past': False,
    'start_date': START_DATE,
    'email': [EMAIL],
    'email_on_failure': True,
    'email_on_retry': True,
    'retries': RETRY_COUNT,
    'retry_delay': RETRY_DELAY,
    # 'execution_timeout': timedelta(seconds=300),
    # 'on_failure_callback': some_function,
    # 'on_success_callback': some_other_function,
    # 'on_retry_callback': another_function,
    'trigger_rule': 'all_done'
}

dag = DAG(
    dag_id=DAG_ID,
    schedule_interval=SCHEDULE_INTERVAL,
    start_date=START_DATE,
    max_active_runs=MAX_ACTIVE_RUN,
    catchup=False,
    default_args=default_args,
    concurrency=MAX_CONCURRENT_TASKS

)

latest_only = LatestOnlyOperator(task_id='my_latest_only', dag=dag)
# Pre-requisite
prerequisite_scheduler = DockerOperator(
    task_id='Prerequisite-scheduler',
    image='registry.gitlab.com/aintelproject/prerequisite:latest',
    auto_remove=True,
    force_pull=True,
    dag=dag
)

# N1
barnstable_scheduler = DockerOperator(
    task_id='N1-T1-Barnstable-County-scheduler',
    image='registry.gitlab.com/aintelproject/n1-t1-barnstable:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N2
norfolk_scheduler = DockerOperator(
    task_id='N2-T1-Norfolk-County-scheduler',
    image='registry.gitlab.com/aintelproject/n2-t1-norfolk-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N3
north_worcester_scheduler = DockerOperator(
    task_id='N3-T1-North-Worcester-County-scheduler',
    image='registry.gitlab.com/aintelproject/n3-t1-north-worcester-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N4
north_essex_scheduler = DockerOperator(
    task_id='N4-T1-North-Essex-County-scheduler',
    image='registry.gitlab.com/aintelproject/n4-t1-north-essex-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N5
berkMiddle_county_scheduler = DockerOperator(
    task_id='N5-T2-BerkMiddle-County-scheduler',
    image='registry.gitlab.com/aintelproject/n5-t2-berkmiddle-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N6
berk_north_county_scheduler = DockerOperator(
    task_id='N6-T2-BerkNorth-County-scheduler',
    image='registry.gitlab.com/aintelproject/n6-t2-berknorth-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N7
berk_south_county_scheduler = DockerOperator(
    task_id='N7-T2-BerkSouth-County-scheduler',
    image='registry.gitlab.com/aintelproject/n7-t2-berksouth-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N8
dukes_country_scheduler = DockerOperator(
    task_id='N8-T2-Dukes-Country-scheduler',
    image='registry.gitlab.com/aintelproject/n8-t2-dukes-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N9
franklin_country_scheduler = DockerOperator(
    task_id='N9-T2-Franklin-country-scheduler',
    image='registry.gitlab.com/aintelproject/n9-t2-franklin-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N10
hampshire_country_scheduler = DockerOperator(
    task_id='N10-T2-Hampshire-Country-scheduler',
    image='registry.gitlab.com/aintelproject/n10-t2-hampshire-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N11
middlesex_north_country_scheduler = DockerOperator(
    task_id='N11-T2-MiddlesexNorth-Country-scheduler',
    image='registry.gitlab.com/aintelproject/n11-t2-middlesexnorth-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N12
middlesex_south_country_scheduler = DockerOperator(
    task_id='N12-T2-MiddlesexSouth-Country-scheduler',
    image='registry.gitlab.com/aintelproject/n12-t2-middlesexsouth-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N13
nantucket_country_scheduler = DockerOperator(
    task_id='N13-T2-Nantucket-Country-scheduler',
    image='registry.gitlab.com/aintelproject/n13-t2-nantucket-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N14
plymouthdeeds_county_scheduler = DockerOperator(
    task_id='N14-T2-plymouthdeeds-County-scheduler',
    image='registry.gitlab.com/aintelproject/n14-t2-plymouthdeeds-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N15
suffolk_county_scheduler = DockerOperator(
    task_id='N15-T2-Suffolk-County-scheduler',
    image='registry.gitlab.com/aintelproject/n15-t2-suffolk-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N16
worcester_county_scheduler = DockerOperator(
    task_id='N16-T2-Worcester-County-scheduler',
    image='registry.gitlab.com/aintelproject/n16-t2-worcester-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N17
bristol_fall_river_county_scheduler = DockerOperator(
    task_id='N17-T2-BristolFallRiver-County-scheduler',
    image='registry.gitlab.com/aintelproject/n17-t2-bristolfallriver-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N18
hampden_county_scheduler = DockerOperator(
    task_id='N18-T3-Hampden-County-scheduler',
    image='registry.gitlab.com/aintelproject/n18-t3-hampden-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N19
north_bristol_county_scheduler = DockerOperator(
    task_id='N19-T4-North-Bristol-county-scheduler',
    image='registry.gitlab.com/aintelproject/n19-t4-north-bristol-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# N20
south_essex_county_scheduler = DockerOperator(
    task_id='N20-T5-South-Essex-County-scheduler',
    image='registry.gitlab.com/aintelproject/n20-t5-south-essex-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)

# N21
south_bristol_county_scheduler = DockerOperator(
    task_id='N21-T2-South-Bristol-County-scheduler',
    image='registry.gitlab.com/aintelproject/n21-t2-south-bristol-county:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)
# Post-requirement
post_requisite_scheduler = DockerOperator(
    task_id='Post-Requirement-scheduler',
    image='registry.gitlab.com/aintelproject/postrequisite:latest',
    auto_remove=True,
    force_pull=True,
    environment={
        "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
        "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
        "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
        "REGION": "{{var.value.REGION_BOSTON}}",
    },
    dag=dag
)

print('We are in N1-to-N21 Dag')
# zip_code_dectector = DockerOperator(
#     task_id='Zip-Code-Dectector',
#     image='registry.gitlab.com/aintelproject/zip-code-dectector:latest',
#     auto_remove=True,
#     force_pull=True,
#     environment={
#         "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
#         "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
#         "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
#         "REGION": "{{var.value.REGION_BOSTON}}",
#     },
#     dag=dag
# )

# data_dumper = DockerOperator(
#     task_id='Data-Dumping-Script',
#     image='registry.gitlab.com/mobinalhassan/data-dumping:latest',
#     auto_remove=True,
#     force_pull=True,
#     environment={
#         "AWS_ACCESS_KEY_ID": "{{var.value.AWS_ACCESS_KEY_ID_BOSTON}}",
#         "AWS_SECRET_ACCESS_KEY": "{{var.value.AWS_SECRET_ACCESS_KEY_BOSTON}}",
#         "BUCKET_NAME": "{{var.value.BUCKET_NAME_BOSTON}}",
#         "REGION": "{{var.value.REGION_BOSTON}}",
#     },
#     dag=dag
# )
# latest_only >>
# need to test this
# prerequisite_scheduler << [barnstable_scheduler << norfolk_scheduler << north_worcester_scheduler << north_essex_scheduler << berkMiddle_county_scheduler << berk_north_county_scheduler << berk_south_county_scheduler << dukes_country_scheduler << franklin_country_scheduler << hampshire_country_scheduler << middlesex_north_country_scheduler]
# prerequisite_scheduler << [middlesex_south_country_scheduler << nantucket_country_scheduler << plymouthdeeds_county_scheduler << suffolk_county_scheduler << worcester_county_scheduler << bristol_fall_river_county_scheduler << hampden_county_scheduler << north_bristol_county_scheduler << south_essex_county_scheduler << south_bristol_county_scheduler]

# [barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler] >> prerequisite_scheduler
# [middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler] >> prerequisite_scheduler
# prerequisite_scheduler >> barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler >> middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler >> post_requisite_scheduler
# prerequisite_scheduler >> [barnstable_scheduler, middlesex_north_country_scheduler]
# [barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler, middlesex_north_country_scheduler >> middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler] >> post_requisite_scheduler
# latest_only >> [barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler, middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler] >> prerequisite_scheduler >> post_requisite_scheduler
# prerequisite_scheduler << [barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler, middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler] >> post_requisite_scheduler
prerequisite_scheduler >> [barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler, dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler >> middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler, suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler] >> post_requisite_scheduler
# prerequisite_scheduler.set_downstream([barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler])
# prerequisite_scheduler.set_downstream([middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler])
# middlesex_north_country_scheduler.set_upstream(post_requisite_scheduler)
# south_bristol_county_scheduler.set_upstream(post_requisite_scheduler)
# prerequisite_scheduler.set_downstream(post_requisite_scheduler)
# prerequisite_scheduler.set_downstream([middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler])
# barnstable_scheduler >> norfolk_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler
# middlesex_north_country_scheduler >> middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler >> south_bristol_county_scheduler >> post_requisite_scheduler
# latest_only >> barnstable_scheduler >> north_worcester_scheduler >> north_essex_scheduler >> berkMiddle_county_scheduler >> berk_north_county_scheduler >> berk_south_county_scheduler >> dukes_country_scheduler >> franklin_country_scheduler >> hampshire_country_scheduler >> middlesex_north_country_scheduler >> middlesex_south_country_scheduler >> nantucket_country_scheduler >> plymouthdeeds_county_scheduler >> suffolk_county_scheduler >> worcester_county_scheduler >> bristol_fall_river_county_scheduler >> hampden_county_scheduler >> north_bristol_county_scheduler >> south_essex_county_scheduler