renumSeq 1.4.2__tar.gz → 2.1.0__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.
- {renumseq-1.4.2 → renumseq-2.1.0}/LICENSE +1 -1
- renumseq-2.1.0/PKG-INFO +238 -0
- renumseq-2.1.0/README.md +208 -0
- renumseq-2.1.0/renumSeq.egg-info/PKG-INFO +238 -0
- renumseq-2.1.0/renumSeq.egg-info/requires.txt +2 -0
- {renumseq-1.4.2 → renumseq-2.1.0}/renumseq/__main__.py +36 -18
- {renumseq-1.4.2 → renumseq-2.1.0}/setup.py +4 -3
- renumseq-1.4.2/PKG-INFO +0 -127
- renumseq-1.4.2/README.md +0 -99
- renumseq-1.4.2/renumSeq.egg-info/PKG-INFO +0 -127
- renumseq-1.4.2/renumSeq.egg-info/requires.txt +0 -2
- {renumseq-1.4.2 → renumseq-2.1.0}/renumSeq.egg-info/SOURCES.txt +0 -0
- {renumseq-1.4.2 → renumseq-2.1.0}/renumSeq.egg-info/dependency_links.txt +0 -0
- {renumseq-1.4.2 → renumseq-2.1.0}/renumSeq.egg-info/entry_points.txt +0 -0
- {renumseq-1.4.2 → renumseq-2.1.0}/renumSeq.egg-info/top_level.txt +0 -0
- {renumseq-1.4.2 → renumseq-2.1.0}/renumseq/__init__.py +0 -0
- {renumseq-1.4.2 → renumseq-2.1.0}/setup.cfg +0 -0
renumseq-2.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: renumSeq
|
|
3
|
+
Version: 2.1.0
|
|
4
|
+
Summary: Tool to renumber image sequences.
|
|
5
|
+
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
+
Author: James Philip Rowell
|
|
7
|
+
Author-email: james@alpha-eleven.com
|
|
8
|
+
License: BSD-3-Clause
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: Unix
|
|
12
|
+
Classifier: Operating System :: MacOS
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Requires-Python: >=3.7, <4
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: seqLister>=1.2.0
|
|
18
|
+
Requires-Dist: lsseq>=4.0.0
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: author-email
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
Dynamic: summary
|
|
30
|
+
|
|
31
|
+
# About renumseq
|
|
32
|
+
|
|
33
|
+
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
34
|
+
which are most
|
|
35
|
+
typically used in VFX post-production or CG animation production.
|
|
36
|
+
|
|
37
|
+
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
38
|
+
It also allows you adjust the padding of the frame numbers.
|
|
39
|
+
|
|
40
|
+
`renumseq` uses the syntax of the native output of
|
|
41
|
+
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
42
|
+
the sequence to be renumbered. Therefore it is recommended to
|
|
43
|
+
use `lsseq` as it makes using `renumseq` easier.
|
|
44
|
+
|
|
45
|
+
For example, use `lsseq` to list a sequence, then
|
|
46
|
+
cut and paste its
|
|
47
|
+
output as the arguments to `renumseq` with the appropriate
|
|
48
|
+
arguments for setting the offset or new start-frame.
|
|
49
|
+
|
|
50
|
+
`renumseq` was written to be safe in that it won't
|
|
51
|
+
unintentionally overwrite any existing files
|
|
52
|
+
during renumbering.
|
|
53
|
+
|
|
54
|
+
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
55
|
+
outside the range specified then it will skip renumbering that sequence
|
|
56
|
+
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
57
|
+
there is an option to force `renumseq` to overwrite those files if desired.
|
|
58
|
+
|
|
59
|
+
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
60
|
+
(it does a move of the file), so it's fast.
|
|
61
|
+
|
|
62
|
+
`renumseq` also has a useful option, called `--replace-underscore`
|
|
63
|
+
that changes any underscore-separators (separating the filename from the
|
|
64
|
+
frame-number) with dot-separators, like this:
|
|
65
|
+
|
|
66
|
+
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
67
|
+
|
|
68
|
+
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
69
|
+
use a zero offset, plus the `--replace-underscore` argument.
|
|
70
|
+
|
|
71
|
+
## Error and warning codes returned from `renumseq`
|
|
72
|
+
|
|
73
|
+
As copied from the source code,
|
|
74
|
+
the following EXIT codes will be combined bitwise to return
|
|
75
|
+
possibly more than one different warning and/or error.
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
79
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
80
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
81
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
82
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
83
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
84
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
85
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
86
|
+
# have over-written some frames outside the range specifed.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Installing renumseq
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
python3 -m pip install renumSeq --upgrade
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Testing renumseq
|
|
96
|
+
|
|
97
|
+
After installing try the following:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
$ cd ~
|
|
101
|
+
$ mkdir tmp
|
|
102
|
+
$ cd tmp
|
|
103
|
+
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
104
|
+
$ lsseq -Z
|
|
105
|
+
aaa.[001-005].tif
|
|
106
|
+
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
107
|
+
aaa.005.tif -> aaa.015.tif
|
|
108
|
+
aaa.004.tif -> aaa.014.tif
|
|
109
|
+
aaa.003.tif -> aaa.013.tif
|
|
110
|
+
aaa.002.tif -> aaa.012.tif
|
|
111
|
+
aaa.001.tif -> aaa.011.tif
|
|
112
|
+
$ lsseq -Z
|
|
113
|
+
aaa.[011-015].tif
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Note that you may get an error from your
|
|
117
|
+
shell when you try to run the `renumseq` command above, without the
|
|
118
|
+
quotes around the sequence, that might look something like
|
|
119
|
+
this:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
% renumseq -o 10 aaa.[001-005].tif
|
|
123
|
+
renumseq: No match.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
In which case you need to "escape" the square brackets as they are special characters
|
|
127
|
+
as far as the shell is concerned. Escape them like this:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
131
|
+
aaa.005.tif -> aaa.015.tif
|
|
132
|
+
aaa.004.tif -> aaa.014.tif
|
|
133
|
+
aaa.003.tif -> aaa.013.tif
|
|
134
|
+
aaa.002.tif -> aaa.012.tif
|
|
135
|
+
aaa.001.tif -> aaa.011.tif
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Alternatively you can just enclose the argument in quotes
|
|
139
|
+
(`'aaa.[001-005].tif'`)
|
|
140
|
+
like we did in the example above.
|
|
141
|
+
|
|
142
|
+
Type this:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
$ renumseq --help
|
|
146
|
+
```
|
|
147
|
+
...for much more useful info.
|
|
148
|
+
|
|
149
|
+
# Important: latest MAJOR point release of `renumSeq`.
|
|
150
|
+
|
|
151
|
+
`renumseq` and all the utilities provided by jrowellfx github repos
|
|
152
|
+
use "[`Semantic Versioning 2.0.0`](https://semver.org/)" in numbering releases.
|
|
153
|
+
The latest release of `renumseq` upped the `MAJOR` release number
|
|
154
|
+
from `v1.x.x` to `v2.x.x`.
|
|
155
|
+
|
|
156
|
+
While the functionality and output of `renumseq` has not changed, all the so called
|
|
157
|
+
"long options" have been renamed to adhere to `POSIX` standard naming
|
|
158
|
+
conventions.
|
|
159
|
+
|
|
160
|
+
That is, prior to `v2.0.0` of `renumseq` all the long-option names used a "camel case"
|
|
161
|
+
naming convention but as of `v2.0.0` all long-option names have been
|
|
162
|
+
changed to so-called "kebab case".
|
|
163
|
+
|
|
164
|
+
For example:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
--replaceUnderscore
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
has been changed to
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
--replace-underscore
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
In the event that you have written any scripts that make use of `renumseq` or
|
|
177
|
+
any other of `jrowellfx`'s utils provided [here](https://github.com/jrowellfx)
|
|
178
|
+
you will need to edit your scripts to be able to update to the lastest versions
|
|
179
|
+
of the utilities.
|
|
180
|
+
|
|
181
|
+
In this case, in order to assist in switching to the
|
|
182
|
+
current `MAJOR` point release some `sed` scripts have been provided that should make
|
|
183
|
+
the transition quite painless. Especially if you make use
|
|
184
|
+
of [`runsed`](https://github.com/jrowellfx/vfxTdUtils) which if you haven't used it before,
|
|
185
|
+
now is the time, it's extremely helpful.
|
|
186
|
+
|
|
187
|
+
There are two files provided at the root-level of the repo, namely:
|
|
188
|
+
`sed.script.jrowellfx.doubleDashToKebab` and `sed.script.renumseq.v1tov2`.
|
|
189
|
+
|
|
190
|
+
The first one can be used to fix the long-option names for ALL the
|
|
191
|
+
`MAJOR` point release updates to the long-options in any of `jrowellfx`'s utilities.
|
|
192
|
+
The second one contains only changes needed for the updates to `renumseq`.
|
|
193
|
+
|
|
194
|
+
## Example `sed.script` usage.
|
|
195
|
+
|
|
196
|
+
Download one or both of the sed scripts named above. Make sure you have `runsed` installed
|
|
197
|
+
on your system. (Example applied to usage of `lsseq` but it's the same idea for `renumseq`.)
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
$ cd ~/bin
|
|
201
|
+
$ ls
|
|
202
|
+
myScriptThatUsesLsseq
|
|
203
|
+
$ cat myScriptThatUsesLsseq
|
|
204
|
+
#!/bin/bash
|
|
205
|
+
|
|
206
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
207
|
+
|
|
208
|
+
$ mv ~/Downloads/sed.script.jrowellfx.doubleDashToKebab sed.script
|
|
209
|
+
$ runsed myScriptThatUsesLsseq
|
|
210
|
+
$ ./.runsed.diff.runsed
|
|
211
|
+
+ /usr/bin/diff ./.myScriptThatUsesLsseq.runsed myScriptThatUsesLsseq
|
|
212
|
+
3c3
|
|
213
|
+
< lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
214
|
+
---
|
|
215
|
+
> lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
216
|
+
$ cat myScriptThatUsesLsseq
|
|
217
|
+
#!/bin/bash
|
|
218
|
+
|
|
219
|
+
lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Note that if you are unhappy with the changes you can undo them easily with
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
$ ./.runsed.undo.runsed
|
|
226
|
+
$ cat myScriptThatUsesLsseq
|
|
227
|
+
#!/bin/bash
|
|
228
|
+
|
|
229
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Contact
|
|
235
|
+
|
|
236
|
+
Please contact `j a m e s <at> a l p h a - e l e v e n . c o m` with any bug
|
|
237
|
+
reports, suggestions or praise as the case may be.
|
|
238
|
+
|
renumseq-2.1.0/README.md
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# About renumseq
|
|
2
|
+
|
|
3
|
+
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
4
|
+
which are most
|
|
5
|
+
typically used in VFX post-production or CG animation production.
|
|
6
|
+
|
|
7
|
+
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
8
|
+
It also allows you adjust the padding of the frame numbers.
|
|
9
|
+
|
|
10
|
+
`renumseq` uses the syntax of the native output of
|
|
11
|
+
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
12
|
+
the sequence to be renumbered. Therefore it is recommended to
|
|
13
|
+
use `lsseq` as it makes using `renumseq` easier.
|
|
14
|
+
|
|
15
|
+
For example, use `lsseq` to list a sequence, then
|
|
16
|
+
cut and paste its
|
|
17
|
+
output as the arguments to `renumseq` with the appropriate
|
|
18
|
+
arguments for setting the offset or new start-frame.
|
|
19
|
+
|
|
20
|
+
`renumseq` was written to be safe in that it won't
|
|
21
|
+
unintentionally overwrite any existing files
|
|
22
|
+
during renumbering.
|
|
23
|
+
|
|
24
|
+
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
25
|
+
outside the range specified then it will skip renumbering that sequence
|
|
26
|
+
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
27
|
+
there is an option to force `renumseq` to overwrite those files if desired.
|
|
28
|
+
|
|
29
|
+
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
30
|
+
(it does a move of the file), so it's fast.
|
|
31
|
+
|
|
32
|
+
`renumseq` also has a useful option, called `--replace-underscore`
|
|
33
|
+
that changes any underscore-separators (separating the filename from the
|
|
34
|
+
frame-number) with dot-separators, like this:
|
|
35
|
+
|
|
36
|
+
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
37
|
+
|
|
38
|
+
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
39
|
+
use a zero offset, plus the `--replace-underscore` argument.
|
|
40
|
+
|
|
41
|
+
## Error and warning codes returned from `renumseq`
|
|
42
|
+
|
|
43
|
+
As copied from the source code,
|
|
44
|
+
the following EXIT codes will be combined bitwise to return
|
|
45
|
+
possibly more than one different warning and/or error.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
49
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
50
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
51
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
52
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
53
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
54
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
55
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
56
|
+
# have over-written some frames outside the range specifed.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Installing renumseq
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
python3 -m pip install renumSeq --upgrade
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Testing renumseq
|
|
66
|
+
|
|
67
|
+
After installing try the following:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
$ cd ~
|
|
71
|
+
$ mkdir tmp
|
|
72
|
+
$ cd tmp
|
|
73
|
+
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
74
|
+
$ lsseq -Z
|
|
75
|
+
aaa.[001-005].tif
|
|
76
|
+
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
77
|
+
aaa.005.tif -> aaa.015.tif
|
|
78
|
+
aaa.004.tif -> aaa.014.tif
|
|
79
|
+
aaa.003.tif -> aaa.013.tif
|
|
80
|
+
aaa.002.tif -> aaa.012.tif
|
|
81
|
+
aaa.001.tif -> aaa.011.tif
|
|
82
|
+
$ lsseq -Z
|
|
83
|
+
aaa.[011-015].tif
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Note that you may get an error from your
|
|
87
|
+
shell when you try to run the `renumseq` command above, without the
|
|
88
|
+
quotes around the sequence, that might look something like
|
|
89
|
+
this:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
% renumseq -o 10 aaa.[001-005].tif
|
|
93
|
+
renumseq: No match.
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
In which case you need to "escape" the square brackets as they are special characters
|
|
97
|
+
as far as the shell is concerned. Escape them like this:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
101
|
+
aaa.005.tif -> aaa.015.tif
|
|
102
|
+
aaa.004.tif -> aaa.014.tif
|
|
103
|
+
aaa.003.tif -> aaa.013.tif
|
|
104
|
+
aaa.002.tif -> aaa.012.tif
|
|
105
|
+
aaa.001.tif -> aaa.011.tif
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Alternatively you can just enclose the argument in quotes
|
|
109
|
+
(`'aaa.[001-005].tif'`)
|
|
110
|
+
like we did in the example above.
|
|
111
|
+
|
|
112
|
+
Type this:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
$ renumseq --help
|
|
116
|
+
```
|
|
117
|
+
...for much more useful info.
|
|
118
|
+
|
|
119
|
+
# Important: latest MAJOR point release of `renumSeq`.
|
|
120
|
+
|
|
121
|
+
`renumseq` and all the utilities provided by jrowellfx github repos
|
|
122
|
+
use "[`Semantic Versioning 2.0.0`](https://semver.org/)" in numbering releases.
|
|
123
|
+
The latest release of `renumseq` upped the `MAJOR` release number
|
|
124
|
+
from `v1.x.x` to `v2.x.x`.
|
|
125
|
+
|
|
126
|
+
While the functionality and output of `renumseq` has not changed, all the so called
|
|
127
|
+
"long options" have been renamed to adhere to `POSIX` standard naming
|
|
128
|
+
conventions.
|
|
129
|
+
|
|
130
|
+
That is, prior to `v2.0.0` of `renumseq` all the long-option names used a "camel case"
|
|
131
|
+
naming convention but as of `v2.0.0` all long-option names have been
|
|
132
|
+
changed to so-called "kebab case".
|
|
133
|
+
|
|
134
|
+
For example:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
--replaceUnderscore
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
has been changed to
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
--replace-underscore
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
In the event that you have written any scripts that make use of `renumseq` or
|
|
147
|
+
any other of `jrowellfx`'s utils provided [here](https://github.com/jrowellfx)
|
|
148
|
+
you will need to edit your scripts to be able to update to the lastest versions
|
|
149
|
+
of the utilities.
|
|
150
|
+
|
|
151
|
+
In this case, in order to assist in switching to the
|
|
152
|
+
current `MAJOR` point release some `sed` scripts have been provided that should make
|
|
153
|
+
the transition quite painless. Especially if you make use
|
|
154
|
+
of [`runsed`](https://github.com/jrowellfx/vfxTdUtils) which if you haven't used it before,
|
|
155
|
+
now is the time, it's extremely helpful.
|
|
156
|
+
|
|
157
|
+
There are two files provided at the root-level of the repo, namely:
|
|
158
|
+
`sed.script.jrowellfx.doubleDashToKebab` and `sed.script.renumseq.v1tov2`.
|
|
159
|
+
|
|
160
|
+
The first one can be used to fix the long-option names for ALL the
|
|
161
|
+
`MAJOR` point release updates to the long-options in any of `jrowellfx`'s utilities.
|
|
162
|
+
The second one contains only changes needed for the updates to `renumseq`.
|
|
163
|
+
|
|
164
|
+
## Example `sed.script` usage.
|
|
165
|
+
|
|
166
|
+
Download one or both of the sed scripts named above. Make sure you have `runsed` installed
|
|
167
|
+
on your system. (Example applied to usage of `lsseq` but it's the same idea for `renumseq`.)
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
$ cd ~/bin
|
|
171
|
+
$ ls
|
|
172
|
+
myScriptThatUsesLsseq
|
|
173
|
+
$ cat myScriptThatUsesLsseq
|
|
174
|
+
#!/bin/bash
|
|
175
|
+
|
|
176
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
177
|
+
|
|
178
|
+
$ mv ~/Downloads/sed.script.jrowellfx.doubleDashToKebab sed.script
|
|
179
|
+
$ runsed myScriptThatUsesLsseq
|
|
180
|
+
$ ./.runsed.diff.runsed
|
|
181
|
+
+ /usr/bin/diff ./.myScriptThatUsesLsseq.runsed myScriptThatUsesLsseq
|
|
182
|
+
3c3
|
|
183
|
+
< lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
184
|
+
---
|
|
185
|
+
> lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
186
|
+
$ cat myScriptThatUsesLsseq
|
|
187
|
+
#!/bin/bash
|
|
188
|
+
|
|
189
|
+
lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Note that if you are unhappy with the changes you can undo them easily with
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
$ ./.runsed.undo.runsed
|
|
196
|
+
$ cat myScriptThatUsesLsseq
|
|
197
|
+
#!/bin/bash
|
|
198
|
+
|
|
199
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Contact
|
|
205
|
+
|
|
206
|
+
Please contact `j a m e s <at> a l p h a - e l e v e n . c o m` with any bug
|
|
207
|
+
reports, suggestions or praise as the case may be.
|
|
208
|
+
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: renumSeq
|
|
3
|
+
Version: 2.1.0
|
|
4
|
+
Summary: Tool to renumber image sequences.
|
|
5
|
+
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
+
Author: James Philip Rowell
|
|
7
|
+
Author-email: james@alpha-eleven.com
|
|
8
|
+
License: BSD-3-Clause
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: Unix
|
|
12
|
+
Classifier: Operating System :: MacOS
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Requires-Python: >=3.7, <4
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: seqLister>=1.2.0
|
|
18
|
+
Requires-Dist: lsseq>=4.0.0
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: author-email
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
Dynamic: summary
|
|
30
|
+
|
|
31
|
+
# About renumseq
|
|
32
|
+
|
|
33
|
+
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
34
|
+
which are most
|
|
35
|
+
typically used in VFX post-production or CG animation production.
|
|
36
|
+
|
|
37
|
+
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
38
|
+
It also allows you adjust the padding of the frame numbers.
|
|
39
|
+
|
|
40
|
+
`renumseq` uses the syntax of the native output of
|
|
41
|
+
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
42
|
+
the sequence to be renumbered. Therefore it is recommended to
|
|
43
|
+
use `lsseq` as it makes using `renumseq` easier.
|
|
44
|
+
|
|
45
|
+
For example, use `lsseq` to list a sequence, then
|
|
46
|
+
cut and paste its
|
|
47
|
+
output as the arguments to `renumseq` with the appropriate
|
|
48
|
+
arguments for setting the offset or new start-frame.
|
|
49
|
+
|
|
50
|
+
`renumseq` was written to be safe in that it won't
|
|
51
|
+
unintentionally overwrite any existing files
|
|
52
|
+
during renumbering.
|
|
53
|
+
|
|
54
|
+
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
55
|
+
outside the range specified then it will skip renumbering that sequence
|
|
56
|
+
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
57
|
+
there is an option to force `renumseq` to overwrite those files if desired.
|
|
58
|
+
|
|
59
|
+
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
60
|
+
(it does a move of the file), so it's fast.
|
|
61
|
+
|
|
62
|
+
`renumseq` also has a useful option, called `--replace-underscore`
|
|
63
|
+
that changes any underscore-separators (separating the filename from the
|
|
64
|
+
frame-number) with dot-separators, like this:
|
|
65
|
+
|
|
66
|
+
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
67
|
+
|
|
68
|
+
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
69
|
+
use a zero offset, plus the `--replace-underscore` argument.
|
|
70
|
+
|
|
71
|
+
## Error and warning codes returned from `renumseq`
|
|
72
|
+
|
|
73
|
+
As copied from the source code,
|
|
74
|
+
the following EXIT codes will be combined bitwise to return
|
|
75
|
+
possibly more than one different warning and/or error.
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
79
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
80
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
81
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
82
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
83
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
84
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
85
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
86
|
+
# have over-written some frames outside the range specifed.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Installing renumseq
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
python3 -m pip install renumSeq --upgrade
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Testing renumseq
|
|
96
|
+
|
|
97
|
+
After installing try the following:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
$ cd ~
|
|
101
|
+
$ mkdir tmp
|
|
102
|
+
$ cd tmp
|
|
103
|
+
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
104
|
+
$ lsseq -Z
|
|
105
|
+
aaa.[001-005].tif
|
|
106
|
+
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
107
|
+
aaa.005.tif -> aaa.015.tif
|
|
108
|
+
aaa.004.tif -> aaa.014.tif
|
|
109
|
+
aaa.003.tif -> aaa.013.tif
|
|
110
|
+
aaa.002.tif -> aaa.012.tif
|
|
111
|
+
aaa.001.tif -> aaa.011.tif
|
|
112
|
+
$ lsseq -Z
|
|
113
|
+
aaa.[011-015].tif
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Note that you may get an error from your
|
|
117
|
+
shell when you try to run the `renumseq` command above, without the
|
|
118
|
+
quotes around the sequence, that might look something like
|
|
119
|
+
this:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
% renumseq -o 10 aaa.[001-005].tif
|
|
123
|
+
renumseq: No match.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
In which case you need to "escape" the square brackets as they are special characters
|
|
127
|
+
as far as the shell is concerned. Escape them like this:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
131
|
+
aaa.005.tif -> aaa.015.tif
|
|
132
|
+
aaa.004.tif -> aaa.014.tif
|
|
133
|
+
aaa.003.tif -> aaa.013.tif
|
|
134
|
+
aaa.002.tif -> aaa.012.tif
|
|
135
|
+
aaa.001.tif -> aaa.011.tif
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Alternatively you can just enclose the argument in quotes
|
|
139
|
+
(`'aaa.[001-005].tif'`)
|
|
140
|
+
like we did in the example above.
|
|
141
|
+
|
|
142
|
+
Type this:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
$ renumseq --help
|
|
146
|
+
```
|
|
147
|
+
...for much more useful info.
|
|
148
|
+
|
|
149
|
+
# Important: latest MAJOR point release of `renumSeq`.
|
|
150
|
+
|
|
151
|
+
`renumseq` and all the utilities provided by jrowellfx github repos
|
|
152
|
+
use "[`Semantic Versioning 2.0.0`](https://semver.org/)" in numbering releases.
|
|
153
|
+
The latest release of `renumseq` upped the `MAJOR` release number
|
|
154
|
+
from `v1.x.x` to `v2.x.x`.
|
|
155
|
+
|
|
156
|
+
While the functionality and output of `renumseq` has not changed, all the so called
|
|
157
|
+
"long options" have been renamed to adhere to `POSIX` standard naming
|
|
158
|
+
conventions.
|
|
159
|
+
|
|
160
|
+
That is, prior to `v2.0.0` of `renumseq` all the long-option names used a "camel case"
|
|
161
|
+
naming convention but as of `v2.0.0` all long-option names have been
|
|
162
|
+
changed to so-called "kebab case".
|
|
163
|
+
|
|
164
|
+
For example:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
--replaceUnderscore
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
has been changed to
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
--replace-underscore
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
In the event that you have written any scripts that make use of `renumseq` or
|
|
177
|
+
any other of `jrowellfx`'s utils provided [here](https://github.com/jrowellfx)
|
|
178
|
+
you will need to edit your scripts to be able to update to the lastest versions
|
|
179
|
+
of the utilities.
|
|
180
|
+
|
|
181
|
+
In this case, in order to assist in switching to the
|
|
182
|
+
current `MAJOR` point release some `sed` scripts have been provided that should make
|
|
183
|
+
the transition quite painless. Especially if you make use
|
|
184
|
+
of [`runsed`](https://github.com/jrowellfx/vfxTdUtils) which if you haven't used it before,
|
|
185
|
+
now is the time, it's extremely helpful.
|
|
186
|
+
|
|
187
|
+
There are two files provided at the root-level of the repo, namely:
|
|
188
|
+
`sed.script.jrowellfx.doubleDashToKebab` and `sed.script.renumseq.v1tov2`.
|
|
189
|
+
|
|
190
|
+
The first one can be used to fix the long-option names for ALL the
|
|
191
|
+
`MAJOR` point release updates to the long-options in any of `jrowellfx`'s utilities.
|
|
192
|
+
The second one contains only changes needed for the updates to `renumseq`.
|
|
193
|
+
|
|
194
|
+
## Example `sed.script` usage.
|
|
195
|
+
|
|
196
|
+
Download one or both of the sed scripts named above. Make sure you have `runsed` installed
|
|
197
|
+
on your system. (Example applied to usage of `lsseq` but it's the same idea for `renumseq`.)
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
$ cd ~/bin
|
|
201
|
+
$ ls
|
|
202
|
+
myScriptThatUsesLsseq
|
|
203
|
+
$ cat myScriptThatUsesLsseq
|
|
204
|
+
#!/bin/bash
|
|
205
|
+
|
|
206
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
207
|
+
|
|
208
|
+
$ mv ~/Downloads/sed.script.jrowellfx.doubleDashToKebab sed.script
|
|
209
|
+
$ runsed myScriptThatUsesLsseq
|
|
210
|
+
$ ./.runsed.diff.runsed
|
|
211
|
+
+ /usr/bin/diff ./.myScriptThatUsesLsseq.runsed myScriptThatUsesLsseq
|
|
212
|
+
3c3
|
|
213
|
+
< lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
214
|
+
---
|
|
215
|
+
> lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
216
|
+
$ cat myScriptThatUsesLsseq
|
|
217
|
+
#!/bin/bash
|
|
218
|
+
|
|
219
|
+
lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Note that if you are unhappy with the changes you can undo them easily with
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
$ ./.runsed.undo.runsed
|
|
226
|
+
$ cat myScriptThatUsesLsseq
|
|
227
|
+
#!/bin/bash
|
|
228
|
+
|
|
229
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Contact
|
|
235
|
+
|
|
236
|
+
Please contact `j a m e s <at> a l p h a - e l e v e n . c o m` with any bug
|
|
237
|
+
reports, suggestions or praise as the case may be.
|
|
238
|
+
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# 3-Clause BSD License
|
|
4
4
|
#
|
|
5
|
-
# Copyright (c) 2008-
|
|
5
|
+
# Copyright (c) 2008-2025, James Philip Rowell,
|
|
6
6
|
# Alpha Eleven Incorporated
|
|
7
7
|
# www.alpha-eleven.com
|
|
8
8
|
# All rights reserved.
|
|
@@ -54,16 +54,24 @@ import glob
|
|
|
54
54
|
# MINOR version for added functionality in a backwards compatible manner
|
|
55
55
|
# PATCH version for backwards compatible bug fixes
|
|
56
56
|
#
|
|
57
|
-
VERSION = "1.
|
|
57
|
+
VERSION = "2.1.0"
|
|
58
58
|
|
|
59
59
|
PROG_NAME = "renumseq"
|
|
60
60
|
|
|
61
|
-
EXIT_NO_ERROR
|
|
62
|
-
|
|
63
|
-
EXIT_ARGPARSE_ERROR
|
|
61
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
62
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
63
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
64
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
65
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
66
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
67
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
68
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
69
|
+
# # have over-written some frames outside the range specifed.
|
|
70
|
+
#
|
|
71
|
+
gExitStatus = EXIT_NO_ERROR
|
|
64
72
|
|
|
65
73
|
# List of date formats accepted to set file times with --touch.
|
|
66
|
-
# They are same as the formats used by 'lsseq --
|
|
74
|
+
# They are same as the formats used by 'lsseq --only-show'.
|
|
67
75
|
#
|
|
68
76
|
# Note: We MUST list %y before %Y in each case below to make sure
|
|
69
77
|
# that, for example, "200731" get's interpreted as July 31, 2020
|
|
@@ -91,13 +99,17 @@ class Touch(Enum):
|
|
|
91
99
|
SPECIFIC_TIME = 3
|
|
92
100
|
|
|
93
101
|
def warnSeqSyntax(silent, basename, seq) :
|
|
102
|
+
global gExitStatus
|
|
94
103
|
if not silent :
|
|
95
104
|
print( PROG_NAME,
|
|
96
105
|
": warning: invalid range [", seq, "] for seq ", basename,
|
|
97
106
|
file=sys.stderr, sep='')
|
|
107
|
+
gExitStatus = gExitStatus | EXIT_INVALIDRANGE_WARNING
|
|
98
108
|
|
|
99
109
|
def main():
|
|
100
110
|
|
|
111
|
+
global gExitStatus
|
|
112
|
+
|
|
101
113
|
NEVER_START_FRAME = -999999999999 # Seems safe enough.
|
|
102
114
|
howToTouch = "" # Set below.
|
|
103
115
|
specificTime = 0 # Set below.
|
|
@@ -176,7 +188,7 @@ def main():
|
|
|
176
188
|
help="Rename the DESCRIPTIVE_NAME part of SEQ from its existing name to NEW_SEQNAME. \
|
|
177
189
|
When using this option then the command will exit with an error unless \
|
|
178
190
|
exactly one SEQ is being renamed and/or renumbered.")
|
|
179
|
-
p.add_argument("--
|
|
191
|
+
p.add_argument("--replace-underscore", action="store_true",
|
|
180
192
|
dest="fixUnderscore", default=False,
|
|
181
193
|
help="in the case that SEQ uses an underscore ('_') \
|
|
182
194
|
separating the filename from the frame number; then when renumbering \
|
|
@@ -198,7 +210,7 @@ def main():
|
|
|
198
210
|
Note: the default action is to leave \
|
|
199
211
|
the access time of the SEQ unchanged. ")
|
|
200
212
|
|
|
201
|
-
p.add_argument("--
|
|
213
|
+
p.add_argument("--dry-run", action="store_true",
|
|
202
214
|
dest="dryRun", default=False,
|
|
203
215
|
help="Don't renumber SEQ, just display how the \
|
|
204
216
|
files would have been renumbered. Forces --verbose" )
|
|
@@ -266,7 +278,7 @@ def main():
|
|
|
266
278
|
print(PROG_NAME, ": error: --rename will rename the sequence in-place, so please omit the path ",
|
|
267
279
|
'/'.join(args.newSeqName[0].split('/')[:-1]),
|
|
268
280
|
file=sys.stderr, sep='')
|
|
269
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
281
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
270
282
|
|
|
271
283
|
match = lsseqPattern.search(args.newSeqName[0])
|
|
272
284
|
|
|
@@ -276,7 +288,7 @@ def main():
|
|
|
276
288
|
file=sys.stderr, sep='')
|
|
277
289
|
print(" omitted from '--rename ", args.newSeqName[0], "'", " by mistake?",
|
|
278
290
|
file=sys.stderr, sep='')
|
|
279
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
291
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
280
292
|
|
|
281
293
|
elif len(args.files) >= 1 and match : # If len() > 1 then also invalid, but this catches both.
|
|
282
294
|
if not args.silent :
|
|
@@ -286,13 +298,13 @@ def main():
|
|
|
286
298
|
file=sys.stderr, sep='')
|
|
287
299
|
print(" appears to be a full lsseq native-format description of a sequence.",
|
|
288
300
|
file=sys.stderr, sep='')
|
|
289
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
301
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
290
302
|
|
|
291
303
|
elif len(args.files) > 1 :
|
|
292
304
|
if not args.silent :
|
|
293
305
|
print(PROG_NAME, ": error: can NOT rename more than one SEQ at a time.",
|
|
294
306
|
file=sys.stderr, sep='')
|
|
295
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
307
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
296
308
|
|
|
297
309
|
# Now check to see if a sequence with NEW_SEQNAME exists already.
|
|
298
310
|
# This code relies on lsseq >= v2.5.0 be installed.
|
|
@@ -312,17 +324,18 @@ def main():
|
|
|
312
324
|
globResult = glob.glob(globPattern)
|
|
313
325
|
|
|
314
326
|
if len(globResult) > 0 :
|
|
315
|
-
|
|
327
|
+
|
|
328
|
+
lsseqCmd = ['lsseq', '--loose-num-separator', '--only-sequences', '--no-error-lists'] + globResult
|
|
316
329
|
lsseqResult = subprocess.run(lsseqCmd, capture_output=True, text=True)
|
|
317
330
|
if len(lsseqResult.stdout) > 0 :
|
|
318
331
|
if not args.silent :
|
|
319
332
|
print(PROG_NAME, ": error: can NOT rename to an existing sequence ",
|
|
320
333
|
lsseqResult.stdout,
|
|
321
334
|
file=sys.stderr, sep='', end='')
|
|
322
|
-
sys.exit(
|
|
335
|
+
sys.exit(gExitStatus | EXIT_PREEXISTINGSEQ_ERROR)
|
|
323
336
|
|
|
324
337
|
if len(args.files) == 0 :
|
|
325
|
-
sys.exit(
|
|
338
|
+
sys.exit(gExitStatus)
|
|
326
339
|
|
|
327
340
|
# The following logic means "do nothing" - so just exit cleanly (**b**)
|
|
328
341
|
#
|
|
@@ -335,7 +348,7 @@ def main():
|
|
|
335
348
|
print(PROG_NAME,
|
|
336
349
|
": warning: no offset, no rename, no padding change, etc., nothing to do",
|
|
337
350
|
file=sys.stderr, sep='')
|
|
338
|
-
sys.exit(
|
|
351
|
+
sys.exit(gExitStatus | EXIT_NULLACTION_WARNING)
|
|
339
352
|
|
|
340
353
|
# args.touch is either a string, presumably containing a date (so need to
|
|
341
354
|
# check its validity), the string "0" (meaning --touch was called with NO argument),
|
|
@@ -385,7 +398,7 @@ def main():
|
|
|
385
398
|
print(PROG_NAME,
|
|
386
399
|
": error: argument --touch: the time must be of the form [CC]YYMMDD[-hh[mm[ss]]]",
|
|
387
400
|
file=sys.stderr, sep='')
|
|
388
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
401
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
389
402
|
|
|
390
403
|
specificTime = int(time.mktime(timeData.timetuple())) # Epoch time
|
|
391
404
|
|
|
@@ -403,6 +416,7 @@ def main():
|
|
|
403
416
|
print(PROG_NAME, ": warning: ", arg,
|
|
404
417
|
" not a sequence or not in lsseq native format",
|
|
405
418
|
file=sys.stderr, sep='')
|
|
419
|
+
gExitStatus = gExitStatus | EXIT_NOTASEQ_WARNING
|
|
406
420
|
continue
|
|
407
421
|
|
|
408
422
|
v = match.groups()
|
|
@@ -493,6 +507,7 @@ def main():
|
|
|
493
507
|
print(PROG_NAME,
|
|
494
508
|
": warning: no offset, no padding/underscore change, skipping sequence: ",
|
|
495
509
|
arg, file=sys.stderr, sep='')
|
|
510
|
+
# No change to exit codes since other seq's might have been changed.
|
|
496
511
|
continue
|
|
497
512
|
|
|
498
513
|
startPad = len(startStr)
|
|
@@ -555,7 +570,7 @@ def main():
|
|
|
555
570
|
#
|
|
556
571
|
# THIS IS an UNLIKELY OCCURANCE!
|
|
557
572
|
#
|
|
558
|
-
# However users should pay attention to the --
|
|
573
|
+
# However users should pay attention to the --show-bad-padding option of 'lsseq'
|
|
559
574
|
# and if need be, first fix SEQ with 'fixseqpadding' before using this
|
|
560
575
|
# util to get correct results in all circumstances.
|
|
561
576
|
#
|
|
@@ -581,6 +596,7 @@ def main():
|
|
|
581
596
|
if not args.silent :
|
|
582
597
|
print(PROG_NAME, ": warning: ", arg,
|
|
583
598
|
" is nonexistent", file=sys.stderr, sep='')
|
|
599
|
+
gExitStatus = gExitStatus | EXIT_NONEXISTENTSEQ_WARNING
|
|
584
600
|
continue
|
|
585
601
|
|
|
586
602
|
if not args.clobber :
|
|
@@ -598,6 +614,7 @@ def main():
|
|
|
598
614
|
": renumbering would have overwritten a file outside the sequence being renumbered. e.g.: ",
|
|
599
615
|
f, file=sys.stderr, sep='')
|
|
600
616
|
continue
|
|
617
|
+
gExitStatus = gExitStatus | EXIT_OVERWRITEFRAME_WARNING
|
|
601
618
|
|
|
602
619
|
i = 0
|
|
603
620
|
numFiles = len(origName)
|
|
@@ -629,6 +646,7 @@ def main():
|
|
|
629
646
|
print(PROG_NAME,
|
|
630
647
|
": warning: no changes were made to ", arg, ": skipping",
|
|
631
648
|
file=sys.stderr, sep='')
|
|
649
|
+
# gExitStatus not changed as other sequences specified may have been changed.
|
|
632
650
|
|
|
633
651
|
if __name__ == '__main__':
|
|
634
652
|
main()
|
|
@@ -14,17 +14,18 @@ long_description = (here / 'README.md').read_text(encoding='utf-8')
|
|
|
14
14
|
|
|
15
15
|
setup(
|
|
16
16
|
name = 'renumSeq',
|
|
17
|
-
version = '1.
|
|
17
|
+
version = '2.1.0',
|
|
18
18
|
description='Tool to renumber image sequences.',
|
|
19
19
|
long_description=long_description,
|
|
20
20
|
long_description_content_type='text/markdown',
|
|
21
21
|
url = 'https://github.com/jrowellfx/renumSeq',
|
|
22
22
|
author = 'James Philip Rowell',
|
|
23
23
|
author_email = 'james@alpha-eleven.com',
|
|
24
|
+
license = "BSD-3-Clause",
|
|
25
|
+
license_files = ["LICENSE"],
|
|
24
26
|
|
|
25
27
|
classifiers=[
|
|
26
28
|
'Programming Language :: Python :: 3',
|
|
27
|
-
'License :: OSI Approved :: BSD License',
|
|
28
29
|
'Operating System :: POSIX',
|
|
29
30
|
'Operating System :: Unix',
|
|
30
31
|
'Operating System :: MacOS',
|
|
@@ -33,7 +34,7 @@ setup(
|
|
|
33
34
|
|
|
34
35
|
packages = ['renumseq'],
|
|
35
36
|
python_requires = '>=3.7, <4',
|
|
36
|
-
install_requires=['seqLister>=1.2.0', 'lsseq>=
|
|
37
|
+
install_requires=['seqLister>=1.2.0', 'lsseq>=4.0.0'],
|
|
37
38
|
|
|
38
39
|
entry_points = {
|
|
39
40
|
'console_scripts': [
|
renumseq-1.4.2/PKG-INFO
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.2
|
|
2
|
-
Name: renumSeq
|
|
3
|
-
Version: 1.4.2
|
|
4
|
-
Summary: Tool to renumber image sequences.
|
|
5
|
-
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
-
Author: James Philip Rowell
|
|
7
|
-
Author-email: james@alpha-eleven.com
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
-
Classifier: Operating System :: POSIX
|
|
11
|
-
Classifier: Operating System :: Unix
|
|
12
|
-
Classifier: Operating System :: MacOS
|
|
13
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
-
Requires-Python: >=3.7, <4
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: seqLister>=1.2.0
|
|
18
|
-
Requires-Dist: lsseq<4.0.0,>=3.0.0
|
|
19
|
-
Dynamic: author
|
|
20
|
-
Dynamic: author-email
|
|
21
|
-
Dynamic: classifier
|
|
22
|
-
Dynamic: description
|
|
23
|
-
Dynamic: description-content-type
|
|
24
|
-
Dynamic: home-page
|
|
25
|
-
Dynamic: requires-dist
|
|
26
|
-
Dynamic: requires-python
|
|
27
|
-
Dynamic: summary
|
|
28
|
-
|
|
29
|
-
# About renumseq
|
|
30
|
-
|
|
31
|
-
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
32
|
-
which are most
|
|
33
|
-
typically used in CG post-production.
|
|
34
|
-
|
|
35
|
-
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
36
|
-
It also allows you adjust the padding of the frame numbers.
|
|
37
|
-
|
|
38
|
-
`renumseq` uses the syntax of the native output of
|
|
39
|
-
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
40
|
-
the sequence to be renumbered. Therefore it is recommended to
|
|
41
|
-
use `lsseq` as it makes using `renumseq` easier.
|
|
42
|
-
|
|
43
|
-
For example, use `lsseq` to list a sequence, then
|
|
44
|
-
cut and paste its
|
|
45
|
-
output as the arguments to `renumseq` with the appropriate
|
|
46
|
-
arguments for setting the offset or new start-frame.
|
|
47
|
-
|
|
48
|
-
`renumseq` was written to be safe in that it won't
|
|
49
|
-
unintentionally overwrite any existing files
|
|
50
|
-
during renumbering.
|
|
51
|
-
|
|
52
|
-
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
53
|
-
outside the range specified then it will skip renumbering that sequence
|
|
54
|
-
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
55
|
-
there is an option to force `renumseq` to overwrite those files if desired.
|
|
56
|
-
|
|
57
|
-
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
58
|
-
(it does a move of the file), so it's fast.
|
|
59
|
-
|
|
60
|
-
`renumseq` also has a useful option, called `--replaceUnderscore`
|
|
61
|
-
that changes any underscore-separators (separating the filename from the
|
|
62
|
-
frame-number) with dot-separators, like this:
|
|
63
|
-
|
|
64
|
-
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
65
|
-
|
|
66
|
-
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
67
|
-
use a zero offset, plus the `--replaceUnderscore` argument.
|
|
68
|
-
|
|
69
|
-
## Installing renumseq
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
python3 -m pip install renumSeq --upgrade
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Testing renumseq
|
|
76
|
-
|
|
77
|
-
After installing try the following:
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
$ cd ~
|
|
81
|
-
$ mkdir tmp
|
|
82
|
-
$ cd tmp
|
|
83
|
-
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
84
|
-
$ lsseq -Z
|
|
85
|
-
aaa.[001-005].tif
|
|
86
|
-
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
87
|
-
aaa.005.tif -> aaa.015.tif
|
|
88
|
-
aaa.004.tif -> aaa.014.tif
|
|
89
|
-
aaa.003.tif -> aaa.013.tif
|
|
90
|
-
aaa.002.tif -> aaa.012.tif
|
|
91
|
-
aaa.001.tif -> aaa.011.tif
|
|
92
|
-
$ lsseq -Z
|
|
93
|
-
aaa.[011-015].tif
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Note that you may get an error from your
|
|
97
|
-
shell when you try to run the `renumseq` command above, without the
|
|
98
|
-
quotes around the sequence, that might look something like
|
|
99
|
-
this:
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
% renumseq -o 10 aaa.[001-005].tif
|
|
103
|
-
renumseq: No match.
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
In which case you need to "escape" the square brackets as they are special characters
|
|
107
|
-
as far as the shell is concerned. Escape them like this:
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
111
|
-
aaa.005.tif -> aaa.015.tif
|
|
112
|
-
aaa.004.tif -> aaa.014.tif
|
|
113
|
-
aaa.003.tif -> aaa.013.tif
|
|
114
|
-
aaa.002.tif -> aaa.012.tif
|
|
115
|
-
aaa.001.tif -> aaa.011.tif
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Alternatively you can just enclose the argument in quotes
|
|
119
|
-
(`'aaa.[001-005].tif'`)
|
|
120
|
-
like we did in the example above.
|
|
121
|
-
|
|
122
|
-
Type this:
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
$ renumseq --help
|
|
126
|
-
```
|
|
127
|
-
...for much more useful info.
|
renumseq-1.4.2/README.md
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# About renumseq
|
|
2
|
-
|
|
3
|
-
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
4
|
-
which are most
|
|
5
|
-
typically used in CG post-production.
|
|
6
|
-
|
|
7
|
-
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
8
|
-
It also allows you adjust the padding of the frame numbers.
|
|
9
|
-
|
|
10
|
-
`renumseq` uses the syntax of the native output of
|
|
11
|
-
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
12
|
-
the sequence to be renumbered. Therefore it is recommended to
|
|
13
|
-
use `lsseq` as it makes using `renumseq` easier.
|
|
14
|
-
|
|
15
|
-
For example, use `lsseq` to list a sequence, then
|
|
16
|
-
cut and paste its
|
|
17
|
-
output as the arguments to `renumseq` with the appropriate
|
|
18
|
-
arguments for setting the offset or new start-frame.
|
|
19
|
-
|
|
20
|
-
`renumseq` was written to be safe in that it won't
|
|
21
|
-
unintentionally overwrite any existing files
|
|
22
|
-
during renumbering.
|
|
23
|
-
|
|
24
|
-
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
25
|
-
outside the range specified then it will skip renumbering that sequence
|
|
26
|
-
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
27
|
-
there is an option to force `renumseq` to overwrite those files if desired.
|
|
28
|
-
|
|
29
|
-
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
30
|
-
(it does a move of the file), so it's fast.
|
|
31
|
-
|
|
32
|
-
`renumseq` also has a useful option, called `--replaceUnderscore`
|
|
33
|
-
that changes any underscore-separators (separating the filename from the
|
|
34
|
-
frame-number) with dot-separators, like this:
|
|
35
|
-
|
|
36
|
-
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
37
|
-
|
|
38
|
-
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
39
|
-
use a zero offset, plus the `--replaceUnderscore` argument.
|
|
40
|
-
|
|
41
|
-
## Installing renumseq
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
python3 -m pip install renumSeq --upgrade
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Testing renumseq
|
|
48
|
-
|
|
49
|
-
After installing try the following:
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
$ cd ~
|
|
53
|
-
$ mkdir tmp
|
|
54
|
-
$ cd tmp
|
|
55
|
-
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
56
|
-
$ lsseq -Z
|
|
57
|
-
aaa.[001-005].tif
|
|
58
|
-
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
59
|
-
aaa.005.tif -> aaa.015.tif
|
|
60
|
-
aaa.004.tif -> aaa.014.tif
|
|
61
|
-
aaa.003.tif -> aaa.013.tif
|
|
62
|
-
aaa.002.tif -> aaa.012.tif
|
|
63
|
-
aaa.001.tif -> aaa.011.tif
|
|
64
|
-
$ lsseq -Z
|
|
65
|
-
aaa.[011-015].tif
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Note that you may get an error from your
|
|
69
|
-
shell when you try to run the `renumseq` command above, without the
|
|
70
|
-
quotes around the sequence, that might look something like
|
|
71
|
-
this:
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
% renumseq -o 10 aaa.[001-005].tif
|
|
75
|
-
renumseq: No match.
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
In which case you need to "escape" the square brackets as they are special characters
|
|
79
|
-
as far as the shell is concerned. Escape them like this:
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
83
|
-
aaa.005.tif -> aaa.015.tif
|
|
84
|
-
aaa.004.tif -> aaa.014.tif
|
|
85
|
-
aaa.003.tif -> aaa.013.tif
|
|
86
|
-
aaa.002.tif -> aaa.012.tif
|
|
87
|
-
aaa.001.tif -> aaa.011.tif
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Alternatively you can just enclose the argument in quotes
|
|
91
|
-
(`'aaa.[001-005].tif'`)
|
|
92
|
-
like we did in the example above.
|
|
93
|
-
|
|
94
|
-
Type this:
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
$ renumseq --help
|
|
98
|
-
```
|
|
99
|
-
...for much more useful info.
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.2
|
|
2
|
-
Name: renumSeq
|
|
3
|
-
Version: 1.4.2
|
|
4
|
-
Summary: Tool to renumber image sequences.
|
|
5
|
-
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
-
Author: James Philip Rowell
|
|
7
|
-
Author-email: james@alpha-eleven.com
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
-
Classifier: Operating System :: POSIX
|
|
11
|
-
Classifier: Operating System :: Unix
|
|
12
|
-
Classifier: Operating System :: MacOS
|
|
13
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
-
Requires-Python: >=3.7, <4
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: seqLister>=1.2.0
|
|
18
|
-
Requires-Dist: lsseq<4.0.0,>=3.0.0
|
|
19
|
-
Dynamic: author
|
|
20
|
-
Dynamic: author-email
|
|
21
|
-
Dynamic: classifier
|
|
22
|
-
Dynamic: description
|
|
23
|
-
Dynamic: description-content-type
|
|
24
|
-
Dynamic: home-page
|
|
25
|
-
Dynamic: requires-dist
|
|
26
|
-
Dynamic: requires-python
|
|
27
|
-
Dynamic: summary
|
|
28
|
-
|
|
29
|
-
# About renumseq
|
|
30
|
-
|
|
31
|
-
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
32
|
-
which are most
|
|
33
|
-
typically used in CG post-production.
|
|
34
|
-
|
|
35
|
-
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
36
|
-
It also allows you adjust the padding of the frame numbers.
|
|
37
|
-
|
|
38
|
-
`renumseq` uses the syntax of the native output of
|
|
39
|
-
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
40
|
-
the sequence to be renumbered. Therefore it is recommended to
|
|
41
|
-
use `lsseq` as it makes using `renumseq` easier.
|
|
42
|
-
|
|
43
|
-
For example, use `lsseq` to list a sequence, then
|
|
44
|
-
cut and paste its
|
|
45
|
-
output as the arguments to `renumseq` with the appropriate
|
|
46
|
-
arguments for setting the offset or new start-frame.
|
|
47
|
-
|
|
48
|
-
`renumseq` was written to be safe in that it won't
|
|
49
|
-
unintentionally overwrite any existing files
|
|
50
|
-
during renumbering.
|
|
51
|
-
|
|
52
|
-
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
53
|
-
outside the range specified then it will skip renumbering that sequence
|
|
54
|
-
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
55
|
-
there is an option to force `renumseq` to overwrite those files if desired.
|
|
56
|
-
|
|
57
|
-
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
58
|
-
(it does a move of the file), so it's fast.
|
|
59
|
-
|
|
60
|
-
`renumseq` also has a useful option, called `--replaceUnderscore`
|
|
61
|
-
that changes any underscore-separators (separating the filename from the
|
|
62
|
-
frame-number) with dot-separators, like this:
|
|
63
|
-
|
|
64
|
-
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
65
|
-
|
|
66
|
-
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
67
|
-
use a zero offset, plus the `--replaceUnderscore` argument.
|
|
68
|
-
|
|
69
|
-
## Installing renumseq
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
python3 -m pip install renumSeq --upgrade
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Testing renumseq
|
|
76
|
-
|
|
77
|
-
After installing try the following:
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
$ cd ~
|
|
81
|
-
$ mkdir tmp
|
|
82
|
-
$ cd tmp
|
|
83
|
-
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
84
|
-
$ lsseq -Z
|
|
85
|
-
aaa.[001-005].tif
|
|
86
|
-
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
87
|
-
aaa.005.tif -> aaa.015.tif
|
|
88
|
-
aaa.004.tif -> aaa.014.tif
|
|
89
|
-
aaa.003.tif -> aaa.013.tif
|
|
90
|
-
aaa.002.tif -> aaa.012.tif
|
|
91
|
-
aaa.001.tif -> aaa.011.tif
|
|
92
|
-
$ lsseq -Z
|
|
93
|
-
aaa.[011-015].tif
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Note that you may get an error from your
|
|
97
|
-
shell when you try to run the `renumseq` command above, without the
|
|
98
|
-
quotes around the sequence, that might look something like
|
|
99
|
-
this:
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
% renumseq -o 10 aaa.[001-005].tif
|
|
103
|
-
renumseq: No match.
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
In which case you need to "escape" the square brackets as they are special characters
|
|
107
|
-
as far as the shell is concerned. Escape them like this:
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
111
|
-
aaa.005.tif -> aaa.015.tif
|
|
112
|
-
aaa.004.tif -> aaa.014.tif
|
|
113
|
-
aaa.003.tif -> aaa.013.tif
|
|
114
|
-
aaa.002.tif -> aaa.012.tif
|
|
115
|
-
aaa.001.tif -> aaa.011.tif
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Alternatively you can just enclose the argument in quotes
|
|
119
|
-
(`'aaa.[001-005].tif'`)
|
|
120
|
-
like we did in the example above.
|
|
121
|
-
|
|
122
|
-
Type this:
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
$ renumseq --help
|
|
126
|
-
```
|
|
127
|
-
...for much more useful info.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|