← Back to team overview

sikuli-driver team mailing list archive

[Bug 777037] Re: X-1.0rc2: findAll() fails instead of returning None --- doc updated

 

@ RaiMan
It makes sense. Even though programming Sikuli becomes more error prone, it becomes more cumbersome (more like Java), but at the same time maybe it is good to have this by default, because otherwise I wouldn't even consider this alternative. =) Maybe for new users it is good to have some "starter" or "novice" mode with no complicated words like "exception".

> If I would have the situation, I would do this:
> matches = findAll(img) if exists(img, 0) else False

This has a drawback that it runs match two times. I resorted to handling
exception. Not that beautiful, but more practical. =)


I've gathered more comments while reviewing the docs in response to your reply:

1. findAll() http://sikuli.org/docx/region.html#Region.findAll - doesn't
mention getLastMatches(), the explanation is a little more verbose that
in find()

2. neither find*() nor
http://sikuli.org/docx/region.html#patternnotfound explains what happens
with lastMatches when exception occurs - can I 100% rely that it will be
None?

3. http://sikuli.org/docx/region.html#patternnotfound may have an
example of handling exception - while it may seem obvious, it was once
hard to find proper syntax in Python docs

  try:
    region.findAll(what)
  except FindFailed:
    pass
  for w in region.getLastMatches():
    ...

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to Sikuli.
https://bugs.launchpad.net/bugs/777037

Title:
  X-1.0rc2: findAll() fails instead of returning None --- doc updated

Status in Sikuli:
  Fix Released

Bug description:
  the docs have been updated to clearly describe the current behavior of findAll()
  --------------------------------------------------------------------------

  According to docs, findAll() should return None if images are not found, but it fails instead.
  Docs: http://sikuli.org/docx/region.html#Region.findAll
  Command: fields = findAll([image here])

  [profile] Finder.findAll START
  [profile] Finder.findAll END: 1074ms
  [error] Stopped
  [error] An error occurs at line 6
  [error] Error message: Traceback (most recent call last):
    File "C:\Users\useri\AppData\Local\Temp\sikuli-tmp2446174342086249181.py", line 6, in
      lettu_fields = findAll("1304497590779.png")
    File "C:\SikuliX\sikuli-script.jar\Lib\sikuli\Region.py", line 76, in findAll
    Line 14, in file C:\Users\useri\AppData\Local\Temp\sikuli-tmp2446174342086249181.py

     at org.sikuli.script.Region.handleFindFailed(Region.java:349)
    at org.sikuli.script.Region.findAll(Region.java:386)
    at org.python.proxies.sikuli.Region$Region$1.super__findAll(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)

     org.sikuli.script.FindFailed: FindFailed: can not find 1304497590779.png
    Line 14
  , in file C:\Users\useri\AppData\Local\Temp\sikuli-tmp2446174342086249181.py


References