mktor/chtor: Fix error when removing non-existing key with-s
2.14.2 - 2025-01-01
- Explicitly support python 3.13
2.14.1 - 2024-10-26
- Build
sessionfilefrom engine properties instead of using custom method.
- Minor formatting fixes for
lstor: print correct meta size, indent size correctly, properly display re-entered directory paths - Handle alias configuration with leading or trailing whitespace correctly. #68
2.14.0 - 2024-06-04
mktor/lstor/chtor: No longer create the progress bar object at all if not enabled. This should improve non-interactive script usage.
- Explicit python 3.12 support
pyrotorque: Addpreload_fieldstoTreeWatchjob, to allow fetching expensive-but-cacheable fields right after a successfully load.
- The default prefetch fields have been reduced, in particular to no
longer use
d.ratio, which is a relatively expensive call for incomplete items.
2.13.0 - 2024-01-29
- New assignment syntax to allow more complex keys. This mainly
effects mktor and chtor's
-s KEY=VALflag. This means the old syntax of..to escape periods in key names will no longer work. Use the new bracket syntax instead:# Old chtor -s info.with..period=foo <file> # New chtor -s 'info["with.period"]=foo' <file>
lstor: Torrents without an announce URL are no longer considered invalid, and can be displayed bylstor. This is primarily to support the listing of rTorrent's temporary torrent files generated from magnet links. #61chtor/mktor: Use a proper assignment syntax to allow setting complex keys and array keysrtcontrol:--prionow accepts strings as well as integers (0=off, 1=low, 2=normal, 3=high)
- Magnet files are now created with the correct key (
magnet-uri) for rTorrent to load them.
lstor: Add--jsonas alias for--raw
2.12.1 - 2023-12-12
- Add
d.timestamp.last_xferas prefetch field forlast_xfer
- Comparisons on some time fields #60
2.12.0 - 2023-10-30
rtcontrol:--cull/--purgenow clean up empty directories properly
chtor/mktor/lstor:--progressflag to allow controlling hash check progress bar
- The SSH transport now behaves more like the original pyroscope:
- Allow for non-22 ports
- Handle absolute paths similarly
- Disable SSH pseudo-terminal allocation
- Increase socat timeout to 5 seconds
lstorrefactoring:-onow effects the output of--raw-o ""now means "do not output any fields"- Data is hash checked after printing info
- Do not halt immediately when validation fails, but set the exit
code to
70(failed hash checks return65)
2.11.4 - 2023-10-07
lstor: Now fails immediately when a piece mismatch occurs, and outputs the error to standard out instead of logging it.
chtor: Fix error when combining--fast-resumeand-opyroadmin: Fix false negative when detecting methods on systems that implemented them in C++
2.11.3 - 2023-09-25
pyrotorque:QueueManagernow has a defaultmatchersetting ofis_complete=no is_ignored=no is_open=no message="" done=0pyrotorque: Theargsparemeter forpyrosimple.job.action:Actionnow accepts non-string values.
2.11.2 - 2023-09-20
rtcontrol: Make parent directories when moving/copyingrtcontrol: Fix-and-setvariants not doing anything
2.11.1 - 2023-09-12
lstor/mktor/chtor: The progress bar no longer appears when-qis usedlstor: Fix possibleZeroDivisionErrorwhen hashing small files on Windows (#53)
2.11.0 - 2023-09-10
chtor: Improve handling of improper metafiles when-Vis specified
lstor: Support displaying hybrid v2 .torrent files.rTorrentdoesn't support padding files yet, so this is mostly theoretical.rtcontrol: Addlabelandcustom1as aliases forcustom_1rtcontrol: Finalize flags for moving paths and optionally setting the directory:--move,--move-and-set,--symlink, etc...
rtcontrol: The average in--summaryno longer errors out under certain conditionsrtcontrol: Fix debug logging, and avoid cleaning up parent directories for single file torrents with--cull/--purge(#52)
2.10.2 - 2023-07-31
- Remove debugging statements
2.10.1 - 2023-07-28
rtcontrol: Fix--jsonerror
2.10.0 - 2023-07-24
pyrotorque: Add the--log-fileflag to allow controlling where the stdout/stdout are sent after detachingpyrotorque: Add dedicated[TORQUE._settings]key inconfig.tomlto control settings such as the log level, pid file location, autoreload, etc.- Allow parsing simple
catstring replacements when auto-detecting the SCGI URL (e.g.network.scgi.open_local=(cat,(cfg.rundir),"scgi.socket")) pyrotorque: Allow adopting stale PID files (with the--adopt-stale-pid-fileflag)
pyrotorque: Check if pidfile can be successfully locked prior to forking
rtcontrol: Allow templating the--moveflag
2.9.1 - 2023-07-09
rtcontrol:-Vwas not working as expected (#40)
2.9.0 - 2023-07-02
rtcontrol: Under some circumstances,~/.rtorrent.rcwould not be checked for a connectionmktor: Don't strip characters after final.from auto-generated torrent name for directoriesrtcontrol: Allow more than twoORconditions
rtcontrol: Output sub-multicall fields (e.g.p_client_version) in JSON formatrtcontrol: Exact matches also match in patterns. E.G. previouslyname="[ARCH] live.iso"would not match an item of the exact same name, due to[and]being special characters in fnmatch- Expand
~when set inscgi_url(#34)
2.8.0 - 2023-04-29
pyroadmin: Fix error when callingconfig --create-config(#33 by @JohnFlowerful)
- Memoization helper function for expensive custom fields
- Add
PYRO_FORCE_JSONRPC_LOAD_RAWenv var to allow overriding JSON-RPC load behavior.
- Simplify internal f.multicall setup to reduce size of calls
- Respect
ITEM_CACHE_EXPIRATIONfor RPC calls (previously it was always set to the default of 5 seconds).
2.7.1 - 2023-04-09
pyroadmin:config --checknow also checks if the methods necessary for timestamp fields (e.g.completed) exist.
rtcontrol: Show a more useful error message when using--from=<hash>with a hash that doesn't exist- Send assigned SCGI headers over unix sockets
chtor: Fix-o/--output-directory(#32)
2.7.0 - 2023-02-11
rtcontrol: Addf_METHOD,p_METHODandt_METHODdynamic fields.
- Move from settings
DynaConftoBox. This should not have any impact on the documented usage, but will decrease CLI cold start times.
- Fix
pyroadmin config --create-rtorrent-rcwhen the config files do not exist. (#27 by @vamega) - Fix inconsistent matching on TimeFilter fields (e.g.
completed) (#28)
2.6.1 - 2023-01-26
- Fixed error when logging actions
2.6.0 - 2023-01-15
- Properly set content-type headers for HTTP handler
rtcontrol: Allow handling mored.*commands with thed_NAMEfields.chtor: Only modify existing files if changes have been madechtor:--reannouncenow matches based on aliases/TLDs (which matches--tracker's behavior)rtcontrol: Add--erasealias for--delete
chtor: Added--check-dataflag to allow checking data before making any changes, e.g. `chtor --check-data --fast-resume ` to allow fully hash checking a torrent prior to it being added to rTorrent.chtor: Added--diffflag to show any changes being made. It can also be combined with--dry-runto preview changes.chtor: Added--tracker/-Tflag to enable filtering by tracker. This also works with aliases.
chtor: Removed--no-sslflag.
2.5.4 - 2023-01-03
- Fix regression in properly translating
custom_1.._5fields.
pyrotorque: ForRtorrentExporter, scrape on the job schedule instead of the actual HTTP call. This helps prevent both slow scrapes from stacking up, and duplicate RPC calls when being scraped by multiple prometheuses.
2.5.3 - 2022-12-29
pyrotorque: ForTreeWatch, fix inotify masks
2.5.2 - 2022-12-29
pyroadmin config: Add--create-configand--create-rtorrent-rcflags for setting up default config
rtcontrol: Fix--priortcontrol: Allow spaces in regexes (e.g.rtcontrol "message=/(not |un)registered/"will work as expected now)pyrotorque: ForQueueManager, allow using old configuration settingsort_fields- Properly handle spaces in comma-separated field lists
2.5.1 - 2022-12-22
rtcontrol: Addedd_<call name>field for arbitrary RPC calls. As an example, to show thed.creation_dateof all torrent with connected peers (d.peers_connected), you can now runrtcontrol d_peers_connected=1 -o d_creation_date. Note that the built-in fields are still recommended due to the advanced filtering and output capabilities (currently alld_<call name>fields are treated as strings). There are also some commands that will work under thed_<call name>system, such asd.skip.rate.
- Dynamically generate timestamps during the filtering process. For
example, a matcher created from
completed>1hwill still match as expected even a couple hours later. chtor: Fix--fast-resumelstor: Don't throw error on empty creation date
lstor: Error with non-zero return code when--check-datafails- Mark package as typed
2.5.0 - 2022-12-10
- HTTP URLs will no longer automatically append
/RPC2on the end if the path isn't there. This has been deprecated since 2.3.0.
rtcontrol: Certain floats will display less precision for better output (<field>.rawcan still be used to get the real value).rtcontrol: Correctly detect fields from unnamed conditions combined with named ones (e.g.// is_complete=nowould previously not prefetchd.name)
rtcontrol: Fix-s *rtcontrol: Warn if fast query is enabled for a host withoutd.multicall.filteredMetafile.hash_check()andMetafile.add_fast_resume()now handle single file torrents the same way (#24)mktor: Fix-o/--output-filename
2.4.0 - 2022-12-03
pyrotorque: Overhaul TreeWatch and log format
rtcontrol: Correctly handle moving torrents via JSON-RPC
2.3.3 - 2022-11-20
rtcontrol: Properly handle--from=<hash>multicalls- Add safety check for d.timestamp.last_active
pyroadmin: Addconfig --dump-rc
pyrotorque: Change log format to include the job name.
2.3.2 - 2022-11-05
rtcontrol: Handle complex queries better (e.g.[ seedtime>8d OR ratio>1 ] custom_1=TVshould work as expected now)rtcontrol: Fix prefiltering for globs which include regex-like charactersrtcontrol: Make null durations only match on<field>==0as per pyrocore's behavior
2.3.1 - 2022-11-03
rtcontrol: Handle multi-connection aliases properly
2.3.0 - 2022-11-03
- In a future release,
/RPC2will no longer be added to HTTP connections
- Defer imports to improve loading times
mktor -h lstor -h rtcontrol -h rtcontrol // -o '' Before 0.364s 0.377s 0.382s 0.469s After 0.112s 0.098s 0.141s 0.384s pyrotorque: Changemax_downloading_traffictodownloading_traffic_max, in order to match other setting names.
mktor: Add flags for controlling min/max piece size, as well as specifying it manually
- Use all trackers when aggregating in example custom field code (credit goes to @kchiem: pyroscope/pyrocore#105)
pyrotorque: Allow usingstartableinstead ofmatcherfor QueueManagerpyrotorque: Resolve connection aliases in job definitions and CLI
2.2.1 - 2022-10-24
- Fix inverse tag matching and prefiltering (#13)
- Fix
kind_Nfields (#14) - Properly clean regexes for finding the prefiltering string, and account for unclean-able regexes
rtxmlrpc: Re-implement--repl
2.2.0 - 2022-10-15
- Fix setting tags (#12)
rtcontrol/rtxmlrpc:- Basic tab completion
- Optional
guessit_*fields (requires guessit to be installed:pip install guessit)
pyrotorque- New
ItemCommandjob - Allow overriding
scgi_urlfor individual jobs
- New
- Warn if rTorrent doesn't support
string.contains_ifor fast queries
2.1.1 - 2022-09-24
chtor: Fix--reannounce-allwithout--no-cross-seed(#11 by 0xallie)
- Option to automatically reload pyrotorque if the config changes (off by default)
viewsandtaggednow support fast queries
2.1.0 - 2022-09-20
- Re-enabled
last_xferandactivefields- Added safety check for
last_xferif required method is not available
- Added safety check for
- Configuration option
item_cache_expirationfor more explicit control of the cache
- rtcontrol
--jsonwill now display all known fields by default--throttleworks as intended- send string to interval calculations instead of object (effected
seedtime,leechtime,stopped) - Fix pre-fetching for
views
- Show full stack traces for templating errors while using
--debug
2.0.3 - 2022-09-18
- Report actual RPC stats in debug output
- Handle custom1, custom2, etc correctly
- Unify
util.metafileto perform most operations in a dict-like class
- New
shelltemplate filter
2.0.2 - 2022-09-14
- Validate simple output formatters against all Jinja2 filters
2.0.0 - 2022-09-13
This release marks the break between pyrocore-compatible code and new pyrosimple code/behavior. The changes are too numerous to list individually, but the following are some of the backwards-incompatible changes:
- Overhauled
rtcontrol's query parsing engine - Python 2 support dropped
- New TOML configuration file
If you just want to use the pyrocore tools on python 3 without all the
new features, you can use the release-1.X branch or the 1.X
releases.