Fileseq 2.3.0__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.
- {fileseq-2.3.0/src/Fileseq.egg-info → fileseq-2.3.2}/PKG-INFO +1 -1
- {fileseq-2.3.0 → fileseq-2.3.2/src/Fileseq.egg-info}/PKG-INFO +1 -1
- {fileseq-2.3.0 → fileseq-2.3.2}/src/Fileseq.egg-info/SOURCES.txt +1 -0
- fileseq-2.3.2/src/fileseq/__version__.py +1 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/fileseq/filesequence.py +11 -3
- {fileseq-2.3.0 → fileseq-2.3.2}/src/fileseq/frameset.py +3 -1
- fileseq-2.3.2/test/subframe_seqneg/bar.0000.5000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/test_unit.py +185 -1
- fileseq-2.3.0/src/fileseq/__version__.py +0 -1
- {fileseq-2.3.0 → fileseq-2.3.2}/LICENSE +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/MANIFEST.in +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/README.md +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/setup.cfg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/setup.py +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/Fileseq.egg-info/dependency_links.txt +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/Fileseq.egg-info/top_level.txt +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/fileseq/__init__.py +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/fileseq/constants.py +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/fileseq/exceptions.py +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/fileseq/py.typed +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/src/fileseq/utils.py +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/__init__.py +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/broken_seq/broke.0000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/broken_seq/broke.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/broken_seq/broke.0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/broken_seq/broke.0004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/broken_seq/broke.0006.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/broken_seq/broke.0007.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/broken_seq/broke.0008.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/complex_ext/1.a.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/complex_ext/2.a.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/complex_ext/3.a.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/complex_ext/file.5.a.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/complex_ext/file.6.a.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/complex_ext/file.7.a.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.-0001.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.-001.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.-1.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.00.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.0000.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.00000.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.00001.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.00002.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.00003.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.00004.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.00005.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.0001.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.0002.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.0003.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.0004.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.0005.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.01.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.02.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.03.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.04.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed/seq.05.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed_case/sub/file_FOO_004.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed_case/sub/file_FOO_005.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed_case/sub/file_FOO_006.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed_case/sub/file_foo_001.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed_case/sub/file_foo_002.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/mixed_case/sub/file_foo_003.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/multi_range/file_0003.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/multi_range/file_0004.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/multi_range/file_0005.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/pytest.ini +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/run.py +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/bar1000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/bar1001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/bar1002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/bar1004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/bar1005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/bar1006.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/baz_left.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/baz_left.0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/baz_left.0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/baz_right.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/baz_right.0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/baz_right.0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/big.0999.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/big.1000.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/big.1001.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/big.1002.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/big.1003.ext +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0001.jpg +0 -0
- /fileseq-2.3.0/test/seq/foo.0002.exr → /fileseq-2.3.2/test/seq/foo.0001_1.exr +0 -0
- {fileseq-2.3.0/test/seqhidden → fileseq-2.3.2/test/seq}/foo.0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0002.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0003.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0004.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.0005.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.debug.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.debug.0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.debug.0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.debug.0004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo.debug.0005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo_0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seq/foo_0001_extra.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.bar1000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.bar1001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.bar1002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.bar1004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.bar1005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.bar1006.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0001.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0002.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0003.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0004.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.foo.0005.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/.hidden +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/bar1000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/bar1001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/bar1002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/bar1004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/bar1005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/bar1006.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0001.jpg +0 -0
- {fileseq-2.3.0/test/seqsubdirs/sub1 → fileseq-2.3.2/test/seqhidden}/foo.0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0002.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0003.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0004.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqhidden/foo.0005.jpg +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqneg/bar.-001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqneg/bar.0000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqneg/bar.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/0002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/0003.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1002.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1004.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1005.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/bar1006.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/foo.0001.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/seqsubdirs/sub1/foo.0001.jpg +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.0002.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0002.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.0003.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0002.jpg +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.0003.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0003.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.0004.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0003.jpg +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.0004.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0004.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.0005.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0004.jpg +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.0005.jpg → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0005.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.debug.0001.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.0005.jpg +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.debug.0002.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0001.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.debug.0003.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0002.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.debug.0004.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0003.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo.debug.0005.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0004.exr +0 -0
- /fileseq-2.3.0/test/seqsubdirs/sub1/foo_0001.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo.debug.0005.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0001.exr → /fileseq-2.3.2/test/seqsubdirs/sub1/foo_0001.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0005.exr → /fileseq-2.3.2/test/step_seq/step1.0001.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0009.exr → /fileseq-2.3.2/test/step_seq/step1.0005.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0013.exr → /fileseq-2.3.2/test/step_seq/step1.0009.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0014.exr → /fileseq-2.3.2/test/step_seq/step1.0013.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0015.exr → /fileseq-2.3.2/test/step_seq/step1.0014.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0016.exr → /fileseq-2.3.2/test/step_seq/step1.0015.exr +0 -0
- /fileseq-2.3.0/test/step_seq/step1.0017.exr → /fileseq-2.3.2/test/step_seq/step1.0016.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/bar.0001.0000.exr → /fileseq-2.3.2/test/step_seq/step1.0017.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0001.0000.exr → /fileseq-2.3.2/test/subframe_seq/bar.0001.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0001.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0001.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0001.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0002.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0001.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0003.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0002.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0003.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0003.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0003.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz.0004.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0003.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_left.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz.0004.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_left.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_left.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_left.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_left.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1001.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_right.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_left.1002.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_right.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_right.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_right.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/baz_right.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1001.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.0000.exr → /fileseq-2.3.2/test/subframe_seq/baz_right.1002.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.0000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.2500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.0000.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.2500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.5000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.2500.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.5000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.7500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.5000.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0001.7500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0001.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.0000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0001.7500.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.0000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.2500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.0000.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.2500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.5000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.2500.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.5000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.7500.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.5000.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0002.7500.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0002.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0003.0000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0002.7500.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foo.0003.0000.jpg → /fileseq-2.3.2/test/subframe_seq/foo.0003.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/foo.0003.0000.jpg +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1001.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1002.2500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1002.5000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1002.7500.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.1003.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1002.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.debug.1001.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.1003.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.debug.1001.2500.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.debug.1001.5000.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.2500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.debug.1001.7500.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/foz.debug.1002.0000.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1001.7500.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/guz.0001.00.exr → /fileseq-2.3.2/test/subframe_seq/foz.debug.1002.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/guz.0001.25.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.00.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/guz.0001.50.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.25.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/guz.0001.75.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.50.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/guz.0002.00.exr → /fileseq-2.3.2/test/subframe_seq/guz.0001.75.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/quux.02.3333.exr → /fileseq-2.3.2/test/subframe_seq/guz.0002.00.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/quux.02.6667.exr → /fileseq-2.3.2/test/subframe_seq/quux.02.3333.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/quux.03.0000.exr → /fileseq-2.3.2/test/subframe_seq/quux.02.6667.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/quux.03.3333.exr → /fileseq-2.3.2/test/subframe_seq/quux.03.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/qux.00.0000.exr → /fileseq-2.3.2/test/subframe_seq/quux.03.3333.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/qux.00.3333.exr → /fileseq-2.3.2/test/subframe_seq/qux.00.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/qux.00.6667.exr → /fileseq-2.3.2/test/subframe_seq/qux.00.3333.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/qux.01.0000.exr → /fileseq-2.3.2/test/subframe_seq/qux.00.6667.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/qux.01.3333.exr → /fileseq-2.3.2/test/subframe_seq/qux.01.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/qux.01.6667.exr → /fileseq-2.3.2/test/subframe_seq/qux.01.3333.exr +0 -0
- /fileseq-2.3.0/test/subframe_seq/qux.02.0000.exr → /fileseq-2.3.2/test/subframe_seq/qux.01.6667.exr +0 -0
- /fileseq-2.3.0/test/subframe_seqneg/bar.-000.5000.exr → /fileseq-2.3.2/test/subframe_seq/qux.02.0000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seqneg/bar.0000.0000.exr → /fileseq-2.3.2/test/subframe_seqneg/bar.-000.5000.exr +0 -0
- /fileseq-2.3.0/test/subframe_seqneg/bar.0000.5000.exr → /fileseq-2.3.2/test/subframe_seqneg/bar.0000.0000.exr +0 -0
- {fileseq-2.3.0 → fileseq-2.3.2}/test/test_fuzz.py +0 -0
|
@@ -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
|
-
|
|
967
|
-
|
|
968
|
-
|
|
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
|
|
|
@@ -177,6 +177,7 @@ class FrameSet(BaseFrameSet):
|
|
|
177
177
|
frange = str(frange)
|
|
178
178
|
for key in self.PAD_MAP:
|
|
179
179
|
frange = frange.replace(key, '')
|
|
180
|
+
frange = ''.join(frange.split()) # https://github.com/justinfx/fileseq/issues/137: strip all whitespace
|
|
180
181
|
self._frange = asString(frange)
|
|
181
182
|
|
|
182
183
|
# because we're acting like a set, we need to support the empty set
|
|
@@ -1485,7 +1486,8 @@ class FrameSet(BaseFrameSet):
|
|
|
1485
1486
|
# Dispatch to appropriate specialized method based on frame type
|
|
1486
1487
|
# Handle empty frames by defaulting to float method
|
|
1487
1488
|
if frames and isinstance(frames[0], decimal.Decimal):
|
|
1488
|
-
|
|
1489
|
+
# noinspection PyTypeChecker
|
|
1490
|
+
yield from FrameSet._framesToFrameRangesDecimal(frames, zfill)
|
|
1489
1491
|
else:
|
|
1490
1492
|
yield from FrameSet._framesToFrameRangesFloat(frames, zfill) # type: ignore[arg-type]
|
|
1491
1493
|
|
|
File without changes
|
|
@@ -657,6 +657,175 @@ class TestFrameSet(unittest.TestCase):
|
|
|
657
657
|
actual = list(FrameSet(case.input).batches(case.batch, frames=False))
|
|
658
658
|
self.assertListEqual(expect, actual, msg=str(case))
|
|
659
659
|
|
|
660
|
+
def testWhitespaceHandling(self):
|
|
661
|
+
"""
|
|
662
|
+
Issue #137: Whitespace tolerance in frame range parsing.
|
|
663
|
+
|
|
664
|
+
Test that FrameSet correctly handles whitespace in various positions:
|
|
665
|
+
- Spaces after commas
|
|
666
|
+
- Spaces around range operators
|
|
667
|
+
- Leading/trailing spaces
|
|
668
|
+
- Spaces with modifiers (x, y, :)
|
|
669
|
+
- Tabs and newlines
|
|
670
|
+
"""
|
|
671
|
+
@dataclasses.dataclass
|
|
672
|
+
class Case:
|
|
673
|
+
input: str
|
|
674
|
+
expected_frange: str
|
|
675
|
+
expected_frames: list[int]
|
|
676
|
+
description: str
|
|
677
|
+
|
|
678
|
+
table = [
|
|
679
|
+
# Basic whitespace after commas
|
|
680
|
+
Case(
|
|
681
|
+
input='1, 2, 3',
|
|
682
|
+
expected_frange='1,2,3',
|
|
683
|
+
expected_frames=[1, 2, 3],
|
|
684
|
+
description='spaces after commas'
|
|
685
|
+
),
|
|
686
|
+
Case(
|
|
687
|
+
input='1 , 2 , 3',
|
|
688
|
+
expected_frange='1,2,3',
|
|
689
|
+
expected_frames=[1, 2, 3],
|
|
690
|
+
description='spaces before and after commas'
|
|
691
|
+
),
|
|
692
|
+
|
|
693
|
+
# Whitespace around range operators
|
|
694
|
+
Case(
|
|
695
|
+
input='1 - 10',
|
|
696
|
+
expected_frange='1-10',
|
|
697
|
+
expected_frames=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
|
698
|
+
description='spaces around dash'
|
|
699
|
+
),
|
|
700
|
+
Case(
|
|
701
|
+
input='1 - 10',
|
|
702
|
+
expected_frange='1-10',
|
|
703
|
+
expected_frames=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
|
704
|
+
description='multiple spaces around dash'
|
|
705
|
+
),
|
|
706
|
+
|
|
707
|
+
# Leading and trailing whitespace
|
|
708
|
+
Case(
|
|
709
|
+
input=' 1-5 ',
|
|
710
|
+
expected_frange='1-5',
|
|
711
|
+
expected_frames=[1, 2, 3, 4, 5],
|
|
712
|
+
description='leading and trailing spaces'
|
|
713
|
+
),
|
|
714
|
+
Case(
|
|
715
|
+
input=' 1 ',
|
|
716
|
+
expected_frange='1',
|
|
717
|
+
expected_frames=[1],
|
|
718
|
+
description='spaces around single frame'
|
|
719
|
+
),
|
|
720
|
+
|
|
721
|
+
# Whitespace with x modifier (step)
|
|
722
|
+
Case(
|
|
723
|
+
input='1-10 x 2',
|
|
724
|
+
expected_frange='1-10x2',
|
|
725
|
+
expected_frames=[1, 3, 5, 7, 9],
|
|
726
|
+
description='spaces with x modifier'
|
|
727
|
+
),
|
|
728
|
+
Case(
|
|
729
|
+
input='1 - 10 x 2',
|
|
730
|
+
expected_frange='1-10x2',
|
|
731
|
+
expected_frames=[1, 3, 5, 7, 9],
|
|
732
|
+
description='spaces in range and x modifier'
|
|
733
|
+
),
|
|
734
|
+
|
|
735
|
+
# Whitespace with y modifier (fill)
|
|
736
|
+
Case(
|
|
737
|
+
input='1-10 y 2',
|
|
738
|
+
expected_frange='1-10y2',
|
|
739
|
+
expected_frames=[2, 4, 6, 8, 10],
|
|
740
|
+
description='spaces with y modifier'
|
|
741
|
+
),
|
|
742
|
+
|
|
743
|
+
# Whitespace with : modifier (stagger)
|
|
744
|
+
Case(
|
|
745
|
+
input='1-6 : 3',
|
|
746
|
+
expected_frange='1-6:3',
|
|
747
|
+
expected_frames=[1, 4, 3, 5, 2, 6],
|
|
748
|
+
description='spaces with : modifier'
|
|
749
|
+
),
|
|
750
|
+
|
|
751
|
+
# Complex case with multiple comma-separated ranges
|
|
752
|
+
Case(
|
|
753
|
+
input='1 , 2 , 3 , 5-10 , 20-30',
|
|
754
|
+
expected_frange='1,2,3,5-10,20-30',
|
|
755
|
+
expected_frames=[1, 2, 3, 5, 6, 7, 8, 9, 10, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
|
|
756
|
+
description='complex multi-range with spaces'
|
|
757
|
+
),
|
|
758
|
+
Case(
|
|
759
|
+
input=' 1 , 5-10 , 20 ',
|
|
760
|
+
expected_frange='1,5-10,20',
|
|
761
|
+
expected_frames=[1, 5, 6, 7, 8, 9, 10, 20],
|
|
762
|
+
description='multiple spaces in complex range'
|
|
763
|
+
),
|
|
764
|
+
|
|
765
|
+
# Tabs (should also be removed)
|
|
766
|
+
Case(
|
|
767
|
+
input='1\t,\t2\t,\t3',
|
|
768
|
+
expected_frange='1,2,3',
|
|
769
|
+
expected_frames=[1, 2, 3],
|
|
770
|
+
description='tabs instead of spaces'
|
|
771
|
+
),
|
|
772
|
+
Case(
|
|
773
|
+
input='1\t-\t10',
|
|
774
|
+
expected_frange='1-10',
|
|
775
|
+
expected_frames=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
|
776
|
+
description='tabs around dash'
|
|
777
|
+
),
|
|
778
|
+
|
|
779
|
+
# Newlines (should also be removed)
|
|
780
|
+
Case(
|
|
781
|
+
input='1\n-\n10',
|
|
782
|
+
expected_frange='1-10',
|
|
783
|
+
expected_frames=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
|
784
|
+
description='newlines in range'
|
|
785
|
+
),
|
|
786
|
+
|
|
787
|
+
# Mixed whitespace characters
|
|
788
|
+
Case(
|
|
789
|
+
input=' \t1\n,\r2 , 3\t ',
|
|
790
|
+
expected_frange='1,2,3',
|
|
791
|
+
expected_frames=[1, 2, 3],
|
|
792
|
+
description='mixed whitespace types'
|
|
793
|
+
),
|
|
794
|
+
|
|
795
|
+
# Edge case: all whitespace
|
|
796
|
+
Case(
|
|
797
|
+
input=' ',
|
|
798
|
+
expected_frange='',
|
|
799
|
+
expected_frames=[],
|
|
800
|
+
description='only whitespace (empty range)'
|
|
801
|
+
),
|
|
802
|
+
|
|
803
|
+
# Negative frames with whitespace
|
|
804
|
+
Case(
|
|
805
|
+
input=' -10 - -5 ',
|
|
806
|
+
expected_frange='-10--5',
|
|
807
|
+
expected_frames=[-10, -9, -8, -7, -6, -5],
|
|
808
|
+
description='negative frames with spaces'
|
|
809
|
+
),
|
|
810
|
+
]
|
|
811
|
+
|
|
812
|
+
for case in table:
|
|
813
|
+
with self.subTest(case.description):
|
|
814
|
+
fs = FrameSet(case.input)
|
|
815
|
+
|
|
816
|
+
# Check normalized frange string
|
|
817
|
+
self.assertEqual(fs.frange, case.expected_frange,
|
|
818
|
+
f"frange mismatch for {case.description}")
|
|
819
|
+
|
|
820
|
+
# Check actual frame values
|
|
821
|
+
actual_frames = list(fs)
|
|
822
|
+
self.assertEqual(actual_frames, case.expected_frames,
|
|
823
|
+
f"frames mismatch for {case.description}")
|
|
824
|
+
|
|
825
|
+
# Check length
|
|
826
|
+
self.assertEqual(len(fs), len(case.expected_frames),
|
|
827
|
+
f"length mismatch for {case.description}")
|
|
828
|
+
|
|
660
829
|
class TestBase(unittest.TestCase):
|
|
661
830
|
RX_PATHSEP = re.compile(r'[/\\]')
|
|
662
831
|
|
|
@@ -1798,7 +1967,7 @@ class AbstractBaseTests:
|
|
|
1798
1967
|
|
|
1799
1968
|
def testFindSequencesOnDisk(self):
|
|
1800
1969
|
seqs = self.FS.findSequencesOnDisk("seq", strictPadding=True)
|
|
1801
|
-
self.assertEquals(len(seqs),
|
|
1970
|
+
self.assertEquals(len(seqs), 11)
|
|
1802
1971
|
|
|
1803
1972
|
known = {
|
|
1804
1973
|
"seq/bar1000-1002,1004-1006#.exr",
|
|
@@ -1811,6 +1980,10 @@ class AbstractBaseTests:
|
|
|
1811
1980
|
"seq/baz_left.1-3#.exr",
|
|
1812
1981
|
"seq/baz_right.1-3#.exr",
|
|
1813
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",
|
|
1814
1987
|
}
|
|
1815
1988
|
found = set([str(s) for s in seqs])
|
|
1816
1989
|
self.assertEqualPaths(found, known)
|
|
@@ -2042,6 +2215,17 @@ class AbstractBaseTests:
|
|
|
2042
2215
|
self.FS.findSequenceOnDisk(pattern, strictPadding=False)
|
|
2043
2216
|
self.assertEqual(str(cm.exception), 'no sequence found on disk matching ' + pattern)
|
|
2044
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
|
+
|
|
2045
2229
|
def testFindSequenceOnDiskSubFrames(self):
|
|
2046
2230
|
tests = [
|
|
2047
2231
|
("seq/foo.#.exr", "seq/foo.1-5#.exr"),
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '2.3.0'
|
|
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
|
|
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
|
|
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
|