I finally upgraded my printers, had been ignoring them for a bit. I'll take a look.
Not in JS, but you could enrich the retrieved information with a call to octoprint.util.is_python_compatible
:
plugins = webresponse.json()
for entry in plugins:
to_check = entry.get("compatibility", dict()).get("python", ">=2.7,<3")
entry["python_compat"] = octoprint.util.is_python_compatible(to_check, python_version="3.6")
return plugins
Do you want to take a look at this first before I merge it?
Gotta admit, I wish I could that as easily in the jekyll code used for serving the repository webpages, I'm currently simply doing string searches and it really makes me unhappy ^^
Making the compatibility information visible in the repository browser indeed makes sense (not only python, but also the OS and such), I'll get on it.
Hi all,
the plugins.json
doesn't include the truth. E.g. in the screenshot above my DLP-Plugin is listed, because the plugin-repository information is not up to date. But the DLP-plugin works with python 3 and OP1.4.
IMHO: We need to improve the content of the plugins.json
and not an additional plugin (don't get me wrong, the "Python3PluginCompatibilityCheck-Plugin" is helpful, but it is just a workaround)
Why not executing a shell-, nodejs-, python- or ruby-script to crawl the compatibility-information, before executing Jekyll.
script:
- python grapCompatibility.py
- bundle exec jekyll build
The script look into each single plugin-repository, parse the __init__.py
file for compatibility-information (beside python, just add the other stuff, like OP-, OS-Version) and build the plugin.json
file with that information.
Just add some default behaviour, if not all compatibility-information could be selected. Just grab the info from the plugin-markdown (but add a hint about the source of the information).
In the future the markdown compatibility-information should be deprecated.
Is this to complicated or did I missed something? (For 60request/h limit, we need to switch to auth-user, then we have 5000request/h) see https://developer.github.com/v3/#rate-limiting
What do you think?
@jneilliii Until this plugin is approved, updating seems to be just installing again from the posted URL. Am I correct?
I believe we are converging on the best possible solution. A short-term, very useful, plugin and a longer-term, probably enhanced, solution in the OctoPrint core.
Since I have one of my own plugins on the list, I'm motivated to get it off. The "oldest" one on my list is DisplayZ owned by none other than our fearless leader. I've looked at the plugin and I think the only change required is to add the compatibility string.
Yes, or in software update section of octoprint force a check for updates under the advanced options at the bottom.
Well, that would be here and here but it sounds like jneiliii's already done pretty much the same (minus the NodeJS).
@OllisGit, Why don't you fix that by submitting the correct information to the plugin repository? If you don't people will never find it in the Plugin Manager in the future anyway.
@foosel, I think it would be better to go ahead and get this merged and I'll investigate this option for a future version update. Need to figure out the best approach for supplying the Python version to check against, probably as part of the API call to the server side. That is of course, unless you decide to do something quick for the Plugin Manager and there is no need for this plugin at all.
Because so far the page is being built by Github Pages and I have no control over the runtime environment and no way to execute additional things or add plugins or anything, so I'd need to change the whole build process, probably into utilizing Github Actions. Not impossible, but also not something done within a day.
Roger, will take care of that tomorrow.
I can't do anything quick because I'd need to put out 1.4.1 for that and I cannot do that yet (seriously, my days are nuts at the moment, ever since this whole pandemic escalated, no idea what's happening, sooo many requests and stuff....)
Where's the source/template/whatever that builds it?
Literally the OctoPrint/plugins.octoprint.org repository. Built by https://pages.github.com/.
Having that build automatically every couple of hours and involve a crawler step with an access key to get around the API restrictions would probably be the way to go. Would need something like GitHub Actions though. I just played around with that for the first time and it's kinda nice.
Great. I'll dig into it a bit in the next few days.
my work fell in love with it (versus AWS CodeBuild), it's fast and does really nice parallel builds.
Almost, thanks for the pointer though, I was able to figure it out and I think it's ready to go with the advanced python version checking. New 0.1.2 version released and should be available in Software Update for anyone that wants to test and already has it installed.
plugins = webresponse.json() for entry in plugins:
to_check = entry.get("compatibility", dict()).get("python", ">=2.7,<3")
entry["python_compat"] = octoprint.util.version.is_python_compatible(to_check, python_version="3.6") return plugins```
Quick question though @foosel, should this be limited to OctoPrint 1.4.0 compatibility, assuming that function was added in that version? If so, I can update the repo PR or you're more than welcome to change that compatibility flag on merge, just let me know.
Looks like I added that method back in 1.3.11, so if that's set as the lower limit it should be fine. I'll set it accordingly on the PR.
Side note: Can't help but find it kinda ironic that the Python3 checker plugin isn't Python 3 compatible
Yeah, figured if you are already in Python 3 you know what's not compatible.
Basically the halting problem- if this code fails, it must be py3
I read a couple of articles about dynamic generation with gh-pages.
Here are the links:
https://help.github.com/en/github/working-with-github-pages/setting-up-a-github-pages-site-with-jekyll and
https://developer.github.com/v3/repos/pages/#request-a-page-build
It looks like that you don't need gh-actions, you can continue using travis-ci.
- Just create a travis-ci scheduler (e.g. once a day)
- travis-script is executed
-- execute the plugin-repo-crawling
-- create json-file with compatible information (comp.json) - include comp.json in Jekyll-build
- commit comp.json result to gh-pages to restart the normal Jekyll-Build page generation
What do you think?
I'm not using travis-ci for the actual page build, it's all github pages Travis on the plugin repo is just for link checking and making sure PRs by plugin authors don't nuke the JSON validity of the feeds.
First version of reporting:
l00ma/OctoPrint-roomTemp no compat line
mic159/octoprint-grbl-plugin missing metadata: None/1.0.2
kennethjiang/OctoPrint-Slicer no compat line
TheSpaghettiDetective/OctoPrint-TheSpaghettiDetective {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
plabric/Octoprint-Plabric {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
Salandora/OctoPrint-EditorCollection no compat line
eliasbakken/octoprint_redeem no compat line
donovan6000/M33-Fio no compat line
n3bojs4/octoprint-LCD1602 no compat line
jim-p/Change_Filament {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-UltimakerFormatPackage {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-YouTubeLive no compat line
jneilliii/OctoPrint-SideBarTempGraph {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
agrif/OctoPrint-InfluxDB {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
bruhmann/OctoPrint-EEprom-MPSelectMini no compat line
jneilliii/OctoPrint-Tasmota {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
cameroncros/OctoPrint-DiscordRemote {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OctoPrint/OctoPrint-Slic3r no compat line
OctoPrint/OctoPrint-MQTT no compat line
adilinden-oss/octoprint-webcamstreamer no compat line
TheLongRunSmoke/OctoPrint-Filetypes no compat line
pastapojken/OctoPrint-Hardwarepwm no compat line
jneilliii/OctoPrint-TerminalCommandsExtended {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
tg44/OctoPrint-Prometheus-Exporter no compat line
eyal0/OctoPrint-MultipleUpload {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
bchanudet/OctoPrint-Octorant {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
FormerLurker/Octolapse no compat line
jneilliii/OctoPrint-MyMiniFactory {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
christophschranz/OctoPrint-PrePrintService no compat line
taxilian/OctoPrint-Twilio no compat line
frenchie4111/complicated-octoprint no compat line
amsbr/OctoPrint-EEprom-Marlin no compat line
banichow/OctoPrint-Atxpihat no compat line
OllisGit/OctoPrint-DisplayLayerProgress {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
fabianonline/OctoPrint-Telegram no compat line
jneilliii/OctoPrint-BLTouch {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
pwnbus/OctoPrint-Progress-Title {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
pokeimon/OctoPrint-ESPurnaRGB no compat line
kontakt/Octoprint-Filament-Reloaded no compat line
arhi/OctoPrint-gcodestatEstimator no compat line
malnvenshorn/OctoPrint-MetadataPreprocessor no compat line
MoonshineSG/OctoPrint-MultiColors no compat line
OctoPrint/OctoPrint-Pushbullet no compat line
mikedmor/OctoPrint_MultiCam {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
markwal/OctoPrint-GPX no compat line
sysadminsh/OctoPrint-M73ETAOverride no compat line
tobeca/OctoPrint-TobecaPlugin no compat line
scottrini/OctoPrint-PrusaLevelingGuide {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
ozgunawesome/OctoPrint-PCA9685LEDStripControl no compat line
markwal/OctoPrint-SnapStream no compat line
google/OctoPrint-TemperatureFailsafe {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
ziirish/OctoPrint-TuyaSmartplug no compat line
LMS0815/OctoPrint-hueCommands {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
waltmoorhouse/OctoPrint-Filamentstorage no compat line
kantlivelong/OctoPrint-PSUControl {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-BedLevelVisualizer {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
mariolukas/OctoPrint-Hangprinter no compat line
amsbr/OctoPrint-Stats no compat line
jasiek/OctoPrint-Cost no compat line
OllisGit/OctoPrint-DeleteAfterPrint {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OctoPrint/OctoPrint-RequestSpinner no compat line
markwal/OctoPrint-PolarCloud no compat line
RomainOdeval/OctoPrint-CrealityTemperature no compat line
kennethjiang/OctoPrint-Anywhere no compat line
xyzaxyz/OctoPrint-Finetunerptr no compat line
jneilliii/OctoPrint-MQTTPublish {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-ipOnConnect {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
thijsbekke/OctoPrint-Pushover no compat line
quanticchaos/OctoPrint-Webcamsb no compat line
jneilliii/OctoPrint-M117NavBar {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
cprasmu/OctoPrint-OrviboS20 no compat line
mtowara/OctoPrint-Gcodebar {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
synman/OctoPrint-Bettergrblsupport no compat line
pkElectronics/OctoPrint-Octoremote no compat line
OctoPrint/OctoPrint-CuraLegacy no compat line
jneilliii/OctoPrint-M117PopUp {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OctoPrint/OctoPrint-FixCBDFirmware {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
kantlivelong/OctoPrint-GCodeSystemCommands no compat line
rlogiacco/UploadAnything {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OllisGit/OctoPrint-AutostartPrint no compat line
jneilliii/OctoPrint-FloatingNavbar {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
tjjfvi/OctoPrint-SlicerSettingsParser no compat line
dmalec/OctoPrint-OctoGlow no compat line
platsch/OctoPrint-Autocalibration no compat line
RomRider/Octoprint-Filament-Revolutions no compat line
jneilliii/OctoPrint-M117SpeechSynthesis {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
deadly667/Octoprint-Filament-Sensor-ng-OrangePi no compat line
Salandora/OctoPrint-EEprom-Repetier no compat line
OctoPrint/OctoPrint-Autoselect no compat line
malnvenshorn/OctoPrint-FilamentManager no compat line
Patronics/OctoPrint-PrinterAlerts no compat line
google/OctoPrint-LEDStripControl {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
cesarvandevelde/OctoPrint-M73Progress {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
Salandora/OctoPrint-SystemCommandEditor no compat line
jneilliii/OctoPrint-TPLinkSmartplug {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
kanocz/octopi_eta_override no compat line
jneilliii/OctoPrint-ActiveFiltersExtended {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
svv2014/OctoPrint-xMatters-integration no compat line
EricHigdon/OctoPrint-RGB_status {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OutsourcedGuru/OctoPrint-GitFiles {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
Salandora/octoprint-customControl no compat line
mmone/OctoprintKlipperPlugin no compat line
birkbjo/OctoPrint-Themeify {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
pablogventura/Octoprint-ETA no compat line
ieatacid/OctoPrint-GcodeEditor {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OctoPrint/OctoPrint-Remove-ttyS-Ports {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
Sebclem/OctoPrint-SimpleEmergencyStop {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
AstroPrint/OctoPrint-AstroPrint {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-BedLevelingWizard {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
benlye/OctoPrint-ActionCommandsPlugin {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
Salandora/OctoPrint-FileManager {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OctoPrint/OctoPrint-FirmwareUpdater {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
b-morgan/OctoPrint-FanSpeedMirror {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OllisGit/OctoPrint-DryRun no compat line
bradcfisher/OctoPrint-ExcludeRegionPlugin no compat line
juniorRubyist/OctoPrint-OctoFlat no compat line
chatrat12/layerdisplay no compat line
OctoPrint/OctoPrint-MalyanConnectionFix {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
gdombiak/OctoPrint-OctoPod {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
MrBreadWater/project-kronos-data-collector no compat line
tjjfvi/OctoPrint-SlicerSettingsTab no compat line
malnvenshorn/OctoPrint-CostEstimation no compat line
electr0sheep/OctoPrint-Cr10_leveling no compat line
marian42/octoprint-preheat {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
devildant/OctoPrint-ShutdownPrinter no compat line
OctoPrint/OctoPrint-Yamlpatcher no compat line
markwal/OctoPrint-PortLister no compat line
BillyBlaze/OctoPrint-FullScreen no compat line
jneilliii/OctoPrint-StatefulSidebar {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
celogeek/OctoPrint-ProgressBasedOnTime {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
OctoPrint/OctoPrint-AutomaticShutdown no compat line
dipusone/OctoPrint-Pushjet no compat line
OctoPrint/OctoPrint-Updatefix-1.2.7 no compat line
Skiepp/GCodeSuperLaserController no compat line
markwal/OctoPrint-ScreenSquish no compat line
stefancandrea/OctoPrint-Thingiverse no compat line
OllisGit/OctoPrint-AutoLogout no compat line
MoonshineSG/OctoPrint-Filament no compat line
draagc/OctoPrint-FilamentEncore no compat line
MoonshineSG/OctoPrint-Mobile no compat line
soundstorm/OctoPrint-BookedScheduler no compat line
1r0b1n0/OctoPrint-Tempsgraph {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
richjoyce/OctoPrint-Slack no compat line
Renaud11232/OctoPrint-Resource-Monitor {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
MoonshineSG/OctoPrint-ActiveFilters no compat line
jneilliii/OctoPrint-TabOrder {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
vitormhenrique/OctoPrint-Enclosure no compat line
BillyBlaze/OctoPrint-TouchUI {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
aerickson/OctoPrint_RepeatingCommand no compat line
ryanneufeld/OctoPrint-EEprom-Marlin no compat line
ieatacid/OctoPrint-TerminalCommands no compat line
da4id/OctoPrint-MyStromSwitch no compat line
OctoPrint/OctoPrint-CommandSplitter no compat line
derPicknicker1/OctoPrint-Mmu2filamentselect no compat line
malnvenshorn/OctoPrint-WebcamTab no compat line
jneilliii/OctoPrint-WemoSwitch {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
zeroflow/OctoPrint-PauseForUserEvent no compat line
aerickson/OctoPrint_Signal-Notifier {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
Booli/OctoPrint-ActionTriggerPlugin no compat line
OctoPrint/OctoPrint-Growl no compat line
Peaches491/OctoPrint-Touchtest no compat line
drdelaney/OctoPrint-RepetierInformer no compat line
jslay88/OctoPrint-Dropbox-Timelapse no compat line
tjjfvi/OctoPrint-IFTTT no compat line
jneilliii/OctoPrint-Domoticz {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
hashashin/OctoPrint-OpiTemp no compat line
paukstelis/OctoPrint-Cancelobject {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
StefanCohen/OctoPrint-Dashboard {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-CustomBackground {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
Renaud11232/OctoPrint-Marlin-Flasher no compat line
johnnyruz/OctoPrint-OctoVox {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
fraschetti/Octoslack no compat line
OctoPrint/OctoPrint-DisplayProgress no compat line
jneilliii/Octoprint-STLViewer {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
AmedeeBulle/StatusLine no compat line
Red-M/Octoprint-Filament-Reloaded no compat line
trunzoc/Octoprint_AutoRemote no compat line
jneilliii/OctoPrint-RTMPStreamer no compat line
gfk76/OctoPrint-Nexmonotifier no compat line
ABL_Expert unsupported host: framagit.org
entrippy/OctoPrint-OctoHue {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
tjjfvi/OctoPrint-BetterHeaterTimeout no compat line
MoonshineSG/OctoPrint-Autoscroll no compat line
eyal0/OctoPrint-PrintTimeGenius {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-DragonOrder {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
ElectricSquid/OctoPrint-PrintTrack no compat line
dattas/OctoPrint-DetailedProgress no compat line
platsch/OctoPNP no compat line
Pinaute/OctoPrint_FreeMobile-Notifier no compat line
MoonshineSG/OctoPrint-TitleStatus no compat line
google/OctoPrint-HeaterTimeout {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
jneilliii/OctoPrint-TasmotaMQTT {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
imrahil/OctoPrint-NavbarTemp {'2.6': False, '2.7': True, '3.3': True, '3.5': True, '3.7': True, '3.8': True}
foosel/OctoPrint-DisplayZ no compat line
Looking good
Do you have plans to post / host this list somewhere? It would be useful to be able to sort / search.