uninett / curitz Goto Github PK
View Code? Open in Web Editor NEWPython curses package to interface with Zino
License: Apache License 2.0
Python curses package to interface with Zino
License: Apache License 2.0
Version: 0.9.20
When clearing out a lot of closed tickets with the "Y" command, the code could fail with a list index out of range.
File "/home/runarb/.local/bin/curitz", line 8, in <module>
sys.exit(main())
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
curses.wrapper(uiloop, config)
File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
runner(screen, config)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 866, in runner
lb.draw()
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/culistbox.py", line 69, in draw
if isinstance(self.elements[i], BoxElement):
IndexError: list index out of range```
This might because of the current "page" of tickets is beeing deleted, or something like that.
I've not debugged the issue other than found it happening when cleaning a lot of tickets when debugging zino2
I've not debugged this to far, but some times the zino server sends a reset or something that results in a Broken pipe error in curitz.
This could also be because of a firewall in-between have reset the session because of inactivity.
File "/home/runarb/.local/bin/curitz", line 8, in <module>
sys.exit(main())
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
curses.wrapper(uiloop, config)
File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
runner(screen, config)
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 872, in runner
doKeepalive()
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 646, in doKeepalive
session.case(0)
File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 534, in case
return Case(self, id)
File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 210, in __init__
self._attrs = self._zino.get_attributes(caseid)
File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 608, in get_attributes
attrlist = self.get_raw_attributes(caseid)
File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 587, in get_raw_attributes
response = self._request(cmd.encode("UTF-8"))
File "/home/runarb/.local/lib/python3.10/site-packages/zinolib/ritz.py", line 392, in _request
self._sock.send(command)
BrokenPipeError: [Errno 32] Broken pipe```
if trying to search for a string including a not regex valid set of (
and )
characters makes curitz exit with a traceback:
--> $ curitz
Traceback (most recent call last):
File "/home/runarb/.local/bin/curitz", line 8, in <module>
sys.exit(main())
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
curses.wrapper(uiloop, config)
File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
runner(screen, config)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 865, in runner
create_case_list(config)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 454, in create_case_list
sorted_cases = sortCases(cases, field="updated", filter=casefilter)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 420, in sortCases
if re.match(
File "/usr/lib/python3.10/re.py", line 190, in match
return _compile(pattern, flags).match(string)
File "/usr/lib/python3.10/re.py", line 303, in _compile
p = sre_compile.compile(pattern, flags)
File "/usr/lib/python3.10/sre_compile.py", line 788, in compile
p = sre_parse.parse(p, flags)
File "/usr/lib/python3.10/sre_parse.py", line 955, in parse
p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
File "/usr/lib/python3.10/sre_parse.py", line 444, in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
File "/usr/lib/python3.10/sre_parse.py", line 843, in _parse
raise source.error("missing ), unterminated subpattern",
re.error: missing ), unterminated subpattern at position 5
This happens because the string entered is passed right into a regex without error handling,
Entering a incomplete subpattern should generate a better error message to the user.
Resizing the terminal (shrinking the windown in one directionwhen the initial loading of tickets screen is present creates a traceback when ticket loading is finished.
Traceback (most recent call last):
File "/home/runarb/.local/bin/curitz", line 8, in <module>
sys.exit(main())
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
curses.wrapper(uiloop, config)
File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
runner(screen, config)
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/cli.py", line 679, in runner
lb.draw()
File "/home/runarb/.local/lib/python3.10/site-packages/curitz/culistbox.py", line 94, in draw
self.box.addstr(
_curses.error: addwstr() returned ERR
i think the cause of this is that screen size is calculated before entering the initial load dialog and then used on the "window" thereafter. then as addwstr
cant really paint the pixels thats removed fron the terminal at the edge of the window it crashes with a traceback.
When you have a completely empty case-list, eg. after filtering with a random nonexistant string.
if you then press "[ENTER]", this tracebacks curitz with the error:
Traceback (most recent call last):
File "/home/runarb/.local/bin/curitz", line 8, in <module>
sys.exit(main())
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 1182, in main
curses.wrapper(uiloop, config)
File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 404, in uiloop
runner(screen, config)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/cli.py", line 845, in runner
uiShowHistory(screen, lb.active.id, config)
File "/home/runarb/.local/pipx/venvs/curitz/lib/python3.10/site-packages/curitz/culistbox.py", line 118, in active
return self.elements[self.active_element]
IndexError: list index out of range
This should instead just do nothing.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.