@@ -111,10 +111,11 @@ def upstream(self):
111111 (or ``FreeTable``, when indexed by a string) for any ancestor of
112112 ``self``.
113113
114- Reading via ``self.upstream`` is the provenance-safe pattern: the
115- framework guarantees the restriction matches the current ``key``,
116- and indexing a non-ancestor table raises ``DataJointError``. See
117- :doc:`reference/specs/provenance` for the contract.
114+ Reading via ``self.upstream`` is the recommended pattern for the
115+ make() reproducibility contract: the framework guarantees the
116+ restriction matches the current ``key``, and indexing a non-ancestor
117+ table raises ``DataJointError``. See
118+ :doc:`reference/specs/autopopulate` for the contract.
118119
119120 Raises
120121 ------
@@ -671,34 +672,6 @@ def _populate1(
671672
672673 self ._upstream = Diagram .trace (self & dict (key ))
673674
674- # If strict_provenance is on, push the active-make context so the
675- # runtime gates in expression.cursor / table.insert can check this
676- # make()'s reads and writes. The context is popped in the finally
677- # block below.
678- strict_token = None
679- if self .connection ._config .get ("strict_provenance" , False ):
680- from .provenance import push_strict_make_context
681- from .user_tables import Part
682-
683- allowed_tables = set (self ._upstream ._cascade_restrictions .keys ()) | {self .full_table_name }
684- # Add Part tables of self to the allowed set. Use class __dict__
685- # (not dir/getattr) to avoid triggering descriptors like the
686- # _JobsDescriptor that lazy-declares the ~~ job table.
687- for cls in type (self ).__mro__ :
688- for attr_name , attr in cls .__dict__ .items ():
689- if attr_name .startswith ("_" ):
690- continue
691- if isinstance (attr , type ) and issubclass (attr , Part ):
692- # Instantiate to get full_table_name resolved against
693- # this schema. The Part class is already attached via
694- # @schema decoration of the master.
695- try :
696- part_ftn = attr ().full_table_name
697- allowed_tables .add (part_ftn )
698- except Exception :
699- pass
700- strict_token = push_strict_make_context (self , frozenset (allowed_tables ), dict (key ))
701-
702675 try :
703676 if not is_generator :
704677 make (dict (key ), ** (make_kwargs or {}))
@@ -760,11 +733,6 @@ def _populate1(
760733 # access raises a clear error rather than silently using a
761734 # stale trace from the previous make() call.
762735 self ._upstream = None
763- # Pop the strict-make context, if any.
764- if strict_token is not None :
765- from .provenance import pop_strict_make_context
766-
767- pop_strict_make_context (strict_token )
768736
769737 def progress (self , * restrictions : Any , display : bool = False ) -> tuple [int , int ]:
770738 """
0 commit comments