docs: def push_subscription_set(self, endpoint, encrypt_params, follow_events=None, 
                                favourite_events=None, reblog_events=None, 
                                mention_events=None):
          """
          Sets up or modifies the push subscription the logged-in user has for this app.
          
          `endpoint` is the endpoint URL mastodon should call for pushes. Note that mastodon
          requires https for this URL. `encrypt_params` is a dict with key parameters that allow
          the server to encrypt data for you: A public key `pubkey` and a shared secret `auth`.
          You can generate this as well as the corresponding private key using the 
          `push_subscription_generate_keys()`_ function.
          
          The rest of the parameters controls what kind of events you wish to subscribe to.
          
          Returns a `push subscription dict`_.
          """
          endpoint = Mastodon.__protocolize(endpoint)
          
          push_pubkey_b64 = base64.b64encode(encrypt_params['pubkey'])
          push_auth_b64 = base64.b64encode(encrypt_params['auth'])
          
          params = {
              'subscription[endpoint]': endpoint,
              'subscription[keys][p256dh]': push_pubkey_b64,
              'subscription[keys][auth]': push_auth_b64
          }
          
          if follow_events != None:
              params['data[alerts][follow]'] = follow_events
          
          if favourite_events != None:
              params['data[alerts][favourite]'] = favourite_events
              
          if reblog_events != None:
              params['data[alerts][reblog]'] = reblog_events
              
          if mention_events != None:
              params['data[alerts][mention]'] = mention_events
              
          return self.__api_request('POST', '/api/v1/push/subscription', params)