Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-terminado for openSUSE:Factory checked in at 2022-01-29 20:59:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-terminado (Old) and /work/SRC/openSUSE:Factory/.python-terminado.new.1898 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-terminado" Sat Jan 29 20:59:45 2022 rev:13 rq:949899 version:0.13.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-terminado/python-terminado.changes 2021-10-11 15:32:56.946973084 +0200 +++ /work/SRC/openSUSE:Factory/.python-terminado.new.1898/python-terminado.changes 2022-01-29 21:00:32.395296106 +0100 @@ -1,0 +2,19 @@ +Sat Jan 29 18:00:55 UTC 2022 - Arun Persaud <a...@gmx.de> + +- specfile: + * update copyright year + * require python >= 3.7 + +- update to version 0.13.1: + * Maintenance and upkeep improvements + + python_requires is an option in setup.cfg #140 (@minrk) + +- changes from version 0.13.0: + * Enhancements made + + Add pre_pty_read_hook in pty_read #136 (@Wh1isper) + * Maintenance and upkeep improvements + + Officially drop support for python 3.6 #137 (@blink1073) + + Fix even more setup.cfg formatting #134 (@blink1073) + + Fix more setup.cfg formatting #133 (@blink1073) + +------------------------------------------------------------------- Old: ---- terminado-0.12.1.tar.gz New: ---- terminado-0.13.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-terminado.spec ++++++ --- /var/tmp/diff_new_pack.0Lw3Wv/_old 2022-01-29 21:00:32.879292852 +0100 +++ /var/tmp/diff_new_pack.0Lw3Wv/_new 2022-01-29 21:00:32.887292798 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-terminado # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,14 +21,14 @@ # Disable tests until random testing race condition fixed, see: https://github.com/jupyter/terminado/issues/21 %bcond_with tests Name: python-terminado -Version: 0.12.1 +Version: 0.13.1 Release: 0 Summary: Terminals served to termjs using Tornado websockets License: BSD-2-Clause Group: Development/Languages/Python URL: https://github.com/jupyter/terminado Source: https://files.pythonhosted.org/packages/source/t/terminado/terminado-%{version}.tar.gz -BuildRequires: %{python_module base >= 3.6} +BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module ptyprocess} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module tornado >= 4} ++++++ terminado-0.12.1.tar.gz -> terminado-0.13.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/CHANGELOG.md new/terminado-0.13.1/CHANGELOG.md --- old/terminado-0.12.1/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100 +++ new/terminado-0.13.1/CHANGELOG.md 2022-01-27 15:20:39.000000000 +0100 @@ -0,0 +1,272 @@ +# Changelog + +<!-- <START NEW CHANGELOG ENTRY> --> + +## 0.13.1 + +([Full Changelog](https://github.com/jupyter/terminado/compare/v0.13.0...b522de5796e56c98a74918873ff453f828fb123e)) + +### Maintenance and upkeep improvements + +- python_requires is an option in setup.cfg [#140](https://github.com/jupyter/terminado/pull/140) ([@minrk](https://github.com/minrk)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2022-01-27&to=2022-01-27&type=c)) + +[@minrk](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Aminrk+updated%3A2022-01-27..2022-01-27&type=Issues) + +<!-- <END NEW CHANGELOG ENTRY> --> + +## 0.13.0 + +([Full Changelog](https://github.com/jupyter/terminado/compare/v0.12.4...d663c886bf39880585f97a2f46e28c3d368ea0f3)) + +### Enhancements made + +- Add pre_pty_read_hook in pty_read [#136](https://github.com/jupyter/terminado/pull/136) ([@Wh1isper](https://github.com/Wh1isper)) + +### Maintenance and upkeep improvements + +- Officially drop support for python 3.6 [#137](https://github.com/jupyter/terminado/pull/137) ([@blink1073](https://github.com/blink1073)) +- Fix even more setup.cfg formatting [#134](https://github.com/jupyter/terminado/pull/134) ([@blink1073](https://github.com/blink1073)) +- Fix more setup.cfg formatting [#133](https://github.com/jupyter/terminado/pull/133) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2022-01-26&to=2022-01-27&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ablink1073+updated%3A2022-01-26..2022-01-27&type=Issues) | [@Wh1isper](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3AWh1isper+updated%3A2022-01-26..2022-01-27&type=Issues) + +## 0.12.4 + +([Full Changelog](https://github.com/jupyter/terminado/compare/v0.12.3...335e59d6e6c6574d2f0b48360dac9680faeeaa1a)) + +### Maintenance and upkeep improvements + +- Fix formatting of trove classifiers again [#131](https://github.com/jupyter/terminado/pull/131) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2022-01-26&to=2022-01-26&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ablink1073+updated%3A2022-01-26..2022-01-26&type=Issues) + +## 0.12.3 + +([Full Changelog](https://github.com/jupyter/terminado/compare/v0.12.2...d0510462c73663790bdb0ae87640b7565866d1f9)) + +### Bugs fixed + +- Fix terminal output logging type error [#122](https://github.com/jupyter/terminado/pull/122) ([@devmonkey22](https://github.com/devmonkey22)) + +### Maintenance and upkeep improvements + +- Fix formatting of trove classifiers [#129](https://github.com/jupyter/terminado/pull/129) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2022-01-26&to=2022-01-26&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ablink1073+updated%3A2022-01-26..2022-01-26&type=Issues) | [@devmonkey22](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Adevmonkey22+updated%3A2022-01-26..2022-01-26&type=Issues) + +## 0.12.2 + +([Full Changelog](https://github.com/jupyter/terminado/compare/0.12.1...eea43b51a25be52e2e53334f94a5005a22d12109)) + +### Bugs fixed + +- Use read_buffer for reconnect and remove preopen_buffer [#127](https://github.com/jupyter/terminado/pull/127) ([@Wh1isper](https://github.com/Wh1isper)) + +### Maintenance and upkeep improvements + +- Run CI Daily [#125](https://github.com/jupyter/terminado/pull/125) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2021-09-07&to=2022-01-26&type=c)) + +[@andfoy](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Aandfoy+updated%3A2021-09-07..2022-01-26&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ablink1073+updated%3A2021-09-07..2022-01-26&type=Issues) | [@Wh1isper](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3AWh1isper+updated%3A2021-09-07..2022-01-26&type=Issues) + +## 0.12.1 + +([Full Changelog](https://github.com/jupyter/terminado/compare/0.12.0...a70e0bf98a597ce4d1ac5aa6915e70cf6e00789e)) + +### Bugs fixed + +- Revert "only override TERM if its not previously set" [#119](https://github.com/jupyter/terminado/pull/119) ([@rvalieris](https://github.com/rvalieris)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2021-09-07&to=2021-09-07&type=c)) + +[@rvalieris](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Arvalieris+updated%3A2021-09-07..2021-09-07&type=Issues) + +## 0.12.0 + +([Full Changelog](https://github.com/jupyter/terminado/compare/0.11.1...89425f34beb639eb10d7534cf8ce789d18f22c71)) + +### Bugs fixed + +- correctly set the TERM variable [#117](https://github.com/jupyter/terminado/pull/117) ([@rvalieris](https://github.com/rvalieris)) + +### Maintenance and upkeep improvements + +- Replace deprecated unittest aliases [#116](https://github.com/jupyter/terminado/pull/116) ([@hugovk](https://github.com/hugovk)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2021-08-18&to=2021-09-07&type=c)) + +[@hugovk](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ahugovk+updated%3A2021-08-18..2021-09-07&type=Issues) | [@rvalieris](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Arvalieris+updated%3A2021-08-18..2021-09-07&type=Issues) + +## 0.11.1 + +([Full Changelog](https://github.com/jupyter/terminado/compare/0.11.0...0fa5a0cb9cc3b622457b492759998686cb83b10a)) + +### Maintenance and upkeep improvements + +- Clean up tests [#114](https://github.com/jupyter/terminado/pull/114) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2021-08-12&to=2021-08-18&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ablink1073+updated%3A2021-08-12..2021-08-18&type=Issues) + +## 0.11.0 + +([Full Changelog](https://github.com/jupyter/terminado/compare/0.10.1...baa26d500a3836ba8835b6c674e60ddf0e79295e)) + +### Enhancements made + +- Log terminal output [#112](https://github.com/jupyter/terminado/pull/112) ([@OmriShiv](https://github.com/OmriShiv)) + +### Bugs fixed + +- Switch select() to poll() in pty_read() [#111](https://github.com/jupyter/terminado/pull/111) ([@arjanvandervelde](https://github.com/arjanvandervelde)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2021-06-10&to=2021-08-12&type=c)) + +[@arjanvandervelde](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Aarjanvandervelde+updated%3A2021-06-10..2021-08-12&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ablink1073+updated%3A2021-06-10..2021-08-12&type=Issues) | [@OmriShiv](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3AOmriShiv+updated%3A2021-06-10..2021-08-12&type=Issues) + +## 0.10.1 + +([Full Changelog](https://github.com/jupyter/terminado/compare/0.10.0...ada2b93a57bd0ebfae87d75b7561e2cd53ba598f)) + +### Bugs fixed + +- Fix blocking of pty_read when there isn't pty data ready to read [#107](https://github.com/jupyter/terminado/pull/107) ([@icankeep](https://github.com/icankeep)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2021-05-18&to=2021-06-10&type=c)) + +[@icankeep](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Aicankeep+updated%3A2021-05-18..2021-06-10&type=Issues) + +## 0.10.0 + +([Full Changelog](https://github.com/jupyter/terminado/compare/0.9.5...fbba87e45daa65029ad58a88b63384bffbf29937)) + +### Enhancements made + +- Support creating terminal given name in kwargs. [#104](https://github.com/jupyter/terminado/pull/104) ([@cailiang9](https://github.com/cailiang9)) + +### Bugs fixed + +- avoid persistent handle on IOLoop instance [#102](https://github.com/jupyter/terminado/pull/102) ([@minrk](https://github.com/minrk)) + +### Maintenance and upkeep improvements + +- async/await syntax [#103](https://github.com/jupyter/terminado/pull/103) ([@minrk](https://github.com/minrk)) +- PR: Pin pywinpty version to 1.1.0 [#101](https://github.com/jupyter/terminado/pull/101) ([@andfoy](https://github.com/andfoy)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/terminado/graphs/contributors?from=2021-05-11&to=2021-05-18&type=c)) + +[@andfoy](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Aandfoy+updated%3A2021-05-11..2021-05-18&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Ablink1073+updated%3A2021-05-11..2021-05-18&type=Issues) | [@cailiang9](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Acailiang9+updated%3A2021-05-11..2021-05-18&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fterminado+involves%3Aminrk+updated%3A2021-05-11..2021-05-18&type=Issues) + +## 0.9.5 + +* Pin pywinpty version [#98](https://github.com/jupyter/terminado/pull/98) ([@jtpio](https://github.com/jtpio)) + +## 0.9.4 + +* Allow non-strict decode for process output [#95](https://github.com/jupyter/terminado/pull/95) ([@dong-zeyu](https://github.com/dong-zeyu)) +* Switch to GitHub Actions [#93](https://github.com/jupyter/terminado/pull/93) ([@afshin](https://github.com/afshin)) +* Add generated changelog [#92](https://github.com/jupyter/terminado/pull/92) ([@blink1073](https://github.com/blink1073)) + +## 0.9.3 + +* Make sure SIGPIPE has default handler set [#91](https://github.com/jupyter/terminado/pull/91) ([@dlukes](https://github.com/dlukes)) + +## 0.9.2 + +* Add js files in package manifest [#87](https://github.com/jupyter/terminado/pull/87) ([@MircoT](https://github.com/MircoT)) +* Add support to ppc64le [#86](https://github.com/jupyter/terminado/pull/86) ([@gururajrkatti](https://github.com/gururajrkatti)) +* Fix config files for publication [#81](https://github.com/jupyter/terminado/pull/81) ([@afshin](https://github.com/afshin)) + +## 0.9.1 + +* v0.9.1 [#80](https://github.com/jupyter/terminado/pull/80) ([@afshin](https://github.com/afshin)) + +## 0.9.0 + +* Drop python 2 and 3.4 and 3.5 support [#77](https://github.com/jupyter/terminado/pull/77) ([@jasongrout](https://github.com/jasongrout)) +* Make sure that all process output makes it to the terminal [#76](https://github.com/jupyter/terminado/pull/76) ([@athornton](https://github.com/athornton)) + +## v0.8.3 + +* Add kwargs to NamedTermManager.new_named_terminal [#70](https://github.com/jupyter/terminado/pull/70) ([@qntnrbns](https://github.com/qntnrbns)) + +## 0.8.2 + +* Run only the basic test on Appveyor [#64](https://github.com/jupyter/terminado/pull/64) ([@blink1073](https://github.com/blink1073)) +* Fix for https://github.com/jupyter/terminado/issues/62 [#63](https://github.com/jupyter/terminado/pull/63) ([@cpranav](https://github.com/cpranav)) +* Add python_requires to help pip, and version classifers [#57](https://github.com/jupyter/terminado/pull/57) ([@hugovk](https://github.com/hugovk)) +* Set websocket.terminal to None when the child exits [#55](https://github.com/jupyter/terminado/pull/55) ([@takluyver](https://github.com/takluyver)) + +## 0.8.1 + +* Add support for Python 2 on Windows [#50](https://github.com/jupyter/terminado/pull/50) ([@blink1073](https://github.com/blink1073)) +* Update ownership [#48](https://github.com/jupyter/terminado/pull/48) ([@blink1073](https://github.com/blink1073)) + +## 0.8 + +* Add support for Windows [#44](https://github.com/jupyter/terminado/pull/44) ([@blink1073](https://github.com/blink1073)) + +## 0.7 + +* Reduce duplication in PtyWithClients.terminate [#43](https://github.com/jupyter/terminado/pull/43) ([@srstevenson](https://github.com/srstevenson)) +* Pass signal to terminal from manager method [#42](https://github.com/jupyter/terminado/pull/42) ([@srstevenson](https://github.com/srstevenson)) +* Send SIGHUP to the process group in the terminal, not just the leader [#38](https://github.com/jupyter/terminado/pull/38) ([@takluyver](https://github.com/takluyver)) +* Include LICENSE.txt file in the tarball [#34](https://github.com/jupyter/terminado/pull/34) ([@irushchyshyn](https://github.com/irushchyshyn)) +* Add requirements and README for demos [#31](https://github.com/jupyter/terminado/pull/31) ([@stuaxo](https://github.com/stuaxo)) +* Revert pinging implementation, and call super method in websocket open [#28](https://github.com/jupyter/terminado/pull/28) ([@takluyver](https://github.com/takluyver)) +* keep websocket connection alive by sending pings when there is no activity [#27](https://github.com/jupyter/terminado/pull/27) ([@zyzhu2000](https://github.com/zyzhu2000)) + +## 0.6 + +* require tornado 4 [#26](https://github.com/jupyter/terminado/pull/26) ([@minrk](https://github.com/minrk)) +* Close PtyProcess object instead of closing fd directly [#24](https://github.com/jupyter/terminado/pull/24) ([@takluyver](https://github.com/takluyver)) +* use tornado's check_origin method name [#20](https://github.com/jupyter/terminado/pull/20) ([@minrk](https://github.com/minrk)) +* Change `_log` -> `_logger`. [#19](https://github.com/jupyter/terminado/pull/19) ([@mgmarino](https://github.com/mgmarino)) +* Make built wheels universal. [#14](https://github.com/jupyter/terminado/pull/14) ([@aragilar](https://github.com/aragilar)) + +## 0.5 + +* Fix bugs when max_terminals reached, with test cases [#11](https://github.com/jupyter/terminado/pull/11) ([@payne92](https://github.com/payne92)) +* More liberal read time out to address Travis CI test issues [#10](https://github.com/jupyter/terminado/pull/10) ([@payne92](https://github.com/payne92)) +* More unit tests [#8](https://github.com/jupyter/terminado/pull/8) ([@payne92](https://github.com/payne92)) + +## 0.4 + +* Initial unit test framework [#6](https://github.com/jupyter/terminado/pull/6) ([@payne92](https://github.com/payne92)) +* Buffer the last 10 reads from the pty, and play back to new clients [#5](https://github.com/jupyter/terminado/pull/5) ([@takluyver](https://github.com/takluyver)) + +## 0.3.2 + +* add async terminate method [#3](https://github.com/jupyter/terminado/pull/3) ([@minrk](https://github.com/minrk)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/MANIFEST.in new/terminado-0.13.1/MANIFEST.in --- old/terminado-0.12.1/MANIFEST.in 2021-03-19 18:57:45.000000000 +0100 +++ new/terminado-0.13.1/MANIFEST.in 2022-01-27 15:20:39.000000000 +0100 @@ -1,3 +1,8 @@ include LICENSE +include CHANGELOG.md +include RELEASE.md include terminado/uimod_embed.js include terminado/_static/terminado.js + +prune demos +prune doc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/PKG-INFO new/terminado-0.13.1/PKG-INFO --- old/terminado-0.12.1/PKG-INFO 2021-09-07 16:32:39.483855700 +0200 +++ new/terminado-0.13.1/PKG-INFO 2022-01-27 15:20:57.056231500 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: terminado -Version: 0.12.1 +Version: 0.13.1 Summary: Tornado websocket backend for the Xterm.js Javascript terminal emulator library. Home-page: https://github.com/jupyter/terminado Author: Jupyter Development Team @@ -9,87 +9,12 @@ Platform: UNKNOWN Classifier: Environment :: Web Environment Classifier: License :: OSI Approved :: BSD License -Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Terminals :: Terminal Emulators/X Terminals -Requires-Python: >=3.6 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst Provides-Extra: test License-File: LICENSE -This is a `Tornado <http://tornadoweb.org/>`_ websocket backend for the -`Xterm.js <https://xtermjs.org/>`_ Javascript terminal emulator -library. - -It evolved out of `pyxterm <https://github.com/mitotic/pyxterm>`_, which was -part of `GraphTerm <https://github.com/mitotic/graphterm>`_ (as lineterm.py), -v0.57.0 (2014-07-18), and ultimately derived from the public-domain `Ajaxterm -<http://antony.lesuisse.org/software/ajaxterm/>`_ code, v0.11 (2008-11-13) (also -on Github as part of `QWeb <https://github.com/antonylesuisse/qweb>`_). - -Modules: - -* ``terminado.management``: controls launching virtual terminals, - connecting them to Tornado's event loop, and closing them down. -* ``terminado.websocket``: Provides a websocket handler for communicating with - a terminal. -* ``terminado.uimodule``: Provides a ``Terminal`` Tornado `UI Module - <http://www.tornadoweb.org/en/stable/guide/templates.html#ui-modules>`_. - -JS: - -* ``terminado/_static/terminado.js``: A lightweight wrapper to set up a - term.js terminal with a websocket. - -Local Installation: - - $ pip install -e .[test] - - -Usage example: - -.. code:: python - - import os.path - import tornado.web - import tornado.ioloop - # This demo requires tornado_xstatic and XStatic-term.js - import tornado_xstatic - - import terminado - STATIC_DIR = os.path.join(os.path.dirname(terminado.__file__), "_static") - - class TerminalPageHandler(tornado.web.RequestHandler): - def get(self): - return self.render("termpage.html", static=self.static_url, - xstatic=self.application.settings['xstatic_url'], - ws_url_path="/websocket") - - if __name__ == '__main__': - term_manager = terminado.SingleTermManager(shell_command=['bash']) - handlers = [ - (r"/websocket", terminado.TermSocket, - {'term_manager': term_manager}), - (r"/", TerminalPageHandler), - (r"/xstatic/(.*)", tornado_xstatic.XStaticFileHandler, - {'allowed_modules': ['termjs']}) - ] - app = tornado.web.Application(handlers, static_path=STATIC_DIR, - xstatic_url = tornado_xstatic.url_maker('/xstatic/')) - # Serve at http://localhost:8765/ N.B. Leaving out 'localhost' here will - # work, but it will listen on the public network interface as well. - # Given what terminado does, that would be rather a security hole. - app.listen(8765, 'localhost') - try: - tornado.ioloop.IOLoop.instance().start() - finally: - term_manager.shutdown() - -See the `demos directory <https://github.com/takluyver/terminado/tree/master/demos>`_ -for more examples. This is a simplified version of the ``single.py`` demo. - -Run the unit tests with: - - $ pytest - +UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/RELEASE.md new/terminado-0.13.1/RELEASE.md --- old/terminado-0.12.1/RELEASE.md 1970-01-01 01:00:00.000000000 +0100 +++ new/terminado-0.13.1/RELEASE.md 2022-01-27 15:20:39.000000000 +0100 @@ -0,0 +1,17 @@ +This repository uses [`jupyter_releaser`](https://github.com/jupyter-server/jupyter_releaser) for automated releases. + +To create a manual release, update the version number in `terminado/__init__.py`, then run the following: + +``` +git clean -dffx +python setup.py sdist +python setup.py bdist_wheel +export script_version=`python setup.py --version 2>/dev/null` +git commit -a -m "Release $script_version" +git tag $script_version +git push --all +git push --tags +pip install twine +twine check dist/* +twine upload dist/* +``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/pyproject.toml new/terminado-0.13.1/pyproject.toml --- old/terminado-0.12.1/pyproject.toml 2021-03-19 18:57:45.000000000 +0100 +++ new/terminado-0.13.1/pyproject.toml 2022-01-27 15:20:47.000000000 +0100 @@ -1,3 +1,20 @@ [build-system] -requires = ["setuptools>=40.8.0", "wheel"] +requires = ["setuptools>=40.8.0", "wheel", "tornado"] build-backend = "setuptools.build_meta" + +[tool.jupyter-releaser] +skip = ["check-links"] + +[tool.tbump.version] +current = "0.13.1" +regex = ''' + (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+) + ((?P<channel>a|b|rc|.dev)(?P<release>\d+))? +''' + +[tool.tbump.git] +message_template = "Bump to {new_version}" +tag_template = "v{new_version}" + +[[tool.tbump.file]] +src = "terminado/__init__.py" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/setup.cfg new/terminado-0.13.1/setup.cfg --- old/terminado-0.12.1/setup.cfg 2021-09-07 16:32:39.484384000 +0200 +++ new/terminado-0.13.1/setup.cfg 2022-01-27 15:20:57.056231500 +0100 @@ -1,3 +1,30 @@ +[metadata] +name = terminado +version = attr: terminado.__init__.__version__ +author = Jupyter Development Team +author_email = jupy...@googlegroups.com +url = https://github.com/jupyter/terminado +description = Tornado websocket backend for the Xterm.js Javascript terminal emulator library. +description_file = README.rst +long_description_content_type = text/x-rst +classifiers = + Environment :: Web Environment + License :: OSI Approved :: BSD License + Programming Language :: Python :: 3 + Topic :: Terminals :: Terminal Emulators/X Terminals + +[options] +include_package_data = True +packages = find: +python_requires = >=3.7 +install_requires = + ptyprocess;os_name!='nt' + pywinpty (>=1.1.0);os_name=='nt' + tornado (>=4) + +[options.extras_require] +test = pytest + [egg_info] tag_build = tag_date = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/setup.py new/terminado-0.13.1/setup.py --- old/terminado-0.12.1/setup.py 2021-05-18 11:41:39.000000000 +0200 +++ new/terminado-0.13.1/setup.py 2022-01-27 15:20:39.000000000 +0100 @@ -1,40 +1,2 @@ -from setuptools import setup, find_packages -import io - -with io.open('terminado/__init__.py', encoding='utf-8') as fid: - for line in fid: - if line.startswith('__version__'): - version = line.strip().split()[-1][1:-1] - break - - -setup_args = dict( - name = "terminado", - version = version, - author = "Jupyter Development Team", - author_email = "jupy...@googlegroups.com", - url = "https://github.com/jupyter/terminado", - packages = find_packages(), - include_package_data = True, - description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library.", - long_description = open("README.rst").read(), - long_description_content_type="text/x-rst", - install_requires = [ - "ptyprocess;os_name!='nt'", - "pywinpty (>=1.1.0);os_name=='nt'", - "tornado (>=4)", - ], - extras_require = dict(test=['pytest']), - python_requires=">=3.6", - classifiers=[ - "Environment :: Web Environment", - "License :: OSI Approved :: BSD License", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 3", - "Topic :: Terminals :: Terminal Emulators/X Terminals", - ] -) - - -if __name__ == '__main__': - setup(**setup_args) +from setuptools import setup +setup() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/terminado/__init__.py new/terminado-0.13.1/terminado/__init__.py --- old/terminado-0.12.1/terminado/__init__.py 2021-09-07 16:32:30.000000000 +0200 +++ new/terminado-0.13.1/terminado/__init__.py 2022-01-27 15:20:47.000000000 +0100 @@ -12,4 +12,4 @@ # Prevent a warning about no attached handlers in Python 2 logging.getLogger(__name__).addHandler(logging.NullHandler()) -__version__ = '0.12.1' +__version__ = '0.13.1' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/terminado/management.py new/terminado-0.13.1/terminado/management.py --- old/terminado-0.12.1/terminado/management.py 2021-09-07 16:32:20.000000000 +0200 +++ new/terminado-0.13.1/terminado/management.py 2022-01-27 15:20:39.000000000 +0100 @@ -18,15 +18,20 @@ try: from ptyprocess import PtyProcessUnicode + + def preexec_fn(): signal.signal(signal.SIGPIPE, signal.SIG_DFL) except ImportError: - from winpty import PtyProcess as PtyProcessUnicode + try: + from winpty import PtyProcess as PtyProcessUnicode + except ImportError: + PtyProcessUnicode = object preexec_fn = None from tornado.ioloop import IOLoop -ENV_PREFIX = "PYXTERM_" # Environment variable prefix +ENV_PREFIX = "PYXTERM_" # Environment variable prefix # TERM is set according to xterm.js capabilities DEFAULT_TERM_TYPE = "xterm-256color" @@ -35,14 +40,8 @@ class PtyWithClients(object): def __init__(self, argv, env=[], cwd=None): self.clients = [] - # If you start the process and then construct this object from it, - # output generated by the process prior to the object's creation - # is lost. Hence the change from 0.8.3. - # Buffer output until a client connects; then let the client - # drain the buffer. - # We keep the same read_buffer as before - self.read_buffer = deque([], maxlen=10) - self.preopen_buffer = deque([]) + # Use read_buffer to store historical messages for reconnection + self.read_buffer = deque([], maxlen=20) kwargs = dict(argv=argv, env=env, cwd=cwd) if preexec_fn is not None: kwargs["preexec_fn"] = preexec_fn @@ -97,7 +96,9 @@ signal.SIGTERM] loop = IOLoop.current() - def sleep(): return asyncio.sleep(self.ptyproc.delayafterterminate) + + def sleep(): + return asyncio.sleep(self.ptyproc.delayafterterminate) if not self.ptyproc.isalive(): return True @@ -228,13 +229,9 @@ return ptywclients = self.ptys_by_fd[fd] try: + self.pre_pty_read_hook(ptywclients) s = ptywclients.ptyproc.read(65536) - client_list = ptywclients.clients ptywclients.read_buffer.append(s) - if not client_list: - # No one to consume our output: buffer it. - ptywclients.preopen_buffer.append(s) - return for client in ptywclients.clients: client.on_pty_read(s) except EOFError: @@ -242,6 +239,9 @@ for client in ptywclients.clients: client.on_pty_died() + def pre_pty_read_hook(self, ptywclients): + """Hook before pty read, subclass can patch something into ptywclients when pty_read""" + def get_terminal(self, url_component=None): """Override in a subclass to give a terminal to a new websocket connection diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/terminado/tests/basic_test.py new/terminado-0.13.1/terminado/tests/basic_test.py --- old/terminado-0.12.1/terminado/tests/basic_test.py 2021-09-07 11:21:15.000000000 +0200 +++ new/terminado-0.13.1/terminado/tests/basic_test.py 2022-01-27 15:20:39.000000000 +0100 @@ -14,11 +14,9 @@ from tornado.ioloop import IOLoop import tornado.testing import datetime -import logging import json import os import re -import signal import pytest from sys import platform @@ -39,6 +37,8 @@ class TestTermClient(object): """Test connection to a terminal manager""" + __test__ = False + def __init__(self, websocket): self.ws = websocket self.pending_read = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/terminado/websocket.py new/terminado-0.13.1/terminado/websocket.py --- old/terminado-0.12.1/terminado/websocket.py 2021-08-12 13:08:56.000000000 +0200 +++ new/terminado-0.13.1/terminado/websocket.py 2022-01-27 15:20:39.000000000 +0100 @@ -16,9 +16,7 @@ import json import logging -import re -import tornado.web import tornado.websocket @@ -40,6 +38,9 @@ self._logger = logging.getLogger(__name__) self._user_command = '' + # Enable if the environment variable LOG_TERMINAL_OUTPUT is "true" + self._enable_output_logging = (str.lower(os.getenv("LOG_TERMINAL_OUTPUT", "false")) == "true") + def origin_check(self, origin=None): """Deprecated: backward-compat for terminado <= 0.5.""" return self.check_origin(origin or self.request.headers.get('Origin')) @@ -62,12 +63,13 @@ self.terminal.clients.append(self) self.send_json_message(["setup", {}]) self._logger.info("TermSocket.open: Opened %s", self.term_name) - # Now drain the preopen buffer, if it exists. + # Now drain the preopen buffer, if reconnect. buffered = "" + preopen_buffer = self.terminal.read_buffer.copy() while True: - if not self.terminal.preopen_buffer: + if not preopen_buffer: break - s = self.terminal.preopen_buffer.popleft() + s = preopen_buffer.popleft() buffered += s if buffered: self.on_pty_read(buffered) @@ -78,14 +80,12 @@ def send_json_message(self, content): json_msg = json.dumps(content) - pattern = re.compile(r'^(\w|\d)+') - try: - if pattern.search(content[1]): - self.log_terminal_output(f'STDOUT: {content[1]}') - except TypeError as e: - self._logger.error(f'not able to serialize: {e}') self.write_message(json_msg) + if self._enable_output_logging: + if content[0] == "stdout" and isinstance(content[1], str): + self.log_terminal_output(f'STDOUT: {content[1]}') + def on_message(self, message): """Handle incoming websocket message @@ -98,11 +98,12 @@ if msg_type == "stdin": self.terminal.ptyproc.write(command[1]) - if command[1] == '\r': - self.log_terminal_output(f'STDIN: {self._user_command}') - self._user_command = '' - else: - self._user_command += command[1] + if self._enable_output_logging: + if command[1] == '\r': + self.log_terminal_output(f'STDIN: {self._user_command}') + self._user_command = '' + else: + self._user_command += command[1] elif msg_type == "set_size": self.size = command[1:3] self.terminal.resize_to_smallest() @@ -128,9 +129,8 @@ def log_terminal_output(self, log: str = ''): """ - Logs the terminal input/output if the environment variable LOG_TERMINAL_OUTPUT is "true" + Logs the terminal input/output :param log: log line to write :return: """ - if str.lower(os.getenv("LOG_TERMINAL_OUTPUT", "false")) == "true": - self._logger.debug(log) + self._logger.debug(log) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/terminado.egg-info/PKG-INFO new/terminado-0.13.1/terminado.egg-info/PKG-INFO --- old/terminado-0.12.1/terminado.egg-info/PKG-INFO 2021-09-07 16:32:39.000000000 +0200 +++ new/terminado-0.13.1/terminado.egg-info/PKG-INFO 2022-01-27 15:20:57.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: terminado -Version: 0.12.1 +Version: 0.13.1 Summary: Tornado websocket backend for the Xterm.js Javascript terminal emulator library. Home-page: https://github.com/jupyter/terminado Author: Jupyter Development Team @@ -9,87 +9,12 @@ Platform: UNKNOWN Classifier: Environment :: Web Environment Classifier: License :: OSI Approved :: BSD License -Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Terminals :: Terminal Emulators/X Terminals -Requires-Python: >=3.6 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst Provides-Extra: test License-File: LICENSE -This is a `Tornado <http://tornadoweb.org/>`_ websocket backend for the -`Xterm.js <https://xtermjs.org/>`_ Javascript terminal emulator -library. - -It evolved out of `pyxterm <https://github.com/mitotic/pyxterm>`_, which was -part of `GraphTerm <https://github.com/mitotic/graphterm>`_ (as lineterm.py), -v0.57.0 (2014-07-18), and ultimately derived from the public-domain `Ajaxterm -<http://antony.lesuisse.org/software/ajaxterm/>`_ code, v0.11 (2008-11-13) (also -on Github as part of `QWeb <https://github.com/antonylesuisse/qweb>`_). - -Modules: - -* ``terminado.management``: controls launching virtual terminals, - connecting them to Tornado's event loop, and closing them down. -* ``terminado.websocket``: Provides a websocket handler for communicating with - a terminal. -* ``terminado.uimodule``: Provides a ``Terminal`` Tornado `UI Module - <http://www.tornadoweb.org/en/stable/guide/templates.html#ui-modules>`_. - -JS: - -* ``terminado/_static/terminado.js``: A lightweight wrapper to set up a - term.js terminal with a websocket. - -Local Installation: - - $ pip install -e .[test] - - -Usage example: - -.. code:: python - - import os.path - import tornado.web - import tornado.ioloop - # This demo requires tornado_xstatic and XStatic-term.js - import tornado_xstatic - - import terminado - STATIC_DIR = os.path.join(os.path.dirname(terminado.__file__), "_static") - - class TerminalPageHandler(tornado.web.RequestHandler): - def get(self): - return self.render("termpage.html", static=self.static_url, - xstatic=self.application.settings['xstatic_url'], - ws_url_path="/websocket") - - if __name__ == '__main__': - term_manager = terminado.SingleTermManager(shell_command=['bash']) - handlers = [ - (r"/websocket", terminado.TermSocket, - {'term_manager': term_manager}), - (r"/", TerminalPageHandler), - (r"/xstatic/(.*)", tornado_xstatic.XStaticFileHandler, - {'allowed_modules': ['termjs']}) - ] - app = tornado.web.Application(handlers, static_path=STATIC_DIR, - xstatic_url = tornado_xstatic.url_maker('/xstatic/')) - # Serve at http://localhost:8765/ N.B. Leaving out 'localhost' here will - # work, but it will listen on the public network interface as well. - # Given what terminado does, that would be rather a security hole. - app.listen(8765, 'localhost') - try: - tornado.ioloop.IOLoop.instance().start() - finally: - term_manager.shutdown() - -See the `demos directory <https://github.com/takluyver/terminado/tree/master/demos>`_ -for more examples. This is a simplified version of the ``single.py`` demo. - -Run the unit tests with: - - $ pytest - +UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terminado-0.12.1/terminado.egg-info/SOURCES.txt new/terminado-0.13.1/terminado.egg-info/SOURCES.txt --- old/terminado-0.12.1/terminado.egg-info/SOURCES.txt 2021-09-07 16:32:39.000000000 +0200 +++ new/terminado-0.13.1/terminado.egg-info/SOURCES.txt 2022-01-27 15:20:57.000000000 +0100 @@ -1,7 +1,10 @@ +CHANGELOG.md LICENSE MANIFEST.in README.rst +RELEASE.md pyproject.toml +setup.cfg setup.py terminado/__init__.py terminado/management.py