Fileseq 2.3.1__tar.gz → 2.3.2__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.
Files changed (246) hide show
  1. {fileseq-2.3.1/src/Fileseq.egg-info → fileseq-2.3.2}/PKG-INFO +1 -1
  2. {fileseq-2.3.1 → fileseq-2.3.2/src/Fileseq.egg-info}/PKG-INFO +1 -1
  3. {fileseq-2.3.1 → fileseq-2.3.2}/src/Fileseq.egg-info/SOURCES.txt +1 -0
  4. fileseq-2.3.2/src/fileseq/__version__.py +1 -0
  5. {fileseq-2.3.1 → fileseq-2.3.2}/src/fileseq/filesequence.py +11 -3
  6. {fileseq-2.3.1 → fileseq-2.3.2}/src/fileseq/frameset.py +2 -1
  7. fileseq-2.3.2/test/subframe_seqneg/bar.0000.5000.exr +0 -0
  8. {fileseq-2.3.1 → fileseq-2.3.2}/test/test_unit.py +16 -1
  9. fileseq-2.3.1/src/fileseq/__version__.py +0 -1
  10. {fileseq-2.3.1 → fileseq-2.3.2}/LICENSE +0 -0
  11. {fileseq-2.3.1 → fileseq-2.3.2}/MANIFEST.in +0 -0
  12. {fileseq-2.3.1 → fileseq-2.3.2}/README.md +0 -0
  13. {fileseq-2.3.1 → fileseq-2.3.2}/setup.cfg +0 -0
  14. {fileseq-2.3.1 → fileseq-2.3.2}/setup.py +0 -0
  15. {fileseq-2.3.1 → fileseq-2.3.2}/src/Fileseq.egg-info/dependency_links.txt +0 -0
  16. {fileseq-2.3.1 → fileseq-2.3.2}/src/Fileseq.egg-info/top_level.txt +0 -0
  17. {fileseq-2.3.1 → fileseq-2.3.2}/src/fileseq/__init__.py +0 -0
  18. {fileseq-2.3.1 → fileseq-2.3.2}/src/fileseq/constants.py +0 -0
  19. {fileseq-2.3.1 → fileseq-2.3.2}/src/fileseq/exceptions.py +0 -0
  20. {fileseq-2.3.1 → fileseq-2.3.2}/src/fileseq/py.typed +0 -0
  21. {fileseq-2.3.1 → fileseq-2.3.2}/src/fileseq/utils.py +0 -0
  22. {fileseq-2.3.1 → fileseq-2.3.2}/test/__init__.py +0 -0
  23. {fileseq-2.3.1 → fileseq-2.3.2}/test/broken_seq/broke.0000.exr +0 -0
  24. {fileseq-2.3.1 → fileseq-2.3.2}/test/broken_seq/broke.0001.exr +0 -0
  25. {fileseq-2.3.1 → fileseq-2.3.2}/test/broken_seq/broke.0002.exr +0 -0
  26. {fileseq-2.3.1 → fileseq-2.3.2}/test/broken_seq/broke.0004.exr +0 -0
  27. {fileseq-2.3.1 → fileseq-2.3.2}/test/broken_seq/broke.0006.exr +0 -0
  28. {fileseq-2.3.1 → fileseq-2.3.2}/test/broken_seq/broke.0007.exr +0 -0
  29. {fileseq-2.3.1 → fileseq-2.3.2}/test/broken_seq/broke.0008.exr +0 -0
  30. {fileseq-2.3.1 → fileseq-2.3.2}/test/complex_ext/1.a.jpg +0 -0
  31. {fileseq-2.3.1 → fileseq-2.3.2}/test/complex_ext/2.a.jpg +0 -0
  32. {fileseq-2.3.1 → fileseq-2.3.2}/test/complex_ext/3.a.jpg +0 -0
  33. {fileseq-2.3.1 → fileseq-2.3.2}/test/complex_ext/file.5.a.ext +0 -0
  34. {fileseq-2.3.1 → fileseq-2.3.2}/test/complex_ext/file.6.a.ext +0 -0
  35. {fileseq-2.3.1 → fileseq-2.3.2}/test/complex_ext/file.7.a.ext +0 -0
  36. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.-0001.ext +0 -0
  37. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.-001.ext +0 -0
  38. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.-1.ext +0 -0
  39. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.00.ext +0 -0
  40. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.0000.ext +0 -0
  41. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.00000.ext +0 -0
  42. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.00001.ext +0 -0
  43. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.00002.ext +0 -0
  44. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.00003.ext +0 -0
  45. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.00004.ext +0 -0
  46. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.00005.ext +0 -0
  47. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.0001.ext +0 -0
  48. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.0002.ext +0 -0
  49. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.0003.ext +0 -0
  50. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.0004.ext +0 -0
  51. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.0005.ext +0 -0
  52. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.01.ext +0 -0
  53. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.02.ext +0 -0
  54. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.03.ext +0 -0
  55. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.04.ext +0 -0
  56. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed/seq.05.ext +0 -0
  57. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed_case/sub/file_FOO_004.ext +0 -0
  58. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed_case/sub/file_FOO_005.ext +0 -0
  59. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed_case/sub/file_FOO_006.ext +0 -0
  60. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed_case/sub/file_foo_001.ext +0 -0
  61. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed_case/sub/file_foo_002.ext +0 -0
  62. {fileseq-2.3.1 → fileseq-2.3.2}/test/mixed_case/sub/file_foo_003.ext +0 -0
  63. {fileseq-2.3.1 → fileseq-2.3.2}/test/multi_range/file_0003.0001.exr +0 -0
  64. {fileseq-2.3.1 → fileseq-2.3.2}/test/multi_range/file_0004.0001.exr +0 -0
  65. {fileseq-2.3.1 → fileseq-2.3.2}/test/multi_range/file_0005.0001.exr +0 -0
  66. {fileseq-2.3.1 → fileseq-2.3.2}/test/pytest.ini +0 -0
  67. {fileseq-2.3.1 → fileseq-2.3.2}/test/run.py +0 -0
  68. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/0001.exr +0 -0
  69. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/0002.exr +0 -0
  70. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/0003.exr +0 -0
  71. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/bar1000.exr +0 -0
  72. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/bar1001.exr +0 -0
  73. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/bar1002.exr +0 -0
  74. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/bar1004.exr +0 -0
  75. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/bar1005.exr +0 -0
  76. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/bar1006.exr +0 -0
  77. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/baz_left.0001.exr +0 -0
  78. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/baz_left.0002.exr +0 -0
  79. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/baz_left.0003.exr +0 -0
  80. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/baz_right.0001.exr +0 -0
  81. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/baz_right.0002.exr +0 -0
  82. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/baz_right.0003.exr +0 -0
  83. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/big.0999.ext +0 -0
  84. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/big.1000.ext +0 -0
  85. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/big.1001.ext +0 -0
  86. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/big.1002.ext +0 -0
  87. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/big.1003.ext +0 -0
  88. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0001.exr +0 -0
  89. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0001.jpg +0 -0
  90. /fileseq-2.3.1/test/seq/foo.0002.exr → /fileseq-2.3.2/test/seq/foo.0001_1.exr +0 -0
  91. {fileseq-2.3.1/test/seqhidden → fileseq-2.3.2/test/seq}/foo.0002.exr +0 -0
  92. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0002.jpg +0 -0
  93. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0003.exr +0 -0
  94. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0003.jpg +0 -0
  95. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0004.exr +0 -0
  96. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0004.jpg +0 -0
  97. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0005.exr +0 -0
  98. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.0005.jpg +0 -0
  99. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.debug.0001.exr +0 -0
  100. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.debug.0002.exr +0 -0
  101. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.debug.0003.exr +0 -0
  102. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.debug.0004.exr +0 -0
  103. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo.debug.0005.exr +0 -0
  104. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo_0001.exr +0 -0
  105. {fileseq-2.3.1 → fileseq-2.3.2}/test/seq/foo_0001_extra.exr +0 -0
  106. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.bar1000.exr +0 -0
  107. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.bar1001.exr +0 -0
  108. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.bar1002.exr +0 -0
  109. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.bar1004.exr +0 -0
  110. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.bar1005.exr +0 -0
  111. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.bar1006.exr +0 -0
  112. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0001.exr +0 -0
  113. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0001.jpg +0 -0
  114. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0002.exr +0 -0
  115. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0002.jpg +0 -0
  116. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0003.exr +0 -0
  117. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0003.jpg +0 -0
  118. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0004.exr +0 -0
  119. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0004.jpg +0 -0
  120. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0005.exr +0 -0
  121. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.foo.0005.jpg +0 -0
  122. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/.hidden +0 -0
  123. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/bar1000.exr +0 -0
  124. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/bar1001.exr +0 -0
  125. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/bar1002.exr +0 -0
  126. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/bar1004.exr +0 -0
  127. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/bar1005.exr +0 -0
  128. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/bar1006.exr +0 -0
  129. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0001.exr +0 -0
  130. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0001.jpg +0 -0
  131. {fileseq-2.3.1/test/seqsubdirs/sub1 → fileseq-2.3.2/test/seqhidden}/foo.0002.exr +0 -0
  132. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0002.jpg +0 -0
  133. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0003.exr +0 -0
  134. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0003.jpg +0 -0
  135. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0004.exr +0 -0
  136. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0004.jpg +0 -0
  137. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0005.exr +0 -0
  138. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqhidden/foo.0005.jpg +0 -0
  139. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqneg/bar.-001.exr +0 -0
  140. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqneg/bar.0000.exr +0 -0
  141. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqneg/bar.0001.exr +0 -0
  142. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/0001.exr +0 -0
  143. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/0002.exr +0 -0
  144. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/0003.exr +0 -0
  145. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1000.exr +0 -0
  146. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1001.exr +0 -0
  147. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1002.exr +0 -0
  148. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1004.exr +0 -0
  149. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1005.exr +0 -0
  150. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1006.exr +0 -0
  151. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/foo.0001.exr +0 -0
  152. {fileseq-2.3.1 → fileseq-2.3.2}/test/seqsubdirs/sub1/foo.0001.jpg +0 -0
  153. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.0002.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0002.exr +0 -0
  154. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.0003.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0002.jpg +0 -0
  155. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.0003.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0003.exr +0 -0
  156. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.0004.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0003.jpg +0 -0
  157. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.0004.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0004.exr +0 -0
  158. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.0005.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0004.jpg +0 -0
  159. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.0005.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0005.exr +0 -0
  160. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.debug.0001.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0005.jpg +0 -0
  161. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.debug.0002.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0001.exr +0 -0
  162. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.debug.0003.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0002.exr +0 -0
  163. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.debug.0004.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0003.exr +0 -0
  164. /fileseq-2.3.1/test/seqsubdirs/sub1/foo.debug.0005.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0004.exr +0 -0
  165. /fileseq-2.3.1/test/seqsubdirs/sub1/foo_0001.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0005.exr +0 -0
  166. /fileseq-2.3.1/test/step_seq/step1.0001.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo_0001.exr +0 -0
  167. /fileseq-2.3.1/test/step_seq/step1.0005.exr → /fileseq-2.3.2/test/step_seq/step1.0001.exr +0 -0
  168. /fileseq-2.3.1/test/step_seq/step1.0009.exr → /fileseq-2.3.2/test/step_seq/step1.0005.exr +0 -0
  169. /fileseq-2.3.1/test/step_seq/step1.0013.exr → /fileseq-2.3.2/test/step_seq/step1.0009.exr +0 -0
  170. /fileseq-2.3.1/test/step_seq/step1.0014.exr → /fileseq-2.3.2/test/step_seq/step1.0013.exr +0 -0
  171. /fileseq-2.3.1/test/step_seq/step1.0015.exr → /fileseq-2.3.2/test/step_seq/step1.0014.exr +0 -0
  172. /fileseq-2.3.1/test/step_seq/step1.0016.exr → /fileseq-2.3.2/test/step_seq/step1.0015.exr +0 -0
  173. /fileseq-2.3.1/test/step_seq/step1.0017.exr → /fileseq-2.3.2/test/step_seq/step1.0016.exr +0 -0
  174. /fileseq-2.3.1/test/subframe_seq/bar.0001.0000.exr → /fileseq-2.3.2/test/step_seq/step1.0017.exr +0 -0
  175. /fileseq-2.3.1/test/subframe_seq/baz.0001.0000.exr → /fileseq-2.3.2/test/subframe_seq/bar.0001.0000.exr +0 -0
  176. /fileseq-2.3.1/test/subframe_seq/baz.0001.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.0000.exr +0 -0
  177. /fileseq-2.3.1/test/subframe_seq/baz.0001.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.2500.exr +0 -0
  178. /fileseq-2.3.1/test/subframe_seq/baz.0001.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.5000.exr +0 -0
  179. /fileseq-2.3.1/test/subframe_seq/baz.0002.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.7500.exr +0 -0
  180. /fileseq-2.3.1/test/subframe_seq/baz.0003.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0002.0000.exr +0 -0
  181. /fileseq-2.3.1/test/subframe_seq/baz.0003.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.0000.exr +0 -0
  182. /fileseq-2.3.1/test/subframe_seq/baz.0003.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.2500.exr +0 -0
  183. /fileseq-2.3.1/test/subframe_seq/baz.0003.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.5000.exr +0 -0
  184. /fileseq-2.3.1/test/subframe_seq/baz.0004.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.7500.exr +0 -0
  185. /fileseq-2.3.1/test/subframe_seq/baz_left.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0004.0000.exr +0 -0
  186. /fileseq-2.3.1/test/subframe_seq/baz_left.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.0000.exr +0 -0
  187. /fileseq-2.3.1/test/subframe_seq/baz_left.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.2500.exr +0 -0
  188. /fileseq-2.3.1/test/subframe_seq/baz_left.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.5000.exr +0 -0
  189. /fileseq-2.3.1/test/subframe_seq/baz_left.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.7500.exr +0 -0
  190. /fileseq-2.3.1/test/subframe_seq/baz_right.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1002.0000.exr +0 -0
  191. /fileseq-2.3.1/test/subframe_seq/baz_right.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.0000.exr +0 -0
  192. /fileseq-2.3.1/test/subframe_seq/baz_right.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.2500.exr +0 -0
  193. /fileseq-2.3.1/test/subframe_seq/baz_right.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.5000.exr +0 -0
  194. /fileseq-2.3.1/test/subframe_seq/baz_right.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.7500.exr +0 -0
  195. /fileseq-2.3.1/test/subframe_seq/foo.0001.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1002.0000.exr +0 -0
  196. /fileseq-2.3.1/test/subframe_seq/foo.0001.0000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.0000.exr +0 -0
  197. /fileseq-2.3.1/test/subframe_seq/foo.0001.2500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.0000.jpg +0 -0
  198. /fileseq-2.3.1/test/subframe_seq/foo.0001.2500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.2500.exr +0 -0
  199. /fileseq-2.3.1/test/subframe_seq/foo.0001.5000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.2500.jpg +0 -0
  200. /fileseq-2.3.1/test/subframe_seq/foo.0001.5000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.5000.exr +0 -0
  201. /fileseq-2.3.1/test/subframe_seq/foo.0001.7500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.5000.jpg +0 -0
  202. /fileseq-2.3.1/test/subframe_seq/foo.0001.7500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.7500.exr +0 -0
  203. /fileseq-2.3.1/test/subframe_seq/foo.0002.0000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.7500.jpg +0 -0
  204. /fileseq-2.3.1/test/subframe_seq/foo.0002.0000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.0000.exr +0 -0
  205. /fileseq-2.3.1/test/subframe_seq/foo.0002.2500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.0000.jpg +0 -0
  206. /fileseq-2.3.1/test/subframe_seq/foo.0002.2500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.2500.exr +0 -0
  207. /fileseq-2.3.1/test/subframe_seq/foo.0002.5000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.2500.jpg +0 -0
  208. /fileseq-2.3.1/test/subframe_seq/foo.0002.5000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.5000.exr +0 -0
  209. /fileseq-2.3.1/test/subframe_seq/foo.0002.7500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.5000.jpg +0 -0
  210. /fileseq-2.3.1/test/subframe_seq/foo.0002.7500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.7500.exr +0 -0
  211. /fileseq-2.3.1/test/subframe_seq/foo.0003.0000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.7500.jpg +0 -0
  212. /fileseq-2.3.1/test/subframe_seq/foo.0003.0000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0003.0000.exr +0 -0
  213. /fileseq-2.3.1/test/subframe_seq/foz.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0003.0000.jpg +0 -0
  214. /fileseq-2.3.1/test/subframe_seq/foz.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.0000.exr +0 -0
  215. /fileseq-2.3.1/test/subframe_seq/foz.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.2500.exr +0 -0
  216. /fileseq-2.3.1/test/subframe_seq/foz.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.5000.exr +0 -0
  217. /fileseq-2.3.1/test/subframe_seq/foz.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.7500.exr +0 -0
  218. /fileseq-2.3.1/test/subframe_seq/foz.1002.2500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.0000.exr +0 -0
  219. /fileseq-2.3.1/test/subframe_seq/foz.1002.5000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.2500.exr +0 -0
  220. /fileseq-2.3.1/test/subframe_seq/foz.1002.7500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.5000.exr +0 -0
  221. /fileseq-2.3.1/test/subframe_seq/foz.1003.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.7500.exr +0 -0
  222. /fileseq-2.3.1/test/subframe_seq/foz.debug.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1003.0000.exr +0 -0
  223. /fileseq-2.3.1/test/subframe_seq/foz.debug.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.0000.exr +0 -0
  224. /fileseq-2.3.1/test/subframe_seq/foz.debug.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.2500.exr +0 -0
  225. /fileseq-2.3.1/test/subframe_seq/foz.debug.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.5000.exr +0 -0
  226. /fileseq-2.3.1/test/subframe_seq/foz.debug.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.7500.exr +0 -0
  227. /fileseq-2.3.1/test/subframe_seq/guz.0001.00.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1002.0000.exr +0 -0
  228. /fileseq-2.3.1/test/subframe_seq/guz.0001.25.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.00.exr +0 -0
  229. /fileseq-2.3.1/test/subframe_seq/guz.0001.50.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.25.exr +0 -0
  230. /fileseq-2.3.1/test/subframe_seq/guz.0001.75.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.50.exr +0 -0
  231. /fileseq-2.3.1/test/subframe_seq/guz.0002.00.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.75.exr +0 -0
  232. /fileseq-2.3.1/test/subframe_seq/quux.02.3333.exr → /fileseq-2.3.2/test/subframe_seq/guz.0002.00.exr +0 -0
  233. /fileseq-2.3.1/test/subframe_seq/quux.02.6667.exr → /fileseq-2.3.2/test/subframe_seq/quux.02.3333.exr +0 -0
  234. /fileseq-2.3.1/test/subframe_seq/quux.03.0000.exr → /fileseq-2.3.2/test/subframe_seq/quux.02.6667.exr +0 -0
  235. /fileseq-2.3.1/test/subframe_seq/quux.03.3333.exr → /fileseq-2.3.2/test/subframe_seq/quux.03.0000.exr +0 -0
  236. /fileseq-2.3.1/test/subframe_seq/qux.00.0000.exr → /fileseq-2.3.2/test/subframe_seq/quux.03.3333.exr +0 -0
  237. /fileseq-2.3.1/test/subframe_seq/qux.00.3333.exr → /fileseq-2.3.2/test/subframe_seq/qux.00.0000.exr +0 -0
  238. /fileseq-2.3.1/test/subframe_seq/qux.00.6667.exr → /fileseq-2.3.2/test/subframe_seq/qux.00.3333.exr +0 -0
  239. /fileseq-2.3.1/test/subframe_seq/qux.01.0000.exr → /fileseq-2.3.2/test/subframe_seq/qux.00.6667.exr +0 -0
  240. /fileseq-2.3.1/test/subframe_seq/qux.01.3333.exr → /fileseq-2.3.2/test/subframe_seq/qux.01.0000.exr +0 -0
  241. /fileseq-2.3.1/test/subframe_seq/qux.01.6667.exr → /fileseq-2.3.2/test/subframe_seq/qux.01.3333.exr +0 -0
  242. /fileseq-2.3.1/test/subframe_seq/qux.02.0000.exr → /fileseq-2.3.2/test/subframe_seq/qux.01.6667.exr +0 -0
  243. /fileseq-2.3.1/test/subframe_seqneg/bar.-000.5000.exr → /fileseq-2.3.2/test/subframe_seq/qux.02.0000.exr +0 -0
  244. /fileseq-2.3.1/test/subframe_seqneg/bar.0000.0000.exr → /fileseq-2.3.2/test/subframe_seqneg/bar.-000.5000.exr +0 -0
  245. /fileseq-2.3.1/test/subframe_seqneg/bar.0000.5000.exr → /fileseq-2.3.2/test/subframe_seqneg/bar.0000.0000.exr +0 -0
  246. {fileseq-2.3.1 → fileseq-2.3.2}/test/test_fuzz.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Fileseq
3
- Version: 2.3.1
3
+ Version: 2.3.2
4
4
  Summary: A Python library for parsing frame ranges and file sequences commonly used in VFX and Animation applications.
5
5
  Home-page: https://github.com/justinfx/fileseq
6
6
  Author: Matt Chambers
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Fileseq
3
- Version: 2.3.1
3
+ Version: 2.3.2
4
4
  Summary: A Python library for parsing frame ranges and file sequences commonly used in VFX and Animation applications.
5
5
  Home-page: https://github.com/justinfx/fileseq
6
6
  Author: Matt Chambers
@@ -84,6 +84,7 @@ test/seq/big.1002.ext
84
84
  test/seq/big.1003.ext
85
85
  test/seq/foo.0001.exr
86
86
  test/seq/foo.0001.jpg
87
+ test/seq/foo.0001_1.exr
87
88
  test/seq/foo.0002.exr
88
89
  test/seq/foo.0002.jpg
89
90
  test/seq/foo.0003.exr
@@ -0,0 +1 @@
1
+ __version__ = '2.3.2'
@@ -963,9 +963,11 @@ class BaseFileSequence(typing.Generic[T]):
963
963
  path: str
964
964
  for path in filter(None, map(utils.asString, paths)):
965
965
  frame = path[head:tail]
966
- try:
967
- int(frame)
968
- except ValueError:
966
+ # Use isdigit() instead of int() to reject PEP 515 underscore
967
+ # digit separators: int("1001_1") succeeds in Python 3.6+ but
968
+ # "1001_1" is not a valid frame number.
969
+ _int_part = frame.partition('.')[0]
970
+ if not _int_part.lstrip('-').isdigit():
969
971
  if not allow_subframes:
970
972
  continue
971
973
  try:
@@ -1505,6 +1507,12 @@ class BaseFileSequence(typing.Generic[T]):
1505
1507
  if len(subframe) != decimal_places:
1506
1508
  continue
1507
1509
 
1510
+ # Reject frames with non-digit characters such as PEP 515
1511
+ # underscore separators (e.g. "1001_1") which int() accepts in
1512
+ # Python 3.6+ but are not valid frame numbers.
1513
+ if not frame.lstrip('-').isdigit():
1514
+ continue
1515
+
1508
1516
  has_padded_frame = check_padded(frame)
1509
1517
  has_padded_subframe = check_padded(subframe)
1510
1518
 
@@ -1486,7 +1486,8 @@ class FrameSet(BaseFrameSet):
1486
1486
  # Dispatch to appropriate specialized method based on frame type
1487
1487
  # Handle empty frames by defaulting to float method
1488
1488
  if frames and isinstance(frames[0], decimal.Decimal):
1489
- yield from FrameSet._framesToFrameRangesDecimal(frames, zfill) # type: ignore[arg-type]
1489
+ # noinspection PyTypeChecker
1490
+ yield from FrameSet._framesToFrameRangesDecimal(frames, zfill)
1490
1491
  else:
1491
1492
  yield from FrameSet._framesToFrameRangesFloat(frames, zfill) # type: ignore[arg-type]
1492
1493
 
File without changes
@@ -1967,7 +1967,7 @@ class AbstractBaseTests:
1967
1967
 
1968
1968
  def testFindSequencesOnDisk(self):
1969
1969
  seqs = self.FS.findSequencesOnDisk("seq", strictPadding=True)
1970
- self.assertEquals(len(seqs), 10)
1970
+ self.assertEquals(len(seqs), 11)
1971
1971
 
1972
1972
  known = {
1973
1973
  "seq/bar1000-1002,1004-1006#.exr",
@@ -1980,6 +1980,10 @@ class AbstractBaseTests:
1980
1980
  "seq/baz_left.1-3#.exr",
1981
1981
  "seq/baz_right.1-3#.exr",
1982
1982
  "seq/big.999-1003#.ext",
1983
+ # foo.0001_1.exr: underscore fixture for issue #158; DISK_RE
1984
+ # parses it as basename="foo.0001_", frame="1", so it appears
1985
+ # as a standalone sequence rather than contaminating foo.1-5#.exr
1986
+ "seq/foo.0001_1@.exr",
1983
1987
  }
1984
1988
  found = set([str(s) for s in seqs])
1985
1989
  self.assertEqualPaths(found, known)
@@ -2211,6 +2215,17 @@ class AbstractBaseTests:
2211
2215
  self.FS.findSequenceOnDisk(pattern, strictPadding=False)
2212
2216
  self.assertEqual(str(cm.exception), 'no sequence found on disk matching ' + pattern)
2213
2217
 
2218
+ def testFindSequenceOnDiskUnderscoreFrameIgnored(self):
2219
+ # Issue #158: findSequenceOnDisk should not match filenames whose
2220
+ # "frame" component contains an underscore (e.g. foo.0001_1.exr).
2221
+ # Python's int() accepts underscore digit separators (PEP 515), so
2222
+ # "1001_1" would previously be treated as a valid frame, causing
2223
+ # "multiple sequences found on disk" errors.
2224
+ # seq/foo.0001_1.exr is present on disk alongside seq/foo.{0001-0005}.exr
2225
+ for strict in (False, True):
2226
+ seq = self.FS.findSequenceOnDisk('seq/foo.#.exr', strictPadding=strict)
2227
+ self.assertEqual(str(seq), 'seq/foo.1-5#.exr')
2228
+
2214
2229
  def testFindSequenceOnDiskSubFrames(self):
2215
2230
  tests = [
2216
2231
  ("seq/foo.#.exr", "seq/foo.1-5#.exr"),
@@ -1 +0,0 @@
1
- __version__ = '2.3.1'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes