summaryrefslogtreecommitdiff
path: root/modules/language/python/module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/module')
-rw-r--r--modules/language/python/module/_socket.scm10
-rw-r--r--modules/language/python/module/binascii.scm20
-rw-r--r--modules/language/python/module/python.scm4
-rw-r--r--modules/language/python/module/random.py4
4 files changed, 25 insertions, 13 deletions
diff --git a/modules/language/python/module/_socket.scm b/modules/language/python/module/_socket.scm
index 5d7730b..000428f 100644
--- a/modules/language/python/module/_socket.scm
+++ b/modules/language/python/module/_socket.scm
@@ -128,7 +128,9 @@
gethostbyname_ex gethostname getnameinfo getprotobyn
getservbyname htonl htons if_indextoname if_nameindex
if_nametoindex inet_aton inet_ntop ntohl setdefaulttimeout
- getservbyport
+ getservbyport gethostbyaddr
+
+ error timeout
))
(define-syntax-rule (aif it p . l) (let ((it p)) (if it . l)))
@@ -471,6 +473,9 @@
(define scm-socket (@ (guile) socket))
+(define-python-class error (Exception))
+(define-python-class timeout (Exception))
+
(define-python-class socket ()
(define __init__
(lam (self (= family AF_INET) (= type SOCK_STREAM) (= proto 0)
@@ -630,6 +635,9 @@
(define (gethostbyname host)
((@ (guile) gethostbyname) host))
+(define (gethostbyaddr addr)
+ ((@ (guile) gethostbyname) addr))
+
(define (gethostbyname_ex host)
(error "not implemented"))
diff --git a/modules/language/python/module/binascii.scm b/modules/language/python/module/binascii.scm
index bda660e..ab3dd69 100644
--- a/modules/language/python/module/binascii.scm
+++ b/modules/language/python/module/binascii.scm
@@ -138,16 +138,19 @@
(bytes (list))
(let lp ((i 0) (r '()))
(cond
+ ((>= i n)
+ (bytes (reverse r)))
+
((or (= (get1 n i) 10) (= (get1 n i) 13))
(lp (+ i 1) r))
- ((< i n)
+ (else
(let ((b1 (get1 n i))
(b2 (get1 n (+ i 1)))
- (b3 (get1 n (+ i 2)))
- (b4 (get1 n (+ i 3))))
+ (b3 (get1 n (+ i 2)))
+ (b4 (get1 n (+ i 3))))
(let ((b1 (get2 b1))
- (b2 (get2 b1)))
+ (b2 (get2 b2)))
(if (= x=x b4)
(if (= x=x b3)
(let* ((x (logior b1 (ash b2 6)))
@@ -164,9 +167,8 @@
(ch1 (logand x #xff))
(ch2 (ash (logand x #xff00) -8))
(ch3 (ash (logand x #xff0000) -16)))
- (lp (+ i 4) (cons* ch3 ch2 ch1 r)))))))
- (else
- (bytes (reverse (cons 10 r)))))))))
+ (lp (+ i 4) (cons* ch3 ch2 ch1 r))))))))))))
+
(def (b2a_base64 data (= newline #t))
(define x=x (char->integer #\=))
@@ -182,7 +184,7 @@
(define (get2 i)
(bytevector-u8-ref to64 i))
(cond
- ((= i (- n 1))
+ ((= i (- n 2))
(let* ((b1 (get i))
(b2 (get (+ i 1)))
(x (logior b1 (ash b2 8)))
@@ -192,7 +194,7 @@
(a4 x=x))
(lp (+ i 3) (cons* a4 a3 a2 a1 r))))
- ((= i (- n 2))
+ ((= i (- n 1))
(let* ((x (get i))
(a1 (get2 (logand #x3f x)))
(a2 (get2 (ash (logand #xfc0 x) -6)))
diff --git a/modules/language/python/module/python.scm b/modules/language/python/module/python.scm
index f105f22..00472b3 100644
--- a/modules/language/python/module/python.scm
+++ b/modules/language/python/module/python.scm
@@ -2,7 +2,9 @@
#:use-module (language python module _python)
#:use-module (language python compile )
#:use-module (language python module )
- #:use-module ((language python format2) #:select ()))
+ #:use-module (language python memoryview )
+ #:use-module ((language python format2) #:select ())
+ #:re-export (memoryview))
(define-syntax re-export-all
(syntax-rules ()
diff --git a/modules/language/python/module/random.py b/modules/language/python/module/random.py
index be8f9ef..c88d1cf 100644
--- a/modules/language/python/module/random.py
+++ b/modules/language/python/module/random.py
@@ -38,6 +38,7 @@ General notes on the underlying Mersenne Twister core generator:
and is, therefore, threadsafe.
"""
+
from warnings import warn as _warn
from types import MethodType as _MethodType, BuiltinMethodType as _BuiltinMethodType
from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
@@ -62,7 +63,6 @@ SG_MAGICCONST = 1.0 + _log(4.5)
BPF = 53 # Number of bits in a float
RECIP_BPF = 2**-BPF
-
# Translated by Guido van Rossum from C source provided by
# Adrian Baddeley. Adapted by Raymond Hettinger for use with
# the Mersenne Twister and os.urandom() core generators.
@@ -93,7 +93,7 @@ class Random (_random.Random):
self.seed(x)
self.gauss_next = False
-
+
def seed(self, a=None, version=2):
"""Initialize internal state from hashable object.