mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-22 21:32:31 +00:00
Make numerous improvements
- Python static hello world now 1.8mb - Python static fully loaded now 10mb - Python HTTPS client now uses MbedTLS - Python REPL now completes import stmts - Increase stack size for Python for now - Begin synthesizing posixpath and ntpath - Restore Python \N{UNICODE NAME} support - Restore Python NFKD symbol normalization - Add optimized code path for Intel SHA-NI - Get more Python unit tests passing faster - Get Python help() pagination working on NT - Python hashlib now supports MbedTLS PBKDF2 - Make memcpy/memmove/memcmp/bcmp/etc. faster - Add Mersenne Twister and Vigna to LIBC_RAND - Provide privileged __printf() for error code - Fix zipos opendir() so that it reports ENOTDIR - Add basic chmod() implementation for Windows NT - Add Cosmo's best functions to Python cosmo module - Pin function trace indent depth to that of caller - Show memory diagram on invalid access in MODE=dbg - Differentiate stack overflow on crash in MODE=dbg - Add stb_truetype and tools for analyzing font files - Upgrade to UNICODE 13 and reduce its binary footprint - COMPILE.COM now logs resource usage of build commands - Start implementing basic poll() support on bare metal - Set getauxval(AT_EXECFN) to GetModuleFileName() on NT - Add descriptions to strerror() in non-TINY build modes - Add COUNTBRANCH() macro to help with micro-optimizations - Make error / backtrace / asan / memory code more unbreakable - Add fast perfect C implementation of μ-Law and a-Law audio codecs - Make strtol() functions consistent with other libc implementations - Improve Linenoise implementation (see also github.com/jart/bestline) - COMPILE.COM now suppresses stdout/stderr of successful build commands
This commit is contained in:
parent
fa7b4f5bd1
commit
39bf41f4eb
806 changed files with 77494 additions and 63859 deletions
19
third_party/python/Lib/pydoc.py
vendored
19
third_party/python/Lib/pydoc.py
vendored
|
@ -51,6 +51,7 @@ Richard Chamberlain, for the first implementation of textdoc.
|
|||
# the current directory is changed with os.chdir(), an incorrect
|
||||
# path will be displayed.
|
||||
|
||||
import cosmo
|
||||
import builtins
|
||||
import importlib._bootstrap
|
||||
import importlib._bootstrap_external
|
||||
|
@ -1428,8 +1429,11 @@ def getpager():
|
|||
if not sys.stdin.isatty() or not sys.stdout.isatty():
|
||||
return plainpager
|
||||
use_pager = os.environ.get('MANPAGER') or os.environ.get('PAGER')
|
||||
platform = sys.platform
|
||||
if cosmo.kernel == 'nt':
|
||||
platform = 'win32'
|
||||
if use_pager:
|
||||
if sys.platform == 'win32': # pipes completely broken in Windows
|
||||
if platform == 'win32': # pipes completely broken in Windows
|
||||
return lambda text: tempfilepager(plain(text), use_pager)
|
||||
elif os.environ.get('TERM') in ('dumb', 'emacs'):
|
||||
return lambda text: pipepager(plain(text), use_pager)
|
||||
|
@ -1437,7 +1441,7 @@ def getpager():
|
|||
return lambda text: pipepager(text, use_pager)
|
||||
if os.environ.get('TERM') in ('dumb', 'emacs'):
|
||||
return plainpager
|
||||
if sys.platform == 'win32':
|
||||
if platform == 'win32':
|
||||
return lambda text: tempfilepager(plain(text), 'more <')
|
||||
if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0:
|
||||
return lambda text: pipepager(text, 'less')
|
||||
|
@ -1486,8 +1490,12 @@ def tempfilepager(text, cmd):
|
|||
filename = tempfile.mktemp()
|
||||
with open(filename, 'w', errors='backslashreplace') as file:
|
||||
file.write(text)
|
||||
quoted = filename
|
||||
# [jart] bug fix: cmd.exe doesn't work if quotes are used when not needed
|
||||
if ' ' in quoted or '\t' in quoted:
|
||||
quoted = '"' + filename + '"'
|
||||
try:
|
||||
os.system(cmd + ' "' + filename + '"')
|
||||
os.system(cmd + ' ' + filename)
|
||||
finally:
|
||||
os.unlink(filename)
|
||||
|
||||
|
@ -1499,8 +1507,8 @@ def _escape_stdout(text):
|
|||
def ttypager(text):
|
||||
"""Page through text on a text terminal."""
|
||||
lines = plain(_escape_stdout(text)).split('\n')
|
||||
import tty
|
||||
try:
|
||||
import tty
|
||||
fd = sys.stdin.fileno()
|
||||
old = tty.tcgetattr(fd)
|
||||
tty.setcbreak(fd)
|
||||
|
@ -1508,7 +1516,6 @@ def ttypager(text):
|
|||
except (ImportError, AttributeError, io.UnsupportedOperation):
|
||||
tty = None
|
||||
getchar = lambda: sys.stdin.readline()[:-1][:1]
|
||||
|
||||
try:
|
||||
try:
|
||||
h = int(os.environ.get('LINES', 0))
|
||||
|
@ -1522,7 +1529,6 @@ def ttypager(text):
|
|||
sys.stdout.write('-- more --')
|
||||
sys.stdout.flush()
|
||||
c = getchar()
|
||||
|
||||
if c in ('q', 'Q'):
|
||||
sys.stdout.write('\r \r')
|
||||
break
|
||||
|
@ -1535,7 +1541,6 @@ def ttypager(text):
|
|||
if r < 0: r = 0
|
||||
sys.stdout.write('\n' + '\n'.join(lines[r:r+inc]) + '\n')
|
||||
r = r + inc
|
||||
|
||||
finally:
|
||||
if tty:
|
||||
tty.tcsetattr(fd, tty.TCSAFLUSH, old)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue