Hartmut Goebel writes: > * gnu/packages/python.scm (bpython, bpython2): New variables. [...] > +(define-public bpython > + (package > + (name "bpython") > + (version "0.17") > + (source > + (origin > + (method url-fetch) > + (uri (pypi-uri "bpython" version)) > + (sha256 > + (base32 > + "1mbah208jhd7bsfaa17fwpi55f7fvif0ghjwgrjmpmx8w1vqab9l")) > + (file-name (string-append name "-" version ".tar.gz")))) I think (file-name ...) here is unnecessary, no? > + (build-system python-build-system) > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (add-after 'unpack 'remove-failing-test ;; FIXME > + (lambda _ > + (delete-file "bpython/test/test_args.py"))) #t)) Could you add some information about why this is deleted? > + (add-after 'wrap 'add-aliases > + ;; for symmetry to bpython2, add symlinks bypthon3, bpdb3, etc. > + (lambda* (#:key outputs #:allow-other-keys) > + (let ((out (assoc-ref outputs "out"))) > + (for-each > + (lambda (old new) > + (symlink old ;; (string-append out "/bin/" old) ^^^ leftover comment? :) > + (string-append out "/bin/" new))) > + '("bpython" "bpython-curses" "bpython-urwid" "bpdb") > + '("bpython3" "bpython3-curses" "bpython3-urwid" "bpdb3")))))))) #t))) > + (propagated-inputs > + `(("python-pygments" ,python-pygments) > + ("python-requests", python-requests) > + ("python-babel" ,python-babel) ;; optional, for internationalization > + ("python-curtsies" ,python-curtsies) ;; >= 0.1.18 > + ("python-greenlet" ,python-greenlet) > + ("python-urwid" ,python-urwid) ;; for bpython-urwid only ^^^ only one semicolon for inline comments. > + ("python-six" ,python-six))) > + (native-inputs > + `(("python-sphinx" ,python-sphinx) > + ("python-mock" ,python-mock))) > + (home-page "https://bpython-interpreter.org/") > + (synopsis "Fancy interface to the Python interpreter") > + (description "Bpython is a fancy interface to the Python > +interpreter. bpython's main features are > + > +@enumerate > +@item in-line syntax highlighting, > +@item readline-like autocomplete with suggestions displayed as you type, > +@item expected parameter list for any Python function, > +@item \"rewind\" function to pop the last line of code from memory and > + re-evaluate, > +@item send the code you've entered off to a pastebin, > +@item save the code you've entered to a file, and > +@item auto-indentation. > +@end enumerate") > + (license license:expat))) > + > +(define-public bpython2 > + (let ((base (package-with-python2 > + (strip-python2-variant bpython)))) > + (package (inherit base) > + (name "bpython2") > + (arguments > + `(#:python ,python-2 > + #:phases > + (modify-phases %standard-phases > + (add-after 'unpack 'remove-failing-test ;; FIXME > + (lambda _ > + (delete-file "bpython/test/test_args.py") > + (substitute* "bpython/test/test_curtsies_repl.py" > + (("^(\\s*def )(test_get_last_word_with_prev_line\\W)" _ a b) > + (string-append a "xxx_off_" b)) > + (("^(\\s*def )(test_complex\\W)" _ a b) > + (string-append a "xxx_off_" b))))) #t)) I'm not sure what's going on here, can you add a comment? Other than that looks good, thanks! > + (add-before 'build 'rename-scripts > + ;; rename the scripts to bypthon2, bpdb2, etc. > + (lambda _ > + (substitute* "setup.py" > + (("^(\\s+'bpdb)(\\s+=.*',?)\\s*?$" _ name rest) > + (string-append name "2" rest "\n")) > + (("^(\\s+'bpython)(-\\S+)?(\\s+=.*',?)\\s*?$" _ name sub rest) > + (string-append name "2" (or sub "") rest "\n"))) > + #t)))))))) > -- > 2.13.6