class_docstr: The abstract base class that all Streamlit Connections must inherit from.
  
  This base class provides connection authors with a standardized way to hook into the
  ``st.connection()`` factory function: connection authors are required to provide an
  implementation for the abstract method ``_connect`` in their subclasses.
  
  Additionally, it also provides a few methods/properties designed to make
  implementation of connections more convenient. See the docstrings for each of the
  methods of this class for more information
  
  .. note::
      While providing an implementation of ``_connect`` is technically all that's
      required to define a valid connection, connections should also provide the user
      with context-specific ways of interacting with the underlying connection object.
      For example, the first-party SQLConnection provides a ``query()`` method for
      reads and a ``session`` property for more complex operations.
class_docstr_tok: ["The","abstract","base","class","that","all","Streamlit","Connections","must","inherit","from",".","This","base","class","provides","connection","authors","with","a","standardized","way","to","hook","into","the","``","st.connection","(",")","``","factory","function",":","connection","authors","are","required","to","provide","an","implementation","for","the","abstract","method","``","_connect","``","in","their","subclasses",".","Additionally",",","it","also","provides","a","few","methods\/properties","designed","to","make","implementation","of","connections","more","convenient",".","See","the","docstrings","for","each","of","the","methods","of","this","class","for","more","information","..","note",":",":","While","providing","an","implementation","of","``","_connect","``","is","technically","all","that's","required","to","define","a","valid","connection",",","connections","should","also","provide","the","user","with","context-specific","ways","of","interacting","with","the","underlying","connection","object",".","For","example",",","the","first-party","SQLConnection","provides","a","``","query","(",")","``","method","for","reads","and","a","``","session","``","property","for","more","complex","operations","."]
docstr: Reset the raw connection object when this connection's secrets change.
  
  We don't expect either user scripts or connection authors to have to use or
  overwrite this method.
docstr_tok: ["Reset","the","raw","connection","object","when","this","connection","'s","secrets","change",".","We","do","n't","expect","either","user","scripts","or","connection","authors","to","have","to","use","or","overwrite","this","method","."]
code: def _on_secrets_changed(self, _) -> None:
      """Reset the raw connection object when this connection's secrets change.
  
      We don't expect either user scripts or connection authors to have to use or
      overwrite this method.
      """
      new_hash = calc_md5(json.dumps(self._secrets.to_dict()))
  
      # Only reset the connection if the secrets file section specific to this
      # connection has changed.
      if new_hash != self._config_section_hash:
          self._config_section_hash = new_hash
          self.reset()
  
file_path: streamlit/lib/streamlit/connections/base_connection.py
imports: import json
  from abc import ABC, abstractmethod
  from typing import Any, Generic, Optional, TypeVar
  from streamlit.runtime.secrets import AttrDict, secrets_singleton
  from streamlit.util import calc_md5
label_desc: Use image node_id 5 for calling the BaseConnection obj's underlying member method code with example usage: obj._on_secrets_changed(_) without return types