Update cherrypy==18.9.0

This commit is contained in:
JonnyWong16 2024-03-24 17:55:12 -07:00
parent 2fc618c01f
commit 51196a7fb1
No known key found for this signature in database
GPG key ID: B1F1F9807184697A
137 changed files with 44442 additions and 11582 deletions

View file

@ -11,18 +11,18 @@
# FOR A PARTICULAR PURPOSE
#
##############################################################################
import os
import errno
import logging
import os
logger = logging.getLogger("zc.lockfile")
__metaclass__ = type
class LockError(Exception):
"""Couldn't get a lock
"""
try:
import fcntl
except ImportError:
@ -31,6 +31,7 @@ except ImportError:
except ImportError:
def _lock_file(file):
raise TypeError('No file-locking support on this platform')
def _unlock_file(file):
raise TypeError('No file-locking support on this platform')
@ -40,14 +41,14 @@ except ImportError:
# Lock just the first byte
try:
msvcrt.locking(file.fileno(), msvcrt.LK_NBLCK, 1)
except IOError:
except OSError:
raise LockError("Couldn't lock %r" % file.name)
def _unlock_file(file):
try:
file.seek(0)
msvcrt.locking(file.fileno(), msvcrt.LK_UNLCK, 1)
except IOError:
except OSError:
raise LockError("Couldn't unlock %r" % file.name)
else:
@ -57,14 +58,16 @@ else:
def _lock_file(file):
try:
fcntl.flock(file.fileno(), _flags)
except IOError:
except OSError:
raise LockError("Couldn't lock %r" % file.name)
def _unlock_file(file):
fcntl.flock(file.fileno(), fcntl.LOCK_UN)
class LazyHostName:
"""Avoid importing socket and calling gethostname() unnecessarily"""
def __str__(self):
import socket
return socket.gethostname()
@ -79,7 +82,7 @@ class SimpleLockFile:
try:
# Try to open for writing without truncation:
fp = open(path, 'r+')
except IOError:
except OSError:
# If the file doesn't exist, we'll get an IO error, try a+
# Note that there may be a race here. Multiple processes
# could fail on the r+ open and open the file a+, but only
@ -89,7 +92,7 @@ class SimpleLockFile:
try:
_lock_file(fp)
self._fp = fp
except:
except BaseException:
fp.close()
raise
@ -114,7 +117,7 @@ class LockFile(SimpleLockFile):
def __init__(self, path, content_template='{pid}'):
self._content_template = content_template
super(LockFile, self).__init__(path)
super().__init__(path)
def _on_lock(self):
content = self._content_template.format(

View file

@ -11,23 +11,22 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
import os, re, sys, unittest, doctest
import zc.lockfile, time, threading
from zope.testing import renormalizing, setupstack
import doctest
import os
import tempfile
try:
from unittest.mock import Mock, patch
except ImportError:
from mock import Mock, patch
import threading
import time
import unittest
from unittest.mock import Mock
from unittest.mock import patch
from zope.testing import setupstack
import zc.lockfile
checker = renormalizing.RENormalizing([
# Python 3 adds module path to error class name.
(re.compile("zc\.lockfile\.LockError:"),
r"LockError:"),
])
def inc():
while 1:
while True:
try:
lock = zc.lockfile.LockFile('f.lock')
except zc.lockfile.LockError:
@ -43,6 +42,7 @@ def inc():
f.close()
lock.close()
def many_threads_read_and_write():
r"""
>>> with open('f', 'w+b') as file:
@ -72,6 +72,7 @@ def many_threads_read_and_write():
"""
def pid_in_lockfile():
r"""
>>> import os, zc.lockfile
@ -88,7 +89,7 @@ def pid_in_lockfile():
>>> lock = zc.lockfile.LockFile("f.lock")
Traceback (most recent call last):
...
LockError: Couldn't lock 'f.lock'
zc.lockfile.LockError: Couldn't lock 'f.lock'
>>> f = open("f.lock")
>>> _ = f.seek(1)
@ -107,7 +108,8 @@ def hostname_in_lockfile():
>>> import zc.lockfile
>>> with patch('socket.gethostname', Mock(return_value='myhostname')):
... lock = zc.lockfile.LockFile("f.lock", content_template='{hostname}')
... lock = zc.lockfile.LockFile(
... "f.lock", content_template='{hostname}')
>>> f = open("f.lock")
>>> _ = f.seek(1)
>>> f.read().rstrip()
@ -119,7 +121,7 @@ def hostname_in_lockfile():
>>> lock = zc.lockfile.LockFile("f.lock", content_template='{hostname}')
Traceback (most recent call last):
...
LockError: Couldn't lock 'f.lock'
zc.lockfile.LockError: Couldn't lock 'f.lock'
>>> f = open("f.lock")
>>> _ = f.seek(1)
@ -131,7 +133,7 @@ def hostname_in_lockfile():
"""
class TestLogger(object):
class TestLogger:
def __init__(self):
self.log_entries = []
@ -141,6 +143,7 @@ class TestLogger(object):
class LockFileLogEntryTestCase(unittest.TestCase):
"""Tests for logging in case of lock failure"""
def setUp(self):
self.here = os.getcwd()
self.tmp = tempfile.mkdtemp(prefix='zc.lockfile-test-')
@ -154,8 +157,8 @@ class LockFileLogEntryTestCase(unittest.TestCase):
# PID and hostname are parsed and logged from lock file on failure
with patch('os.getpid', Mock(return_value=123)):
with patch('socket.gethostname', Mock(return_value='myhostname')):
lock = zc.lockfile.LockFile('f.lock',
content_template='{pid}/{hostname}')
lock = zc.lockfile.LockFile(
'f.lock', content_template='{pid}/{hostname}')
with open('f.lock') as f:
self.assertEqual(' 123/myhostname\n', f.read())
@ -191,11 +194,10 @@ class LockFileLogEntryTestCase(unittest.TestCase):
def test_suite():
suite = unittest.TestSuite()
suite.addTest(doctest.DocFileSuite(
'README.txt', checker=checker,
'README.txt',
setUp=setupstack.setUpDirectory, tearDown=setupstack.tearDown))
suite.addTest(doctest.DocTestSuite(
setUp=setupstack.setUpDirectory, tearDown=setupstack.tearDown,
checker=checker))
setUp=setupstack.setUpDirectory, tearDown=setupstack.tearDown))
# Add unittest test cases from this module
suite.addTest(unittest.defaultTestLoader.loadTestsFromName(__name__))
return suite