easycoder 250204.1__tar.gz → 250205.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of easycoder might be problematic. Click here for more details.

Files changed (175) hide show
  1. {easycoder-250204.1 → easycoder-250205.1}/PKG-INFO +1 -1
  2. {easycoder-250204.1 → easycoder-250205.1}/easycoder/README.md +2 -2
  3. {easycoder-250204.1 → easycoder-250205.1}/easycoder/__init__.py +1 -1
  4. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_core.py +29 -22
  5. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_graphics.py +2 -1
  6. {easycoder-250204.1 → easycoder-250205.1}/LICENSE +0 -0
  7. {easycoder-250204.1 → easycoder-250205.1}/README.md +0 -0
  8. {easycoder-250204.1 → easycoder-250205.1}/doc/README.md +0 -0
  9. {easycoder-250204.1 → easycoder-250205.1}/doc/core/README.md +0 -0
  10. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/boolean.md +0 -0
  11. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/empty.md +0 -0
  12. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/ends.md +0 -0
  13. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/even.md +0 -0
  14. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/exists.md +0 -0
  15. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/greater.md +0 -0
  16. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/hasProperty.md +0 -0
  17. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/includes.md +0 -0
  18. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/is.md +0 -0
  19. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/less.md +0 -0
  20. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/list.md +0 -0
  21. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/none.md +0 -0
  22. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/not.md +0 -0
  23. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/numeric.md +0 -0
  24. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/object.md +0 -0
  25. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/odd.md +0 -0
  26. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/starts.md +0 -0
  27. {easycoder-250204.1 → easycoder-250205.1}/doc/core/conditions/string.md +0 -0
  28. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/add.md +0 -0
  29. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/append.md +0 -0
  30. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/assert.md +0 -0
  31. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/begin.md +0 -0
  32. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/clear.md +0 -0
  33. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/close.md +0 -0
  34. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/create.md +0 -0
  35. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/debug.md +0 -0
  36. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/decrement.md +0 -0
  37. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/delete.md +0 -0
  38. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/divide.md +0 -0
  39. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/exit.md +0 -0
  40. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/file.md +0 -0
  41. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/fork.md +0 -0
  42. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/get.md +0 -0
  43. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/go.md +0 -0
  44. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/gosub.md +0 -0
  45. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/if.md +0 -0
  46. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/import.md +0 -0
  47. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/increment.md +0 -0
  48. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/index.md +0 -0
  49. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/init.md +0 -0
  50. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/input.md +0 -0
  51. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/load.md +0 -0
  52. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/lock.md +0 -0
  53. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/log.md +0 -0
  54. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/module.md +0 -0
  55. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/multiply.md +0 -0
  56. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/negate.md +0 -0
  57. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/open.md +0 -0
  58. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/pop.md +0 -0
  59. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/post.md +0 -0
  60. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/print.md +0 -0
  61. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/push.md +0 -0
  62. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/put.md +0 -0
  63. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/read.md +0 -0
  64. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/release.md +0 -0
  65. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/replace.md +0 -0
  66. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/return.md +0 -0
  67. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/run.md +0 -0
  68. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/save.md +0 -0
  69. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/script.md +0 -0
  70. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/set.md +0 -0
  71. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/split.md +0 -0
  72. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/stack.md +0 -0
  73. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/stop.md +0 -0
  74. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/system.md +0 -0
  75. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/take.md +0 -0
  76. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/toggle.md +0 -0
  77. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/truncate.md +0 -0
  78. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/unlock.md +0 -0
  79. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/variable.md +0 -0
  80. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/wait.md +0 -0
  81. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/while.md +0 -0
  82. {easycoder-250204.1 → easycoder-250205.1}/doc/core/keywords/write.md +0 -0
  83. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/arg.md +0 -0
  84. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/args.md +0 -0
  85. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/cos.md +0 -0
  86. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/datime.md +0 -0
  87. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/decode.md +0 -0
  88. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/element.md +0 -0
  89. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/elements.md +0 -0
  90. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/empty.md +0 -0
  91. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/encode.md +0 -0
  92. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/error.md +0 -0
  93. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/files.md +0 -0
  94. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/float.md +0 -0
  95. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/from.md +0 -0
  96. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/hash.md +0 -0
  97. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/index.md +0 -0
  98. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/integer.md +0 -0
  99. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/json.md +0 -0
  100. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/keys.md +0 -0
  101. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/left.md +0 -0
  102. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/length.md +0 -0
  103. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/lowercase.md +0 -0
  104. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/memory.md +0 -0
  105. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/modification.md +0 -0
  106. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/modulo.md +0 -0
  107. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/newline.md +0 -0
  108. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/now.md +0 -0
  109. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/position.md +0 -0
  110. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/property.md +0 -0
  111. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/random.md +0 -0
  112. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/right.md +0 -0
  113. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/sin.md +0 -0
  114. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/stringify.md +0 -0
  115. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/tab.md +0 -0
  116. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/tan.md +0 -0
  117. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/timestamp.md +0 -0
  118. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/today.md +0 -0
  119. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/trim.md +0 -0
  120. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/type.md +0 -0
  121. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/uppercase.md +0 -0
  122. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/value.md +0 -0
  123. {easycoder-250204.1 → easycoder-250205.1}/doc/core/values/weekday.md +0 -0
  124. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/README.md +0 -0
  125. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/attach.md +0 -0
  126. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/close.md +0 -0
  127. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/create.md +0 -0
  128. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/ellipse.md +0 -0
  129. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/image.md +0 -0
  130. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/move.md +0 -0
  131. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/on.md +0 -0
  132. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/rectangle.md +0 -0
  133. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/render.md +0 -0
  134. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/run.md +0 -0
  135. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/set.md +0 -0
  136. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/keywords/text.md +0 -0
  137. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/values/attribute.md +0 -0
  138. {easycoder-250204.1 → easycoder-250205.1}/doc/graphics/values/window.md +0 -0
  139. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_classes.py +0 -0
  140. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_compiler.py +0 -0
  141. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_condition.py +0 -0
  142. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_gutils.py +0 -0
  143. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_handler.py +0 -0
  144. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_program.py +0 -0
  145. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_timestamp.py +0 -0
  146. {easycoder-250204.1 → easycoder-250205.1}/easycoder/ec_value.py +0 -0
  147. {easycoder-250204.1 → easycoder-250205.1}/images/Semoigo Dawn.jpg +0 -0
  148. {easycoder-250204.1 → easycoder-250205.1}/json/graphics-demo.json +0 -0
  149. {easycoder-250204.1 → easycoder-250205.1}/plugins/ec_keyboard.py +0 -0
  150. {easycoder-250204.1 → easycoder-250205.1}/plugins/ec_p100.py +0 -0
  151. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/4-function.json +0 -0
  152. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/4-function.png +0 -0
  153. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-0.json +0 -0
  154. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-0.png +0 -0
  155. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-1.json +0 -0
  156. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-1.png +0 -0
  157. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-2.json +0 -0
  158. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-2.png +0 -0
  159. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-3.json +0 -0
  160. {easycoder-250204.1 → easycoder-250205.1}/plugins/keyboards/qwerty-3.png +0 -0
  161. {easycoder-250204.1 → easycoder-250205.1}/plugins/points.py +0 -0
  162. {easycoder-250204.1 → easycoder-250205.1}/pyproject.toml +0 -0
  163. {easycoder-250204.1 → easycoder-250205.1}/scripts/README.md +0 -0
  164. {easycoder-250204.1 → easycoder-250205.1}/scripts/benchmark.ecs +0 -0
  165. {easycoder-250204.1 → easycoder-250205.1}/scripts/config.ecg +0 -0
  166. {easycoder-250204.1 → easycoder-250205.1}/scripts/connect.ecg +0 -0
  167. {easycoder-250204.1 → easycoder-250205.1}/scripts/ec_keyboard.py +0 -0
  168. {easycoder-250204.1 → easycoder-250205.1}/scripts/findxr.ecs +0 -0
  169. {easycoder-250204.1 → easycoder-250205.1}/scripts/fizzbuzz.ecs +0 -0
  170. {easycoder-250204.1 → easycoder-250205.1}/scripts/hello.ecs +0 -0
  171. {easycoder-250204.1 → easycoder-250205.1}/scripts/points.ecs +0 -0
  172. {easycoder-250204.1 → easycoder-250205.1}/scripts/test.ecs +0 -0
  173. {easycoder-250204.1 → easycoder-250205.1}/scripts/testg.ecg +0 -0
  174. {easycoder-250204.1 → easycoder-250205.1}/scripts/tests.ecs +0 -0
  175. {easycoder-250204.1 → easycoder-250205.1}/test.ecs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: easycoder
3
- Version: 250204.1
3
+ Version: 250205.1
4
4
  Summary: Rapid scripting in English
5
5
  Keywords: compiler,scripting,prototyping,programming,coding,python,low code,hypertalk,computer language,learn to code
6
6
  Author-email: Graham Trott <gtanyware@gmail.com>
@@ -1,6 +1,6 @@
1
1
  # EasyCode source code
2
2
  These are the Python files that comprise **_EasyCoder_**.
3
3
 
4
- **_EasyCoder_** has a small number of third-party dependencies. A minor one is `pytz`, which handles timezones. The biggest one by far is `kivy`, a comprehensive Python graphics library.
4
+ **_EasyCoder_** has a small number of third-party dependencies. A minor one is `pytz`, which handles timezones. The biggest one by far is `PySimpleGUI`, a comprehensive Python graphics library.
5
5
 
6
- If an **_EasyCoder_** script filename ends with `.ecs` it's a command-line script. If it ends with `.ecg` it's a script for a graphical application and will cause `kivy` to be imported. Obviously this will only work on a GUI-based system, whereas command-line scripts will run anywhere there is Python.
6
+ If an **_EasyCoder_** script filename ends with `.ecs` it's a command-line script. If it ends with `.ecg` it's a script for a graphical application and will cause `PySimpleGUI` to be imported. Obviously this will only work on a GUI-based system, whereas command-line scripts will run anywhere there is Python.
@@ -9,4 +9,4 @@ from .ec_program import *
9
9
  from .ec_timestamp import *
10
10
  from .ec_value import *
11
11
 
12
- __version__ = "250204.1"
12
+ __version__ = "250205.1"
@@ -484,6 +484,7 @@ class Core(Handler):
484
484
  except:
485
485
  pass
486
486
  RuntimeError(self.program, f'There is no label "{label}"')
487
+ return None
487
488
 
488
489
  def r_gotoPC(self, command):
489
490
  return command['goto']
@@ -498,14 +499,12 @@ class Core(Handler):
498
499
 
499
500
  def r_gosub(self, command):
500
501
  label = command['gosub'] + ':'
501
- try:
502
- address = self.symbols[label]
503
- if address != None:
504
- self.stack.append(self.nextPC())
505
- return address
506
- except:
507
- pass
508
- RuntimeError(self.program, f'There is no label "{label}"')
502
+ address = self.symbols[label]
503
+ if address != None:
504
+ self.stack.append(self.nextPC())
505
+ return address
506
+ RuntimeError(self.program, f'There is no label "{label + ":"}"')
507
+ return None
509
508
 
510
509
  # if <condition> <action> [else <action>]
511
510
  def k_if(self, command):
@@ -1005,8 +1004,10 @@ class Core(Handler):
1005
1004
  lino = str(code['lino'] + 1)
1006
1005
  while len(lino) < 5: lino = f' {lino}'
1007
1006
  if value == None: value = '<empty>'
1008
- if 'log' in command: print(f'{datetime.now().time()}:{lino}-> {value}')
1009
- else: print(value)
1007
+ if 'log' in command:
1008
+ print(f'{datetime.now().time()}:{lino}-> {value}')
1009
+ else:
1010
+ print(value)
1010
1011
  return self.nextPC()
1011
1012
 
1012
1013
  # Push a value onto a stack
@@ -1817,10 +1818,12 @@ class Core(Handler):
1817
1818
  return None
1818
1819
 
1819
1820
  if token == 'value':
1820
- value['type'] = 'valueOf'
1821
1821
  if self.nextIs('of'):
1822
- value['content'] = self.nextValue()
1823
- return value
1822
+ v = self.nextValue()
1823
+ if v !=None:
1824
+ value['type'] = 'valueOf'
1825
+ value['content'] = v
1826
+ return value
1824
1827
  return None
1825
1828
 
1826
1829
  if token == 'length':
@@ -1989,10 +1992,6 @@ class Core(Handler):
1989
1992
  value['type'] = 'text'
1990
1993
  if self.encoding == 'utf-8':
1991
1994
  value['content'] = content.decode('utf-8')
1992
- elif self.encoding == 'hex':
1993
- b = content.encode('utf-8')
1994
- mb = binascii.unhexlify(b)
1995
- value['content'] = mb.decode('utf-8')
1996
1995
  elif self.encoding == 'base64':
1997
1996
  base64_bytes = content.encode('ascii')
1998
1997
  message_bytes = base64.b64decode(base64_bytes)
@@ -2036,10 +2035,6 @@ class Core(Handler):
2036
2035
  value['type'] = 'text'
2037
2036
  if self.encoding == 'utf-8':
2038
2037
  value['content'] = content.encode('utf-8')
2039
- elif self.encoding == 'hex':
2040
- b = content.encode('utf-8')
2041
- mb = binascii.hexlify(b)
2042
- value['content'] = mb.decode('utf-8')
2043
2038
  elif self.encoding == 'base64':
2044
2039
  data_bytes = content.encode('ascii')
2045
2040
  base64_bytes = base64.b64encode(data_bytes)
@@ -2405,11 +2400,22 @@ class Core(Handler):
2405
2400
  if self.nextToken() == 'with':
2406
2401
  condition.value2 = self.nextValue()
2407
2402
  return condition
2403
+ return None
2408
2404
 
2409
2405
  if token == 'includes':
2410
2406
  condition.value2 = self.nextValue()
2411
2407
  return condition
2412
2408
 
2409
+ if token == 'does':
2410
+ self.nextToken()
2411
+ if self.nextIs('not'):
2412
+ if self.nextIs('include'):
2413
+ condition.value2 = self.nextValue()
2414
+ condition.type = 'includes'
2415
+ condition.negate = True
2416
+ return condition
2417
+ return None
2418
+
2413
2419
  if token == 'is':
2414
2420
  token = self.nextToken()
2415
2421
  if self.peek() == 'not':
@@ -2497,7 +2503,8 @@ class Core(Handler):
2497
2503
  def c_includes(self, condition):
2498
2504
  value1 = self.getRuntimeValue(condition.value1)
2499
2505
  value2 = self.getRuntimeValue(condition.value2)
2500
- return value2 in value1
2506
+ test = value2 in value1
2507
+ return not test if condition.negate else test
2501
2508
 
2502
2509
  def c_is(self, condition):
2503
2510
  comparison = self.program.compare(condition.value1, condition.value2)
@@ -1,4 +1,5 @@
1
- from .ec_classes import FatalError, RuntimeError, Handler
1
+ from .ec_classes import FatalError, RuntimeError
2
+ from .ec_handler import Handler
2
3
  from .ec_gutils import GUtils
3
4
  import PySimpleGUI as psg
4
5
  import json
File without changes
File without changes
File without changes
File without changes