GithubHelp home page GithubHelp logo

vapoursynth / vsrepo Goto Github PK

View Code? Open in Web Editor NEW
103.0 19.0 26.0 1.32 MB

A simple package repository for VapourSynth

License: MIT License

Python 100.00%
vapoursynth vapoursynth-plugins package-manager

vsrepo's Introduction

VSRepo

A simple package repository for VapourSynth. It is implemented in a way that keeps no state between invocations and can therefore be pointed at any pre-existing plugin and script directory.

All packages are by default installed to the per user plugin autoload directory and the per user Python site-packages directory. If you're using a portable install of VapourSynth simply use the -p switch.

By default binaries matching the platform Python is running on are installed. This can be overridden by adding -t win32 or -t win64 to the commandline.

Usage

Install plugins and scripts. Identifier, namespace, modulename and name are searched for matches in that order.

vsrepo.py install havsfunc ffms2 d2v

Update all installed packages to the latest version.

vsrepo.py upgrade-all

Fetch latest package definitions.

vsrepo.py update

List all currently installed packages.

vsrepo.py installed

List all known packages. Useful if you can't remember the namespace or identifier.

vsrepo.py available

Remove all files related to a package. Dependencies are not taken into consideration so uninstalling plugins may break scripts.

vsrepo.py uninstall nnedi3

VSRUpdate

VSRUpdate.py has two main purposes. The compile command which combines all the individual package files into one distributable file and update-local which queries the github api and tries to automatically add all new releases.

It's only useful if you want to update or add new packages.

Usage example:

vsrupdate.py update-local -o -g <github token>
vsrupdate.py compile

vsrepo's People

Contributors

4re avatar akarinvs avatar cid-chan avatar cshmnyfy avatar end-of-eternity avatar ichunjo avatar ifb avatar justintarthur avatar masaiki avatar myrsloik avatar orangechannel avatar pyguy2 avatar rivenskaye avatar setsugennoao avatar stuxcrystal avatar sukerokushin avatar thechaoscoder avatar vxzms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vsrepo's Issues

Plugin and script name collisions are iffy

Descale is an example of this. The python module and namespace of the plugin is the same. In this case it mostly works out fine since the modulename takes precedence and the script depends on the plugin being installed.

But some day it will fail horribly...

JSON verifier

It would be useful to have a verifier for the JSON to make sure only the allowed values and types of values are present. Probably the easiest way is to simply manually check things in vsrupdate.py.

Uninstall doesn't uninstall dependent packages

Uninstall doesn't remove all packages that also depend on the package being uninstalled. This is probably not expected and definitely should be rectified. Or at least some warnings implemented.

Additional sanity checks

The automated guessing logic has a tendency to fail when 32 bit binaries are discontinued and will then point at the 64 bit binary automatically. This can be solved by checking so the 32 and 64 bit binaries never reference the same dll files.

"FileNotFoundError: [WinError 2] The system cannot find the file specified" when attempting to install package

I installed Python 3.7.6 for all users, and then I installed VapourSynth (bundled with VSRepo) into C:\VapourSynth-32. I'm not certain why it cannot find 7z.exe, considering I do have it installed, along with it being copied into PATH.

C:\VapourSynth-32\vsrepo>vsrepo install kagefunc
Fetching: https://github.com/EleonoreMizo/fmtconv/releases/download/r20/fmtconv-r20.zip
Traceback (most recent call last):
  File "C:\VapourSynth-32\vsrepo\vsrepo.py", line 457, in <module>
    res = install_package(name)
  File "C:\VapourSynth-32\vsrepo\vsrepo.py", line 341, in install_package
    res = install_package(dep)
  File "C:\VapourSynth-32\vsrepo\vsrepo.py", line 341, in install_package
    res = install_package(dep)
  File "C:\VapourSynth-32\vsrepo\vsrepo.py", line 344, in install_package
    res = install_files(p)
  File "C:\VapourSynth-32\vsrepo\vsrepo.py", line 318, in install_files
    result = subprocess.run([cmd7zip_path, "e", "-so", tfpath, fn_props[0]], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "C:\Program Files\Python37-32\lib\subprocess.py", line 472, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Program Files\Python37-32\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "C:\Program Files\Python37-32\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

Capture

I am running Windows 7 Professional x86.

Install name not always obvious

I was confused at first that install fluxsmooth is failing and that i need to write install flux

Could the name not also be parsed as a fallback if namespace is not found? Or a additional (optional) field could be added for synonyms.

Properly version things

Things like the package definitions should definitely have a version attached so vsrepo.py can tell the user it needs to be updated.

Improving installed view

Currently there is no easy way to find which plugins are not the latest version.
Maybe plugins that are not up to date (or version unknown) could be marked somehow or grouped together.

Easiest way would be marking it with an asterix or so:

Bifrost                   bifrost         v2.2        v2.2        com.nodame.bifrost
*Bilateral                 bilateral       r2          r3          com.invalid.identifier.bilateral
BM3D                      bm3d            r6          r7          com.vapoursynth.bm3d

python .\vsrepo.py -p installed

Name                      Namespace       Installed   Latest      Identifier
autocrop                  acrop           0.1         0.1         autocrop.infiistgott.info
AvsProxy                  avsw            r1a         r1a         xxx.abc.avsproxy
Bifrost                   bifrost         v2.2        v2.2        com.nodame.bifrost
*Bilateral                 bilateral       r2          r3          com.invalid.identifier.bilateral
BM3D                      bm3d            r7          r7          com.vapoursynth.bm3d
Cnr2                      cnr2            v1          v1          com.nodame.cnr2
ColorBars                 colorbars       R2          R2          com.ifb.colorbars
CTMF                      ctfm            r4          r4          com.holywu.ctmf
D2V Source                d2v             v1.1        v1.1        com.sources.d2vsource
Deblock                   deblock         r6          r6          com.holywu.deblock
DeCross                   decross         v1          v1          com.nodame.decross
DeLogo                    delogo          v0.4        v0.4        in.7086.delogo
Descale                   descale         r2          r2          tegaf.asi.xe
DFTTest                   dfttest         r4          r4          com.holywu.dfttest
degrainmedian             dgm             v1          v1          com.nodame.degrainmedian
ContinuityFixer           edgefixer       V6          V6          com.monos.edgefixer
EEDI2                     eedi2           r7          r7          com.holywu.eedi2
fillborders               fb              v1.0        v1.0        com.nodame.fillborders
*FFmpegSource2             ffms2           Unknown     2.23        com.vapoursynth.ffms2
FFT3DFilter               fft3dfilter     R1          R1          systems.innocent.fft3dfilter
*FFTW3 Library             fftw3_library   Unknown     3.3.5       org.fftw.fftw3
FluxSmooth                flux            v2          v2          com.nodame.fluxsmooth
fmtconv                   fmtc            Unknown     r20         fmtconv
vcfreq                    freq            2016-05-12  2016-05-12  in.vcmohan.freq
Fix-Telecined-Fades       ftf             r5          r5          com.deinterlace.ftf
AddGrain                  grain           r6          r6          com.holywu.addgrain
IT                        it              v1.2        v1.2        in.7086.it
KNLMeansCL                knlm            v1.1.1      v1.1.1      com.Khanattila.KNLMeansCL
MiniDeen                  minideen        v1          v1          com.nodame.minideen
ReadMpls                  mpls            r3          r3          com.holywu.readmpls
MSmoosh                   msmoosh         v1.1        v1.1        com.nodame.msmoosh
MVTools                   mv              v20         v20         com.nodame.mvtools
MVTools (float)           mvsf            Unknown     r9          com.nodame.mvsf
NNEDI3                    nnedi3          v11         v11         com.deinterlace.nnedi3
NNEDI3CL                  nnedi3cl        r7          r7          com.holywu.nnedi3cl
NNEDI3 Weights            nnedi3_weights  r1          r1          com.deinterlace.nnedi3.weights
QRCodeSource              qr              Release_1.0.0.0 Release_1.0.0.0 net.bigjungle.qr
Retinex                   retinex         r3          r3          com.invalid.identifier.retinex
RGVS (float)              rgsf            r5          r5          com.nodame.rgsf
SmoothUV                  smoothuv        v2          v2          com.nodame.smoothuv
SSIQ                      ssiq            v1.0        v1.0        com.nodame.ssiq
TCanny                    tcanny          r10         r10         com.holywu.tcanny
TComb                     tcomb           v3          v3          com.nodame.tcomb
TDeintMod                 tdm             r10         r10         com.holywu.tdeintmod
TimeCube                  timecube        r1          r1          day.simultaneous.4
TempLinearApproximate     tla             r3          r3          denoising.temporal.templinearapproximate
Tonemap                   tonemap         R1          R1          com.ifb.tonemap
vctrans                   trans           2015-09-10  2015-09-10  in.trans.vcm
TTempSmooth               ttmpsm          r3          r3          com.holywu.ttempsmooth
VagueDenoiser             vaguedenoiser   r2          r2          com.holywu.vaguedenoiser
vcmod                     vcmod           2017-10-17  2017-10-17  in.vcmohan.mod
vcmove                    vcmove          2016-04     2016-04     in.vcmohan.move
VSFilter                  vsf             r2          r2          com.holywu.vsfilter
VSFilterMod               vsfm            r5          r5          com.holywu.vsfiltermod
W3FDIF                    w3fdif          r1          r1          com.holywu.w3fdif
AWarpSharp2               warp            v4          v4          com.nodame.awarpsharp2
Yadifmod                  yadifmod        r10         r10         com.holywu.yadifmod
ZNEDI3                    znedi3          r1          r1          xxx.abc.znedi3

Bug or user fail?

vsrepo says my hash is wrong.
But the 047.. hash is correct! I think vsrepo would be confused because the file name has a .model at the end?

Exception: Hash mismatch for model/model_V8a.model got e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 but expected 047ff7bfd0b51bdd51c35a6623bebe07c7b925a537ca219c8efd2be80370d683

Also .\vsrupdate.py -p vmaf_models update-local don't really work if I change my version to something else. Had to generate the hashes with my own script.

package:
vmaf_models.zip

Add a URL handler

Add a URL handler so plugins can be selected from a normal website.

For example:
vsrepo://install/havsfunc+otherthing+thirdthing
vsrepo://upgrade/...list...
vsrepo://update
vsrepo://upgrade-all

Obviously all operations would have a confirmation prompt

vsrepo error HTTP Error 404: Not Found

Hello, I ran vsrepo today (for the first time in circa a week) and received the error below.

Suggestions would be appreciated.

.\python.exe .\vsrepo.py -p -t win64 -f -b vapoursynth64\plugins\dll-to-choose-from -s vapoursynth64\scripts installed
Name                      Namespace       Installed   Latest      Identifier
adjust                    adjust          v1          v1          adjust
Bifrost                   bifrost         v2.2        v2.2        com.nodame.bifrost
Bilateral                 bilateral       r3          r3          com.invalid.identifier.bilateral
BM3D                      bm3d            r7          r7          com.vapoursynth.bm3d
Cnr2                      cnr2            v1          v1          com.nodame.cnr2
CTMF                      ctfm            r4          r4          com.holywu.ctmf
D2V Source                d2v             v1.1        v1.1        com.sources.d2vsource
DCTFilter                 dctf            r2          r2          com.holywu.dctfilter
Deblock                   deblock         r6          r6          com.holywu.deblock
DeLogo                    delogo          v0.4        v0.4        in.7086.delogo
DFTTest                   dfttest         r4          r4          com.holywu.dfttest
+DGHDRtoSDR               dghdrtosdr      Unknown     1.9         com.vapoursynth.dghdrtosdr
degrainmedian             dgm             v1          v1          com.nodame.degrainmedian
edi_rpow2                 edi_rpow2       rev29       rev29       edi_rpow2
EEDI2                     eedi2           r7          r7          com.holywu.eedi2
EEDI3m                    eedi3m          r3          r3          com.holywu.eedi3
FFmpegSource2             ffms2           2.23        2.23        com.vapoursynth.ffms2
FFT3DFilter               fft3dfilter     R1          R1          systems.innocent.fft3dfilter
FFTW3 Library             fftw3_library   3.3.5       3.3.5       org.fftw.fftw3
fmtconv                   fmtc            r20         r20         fmtconv
TemporalSoften2           focus2          v1          v1          chikuzen.does.not.have.his.own.domain.focus2
AddGrain                  grain           r6          r6          com.holywu.addgrain
havsfunc                  havsfunc        r30         r30         havsfunc
hnwvsfunc                 hnwvsfunc       v1.33       v1.33       hnwvsfunc
HQDn3D                    hqdn3d          r2.0.1      r2.0.1      com.vapoursynth.hqdn3d
KNLMeansCL                knlm            v1.1.1      v1.1.1      com.Khanattila.KNLMeansCL
muvsfunc                  muvsfunc        v0.2.0      v0.2.0      muvsfunc
MVTools                   mv              v20         v20         com.nodame.mvtools
mvmulti                   mvmulti         r9          r9          mvmulti
MVTools (float)           mvsf            r9          r9          com.nodame.mvsf
mvsfunc                   mvsfunc         r8          r8          mvsfunc
NNEDI3                    nnedi3          v12         v12         com.deinterlace.nnedi3
NNEDI3CL                  nnedi3cl        r7          r7          com.holywu.nnedi3cl
nnedi3_resample           nnedi3_resample git:0983895 git:0983895 nnedi3_resample
nnedi3_rpow2              nnedi3_rpow2    rev3        rev3        nnedi3_rpow2
NNEDI3 Weights            nnedi3_weights  r1          r1          com.deinterlace.nnedi3.weights
Oyster                    Oyster          git:54fe6c3 git:54fe6c3 oyster
Plum                      Plum            git:f5d40e2 git:f5d40e2 plum
Retinex                   retinex         r3          r3          com.invalid.identifier.retinex
RGVS (float)              rgsf            r5          r5          com.vapoursynth.removegrainsf
SangNom                   sangnom         r40         r40         com.mio.sangnom
TCanny                    tcanny          r10         r10         com.holywu.tcanny
TDeintMod                 tdm             r10         r10         com.holywu.tdeintmod
TemporalMedian            tmedian         v1          v1          com.nodame.temporalmedian
TNLMeans                  tnlm            git:22a40af git:22a40af systems.innocent.tnlm
Tonemap                   tonemap         R2          R2          com.ifb.tonemap
TTempSmooth               ttmpsm          r3          r3          com.holywu.ttempsmooth
vcfreq                    vcfreq          2016-05-12  2016-05-12  in.vcmohan.freq
vcmod                     vcmod           2017-10-17  2017-10-17  in.vcmohan.mod
VagueDenoiser             vd              r2          r2          com.holywu.vaguedenoiser
Vine                      Vine            git:a6e68cd git:a6e68cd vine
VSFilter                  vsf             r2          r2          com.holywu.vsfilter
VSFilterMod               vsfm            r5.2        r5.2        com.holywu.vsfiltermod
Waifu2x                   w2xc            r7          r7          com.holywu.waifu2x-w2xc
Waifu2x models            w2xc_models     r7          r7          com.holywu.waifu2x-w2xc.models
W3FDIF                    w3fdif          r1          r1          com.holywu.w3fdif
AWarpSharp2               warp            v4          v4          com.nodame.awarpsharp2
Yadifmod                  yadifmod        r10         r10         com.holywu.yadifmod
ZNEDI3                    znedi3          r1          r1          xxx.abc.znedi3

C:\SOFTWARE\Vapoursynth-x64>.\python.exe .\vsrepo.py -p -t win64 -f -b vapoursynth64\plugins\dll-to-choose-from -s vapoursynth64\scripts upgrade-all
Traceback (most recent call last):
  File ".\vsrepo.py", line 455, in <module>
    inst = upgrade_all_packages(args.force)
  File ".\vsrepo.py", line 368, in upgrade_all_packages
    res = upgrade_files(get_package_from_id(id, True))
  File ".\vsrepo.py", line 346, in upgrade_files
    install_files(p)
  File ".\vsrepo.py", line 288, in install_files
    data = fetch_url_cached(url, p['name'] + ' ' + install_rel['version'])
  File ".\vsrepo.py", line 132, in fetch_url_cached
    data = fetch_ur1(url, desc)
  File ".\vsrepo.py", line 113, in fetch_ur1
    with urllib.request.urlopen(url) as urlreq:
  File "urllib\request.py", line 223, in urlopen
  File "urllib\request.py", line 532, in open
  File "urllib\request.py", line 642, in http_response
  File "urllib\request.py", line 570, in error
  File "urllib\request.py", line 504, in _call_chain
  File "urllib\request.py", line 650, in http_error_default
urllib.error.HTTPError: HTTP Error 404: Not Found

vsrupdate.py can not update directly linked dlls

Check this:

{
	"name": "Warpsharp",
	"type": "VSPlugin",
	"description": "Warpsharp floating point version",
	"github": "https://github.com/IFeelBloated/warpsharp",
	"doom9": "https://forum.doom9.org/showthread.php?t=176796",
	"category": "Other",
	"identifier": "com.zonked.awarpsharp2",
	"namespace": "warpsf",
	"releases": [
		{
			"version": "",
			"published": "",
			"win64": {
				"url": "https://github.com/IFeelBloated/warpsharp/releases/download/r1/warpsharpsf.dll",
				"files": {
					"warpsharpsf.dll": [
						"warpsharpsf.dll",
						"hash"
					]
				}
			}
		}
	]
}

TypeError during installation

...
Successfully installed AddGrain r6
Successfully installed HQDn3D r2
Traceback (most recent call last):
  File "C:\VS\vsrepo\vsrepo.py", line 429, in <module>
    res = install_package(name)
  File "C:\VS\vsrepo\vsrepo.py", line 324, in install_package
    res = install_package(dep)
  File "C:\VS\vsrepo\vsrepo.py", line 327, in install_package
    install_files(p)
  File "C:\VS\vsrepo\vsrepo.py", line 290, in install_files
    data = fetch_url_cached(url, p['name'] + ' ' + install_rel['version'])
  File "C:\VS\vsrepo\vsrepo.py", line 130, in fetch_url_cached
    data = fetch_ur1(url, desc)
  File "C:\VS\vsrepo\vsrepo.py", line 113, in fetch_ur1
    size = int(urlreq.headers['content-length'])
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

OSX and/or Linux support?

OSX is probably more interesting since it's easier to distribute binaries. Opinions and the will to support things welcome.

Report download progress

Maybe a progress bar would be nice to have. Or at least display incremental progress. Preferably without needing to grab extra modules.

Eedi3m install error

python .\vsrepo.py -p install EEDI3m

Fetching: https://github.com/HomeOfVapourSynthEvolution/VapourSynth-EEDI3/releases/download/r3/EEDI3-r3.7z
Traceback (most recent call last):
  File ".\vsrepo.py", line 307, in <module>
    result = install_package(name) or result
  File ".\vsrepo.py", line 272, in install_package
    install_files(p)
  File ".\vsrepo.py", line 245, in install_files
    ref_digest = p['releases'][0][bin_name]['hash'][stripped_fn]
KeyError: 'EEDI3m.dll'

Any simple way to install all packages?

There's no command like install-all.

When I list all package's namespace in one line it shows error.

python.exe vsrepo.py install acrop adjust astdr avsw bezier bifrost bilateral bilateralgpu bm3d cnr2 colorbars colorfade ctfm d2v damb dctf deblock decross dedot delogo descale dfmderainbow dfttest dghdrtosdr dgm DGMVC dpid edgefixer edi_rpow2 eedi2 eedi3m fb ffms2 fft3dfilter fftw3_library fh flux fmtc focus2 ftf fvsfunc grain havsfunc hnwvsfunc hqdn3d it kagefunc knlm lostfunc mcdenoise minideen motionmask mpls msmoosh muvsfunc mv mvmulti mvsf mvsfunc nnedi3 nnedi3cl nnedi3_resample nnedi3_rpow2 nnedi3_weights noisegen oyster plum pp7 qr rainbowsmooth resamplehq retinex rgsf sangnom smoothuv ssiq tcanny tcm tcomb tdm timecube tla tmc tmedian tnlm tonemap trans ttmpsm vcfreq vcmod vcmove vd vfrtocfr vine vmaf vmaf_models vsf vsfm vstaambk w2xc w2xc_models w3fdif warp wss xvs yadifmod znedi3

traceback: hash issue with hnwvsfunc.py

Hello. It seems like a minor issue has arisen:

.\python.exe .\vsrepo.py -p -t win64 -f -b vapoursynth64\plugins\dll-to-choose-from -s vapoursynth64\scripts upgrade-all
Fetching: https://api.github.com/repos/Helenerineium/hnwvsfunc/zipball/v1.31
Traceback (most recent call last):
  File ".\vsrepo.py", line 455, in <module>
    inst = upgrade_all_packages(args.force)
  File ".\vsrepo.py", line 368, in upgrade_all_packages
    res = upgrade_files(get_package_from_id(id, True))
  File ".\vsrepo.py", line 346, in upgrade_files
    install_files(p)
  File ".\vsrepo.py", line 314, in install_files
    raise Exception('Hash mismatch for ' + install_fn + ' got ' + hash_result[1] + ' but expected ' + hash_result[2])
Exception: Hash mismatch for hnwvsfunc.py got e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 but expected e907b1ccdd404082b4ce5235f75bba4583c83d5442cccb11cb2192616f2b0483

Use SHA256

Only the non-github packages remain. Gradual contributions welcome.

Implement github API scraping

Automatically figure out when a new version is available of a package by looking at the github api.

Possibly add automatic support for adding a new release to the package files as well assuming similar binary archive location.

Upgrade error msg

python .\vsrepo.py -p upgrade tcanny

Fetching: https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TCanny/releases/download/r10/TCanny-r10.7z
Successfully installed TCanny r10
Traceback (most recent call last):
  File ".\vsrepo.py", line 335, in <module>
    res = upgrade_package(name, args.force)
  File ".\vsrepo.py", line 310, in upgrade_package
    inst[0] = 1
TypeError: 'tuple' object does not support item assignment

file was "installed" successfully

Add some way to mark packages as discontinued

Some plugins are split into a data package and the actual dll. Like NNEDI3 and waifu2x. When these are combined into one package things become weird since the management doesn't know that the original data package should be uninstalled.

JSON Structure

The files and hash keys should probably be merged since the filename is trivially extractable from the in archive path.

error during install

python.exe vsrepo.py -p upgrade-all -b vapoursynth64\plugins -s ..\Scripts
(used test11 from doom9)

Fetching: https://github.com/HomeOfVapourSynthEvolution/VapourSynth-EEDI3/releases/download/r3/EEDI3-r3.7z
Successfully installed EEDI3m r3
Fetching: https://github.com/HomeOfVapourSynthEvolution/VapourSynth-SangNomMod/releases/download/v0.1-fix/sangnommod_v0.1.fix.zip
Successfully installed SangNomMod v0.1-fix
Fetching: https://api.github.com/repos/HomeOfVapourSynthEvolution/havsfunc/zipball/r30
Successfully installed havsfunc r30
Traceback (most recent call last):
  File "vsrepo.py", line 444, in <module>
    inst = upgrade_all_packages(args.force)
  File "vsrepo.py", line 363, in upgrade_all_packages
    for id in installed_ids:
RuntimeError: dictionary changed size during iteration

g41fun broken

Apparently the script got moved/deleted and can't currently be installed with vsrepo.
Would it be possible to update the link or completely remove the script?

Remove empty tags from package files

Since I've added the possibility to ignore specific releases on github the actual empty tags in the package files should now be replaced with an entry in the ignore list. See yadifmod for an example. This is boring so I don't want to do it myself.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.