66import inspect
77from tqdm import tqdm
88from .hash import key_hash
9- from .expression import QueryExpression , AndList , _SQLExpression
9+ from .expression import QueryExpression , AndList
1010from .errors import DataJointError , LostConnectionError
1111from .settings import config
1212from .utils import user_choice , to_camel_case
@@ -90,18 +90,6 @@ def _rename_attributes(table, props):
9090 for q in parents [1 :]:
9191 self ._key_source *= _rename_attributes (* q )
9292
93- jobs_config = self .connection .schemas [self .target .database ].jobs_config
94- key_source_query = jobs_config & {"table_name" : self .target .table_name }
95- if key_source_query :
96- key_source_uuid = key_hash ({"sql" : self ._key_source .make_sql ()})
97- if not (key_source_query & {"key_source_uuid" : key_source_uuid }):
98- # different key_source stored in jobs_config
99- return _SQLExpression (
100- self ._key_source .proj (), key_source_query .fetch1 ("key_source" )
101- )
102- else :
103- self .register_key_source (self ._key_source .proj ().make_sql ())
104-
10593 return self ._key_source
10694
10795 def make (self , key ):
@@ -146,7 +134,7 @@ def _jobs_to_do(self, restrictions):
146134 if inspect .isclass (todo ) and issubclass (todo , QueryExpression ):
147135 todo = todo ()
148136
149- if not isinstance (todo , ( QueryExpression , _SQLExpression ) ):
137+ if not isinstance (todo , QueryExpression ):
150138 raise DataJointError ("Invalid key_source value" )
151139
152140 try :
@@ -403,66 +391,12 @@ def _Jobs(self):
403391 def jobs (self ):
404392 return self ._Jobs & {"table_name" : self .target .table_name }
405393
406- def register_key_source (self , sql = None , safemode = None ):
407- key_source_sql = sql or self .key_source .proj ().make_sql ()
408- key_source_uuid = key_hash ({"sql" : key_source_sql })
409-
410- jobs_config = self .connection .schemas [self .target .database ].jobs_config
411-
412- entry = {
413- "table_name" : self .target .table_name ,
414- "key_source" : key_source_sql ,
415- "key_source_uuid" : key_source_uuid ,
416- "last_refresh_time" : datetime .datetime .utcnow (),
417- }
418-
419- if jobs_config & {"table_name" : self .target .table_name }:
420- if jobs_config & {
421- "table_name" : self .target .table_name ,
422- "key_source_uuid" : key_source_uuid ,
423- }:
424- return
425-
426- safemode = config ["safemode" ] if safemode is None else safemode
427- if (
428- not safemode
429- or user_choice (
430- f"Modified key_source for table `{ to_camel_case (self .target .table_name )} `, Re-register?" ,
431- default = "no" ,
432- )
433- == "yes"
434- ):
435- jobs_config .insert1 (entry , replace = True )
436- else :
437- jobs_config .insert1 (entry )
438-
439394 def schedule_jobs (self , purge_invalid_jobs = True ):
440395 """
441396 Schedule new jobs for this autopopulate table
442397 :param purge_invalid_jobs: if True, remove invalid entry from the jobs table (potentially expensive operation)
443398 :return:
444399 """
445- jobs_config = self .connection .schemas [self .target .database ].jobs_config
446- key_source_query = jobs_config & {"table_name" : self .target .table_name }
447- if not key_source_query :
448- self .register_key_source ()
449-
450- if key_source_query .fetch1 ("refresh_reserved" ):
451- # scheduling is ongoing
452- return
453-
454- last_refresh_time , refresh_rate = key_source_query .fetch1 (
455- "last_refresh_time" , "refresh_rate"
456- )
457- new_refresh_time = last_refresh_time + datetime .timedelta (seconds = refresh_rate )
458- if datetime .datetime .utcnow () < new_refresh_time :
459- # not yet time to refresh jobs
460- return
461-
462- # add new scheduled jobs to JobTable
463- jobs_config .update1 (
464- {"table_name" : self .target .table_name , "refresh_reserved" : 1 }
465- )
466400 try :
467401 with self .connection .transaction :
468402 schedule_count = 0
@@ -477,9 +411,6 @@ def schedule_jobs(self, purge_invalid_jobs=True):
477411 finally :
478412 if purge_invalid_jobs :
479413 self .purge_invalid_jobs ()
480- jobs_config .update1 (
481- {"table_name" : self .target .table_name , "refresh_reserved" : 0 }
482- )
483414
484415 def purge_invalid_jobs (self ):
485416 """
0 commit comments