Xqt has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/806499 )

Change subject: [IMPR] move api.Request to api._requests.py file (part 2)
......................................................................

[IMPR] move api.Request to api._requests.py file (part 2)

Change-Id: I922092660558c978de57a58ac759a2beaf77757c
---
R pywikibot/data/api/__init__.py
M pywikibot/data/api/_requests.py
2 files changed, 3 insertions(+), 87 deletions(-)

Approvals:
  Xqt: Verified; Looks good to me, approved



diff --git a/pywikibot/data/api/__init.py b/pywikibot/data/api/__init__.py
similarity index 100%
rename from pywikibot/data/api/__init.py
rename to pywikibot/data/api/__init__.py
diff --git a/pywikibot/data/api/_requests.py b/pywikibot/data/api/_requests.py
index c64d4ab..710eff5 100644
--- a/pywikibot/data/api/_requests.py
+++ b/pywikibot/data/api/_requests.py
@@ -13,10 +13,7 @@
 import re
 import traceback
 from collections.abc import MutableMapping
-from email.generator import BytesGenerator
-from email.mime.multipart import MIMEMultipart as MIMEMultipartOrig
 from email.mime.nonmultipart import MIMENonMultipart
-from io import BytesIO
 from typing import Any, Optional, Union
 from urllib.parse import unquote, urlencode
 from warnings import warn
@@ -25,18 +22,6 @@
 from pywikibot import config
 from pywikibot.backports import Callable, Dict, Match, Tuple, removeprefix
 from pywikibot.comms import http
-from pywikibot.data.api._generators import (
-    APIGenerator,
-    ListGenerator,
-    LogEntryListGenerator,
-    PageGenerator,
-    PropertyGenerator,
-    QueryGenerator,
-    update_page,
-)
-from pywikibot.data.api._login import LoginManager
-from pywikibot.data.api._paraminfo import ParamInfo
-from pywikibot.data.api._optionset import OptionSet
 from pywikibot.exceptions import (
     Error,
     FatalServerError,
@@ -47,86 +32,17 @@
     SiteDefinitionError,
     TimeoutError,
 )
-from pywikibot.family import SubdomainFamily
 from pywikibot.login import LoginStatus
 from pywikibot.textlib import removeHTMLParts
 from pywikibot.tools import PYTHON_VERSION

-__all__ = (
-    'APIGenerator',
-    'CachedRequest',
-    'ListGenerator',
-    'LogEntryListGenerator',
-    'LoginManager',
-    'OptionSet',
-    'PageGenerator',
-    'ParamInfo',
-    'PropertyGenerator',
-    'QueryGenerator',
-    'Request',
-    'encode_url',
-    'update_page',
-)
+__all__ = ('CachedRequest', 'Request', 'encode_url')


 lagpattern = re.compile(
     r'Waiting for [\w.: ]+: (?P<lag>\d+(?:\.\d+)?) seconds? lagged')


-def _invalidate_superior_cookies(family) -> None:
-    """
-    Clear cookies for site's second level domain.
-
-    get_login_token() will generate new cookies needed.
-    This is a workaround for requests bug, see :phab:`T224712`
-    and https://github.com/psf/requests/issues/5411
-    for more details.
-    """
-    if isinstance(family, SubdomainFamily):
-        for cookie in http.cookie_jar:
-            if family.domain == cookie.domain:
-                http.cookie_jar.clear(cookie.domain, cookie.path, cookie.name)
-
-
-# Bug: T113120, T228841
-# Subclassing necessary to fix bug of the email package in Python 3:
-# see https://bugs.python.org/issue19003
-# see https://bugs.python.org/issue18886
-# The following solution might be removed if the bug is fixed for
-# Python versions which are supported by PWB, probably with Python 3.5
-
-class CTEBinaryBytesGenerator(BytesGenerator):
-
-    """Workaround for bug in python 3 email handling of CTE binary."""
-
-    def __init__(self, *args, **kwargs) -> None:
-        """Initializer."""
-        super().__init__(*args, **kwargs)
-        self._writeBody = self._write_body
-
-    def _write_body(self, msg) -> None:
-        if msg['content-transfer-encoding'] == 'binary':
-            self._fp.write(msg.get_payload(decode=True))
-        else:
-            super()._handle_text(msg)
-
-
-class CTEBinaryMIMEMultipart(MIMEMultipartOrig):
-
-    """Workaround for bug in python 3 email handling of CTE binary."""
-
-    def as_bytes(self, unixfrom: bool = False, policy=None):
-        """Return unmodified binary payload."""
-        policy = self.policy if policy is None else policy
-        fp = BytesIO()
-        g = CTEBinaryBytesGenerator(fp, mangle_from_=False, policy=policy)
-        g.flatten(self, unixfrom=unixfrom)
-        return fp.getvalue()
-
-
-MIMEMultipart = CTEBinaryMIMEMultipart
-
-
 class Request(MutableMapping):

     """A request to a Site's api.php interface.
@@ -709,7 +625,7 @@
         :return: HTTP request headers and body
         """
         # construct a MIME message containing all API key/values
-        container = MIMEMultipart(_subtype='form-data')
+        container = pywikibot.data.api.MIMEMultipart(_subtype='form-data')
         for key, value in params.items():
             submsg = cls._generate_mime_part(key, value)
             container.attach(submsg)
@@ -1021,7 +937,7 @@
                 .format(self.site.user(),
                         '", "'.join(sorted(set(invalid_param.values())))))
             # invalidate superior wiki cookies (T224712)
-            _invalidate_superior_cookies(self.site.family)
+            pywikibot.data.api._invalidate_superior_cookies(self.site.family)
             # request new token(s) instead of invalid
             self.site.tokens.load_tokens(set(invalid_param.values()))
             # fix parameters; lets hope that it doesn't mistake actual

--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/806499
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I922092660558c978de57a58ac759a2beaf77757c
Gerrit-Change-Number: 806499
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to