1. 13 Jun, 2018 1 commit
  2. 12 Jun, 2018 9 commits
    • Steve Dower's avatar
    • Giampaolo Rodola's avatar
      bpo-33671: efficient zero-copy for shutil.copy* functions (Linux, OSX and Win) (#7160) · 4a172ccc
      Giampaolo Rodola authored
      * have shutil.copyfileobj use sendfile() if possible
      
      * refactoring: use ctx manager
      
      * add test with non-regular file obj
      
      * emulate case where file size can't be determined
      
      * reference _copyfileobj_sendfile directly
      
      * add test for offset() at certain position
      
      * add test for empty file
      
      * add test for non regular file dst
      
      * small refactoring
      
      * leave copyfileobj() alone in order to not introduce any incompatibility
      
      * minor refactoring
      
      * remove old test
      
      * update docstring
      
      * update docstring; rename exception class
      
      * detect platforms which only support file to socket zero copy
      
      * don't run test on platforms where file-to-file zero copy is not supported
      
      * use tempfiles
      
      * reset verbosity
      
      * add test for smaller chunks
      
      * add big file size test
      
      * add comment
      
      * update doc
      
      * update whatsnew doc
      
      * update doc
      
      * catch Exception
      
      * remove unused import
      
      * add test case for error on second sendfile() call
      
      * turn docstring into comment
      
      * add one more test
      
      * update comment
      
      * add Misc/NEWS entry
      
      * get rid of COPY_BUFSIZE; it belongs to another PR
      
      * update doc
      
      * expose posix._fcopyfile() for OSX
      
      * merge from linux branch
      
      * merge from linux branch
      
      * expose fcopyfile
      
      * arg clinic for the win implementation
      
      * convert path type to path_t
      
      * expose CopyFileW
      
      * fix windows tests
      
      * release GIL
      
      * minor refactoring
      
      * update doc
      
      * update comment
      
      * update docstrings
      
      * rename functions
      
      * rename test classes
      
      * update doc
      
      * update doc
      
      * update docstrings and comments
      
      * avoid do import nt|posix modules if unnecessary
      
      * set nt|posix modules to None if not available
      
      * micro speedup
      
      * update description
      
      * add doc note
      
      * use better wording in doc
      
      * rename function using 'fastcopy' prefix instead of 'zerocopy'
      
      * use :ref: in rst doc
      
      * change wording in doc
      
      * add test to make sure sendfile() doesn't get called aymore in case it doesn't support file to file copies
      
      * move CopyFileW in _winapi and actually expose CopyFileExW instead
      
      * fix line endings
      
      * add tests for mode bits
      
      * add docstring
      
      * remove test file mode class; let's keep it for later when Istart addressing OSX fcopyfile() specific copies
      
      * update doc to reflect new changes
      
      * update doc
      
      * adjust tests on win
      
      * fix argument clinic error
      
      * update doc
      
      * OSX: expose copyfile(3) instead of fcopyfile(3); also expose flags arg to python
      
      * osx / copyfile: use path_t instead of char
      
      * do not set dst name in the OSError exception in order to remain consistent with platforms which cannot do that (e.g. linux)
      
      * add same file test
      
      * add test for same file
      
      * have osx copyfile() pre-emptively check if src and dst are the same, otherwise it will return immedialtey and src file content gets deleted
      
      * turn PermissionError into appropriate SameFileError
      
      * expose ERROR_SHARING_VIOLATION in order to raise more appropriate SameFileError
      
      * honour follow_symlinks arg when using CopyFileEx
      
      * update Misc/NEWS
      
      * expose CreateDirectoryEx mock
      
      * change C type
      
      * CreateDirectoryExW actual implementation
      
      * provide specific makedirs() implementation for win
      
      * fix typo
      
      * skeleton for SetNamedSecurityInfo
      
      * get security info for src path
      
      * finally set security attrs
      
      * add unit tests
      
      * mimick os.makedirs() behavior and raise if dst dir exists
      
      * set 2 paths for OSError object
      
      * set 2 paths for OSError object
      
      * expand windows test
      
      * in case of exception on os.sendfile() set filename and filename2 exception attributes
      
      * set 2 filenames (src, dst) for OSError in case copyfile() fails on OSX
      
      * update doc
      
      * do not use CreateDirectoryEx() in copytree() if source dir is a symlink (breaks test_copytree_symlink_dir); instead just create a plain dir and remain consistent with POSIX implementation
      
      * use bytearray() and readinto()
      
      * use memoryview() with bytearray()
      
      * refactoring + introduce a new _fastcopy_binfileobj() fun
      
      * remove CopyFileEx and other C wrappers
      
      * remove code related to CopyFileEx
      
      * Recognize binary files in copyfileobj()
      ...and use fastest _fastcopy_binfileobj() when possible
      
      * set 1MB copy bufsize on win; also add a global _COPY_BUFSIZE variable
      
      * use ctx manager for memoryview()
      
      * update doc
      
      * remove outdated doc
      
      * remove last CopyFileEx remnants
      
      * OSX - use fcopyfile(3) instead of copyfile(3)
      
      ...as an extra safety measure: in case src/dst are "exotic" files (non
      regular or living on a network fs etc.) we better fail on open() instead
      of copyfile(3) as we're not quite sure what's gonna happen in that
      case.
      
      * update doc
      4a172ccc
    • Cheryl Sabella's avatar
    • Tal Einat's avatar
      bpo-27397: Make email module properly handle invalid-length base64 strings (#7583) · c3f55be7
      Tal Einat authored
      When attempting to base64-decode a payload of invalid length (1 mod 4),
      properly recognize and handle it.  The given data will be returned as-is,
      i.e. not decoded, along with a new defect, InvalidBase64LengthDefect.
      c3f55be7
    • Ned Deily's avatar
      Fix nested list in 3.7 What's New (GH-7659) · 5a982091
      Ned Deily authored
      5a982091
    • Ned Deily's avatar
      04290cb9
    • Zackery Spytz's avatar
    • Ned Deily's avatar
    • Ned Deily's avatar
  3. 11 Jun, 2018 14 commits
  4. 10 Jun, 2018 12 commits
  5. 09 Jun, 2018 4 commits
    • Ammar Askar's avatar
    • MarcoFalke's avatar
      doc: Fix typo in asyncio-eventloop.rst (GH-7345) · 7e0d882a
      MarcoFalke authored
      This is a fixup to 19a44f63
      7e0d882a
    • Ned Deily's avatar
    • Christian Tismer's avatar
      bpo-33738: Fix macros which contradict PEP 384 (GH-7477) · ea62ce7f
      Christian Tismer authored
      During development of the limited API support for PySide,
      we saw an error in a macro that accessed a type field.
      
      This patch fixes the 7 errors in the Python headers.
      Macros which were not written as capitals were implemented
      as function.
      
      To do the necessary analysis again, a script was included that
      parses all headers and looks for "->tp_" in serctions which can
      be reached with active limited API.
      
      It is easily possible to call this script as a test.
      
      Error listing:
      
      ../../Include/objimpl.h:243
      #define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \
          (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o)))
      Action: commented only
      
      ../../Include/objimpl.h:362
      #define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0)
      Action: commented only
      
      ../../Include/objimpl.h:364
      #define PyObject_GET_WEAKREFS_LISTPTR(o) \
          ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset))
      Action: commented only
      
      ../../Include/pyerrors.h:143
      #define PyExceptionClass_Name(x) \
           ((char *)(((PyTypeObject*)(x))->tp_name))
      Action: implemented function
      
      ../../Include/abstract.h:593
      #define PyIter_Check(obj) \
          ((obj)->ob_type->tp_iternext != NULL && \
           (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented)
      Action: implemented function
      
      ../../Include/abstract.h:713
      #define PyIndex_Check(obj)                              \
          ((obj)->ob_type->tp_as_number != NULL &&            \
           (obj)->ob_type->tp_as_number->nb_index != NULL)
      Action: implemented function
      
      ../../Include/abstract.h:924
      #define PySequence_ITEM(o, i)\
          ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) )
      Action: commented only
      ea62ce7f