€cdocutils.nodes document q)q}q(U nametypesq}q(X%use case 05 - update science metadataqNXuc05qˆXhistoryqˆuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU#use-case-05-update-science-metadataqhUuc05qhUhistoryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX .. _UC05:UparentqhUsourceqXj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/05_uc.txtqUtagnameqUtargetqU attributesq }q!(Uidsq"]Ubackrefsq#]Udupnamesq$]Uclassesq%]Unamesq&]Urefidq'huUlineq(KUdocumentq)hh]ubcdocutils.nodes section q*)q+}q,(hUhhhhUexpect_referenced_by_nameq-}q.hhshUsectionq/h }q0(h$]h%]h#]h"]q1(hheh&]q2(hheuh(Kh)hUexpect_referenced_by_idq3}q4hhsh]q5(cdocutils.nodes title q6)q7}q8(hX%Use Case 05 - Update Science Metadataq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q…q?}q@(hh9hh7ubaubcsphinx.addnodes index qA)qB}qC(hUhh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX Use Case 05Uindex-0qIUNtqJ(hHXUC05hIUNtqK(hHXupdatehIUNtqLeUinlineqM‰uh(Kh)hh]ubh)qN}qO(hUhh+hhhhh }qP(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qQ)qR}qS(hUhh+hhh-}hUdefinition_listqTh }qU(h$]h%]h#]h"]qVhIah&]uh(Nh)hh3}qWhIhNsh]qX(cdocutils.nodes definition_list_item qY)qZ}q[(hX+Revisions View document revision history_. hhRhhhUdefinition_list_itemq\h }q](h$]h%]h#]h"]h&]uh(K h]q^(cdocutils.nodes term q_)q`}qa(hX RevisionsqbhhZhhhUtermqch }qd(h$]h%]h#]h"]h&]uh(K h]qeh=X Revisionsqf…qg}qh(hhbhh`ubaubcdocutils.nodes definition qi)qj}qk(hUh }ql(h$]h%]h#]h"]h&]uhhZh]qmcdocutils.nodes paragraph qn)qo}qp(hX View document revision history_.hhjhhhU paragraphqqh }qr(h$]h%]h#]h"]h&]uh(K h]qs(h=XView document revision qt…qu}qv(hXView document revision hhoubcdocutils.nodes reference qw)qx}qy(hXhistory_UresolvedqzKhhohU referenceq{h }q|(UnameXhistoryq}Urefuriq~X”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/05_uc.txtqh"]h#]h$]h%]h&]uh]q€h=Xhistoryq…q‚}qƒ(hUhhxubaubh=X.…q„}q…(hX.hhoubeubahU definitionq†ubeubhY)q‡}qˆ(hX@Goal Update or delete science metadata record on a Member Node. hhRhhhh\h }q‰(h$]h%]h#]h"]h&]uh(K h)hh]qŠ(h_)q‹}qŒ(hXGoalqhh‡hhhhch }qŽ(h$]h%]h#]h"]h&]uh(K h]qh=XGoalq…q‘}q’(hhhh‹ubaubhi)q“}q”(hUh }q•(h$]h%]h#]h"]h&]uhh‡h]q–hn)q—}q˜(hX:Update or delete science metadata record on a Member Node.q™hh“hhhhqh }qš(h$]h%]h#]h"]h&]uh(K h]q›h=X:Update or delete science metadata record on a Member Node.qœ…q}qž(hh™hh—ubaubahh†ubeubhY)qŸ}q (hXiSummary Science metadata is immutable in DataONE. As such, modification involves generating a new science metadata record and indicating that the new record supersedes an existing record, and deletion involves deprecation so that the old metadata record is no longer visible during normal discovery and access. .. figure:: images/sketch_uc05_update.png *Figure 1.* Sketch of interactions involved in updating a science metadata object. An authenticated user calls the :func:`MN_crud.update` operation on a Member Node (A) with a new science metadata document and the identifier of the document being replaced. The update method sets the :attr:`SystemMetadata.obsoletedBy` property of the original document system metadata with the identifier of the new science metadata document (B), and the :attr:`SystemMetadata.obsoletes` property of the system metadata associated with the new science metadata is set to the identifier of the science metadata document being replaced (C). The Coordinating Nodes pick up the changes on the next Member Node synchronization (D). Changes are subsequently propagated to the replica locations. hhRhhhh\h }q¡(h$]h%]h#]h"]h&]uh(K!h)hh]q¢(h_)q£}q¤(hXSummaryq¥hhŸhhhhch }q¦(h$]h%]h#]h"]h&]uh(K!h]q§h=XSummaryq¨…q©}qª(hh¥hh£ubaubhi)q«}q¬(hUh }q­(h$]h%]h#]h"]h&]uhhŸh]q®(hn)q¯}q°(hX.Science metadata is immutable in DataONE. As such, modification involves generating a new science metadata record and indicating that the new record supersedes an existing record, and deletion involves deprecation so that the old metadata record is no longer visible during normal discovery and access.q±hh«hhhhqh }q²(h$]h%]h#]h"]h&]uh(Kh]q³h=X.Science metadata is immutable in DataONE. As such, modification involves generating a new science metadata record and indicating that the new record supersedes an existing record, and deletion involves deprecation so that the old metadata record is no longer visible during normal discovery and access.q´…qµ}q¶(hh±hh¯ubaubcdocutils.nodes figure q·)q¸}q¹(hUh }qº(h$]h%]h#]h"]h&]uhh«h]q»cdocutils.nodes image q¼)q½}q¾(hX*.. figure:: images/sketch_uc05_update.png hh¸hhhUimageq¿h }qÀ(UuriX-design/UseCases/images/sketch_uc05_update.pngqÁh"]h#]h$]h%]U candidatesqÂ}qÃU*hÁsh&]uh(Kh]ubahUfigureqÄubhn)qÅ}qÆ(hX*Figure 1.* Sketch of interactions involved in updating a science metadata object. An authenticated user calls the :func:`MN_crud.update` operation on a Member Node (A) with a new science metadata document and the identifier of the document being replaced. The update method sets the :attr:`SystemMetadata.obsoletedBy` property of the original document system metadata with the identifier of the new science metadata document (B), and the :attr:`SystemMetadata.obsoletes` property of the system metadata associated with the new science metadata is set to the identifier of the science metadata document being replaced (C). The Coordinating Nodes pick up the changes on the next Member Node synchronization (D). Changes are subsequently propagated to the replica locations.hh«hhhhqh }qÇ(h$]h%]h#]h"]h&]uh(Kh]qÈ(cdocutils.nodes emphasis qÉ)qÊ}qË(hX *Figure 1.*h }qÌ(h$]h%]h#]h"]h&]uhhÅh]qÍh=X Figure 1.qÎ…qÏ}qÐ(hUhhÊubahUemphasisqÑubh=Xh Sketch of interactions involved in updating a science metadata object. An authenticated user calls the qÒ…qÓ}qÔ(hXh Sketch of interactions involved in updating a science metadata object. An authenticated user calls the hhÅubcsphinx.addnodes pending_xref qÕ)qÖ}q×(hX:func:`MN_crud.update`qØhhÅhhhU pending_xrefqÙh }qÚ(UreftypeXfuncUrefwarnqÛ‰U reftargetqÜXMN_crud.updateU refdomainXpyqÝh"]h#]U refexplicit‰h$]h%]h&]UrefdocqÞXdesign/UseCases/05_ucqßUpy:classqàNU py:moduleqáNuh(Kh]qâcdocutils.nodes literal qã)qä}qå(hhØh }qæ(h$]h%]qç(UxrefqèhÝXpy-funcqéeh#]h"]h&]uhhÖh]qêh=XMN_crud.update()që…qì}qí(hUhhäubahUliteralqîubaubh=X“ operation on a Member Node (A) with a new science metadata document and the identifier of the document being replaced. The update method sets the qï…qð}qñ(hX“ operation on a Member Node (A) with a new science metadata document and the identifier of the document being replaced. The update method sets the hhÅubhÕ)qò}qó(hX":attr:`SystemMetadata.obsoletedBy`qôhhÅhhhhÙh }qõ(UreftypeXattrhÛ‰hÜXSystemMetadata.obsoletedByU refdomainXpyqöh"]h#]U refexplicit‰h$]h%]h&]hÞhßhàNháNuh(Kh]q÷hã)qø}qù(hhôh }qú(h$]h%]qû(hèhöXpy-attrqüeh#]h"]h&]uhhòh]qýh=XSystemMetadata.obsoletedByqþ…qÿ}r(hUhhøubahhîubaubh=Xy property of the original document system metadata with the identifier of the new science metadata document (B), and the r…r}r(hXy property of the original document system metadata with the identifier of the new science metadata document (B), and the hhÅubhÕ)r}r(hX :attr:`SystemMetadata.obsoletes`rhhÅhhhhÙh }r(UreftypeXattrhÛ‰hÜXSystemMetadata.obsoletesU refdomainXpyrh"]h#]U refexplicit‰h$]h%]h&]hÞhßhàNháNuh(Kh]r hã)r }r (hjh }r (h$]h%]r (hèjXpy-attrreh#]h"]h&]uhjh]rh=XSystemMetadata.obsoletesr…r}r(hUhj ubahhîubaubh=X- property of the system metadata associated with the new science metadata is set to the identifier of the science metadata document being replaced (C). The Coordinating Nodes pick up the changes on the next Member Node synchronization (D). Changes are subsequently propagated to the replica locations.r…r}r(hX- property of the system metadata associated with the new science metadata is set to the identifier of the science metadata document being replaced (C). The Coordinating Nodes pick up the changes on the next Member Node synchronization (D). Changes are subsequently propagated to the replica locations.hhÅubeubehh†ubeubhY)r}r(hX@Actors Member Node, additional Member Nodes, Coordinating Nodes hhRhhhh\h }r(h$]h%]h#]h"]h&]uh(K$h)hh]r(h_)r}r(hXActorsrhjhhhhch }r(h$]h%]h#]h"]h&]uh(K$h]rh=XActorsr…r }r!(hjhjubaubhi)r"}r#(hUh }r$(h$]h%]h#]h"]h&]uhjh]r%hn)r&}r'(hX8Member Node, additional Member Nodes, Coordinating Nodesr(hj"hhhhqh }r)(h$]h%]h#]h"]h&]uh(K$h]r*h=X8Member Node, additional Member Nodes, Coordinating Nodesr+…r,}r-(hj(hj&ubaubahh†ubeubhY)r.}r/(hX‡Preconditions - User is authenticated - MN is registered and is monitored - Science metadata being deleted / updated document exists hhRhhhh\h }r0(h$]h%]h#]h"]h&]uh(K+h)hh]r1(h_)r2}r3(hX Preconditionsr4hj.hhhhch }r5(h$]h%]h#]h"]h&]uh(K+h]r6h=X Preconditionsr7…r8}r9(hj4hj2ubaubhi)r:}r;(hUh }r<(h$]h%]h#]h"]h&]uhj.h]r=cdocutils.nodes bullet_list r>)r?}r@(hUh }rA(UbulletrBX-h"]h#]h$]h%]h&]uhj:h]rC(cdocutils.nodes list_item rD)rE}rF(hXUser is authenticated h }rG(h$]h%]h#]h"]h&]uhj?h]rHhn)rI}rJ(hXUser is authenticatedrKhjEhhhhqh }rL(h$]h%]h#]h"]h&]uh(K'h]rMh=XUser is authenticatedrN…rO}rP(hjKhjIubaubahU list_itemrQubjD)rR}rS(hX"MN is registered and is monitored h }rT(h$]h%]h#]h"]h&]uhj?h]rUhn)rV}rW(hX!MN is registered and is monitoredrXhjRhhhhqh }rY(h$]h%]h#]h"]h&]uh(K)h]rZh=X!MN is registered and is monitoredr[…r\}r](hjXhjVubaubahjQubjD)r^}r_(hX9Science metadata being deleted / updated document exists h }r`(h$]h%]h#]h"]h&]uhj?h]rahn)rb}rc(hX8Science metadata being deleted / updated document existsrdhj^hhhhqh }re(h$]h%]h#]h"]h&]uh(K+h]rfh=X8Science metadata being deleted / updated document existsrg…rh}ri(hjdhjbubaubahjQubehU bullet_listrjubahh†ubeubhY)rk}rl(hXRTriggers - User calls :func:`MN_crud.update` - User calls :func:`MN_crud.delete` hhRhhhh\h }rm(h$]h%]h#]h"]h&]uh(K0h)hh]rn(h_)ro}rp(hXTriggersrqhjkhhhhch }rr(h$]h%]h#]h"]h&]uh(K0h]rsh=XTriggersrt…ru}rv(hjqhjoubaubhi)rw}rx(hUh }ry(h$]h%]h#]h"]h&]uhjkh]rzj>)r{}r|(hUh }r}(jBX-h"]h#]h$]h%]h&]uhjwh]r~(jD)r}r€(hX"User calls :func:`MN_crud.update` h }r(h$]h%]h#]h"]h&]uhj{h]r‚hn)rƒ}r„(hX!User calls :func:`MN_crud.update`hjhhhhqh }r…(h$]h%]h#]h"]h&]uh(K.h]r†(h=X User calls r‡…rˆ}r‰(hX User calls hjƒubhÕ)rŠ}r‹(hX:func:`MN_crud.update`rŒhjƒhhhhÙh }r(UreftypeXfunchÛ‰hÜXMN_crud.updateU refdomainXpyrŽh"]h#]U refexplicit‰h$]h%]h&]hÞhßhàNháNuh(K.h]rhã)r}r‘(hjŒh }r’(h$]h%]r“(hèjŽXpy-funcr”eh#]h"]h&]uhjŠh]r•h=XMN_crud.update()r–…r—}r˜(hUhjubahhîubaubeubahjQubjD)r™}rš(hX"User calls :func:`MN_crud.delete` h }r›(h$]h%]h#]h"]h&]uhj{h]rœhn)r}rž(hX!User calls :func:`MN_crud.delete`hj™hhhhqh }rŸ(h$]h%]h#]h"]h&]uh(K0h]r (h=X User calls r¡…r¢}r£(hX User calls hjubhÕ)r¤}r¥(hX:func:`MN_crud.delete`r¦hjhhhhÙh }r§(UreftypeXfunchÛ‰hÜXMN_crud.deleteU refdomainXpyr¨h"]h#]U refexplicit‰h$]h%]h&]hÞhßhàNháNuh(K0h]r©hã)rª}r«(hj¦h }r¬(h$]h%]r­(hèj¨Xpy-funcr®eh#]h"]h&]uhj¤h]r¯h=XMN_crud.delete()r°…r±}r²(hUhjªubahhîubaubeubahjQubehjjubahh†ubeubhY)r³}r´(hXßPost Conditions - System metadata for science metadata object(s) updated - Replacement science metadata propagated through the system - Search indexes updated - Operation recorded in logs - Watchers notified of change hhRhhhh\h }rµ(h$]h%]h#]h"]h&]uh(K)rÃ}rÄ(hUh }rÅ(jBX-h"]h#]h$]h%]h&]uhj¿h]rÆ(jD)rÇ}rÈ(hX7System metadata for science metadata object(s) updated h }rÉ(h$]h%]h#]h"]h&]uhjÃh]rÊhn)rË}rÌ(hX6System metadata for science metadata object(s) updatedrÍhjÇhhhhqh }rÎ(h$]h%]h#]h"]h&]uh(K3h]rÏh=X6System metadata for science metadata object(s) updatedrÐ…rÑ}rÒ(hjÍhjËubaubahjQubjD)rÓ}rÔ(hX;Replacement science metadata propagated through the system h }rÕ(h$]h%]h#]h"]h&]uhjÃh]rÖhn)r×}rØ(hX:Replacement science metadata propagated through the systemrÙhjÓhhhhqh }rÚ(h$]h%]h#]h"]h&]uh(K5h]rÛh=X:Replacement science metadata propagated through the systemrÜ…rÝ}rÞ(hjÙhj×ubaubahjQubjD)rß}rà(hXSearch indexes updated h }rá(h$]h%]h#]h"]h&]uhjÃh]râhn)rã}rä(hXSearch indexes updatedråhjßhhhhqh }ræ(h$]h%]h#]h"]h&]uh(K7h]rçh=XSearch indexes updatedrè…ré}rê(hjåhjãubaubahjQubjD)rë}rì(hXOperation recorded in logs h }rí(h$]h%]h#]h"]h&]uhjÃh]rîhn)rï}rð(hXOperation recorded in logsrñhjëhhhhqh }rò(h$]h%]h#]h"]h&]uh(K9h]róh=XOperation recorded in logsrô…rõ}rö(hjñhjïubaubahjQubjD)r÷}rø(hXWatchers notified of change h }rù(h$]h%]h#]h"]h&]uhjÃh]rúhn)rû}rü(hXWatchers notified of changerýhj÷hhhhqh }rþ(h$]h%]h#]h"]h&]uh(K;h]rÿh=XWatchers notified of changer…r}r(hjýhjûubaubahjQubehjjubahh†ubeubeubh¼)r}r(hX.. image:: images/05_uc.png hh+hhhh¿h }r(UuriX design/UseCases/images/05_uc.pngrh"]h#]h$]h%]hÂ}rU*jsh&]uh(K?h)hh]ubhn)r}r (hX*Figure 2.* Use case 04.r hh+hhhhqh }r (h$]h%]h#]h"]h&]uh(K@h)hh]r (hÉ)r }r(hX *Figure 2.*h }r(h$]h%]h#]h"]h&]uhjh]rh=X Figure 2.r…r}r(hUhj ubahhÑubh=X Use case 04.r…r}r(hX Use case 04.hjubeubh¼)r}r(hX.. image:: images/05_seq.png hh+hhhh¿h }r(UuriX!design/UseCases/images/05_seq.pngrh"]h#]h$]h%]hÂ}rU*jsh&]uh(KCh)hh]ubhn)r}r(hXR*Figure 3.* Create, update, delete, search metadata or data object in Member Node.hh+hhhhqh }r(h$]h%]h#]h"]h&]uh(KDh)hh]r(hÉ)r }r!(hX *Figure 3.*h }r"(h$]h%]h#]h"]h&]uhjh]r#h=X Figure 3.r$…r%}r&(hUhj ubahhÑubh=XG Create, update, delete, search metadata or data object in Member Node.r'…r(}r)(hXG Create, update, delete, search metadata or data object in Member Node.hjubeubcdocutils.nodes comment r*)r+}r,(hXÃ@startuml images/05_uc.png actor "User" as client usecase "12. Authentication" as authen package "DataONE" actor "Coordinating Node" as CN actor "Member Node" as MN usecase "13. Authorization" as author usecase "04. Update Object" as update usecase "06. MN Synchronize" as mn_sync client -- update CN -- update MN -- update update ..> author: <> update ..> authen: <> update ..> mn_sync: <> @endumlhh+hhhUcommentr-h }r.(U xml:spacer/Upreserver0h"]h#]h$]h%]h&]uh(KZh)hh]r1h=XÃ@startuml images/05_uc.png actor "User" as client usecase "12. Authentication" as authen package "DataONE" actor "Coordinating Node" as CN actor "Member Node" as MN usecase "13. Authorization" as author usecase "04. Update Object" as update usecase "06. MN Synchronize" as mn_sync client -- update CN -- update MN -- update update ..> author: <> update ..> authen: <> update ..> mn_sync: <> @endumlr2…r3}r4(hUhj+ubaubj*)r5}r6(hX1@startuml images/05_seq.png Actor User participant "Client" as app_client << Application >> User -> app_client participant "CRUD API" as m_crud << Member Node >> app_client -> m_crud: update(token, obsoletedID, ID, scienceMetadata) activate m_crud participant "CRUD API" as c_crud << Coordinating Node >> m_crud -> c_crud: validatePID(token, ID) c_crud -> m_crud: OK m_crud -> m_crud: create(token, ID, scienceMetadata) m_crud -> m_crud: setObsolete(token, ID, obsoletedID) m_crud -> m_crud: store() m_crud -> app_client: OK deactivate m_crud @endumlhh+hhhj-h }r7(j/j0h"]h#]h$]h%]h&]uh(Kmh)hh]r8h=X1@startuml images/05_seq.png Actor User participant "Client" as app_client << Application >> User -> app_client participant "CRUD API" as m_crud << Member Node >> app_client -> m_crud: update(token, obsoletedID, ID, scienceMetadata) activate m_crud participant "CRUD API" as c_crud << Coordinating Node >> m_crud -> c_crud: validatePID(token, ID) c_crud -> m_crud: OK m_crud -> m_crud: create(token, ID, scienceMetadata) m_crud -> m_crud: setObsolete(token, ID, obsoletedID) m_crud -> m_crud: store() m_crud -> app_client: OK deactivate m_crud @endumlr9…r:}r;(hUhj5ubaubhn)r<}r=(hX **Notes**r>hh+hhhhqh }r?(h$]h%]h#]h"]h&]uh(Knh)hh]r@cdocutils.nodes strong rA)rB}rC(hj>h }rD(h$]h%]h#]h"]h&]uhj<h]rEh=XNotesrF…rG}rH(hUhjBubahUstrongrIubaubj>)rJ}rK(hUhh+hhhjjh }rL(jBX-h"]h#]h$]h%]h&]uh(Kph)hh]rM(jD)rN}rO(hX'Q. Are IDs are pegged to versions? If so, update might differ more radically from create. A. Yes. Create involves creation of a new science metadata object, update involves deprecating an existing science metadata document with a replacement, delete involves setting system metadata properties. hjJhhhjQh }rP(h$]h%]h#]h"]h&]uh(Nh)hh]rQhn)rR}rS(hX&Q. Are IDs are pegged to versions? If so, update might differ more radically from create. A. Yes. Create involves creation of a new science metadata object, update involves deprecating an existing science metadata document with a replacement, delete involves setting system metadata properties.rThjNhhhhqh }rU(h$]h%]h#]h"]h&]uh(Kph]rVh=X&Q. Are IDs are pegged to versions? If so, update might differ more radically from create. A. Yes. Create involves creation of a new science metadata object, update involves deprecating an existing science metadata document with a replacement, delete involves setting system metadata properties.rW…rX}rY(hjThjRubaubaubjD)rZ}r[(hX­Q. Should queuing of a submission within a member node be required for success? (We assume yes, to guarantee replication of submissions). A. No. Successful update is handled by the Member Node, if the new science metadata can be created and the system metadata can be updated, then the change should be considered complete. The Member Node synchronization process will ensure that the changes are propagated to the wider system. hjJhhhjQh }r\(h$]h%]h#]h"]h&]uh(Nh)hh]r]hn)r^}r_(hX¬Q. Should queuing of a submission within a member node be required for success? (We assume yes, to guarantee replication of submissions). A. No. Successful update is handled by the Member Node, if the new science metadata can be created and the system metadata can be updated, then the change should be considered complete. The Member Node synchronization process will ensure that the changes are propagated to the wider system.r`hjZhhhhqh }ra(h$]h%]h#]h"]h&]uh(Kuh]rbh=X¬Q. Should queuing of a submission within a member node be required for success? (We assume yes, to guarantee replication of submissions). A. No. Successful update is handled by the Member Node, if the new science metadata can be created and the system metadata can be updated, then the change should be considered complete. The Member Node synchronization process will ensure that the changes are propagated to the wider system.rc…rd}re(hj`hj^ubaubaubeubh)rf}rg(hX¡.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/05_uc.txtU referencedrhKhh+hhhhh }ri(h~hh"]rjhah#]h$]h%]h&]rkhauh(K|h)hh]ubeubehUU transformerrlNU footnote_refsrm}rnUrefnamesro}rph}]rqhxasUsymbol_footnotesrr]rsUautofootnote_refsrt]ruUsymbol_footnote_refsrv]rwU citationsrx]ryh)hU current_linerzNUtransform_messagesr{]r|(cdocutils.nodes system_message r})r~}r(hUh }r€(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOruh]r‚hn)rƒ}r„(hUh }r…(h$]h%]h#]h"]h&]uhj~h]r†h=X*Hyperlink target "uc05" is not referenced.r‡…rˆ}r‰(hUhjƒubahhqubahUsystem_messagerŠubj})r‹}rŒ(hUh }r(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypejuh]rŽhn)r}r(hUh }r‘(h$]h%]h#]h"]h&]uhj‹h]r’h=X-Hyperlink target "index-0" is not referenced.r“…r”}r•(hUhjubahhqubahjŠubeUreporterr–NUid_startr—KU autofootnotesr˜]r™U citation_refsrš}r›Uindirect_targetsrœ]rUsettingsrž(cdocutils.frontend Values rŸor }r¡(Ufootnote_backlinksr¢KUrecord_dependenciesr£NU rfc_base_urlr¤Uhttps://tools.ietf.org/html/r¥U tracebackr¦ˆUpep_referencesr§NUstrip_commentsr¨NU toc_backlinksr©UentryrªU language_coder«Uenr¬U datestampr­NU report_levelr®KU _destinationr¯NU halt_levelr°KU strip_classesr±Nh:NUerror_encoding_error_handlerr²Ubackslashreplacer³Udebugr´NUembed_stylesheetrµ‰Uoutput_encoding_error_handlerr¶Ustrictr·U sectnum_xformr¸KUdump_transformsr¹NU docinfo_xformrºKUwarning_streamr»NUpep_file_url_templater¼Upep-%04dr½Uexit_status_levelr¾KUconfigr¿NUstrict_visitorrÀNUcloak_email_addressesrÁˆUtrim_footnote_reference_spacer‰UenvrÃNUdump_pseudo_xmlrÄNUexpose_internalsrÅNUsectsubtitle_xformrƉU source_linkrÇNUrfc_referencesrÈNUoutput_encodingrÉUutf-8rÊU source_urlrËNUinput_encodingrÌU utf-8-sigrÍU_disable_configrÎNU id_prefixrÏUU tab_widthrÐKUerror_encodingrÑUUTF-8rÒU_sourcerÓhUgettext_compactrÔˆU generatorrÕNUdump_internalsrÖNU smart_quotesr׉U pep_base_urlrØU https://www.python.org/dev/peps/rÙUsyntax_highlightrÚUlongrÛUinput_encoding_error_handlerrÜj·Uauto_id_prefixrÝUidrÞUdoctitle_xformr߉Ustrip_elements_with_classesràNU _config_filesrá]Ufile_insertion_enabledrâˆU raw_enabledrãKU dump_settingsräNubUsymbol_footnote_startråKUidsræ}rç(hh+hIhRhh+hjfuUsubstitution_namesrè}réhh)h }rê(h$]h"]h#]Usourcehh%]h&]uU footnotesrë]rìUrefidsrí}rî(hI]rïhNah]rðhauub.