annotate Documentations/OSTC4_CPU2_F411_Configuration.pdf @ 224:ceecabfddb57 div-fixes-3

Bugfix, deco: fix 2 (small) problems with calculated ceiling This fixes 1 trivial, and 1 not really trivial bug in the calculation of the ceiling. When simulating a bounce dive to 80m, things become clear (tried this on a CCR dive, fixed setpoint 1.2bar, about 15 minutes of bottom time). Closely watch the behavior of the ceiling data. At some point during the ascent, the ceiling begins to decrease in 10cm steps. Then suddenly (while still ascending), the ceiling increases again with 1m, does not change for some time, and then suddenly steps 1.1m less deep. While not very relevant to real deco diving, it is simply wrong. The reason for this is subtle. The algorithm used to find the ceiling is a sort of linear search, stepping down a meter, overshoot the depth, and search back in 10cm steps. It seems some numerical instability. Fixing this, was a bit more computational intensive search by stepping up down in equal steps of 10cm. But, I'm pretty sure that things can be speeded up here, as a ceiling does not change fast, so it should be not that difficult to limit the search space, or use a binary search algorithm instead. The trivial second problem fixed, is that the ceiling ends at the surface and not at 1m depth. This small issue became visible after changing the step down size above. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl> --> -->
 
 
<type 'exceptions.AttributeError'>
Python 2.7.17: /usr/bin/python
Sun Jul 7 20:24:21 2024

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /var/www/vhosts/heinrichsweikamp.com/code/hgweb-public.cgi in <module>()
     15 
     16 from mercurial import demandimport; demandimport.enable()
     17 from mercurial.hgweb import hgweb, wsgicgi
     18 application = hgweb(config)
=>   19 wsgicgi.launch(application)
wsgicgi = <module 'mercurial.hgweb.wsgicgi' from '/usr/lib...on2.7/dist-packages/mercurial/hgweb/wsgicgi.pyc'>, wsgicgi.launch = <function launch>, application = <mercurial.hgweb.hgwebdir_mod.hgwebdir object>
 /usr/lib/python2.7/dist-packages/mercurial/hgweb/wsgicgi.py in launch(application=<mercurial.hgweb.hgwebdir_mod.hgwebdir object>)
     83     content = application(environ, start_response)
     84     try:
=>   85         for chunk in content:
     86             write(chunk)
     87         if not headers_sent:
chunk = '/public/ostc4/rev/ceecabfddb57">changeset</a></l...ned-off-by: Jan Mulder &lt;jlmulder@xs4all.nl&gt;', content = <generator object run_wsgi>
 /usr/lib/python2.7/dist-packages/mercurial/hgweb/hgwebdir_mod.py in run_wsgi(self=<mercurial.hgweb.hgwebdir_mod.hgwebdir object>, req=<mercurial.hgweb.request.wsgirequest object>)
    227         with profiling.profile(self.ui, enabled=profile):
    228             try:
=>  229                 for r in self._runwsgi(req):
    230                     yield r
    231             finally:
r = '/public/ostc4/rev/ceecabfddb57">changeset</a></l...ned-off-by: Jan Mulder &lt;jlmulder@xs4all.nl&gt;', self = <mercurial.hgweb.hgwebdir_mod.hgwebdir object>, self._runwsgi = <bound method hgwebdir._runwsgi of <mercurial.hgweb.hgwebdir_mod.hgwebdir object>>, req = <mercurial.hgweb.request.wsgirequest object>
 /usr/lib/python2.7/dist-packages/mercurial/hgweb/hgweb_mod.py in run_wsgi(self=<mercurial.hgweb.hgweb_mod.hgweb object>, req=<mercurial.hgweb.request.wsgirequest object>)
    316             profile = repo.ui.configbool('profiling', 'enabled')
    317             with profiling.profile(repo.ui, enabled=profile):
=>  318                 for r in self._runwsgi(req, repo):
    319                     yield r
    320 
r = '/public/ostc4/rev/ceecabfddb57">changeset</a></l...ned-off-by: Jan Mulder &lt;jlmulder@xs4all.nl&gt;', self = <mercurial.hgweb.hgweb_mod.hgweb object>, self._runwsgi = <bound method hgweb._runwsgi of <mercurial.hgweb.hgweb_mod.hgweb object>>, req = <mercurial.hgweb.request.wsgirequest object>, repo = <filteredrepo:served <mercurial.localrepo.localrepository object>>
 /usr/lib/python2.7/dist-packages/mercurial/util.py in increasingchunks(source=<generator object _flatten>, min=4096, max=65536)
   1015     buf = []
   1016     blen = 0
=> 1017     for chunk in source:
   1018         buf.append(chunk)
   1019         blen += len(chunk)
chunk = '">\n ', source = <generator object _flatten>
 /usr/lib/python2.7/dist-packages/mercurial/templater.py in _flatten(thing=<generator object runtemplate>)
   1279                 yield pycompat.bytestr(i)
   1280             else:
=> 1281                 for j in _flatten(i):
   1282                     yield j
   1283 
j = '">\n<span>Ignore whitespace changes - </span>\n<sp..."ignorewseol-checkbox" type="checkbox" />\n</form>', global _flatten = <function _flatten>, i = <generator object runmap>
 /usr/lib/python2.7/dist-packages/mercurial/templater.py in _flatten(thing=<generator object runmap>)
   1270         yield pycompat.bytestr(thing)
   1271     else:
=> 1272         for i in thing:
   1273             i = templatekw.unwraphybrid(i)
   1274             if isinstance(i, bytes):
i undefined, thing = <generator object runmap>
 /usr/lib/python2.7/dist-packages/mercurial/templater.py in runmap(context=<mercurial.templater.engine object>, mapping={'annotate': <function annotate>, 'author': 'Jan Mulder <jlmulder@xs4all.nl>', 'bookmarks': [], 'branch': [{'name': 'div-fixes-3'}], 'branches': [], 'child': <function <lambda>>, 'date': (1554053751.0, -7200), 'desc': 'Bugfix, deco: fix 2 (small) problems with calcul....\n\nSigned-off-by: Jan Mulder <jlmulder@xs4all.nl>', 'diffopts': {'context': 3, 'git': False, 'ignoreblanklines': False, 'ignorews': False, 'ignorewsamount': False, 'ignorewseol': False, 'index': 0, 'nobinary': False, 'nodates': False, 'noprefix': False, ...}, 'extra': {'branch': 'div-fixes-3', 'histedit_source': 'd12ae2ec130bffe181adfd0128f133d88452d951', 'rebase_source': 'c1835497c6bfb9ac68c799a61a59f88eebbe6dae'}, ...}, data=((<function runsymbol>, 'annotate'), (<function runtemplate>, [(<function runstring>, '\n<tr id="'), (<function runsymbol>, 'lineid'), (<function runstring>, '"'), (<function ifeq>, [(<function runsymbol>, 'node'), (<function runsymbol>, 'originalnode'), (<function runstring>, ' class="thisrev"')]), (<function runstring>, '>\n<td class="annotate parity'), (<function runsymbol>, 'blockparity'), (<function runstring>, '">\n'), (<function if_>, [(<function runsymbol>, 'blockhead'), (<function runtemplate>, [...])]), (<function runstring>, '\n<div class="annotate-info">\n<div>\n<a href="'), (<function runfilter>, ((<function runsymbol>, 'url'), <function urlescape>)), (<function runstring>, 'annotate/'), (<function runfilter>, ((<function runsymbol>, 'node'), <function short>)), (<function runstring>, '/'), (<function runfilter>, ((<function runsymbol>, 'file'), <function urlescape>)), (<function runmap>, ((<function runsymbol>, 'sessionvars'), (<function runtemplate>, [...]))), (<function runstring>, '#l'), (<function runsymbol>, 'targetline'), (<function runstring>, '">\n'), (<function runfilter>, ((<function runsymbol>, 'node'), <function short>)), (<function runstring>, '</a>\n'), ...])))
    460                 raise error.ParseError(_("%r is not iterable") % d)
    461 
=>  462     for i, v in enumerate(diter):
    463         lm = mapping.copy()
    464         lm['index'] = i
i undefined, v undefined, builtin enumerate = <type 'enumerate'>, diter = <generator object annotate>
 /usr/lib/python2.7/dist-packages/mercurial/hgweb/webcommands.py in annotate(**map={'annotate': <function annotate>, 'author': 'Jan Mulder <jlmulder@xs4all.nl>', 'bookmarks': [], 'branch': [{'name': 'div-fixes-3'}], 'branches': [], 'child': <function <lambda>>, 'date': (1554053751.0, -7200), 'desc': 'Bugfix, deco: fix 2 (small) problems with calcul....\n\nSigned-off-by: Jan Mulder <jlmulder@xs4all.nl>', 'diffopts': {'context': 3, 'git': False, 'ignoreblanklines': False, 'ignorews': False, 'ignorewsamount': False, 'ignorewseol': False, 'index': 0, 'nobinary': False, 'nodates': False, 'noprefix': False, ...}, 'extra': {'branch': 'div-fixes-3', 'histedit_source': 'd12ae2ec130bffe181adfd0128f133d88452d951', 'rebase_source': 'c1835497c6bfb9ac68c799a61a59f88eebbe6dae'}, ...})
    907         blockparitygen = paritygen(1)
    908         for lineno, (aline, l) in enumerate(lines):
=>  909             f = aline.fctx
    910             rev = f.rev()
    911             if rev != previousrev:
f undefined, aline = (<filectx Documentations/OSTC4_CPU2_F411_Configuration.pdf@7d1b61176708>, 1), aline.fctx undefined

<type 'exceptions.AttributeError'>: 'tuple' object has no attribute 'fctx'
      args = ("'tuple' object has no attribute 'fctx'",)
      message = "'tuple' object has no attribute 'fctx'"