Pipenv Can't install SRTM.py

Issue description
The package SRTM.py is uninstallable by pipenv 2018.10.9. It works on 11.8.0, but I haven't bisected.
root@0726538b9c5a:/app# pipenv install srtm.py
Installing srtm.py…
Collecting srtm-py

Error:  An error occurred while installing srtm.py!
  Could not find a version that satisfies the requirement srtm-py (from versions: )
No matching distribution found for srtm-py

The package installs fine with pip. My hunch is that that . is being replaced with a - for some reason, but this package is only published with a .
Expected result
Package should be installed. The package is installable with pip and with older versions of pipenv
Actual result
⠋Installing 'srtm.py'
$ ['/root/.local/share/virtualenvs/app-4PlAip0Q/bin/pip', 'install', '--pre', '--verbose', '--upgrade', 'srtm-py', '-i', 'https://pypi.org/simple']
Created temporary directory: /tmp/pip-ephem-wheel-cache-jwnpisbl
Created temporary directory: /tmp/pip-req-tracker-tni1fr3_
Created requirements tracker '/tmp/pip-req-tracker-tni1fr3_'
Created temporary directory: /tmp/pip-install-lj4jxf6i
Collecting srtm-py
  1 location(s) to search for versions of srtm-py:
  * https://pypi.org/simple/srtm-py/
  Getting page https://pypi.org/simple/srtm-py/
  Looking up "https://pypi.org/simple/srtm-py/" in the cache
  Request header has "max_age" as 0, cache bypassed
  Starting new HTTPS connection (1): pypi.org:443
  https://pypi.org:443 "GET /simple/srtm-py/ HTTP/1.1" 304 0
  Analyzing links from page https://pypi.org/simple/srtm-py/
    Skipping link https://files.pythonhosted.org/packages/07/48/2d39830d41d0649143c9dd13d432f2bddff3eed62a15238a11e3649ce970/SRTM.py-0.0.1.tar.gz#sha256=d437ba34771aea15ad1f853061e0079463d08cd8f619024b0cbce28e9909ec5b (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/3c/63/62e9e6d0a47341ec1dc6852d8bf7ed05dbfcbdd94627f764fd7bff57e8f1/SRTM.py-0.0.2.tar.gz#sha256=905befd4421217953fc70822fca73997cf20be36ac9f842c874bd47cfbcfb804 (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/5e/68/1e0b1a87945f7827425c11ee5066253cf3b18bbe5fdc0d0ee5ce815684c2/SRTM.py-0.1.0.tar.gz#sha256=099e662eac593d05164e8c08cd02ef884e821d4668b9aafb130e7b8a524deb7e (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/e7/a9/863d72c6bbca504ac8de5507ce3aefc4476025f0dfdd342bd778da5291e0/SRTM.py-0.1.1.tar.gz#sha256=52c607e80e1ba1a964e3be518c5069ad698e8718174d5a0778ee6c927a4e8ee6 (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/6f/f2/b34915a0952827f48db14fee4bee3b6d30a494da03bd6ae62e244d93d394/SRTM.py-0.1.2.tar.gz#sha256=09ae322313dc0a698b7802e79f725a2822a7ebfeb63991725333958b303d7563 (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/53/80/27a17584225df95cb44c3c0ee699d52f7f0cf8ea0c2a8b512b758b973fb0/SRTM.py-0.2.0.tar.gz#sha256=5eb9421d7ad131f8b984e131eee166c1d7df327b7da1d86d8cb7f423e1f3396b (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/a6/e2/339c77c786c0263bc259f01c3abf7d12ac3a19f6d9d1b9505cfb59d7327e/SRTM.py-0.2.1.tar.gz#sha256=72a5afef295d842c637e978bb8ccb12a164bc35628af13577ccc6a207f3721c6 (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/55/43/fb3aeb004d4c6c759ed52450bb26121aa97752079aa760e76dfdee51f35e/SRTM.py-0.2.3.tar.gz#sha256=2301a7b83fbf756e03ac7eccd98bc61ab7d4ee2bbf548cac79ccb131db6f660f (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/ff/c5/ff7d4039a3c66563e79f811b91b11b85f58099da43f1bf2ed5a86228d9c4/SRTM.py-0.2.4.tar.gz#sha256=debf86b63f8f89549eb3f3e3883c336ae756ce3331e4dcf614a973021b3c229f (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/72/d2/2db257f0bdecdf5467c5418bdff3fa67d99a2e332edd5876179b5cef70d3/SRTM.py-0.3.0.tar.gz#sha256=4ade9d44897f6a4df9cf75d04afc22bc428412a7e437a210e8031578e575c861 (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/cd/d9/e75fbca3761b63bbebca09328d3c3f638c31739b4f40c72c5ce536d89c02/SRTM.py-0.3.1.tar.gz#sha256=0e4a8330b27b58cd8b497cedea24790a3129fe60e35c515aadeaf8cb3deca8b9 (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/65/5e/1e2b1b0a68507d2b52a9cd0f832dad94c89b819a6187944e31d0e0c9d9e3/SRTM.py-0.3.2.tar.gz#sha256=08ae42de3e2b76517a476038dfa4078eaff9bf47ed7406d59b630d0af96c842c (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/5f/c1/62180a16dd0ff62276b5e65c5383cb2366d9bc6f70e998ba83a3584770b8/SRTM.py-0.3.3.tar.gz#sha256=d502303ecdea96991e220834bd91b99a08f95cd89de4307ae7bd42bdca278d48 (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
    Skipping link https://files.pythonhosted.org/packages/8a/c3/cc98d146b12174e0bd0209fa613dca21ab529b2820f5347a62b05cb363f8/SRTM.py-0.3.4.tar.gz#sha256=42cce7a63650963c619c15b749e9d754ad8fa56e277b1529865105275f4e3c9b (from https://pypi.org/simple/srtm-py/); Missing project version for srtm-py
Cleaning up...
Removed build tracker '/tmp/pip-req-tracker-tni1fr3_'
Exception information:
Traceback (most recent call last):
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 143, in main
    status = self.run(options, args)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 318, in run
    resolver.resolve(requirement_set)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/resolve.py", line 102, in resolve
    self._resolve_one(requirement_set, req)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/resolve.py", line 256, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/resolve.py", line 209, in _get_abstract_dist_for
    self.require_hashes
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 218, in prepare_linked_requirement
    req.populate_link(finder, upgrade_allowed, require_hashes)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/req/req_install.py", line 164, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.7/site-packages/pip/_internal/index.py", line 621, in find_requirement
    'No matching distribution found for %s' % req
pip._internal.exceptions.DistributionNotFound: No matching distribution found for srtm-py

Error:  An error occurred while installing srtm.py!
  Could not find a version that satisfies the requirement srtm-py (from versions: )
No matching distribution found for srtm-py

Steps to replicate

Create an empty directory.
pipenv install srtm.py

#3013 (and various others)


CI is broken

CI failing due to invalid endpoints
re:
https://github.com/WalletConnect/walletconnect-utils/actions/runs/3437338895/jobs/5731960984

resolved https://github.com/WalletConnect/walletconnect-utils/pull/39


docs: Review and edit the docs files for the new docs website

The following changes are made to this PR:

Reviewed all the files to make sure the tier info is correctly placed for each file.
Added <div class="enterprise-only"> for text that had ENT content.
Changed the note message format to !!! note.
Fixed the rendering issue on ml_tutorials.md
Fixed typos and added admonitions/notes in relevant pages/sections.
Deleted billing.md page.

@huguestennier could you help fix the merge conflict on docs/themes/v2/layout/partials/header.ejs?

@huguestennier could you please review this commit to make sure everything looks good/requires a change?
https://github.com/heartexlabs/label-studio/pull/3253/commits/f3785ddd759017302680b82b9d974c39b7be16ed

I've removed type: guide (line #4) from the following files so the testing pages are not visible on the left nav
another-subpage.md
test-sub-page.md

This page ts+video.md is missing from the docs site. This also looks like a standalone page like the pingone.md file.
https://github.com/heartexlabs/label-studio/blame/develop/docs/source/guide/ts%2Bvideo.md
https://github.com/heartexlabs/label-studio/blame/develop/docs/source/guide/pingone.md
Let me know if the order for these pages to get included in the docs website.

decommission_minio.md is also a standalone page and is not visible on the docs website.

@huguestennier @makseq I've addressed your feedback and also replaced the format for Note messages.
When you get a chance please review this PR and we can merge it. Thank you!

This page ts+video.md is missing from the docs site. This also looks like a standalone page like the pingone.md file. https://github.com/heartexlabs/label-studio/blame/develop/docs/source/guide/ts%2Bvideo.md https://github.com/heartexlabs/label-studio/blame/develop/docs/source/guide/pingone.md
Let me know the order for these pages to get included in the docs website.
The file naming format for ts+video.md is incorrect. I've renamed it as timeseries_video.md.

yes, it should be accessible on demand only


How do I remove the buttons /img2img_setting and /text2img_setup?

any deletion leads to non-compilation of the code

This is set by these lines: https://github.com/capslock/stable-diffusion-bot/blob/main/crates/stable-diffusion-bot/src/bot/mod.rs#L160-L165
If you want to remove all of the buttons, just delete all of those lines. If you want to just remove the settings buttons, those are L161.

thx!
it's worked!


feat(connector): add authorize, capture, void, refund, psync support for Nuvei

Type of Change

[ ] Bugfix
[ ] New feature
[X] Enhancement
[ ] Refactoring
[ ] Dependency updates

Description

Updating support for Nuvei payment gateway
Payment Method: card
Supported payment flows

Authorize
Capture
PSync
Refund
Cancel

Additional Changes

[ ] This PR modifies the database schema
[X] This PR modifies application configuration/environment variables

Motivation and Context

Updating connector cybersource
Extends https://github.com/juspay/hyperswitch/issues/228
How did you test it?

Checklist

[X] I formatted the code cargo +nightly fmt --all
[X] I addressed lints thrown by cargo clippy
[X] I reviewed submitted code
[X] I added unit tests for my changes where possible
[ ] I added a CHANGELOG entry if applicable

Closing this PR in favour of #645


Fix Example

The package name is xfers so there is no need to add a named import because xfers is what wil be imported.

hoo i didnt know that, i thought since it is go-xfers it will become goXfers or something. :+1:


Updated Vanilla Christmas Expanded compat

The mod is one new update every single day until the 24th, so there may be a few more (depending on what's added in those). As it turns out, the feature for the 12th (snow spewer) has a gizmo that needed patching or else will cause desyncs.

I think such high mainteinance mod would be best as a separate mod that depends on mpcompat. Let's see how it goes.


Celo All-Core Dev Call #5

Celo All-Core Devs Call 5

Event Details
When: Thursday, February 25, 2021, 1 PM EST/10 AM PST, 60 minutes max
Where: Celo Zoom Event (Instructions on joining found in the calendar event below)
Calendar Event: Add to your calendar here
Focus: Finalizing Donut Meta Specification
Agenda

CIP 35
Donut overall Hardfork
CIP 36
CIP 34
CIP 32

Please post all relevant proposals below that should be discussed and evaluated

Video of the call: https://youtu.be/acv5bzBpsCE


Move common configurations to TuningConfig

Description

The goal of this PR is to reduce code duplications and redundant code.
It does not affect Druid's UX. Only the internal code structure.

Move common methods that are used in HadoopTuningConfig and in AppenderatorConfig to TuningConfig
Rename rowFlushBoundary in HadoopTuningConfig to maxRowsInMemory to match TuningConfig API

This was already defined as @JsonProperty("maxRowsInMemory"), but the method name did not match TuningConfig API

This PR has:

[X] been self-reviewed.
[X] added documentation for new or modified features or behaviors.
[X] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[ ] added or updated version, license, or notice information in licenses.yaml
[X] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[X] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[X] been tested in a test Druid cluster.

Key changed/added classes in this PR

TuningConfig
AppenderatorConfig
HadoopTuningConfig

I don't seem to be able to retry the failing CI which looks like it was a flaky test.

Thanks, @clintropolis.
I appreciate your help merging this PR.
Please also check out the follow-up PRs: #10593 and/or #10001.


⚠ UdeS website (prod) has degraded performance

In b6f9bff, UdeS website (prod) (https://www.usherbrooke.ca/) experienced degraded performance:

HTTP code: 200
Response time: 1018 ms

Resolved: UdeS website (prod) performance has improved in 758a4b2.


Is the latest plugin applied from the caddy download?

Hi,
First of all, thanks for this excellent jwt plugin for caddy.  I really appreciate it.
I was wondering if the latest version is applied to the official caddy site's download.
I've downloaded caddy today with jwt included and I can confirm receiving a 401 without a valid jwt but the redirect option doesn't seem to be working.
The jwt directive is as below but I still only get 401 Unauthorized page.
jwt {
  path /secret_path
  redirect /login
}

Apologies if my configuration is mistaken.
Any support would help me a lot.
Thanks in advance.

The redirect feature probably isn't included in the latest release from the website.  I just merged that a few weeks ago.  The build server caches the plugins until the next Caddy release comes out.   They are working on a new build server that lets plugin authors trigger a new build, but until that comes out you will have to build Caddy from source to get the latest plugin features.
There are directions for building Caddy at https://github.com/mholt/caddy.  If you build from source and still have problems, let me know.

@BTBurke Thanks for the reply.  So i guess it isn't included at the moment.  I've tried building caddy from source but it didn't succeed in the first try (some error from caddytls).  Well, I guess I'll wait for the next version of caddy. Thanks anyway!  I'll close the issue.


[HOLD for payment 2024-03-07] [$500] Top part of the page becomes darker when user goes to the chats page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: v1.4.40-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause internal team
Slack conversation:
Action Performed:
Pre-requisite: the user must be logged in.

Keep switching between the chats and workspaces pages.
Verify that the top part of the page becomes darker when user goes to the chats page.

Expected Result:
The top part of the page should remain in the same shade of white.
Actual Result:
The top part of the page becomes darker.
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[x] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/38435837/eb807c62-af42-4e55-a94a-0d71b47d32dc

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01ff0ec4f217764dfa
Upwork Job ID:<PHONE_NUMBER>748474368
Last Price Increase: 2024-02-19
Automatic offers:

alitoshmatov | Reviewer | 0
jeremy-croff | Contributor | 0

Proposal
Please re-state the problem that we are trying to solve in this issue.
The app status bar is not the same color on the home screen
What is the root cause of that problem?
The color that is set on the home screen is slightly different than the other screens
What changes do you think we should make in order to solve the problem?
We can update https://github.com/Expensify/App/blob/07d97efe708f6c609c52ed7b1740fc2a249a4947/src/styles/theme/themes/light.ts#L96 to colors.productLight100. There's a corresponding dark theme that also needs to be updated to backgroundColor: colors.productDark100, for that screen.
What alternative solutions did you explore? (Optional)

https://github.com/Expensify/App/pull/32512/files updated some of the theme background colors without adjusting the status bar

@alitoshmatov - keep us posted if this proposal will fix the issue. Thanks!

@jeremy-croff Thank you for proposal, can provide some screen shots of your solution working. Also does changing this color effect other places of the app?

https://github.com/Expensify/App/assets/157416545/451b9d3a-26a7-4b25-9982-f7bcd05bee70
This change is scoped to the home screen route.

Catching up from being OOO, @alitoshmatov any update to @jeremy-croff's reply? Thanks!

That looks great, let's go with @jeremy-croff 's proposal
C+ reviewed 🎀 👀 🎀

@yuwenmemon we need your review here. Thanks!

Acknowledged, will be able to provide this within the next 24hr. Thank you!

Awesome, looks like automation kicked in here.

Heads up, I will be offline until Tuesday, March 5, 2024. I will not be actively watching over this GitHub during that period. If anything urgent is needed here, please ask for help in the Open Source Slack Room-- thanks!

I've updated the payment summary here https://github.com/Expensify/App/issues/36385#issuecomment-1972145512 for the following job in Upwork:
https://www.upwork.com/jobs/~01ff0ec4f217764dfa
Closing since everyone has been paid here.


Search not working with Promise

Hey, great library. Nice with automatic rate limiting.
Database searching with Promise is not working for me however. For example
db.search('skrillex', { type: 'label' }, (err, res) => {
  console.log(res);
})

is returning just five items like their own API with https://api.discogs.com/database/search?q=skrillex&type=label&token=[redacted]. However if I am using a Promise like
db.search('skrillex', { type: 'label' })
  .then(console.log)

I get 870 items with all sorts of different results. Basically everything with Skrillex I assume.
Should it instead of this
if(arguments.length <= 2){
	if(typeof params === 'function'){ callback = params; } // No extra search params, the callback is the second function param
}else{
	obj = params;
}

just be a simple && check
if(arguments.length <= 2 && typeof params === 'function'){
	callback = params; // No extra search params, the callback is the second function param
}else{
	obj = params;
}

since the length is <= 2 but params is not a function, obj should just be set to params. I will create a pull request for you, just checking first that the logic is sound.

It's slightly more subtle. This way obj will end up being undefined when you just add 1 param. Will add a fix today. Thanks for reporting!

That's true, good catch. I see you have fixed it, very nice! Thank you.


Mouse detected by ratbagd but does not show up in ratbagctl (SteelSeries Rival 310)

Information

ratbagd version (ratbagd --version): 0.17
Distribution: Fedora 39 KDE
Kernel version (ex. uname -srmo): Linux 6.7.4-200.fc39.x86_64 x86_64 GNU/Linux

Device info (if applicable): SteelSeries Rival 310
Can't generate ratbagctl info because device isn't detected.
Describe the bug
I have a SteelSeries Rival 310 which is working correctly and showing up in settings as well as in lsusb. When I run sudo ratbagd --verbose=raw the mouse seems to be detected correctly, but when the daemon is running, it does not show up with ratbagctl and it returns No devices available.
To Reproduce
Steps to reproduce the behavior:

Connect SteelSeries Rival 310 mouse to PC.
Run sudo ratbagd --verbose=raw and note that mouse appears and driver is loaded.
Start the ratbagd service with sudo systemctl start ratbagd.service
Run ratbagctl and note that No devices available is displayed.

Logs
Please start the daemon with verbosity and reproduce the issue.
First make sure it isn't running already.
$ ratbagd --verbose=raw
Initializing libratbag
ratbag debug: New device: DCMT Technology USB Lavalier Microphone
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: No data file found for 31b2:0011
ratbag debug: New device: Creative Technology Ltd Sound Blaster X4
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: No data file found for 041e:3278
ratbag debug: New device: SteelSeries SteelSeries Rival 310 eSports Mouse
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: device assigned driver steelseries
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw1'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw3'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw4'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: - HID report ID 01
ratbag debug: - HID report ID 02
ratbag debug: New device: SteelSeries SteelSeries Rival 310 eSports Mouse
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: device assigned driver steelseries
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw1'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw3'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw4'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: - HID report ID 01
ratbag debug: - HID report ID 02
ratbag debug: New device: SteelSeries SteelSeries Rival 310 eSports Mouse
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: device assigned driver steelseries
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw1'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw3'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: hidraw info: bus 0x03 vendor 0x1038 product 0x1720
ratbag debug: SteelSeries SteelSeries Rival 310 eSports Mouse is device '/dev/hidraw4'.
ratbag debug: Parsing HID report descriptor
ratbag debug: Parsing HID report descriptor
ratbag debug: - HID report ID 01
ratbag debug: - HID report ID 02
ratbag debug: New device: Keychron Keychron C1
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: No data file found for 05ac:024f
ratbag debug: New device: Keychron Keychron C1
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: No data file found for 05ac:024f
DBus server ready

Additional context
This is the status of ratbagd service and what I get when ratbagctl is run
$ systemctl status ratbagd.service
● ratbagd.service - Daemon to introspect and modify configurable mice
     Loaded: loaded (/usr/lib/systemd/system/ratbagd.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Thu 2024-02-15 23:25:53 PST; 7s ago
   Main PID: 9566 (ratbagd)
      Tasks: 1 (limit: 18996)
     Memory: 636.0K
        CPU: 23ms
     CGroup: /system.slice/ratbagd.service
             └─9566 /usr/bin/ratbagd

Feb 15 23:25:53 home-fedora systemd[1]: Starting ratbagd.service - Daemon to introspect and modify configurable mice...
Feb 15 23:25:53 home-fedora systemd[1]: Started ratbagd.service - Daemon to introspect and modify configurable mice.
$ ratbagctl
No devices available.

I have tried changing the USB port where the mouse is connected but have the same issue. Since ratbagctl doesn't detect the mouse, it's not detected by Piper either. However, I'm able to see it in the KDE settings. Also attaching output of lsusb if it helps.
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 31b2:0011 DCMT Technology USB Lavalier Microphone
Bus 001 Device 003: ID 041e:3278 Creative Technology, Ltd Sound Blaster X4
Bus 001 Device 004: ID 05a3:9331 ARC International Camera
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 2109:2815 VIA Labs, Inc. USB2.0 Hub
Bus 003 Device 004: ID 05ac:024f Apple, Inc. Aluminium Keyboard (ANSI)
Bus 003 Device 005: ID 1038:1720 SteelSeries ApS Mouse
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 002: ID 2109:0815 VIA Labs, Inc. USB3.0 Hub

Hi! In short, this is a duplicate of #1438. Until a new libratbag release I suggest you compiling from source or trying out rivalcfg.

Thank you for your time! I did try to compile from source but I couldn't get ratbagd to start. It gave me a permission denied error despite using sudo. The systemd service was not found either.

Pay attention to install prefix, I'd guess that's the issue for you:
https://github.com/libratbag/libratbag/wiki/Building-from-source#overwriting-the-system-installation
Also note, for master branch of librabag you would also need master branch of Piper.
https://github.com/libratbag/piper/wiki/Installation#building-from-source
Build dependencies for Ubuntu for reference, if you run into trouble with them:https://github.com/libratbag/piper/blob/d553d97b3e5517441771044bf24e1c4eddfa74f6/.github/workflows/main.yml#L6-L10

I did follow the steps from the guide you told me and had used the /usr prefix, but that didn't seem to fix the issue. This is what I'm seeing:
$ sudo ratbagd
[sudo] password for ######:
ratbagd error: Failed to start ratbagd: Permission denied
$ ratbagctl
Unable to connect to ratbagd: No one currently owns org.freedesktop.ratbag1

This appears to be similar to issue #781 but that seems to be closed because the author did not wish to pursue it further.

I did follow the steps from the guide you told me and had used the /usr prefix, but that didn't seem to fix the issue. This is what I'm seeing:
$ sudo ratbagd --verbose=raw
[sudo] password for ######:
Starting ratbagd version 0.17 (API version 2)
Initializing libratbag
ratbagd error: Failed to start ratbagd: Permission denied
$ ratbagctl
Unable to connect to ratbagd: No one currently owns org.freedesktop.ratbag1

This appears to be similar to issue #781 but that seems to be closed because the author did not wish to pursue it further.
Here are the contents of /usr/share/dbus-1/system.d/org.freedesktop.ratbag1.conf:
<?xml version="1.0"?> <!--*-nxml-*-->
<!DOCTYPE busconfig PUBLIC
        "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
        "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

<busconfig>

        <policy user="root">
                <allow own="org.freedesktop.ratbag1"/>
                <allow send_destination="org.freedesktop.ratbag1"/>
                <allow receive_sender="org.freedesktop.ratbag1"/>
        </policy>

        <policy context="default">
                <allow send_destination="org.freedesktop.ratbag1"/>
                <allow receive_sender="org.freedesktop.ratbag1"/>
        </policy>

</busconfig>

Edit: Added more context.

Ok, I fixed this! Reloaded the dbus service and it started working. Leaving this here for anyone else that comes across this issue:
sudo systemctl reload dbus.service

Thank you for your time and help!


feat: Improved tesseract OCR performance

What would you like to be added:
Improved text recognition within screenshots.
Why is this needed:
Tesseract is pretty great, but sometimes doesn't recognise text on screenshots. We already scale the screenshot up 3x before running tesseract-ocr on it. That improved text recognition tremendously. But I think there's more we could do.
Additional context:

It's possible to train tesseract to create our own dataset. Is that worthwhile? Is it worth training tesseract on the Ubuntu font for example?

Recognizing text in screenshots is, I think, a fundamentally different problem to OCR, unless the text is huge. Unfortunately it usually isn't in screenshots: (#29).
Tesseract is also seems very sensitive to small changes in the input: (#19, #30). This is likely a result of the way it performs binarization. Doing this in a smarter way, one that is optimized for screenshots rather than scans and photographs, would probably give better improvements than training on the Ubuntu font.

I agree, it's not optimal.
So far though, it seems the main issue is text with a drop-shadow on a coloured background. Title bars and text within windows, where the background is a uniform colour, tesseract has better success with.
As a test, I thought I'd try a few things, including the following to see if tesseract had a better time.

Scaling the screenshot up to ludicrous resolutions
Iterating through all the tesseract options (supported in the build I use)
Chopping the image up into sections (e.g. 2x2, 4x4)

Here's a script I threw together to test on the problematic "Install Xubuntu" example @ali1234 gave in #29
#!/bin/bash
# Takes two parameters, one is an image file and the other is a text string in quotes
# We have a bunch of nested loops which iterate over the various tesseract ocr options
# running each in turn, and producing a text file with the output of each run
# We grep for the text string in the resulting text that tesseract produces

# The first parameter is the image file to be processed
image=$1
imagename=$(basename $image)

# The second parameter is the text string to search for
text=$2

# The number of tiles to split the image into both horizontally and vertically
tiles=4

# Create a temporary directory to store the output of the tesseract runs which is datestamped
workdir=$(date +%Y%m%d-%H%M%S)

mkdir $workdir

for x in $(seq 0 $((tiles-1))); do
    for y in $(seq 0 $((tiles-1))); do
        for scale in 100 200 300 400 500; do
            scaledimage="$workdir"/scaled-"$scale"-"$imagename"
            convert "$image" -resize "$scale"% "$scaledimage"
            width=$(identify -format "%w" "$scaledimage")
            height=$(identify -format "%h" "$scaledimage")
            tilewidth=$((width/tiles))
            tileheight=$((height/tiles))
            xoffset=$((x*tilewidth))
            yoffset=$((y*tileheight))
            tileimage="$workdir"/tile-"$x"-"$y"-"$scale"-"$imagename"
            convert "$scaledimage" -crop "$tilewidth"x"$tileheight"+"$xoffset"+"$yoffset" "$tileimage"
            for psm in 4 5 6 7 8 9 10 11 12 13; do
                for oem in 3; do
                    echo "Running tesseract with scale $scale%, psm $psm, oem $oem on tile $x $y"
                    if ! tesseract --loglevel ALL -c tessedit_write_images=true --psm "$psm" --oem "$oem" "$tileimage" $workdir/out-tile-"$x"-"$y"-"$scale"-"$psm"-"$oem"; then
                        echo "tesseract failed"
                        exit 1
                    fi
                    grep -q "$text"  $workdir/out-tile-$x-$y-$scale-$psm-$oem.txt
                    if [ $? -eq 0 ]; then
                        echo "Found $text in $workdir/out-tile-$x-$y-$scale-$psm-$oem.txt"
                    fi
                done
            done
        done
    done
done

What seemed to work best was chopping the image up. Now, this won't work every time, especially if the text we're looking for is cut in half horizontally or vertically on the split.
grep Xubuntu 20240519-143916/*.txt
20240519-143916/out-tile-0-1-100-11-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-100-12-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-100-4-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-100-6-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-200-11-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-200-12-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-200-4-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-200-6-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-300-11-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-300-12-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-300-4-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-300-6-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-400-11-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-400-12-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-400-4-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-400-6-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-500-11-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-500-12-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-500-4-3.txt:Install Xubuntu
20240519-143916/out-tile-0-1-500-6-3.txt:Install Xubuntu

Scaling the image wasn't needed at all. Just cropping out all the other stuff, and letting tesseract focus on one thing. This is the successful crop that it used (0,1, first one across, second tile down of four):
(Note I had to convert from ppm to png before uploading, so some compression may have occurred which changes this image)

It might be valuable to allow tesseract a few goes at each screenshot, and only as an option where we know things are problematic (such as poorly dithered wallpapers, bad anti-aliasing, drop-shadows and the like). Because I imagine that once we get past this first screen, most of the rest of the test would run just fine - unless Xubunu has some wacky installer with plasma backgrounds :D

What about independently analysing each channel? eg picking only the red channel might help for Xubuntu, it would give this:

I assume this would have to be done outside tesseract but this is the kind of thing I meant about "smarter binarization".

The problem as I see it is that tesseract's binarization is too smart. It is designed for scans which often have the problem that brightness varies over the image. It's possible for the background in one part of the image to be darker than the text in another part, like in this example:
https://tesseract-ocr.github.io/tessdoc/images/binarisation.png
So it has to use some kind of adaptive thresholding. That only works well at high resolution because it introduces fringing.
For screenshots we can use simpler methods - take a single channel, or take an absolute threshold across the entire image, because it is unlikely the text we are looking for is going to vary all that much, if at all. The background might vary but it will never be simultaneously brighter and darker than the text.

The other problem is that tesseract expects the image to be mostly filled with text, rather than mostly empty space with just a few words scattered around. This is likely why dividing up the image helps. This could be automated by looking at the image gradient to find regions that are not "flat" empty space, then partitioning into rectangles of roughly equal gradient.

I had the idea to try ESRGAN trained for text and the result looks really good. I would expect this to perform much better than simple image scaling. Downside is you need CUDA to run it in a reasonable time.

For reference, the 8x ESRGAN upscale takes about 2 minutes on i7 6700 or about 4 seconds on RTX 2070.

This improved the output for #30 a bit. The clock was recognized, and the words are not run together. Unfortunately it did not help for #29 at all. There is just too little text on the page for tesseract to figure out what is going on.
Next thing to try is manual text detection.

For reference this is what other projects have done.
NixOS Testing suite has a similar function to test graphical applications, they use imagemagick to transform the image to  a tiff and a few other things I'm not familiar with, and there is a second option to return different interpretations of the text.
I don't have any first hand experience for how good with a little searching I did see one comment about it being unreliable for small fonts but could not find any other comments complaining about the performance.


Service List Genre should be selected from defined values

The Genre (or Genres) for a Service List should be taken from any of the following classification schemes (branch and leaf elements are allowed)

TV-Anytime ContentCS
TV-Anytime FormatCS
DVB-I ContentSubjectCS

Paul, this should be done in tag 0.17


Captured Named Groups Always return nulls for indexes above 0

I tested the following code
Matcher matcher = Pattern.compile("(?x)" + "(?(DEFINE)" + "(?<sum> (?'summand')(?:\\+(?'summand'))+ )"                 + "(?<summand>  (?'product') | (?'number') )" + "(?<product> (?'factor')(?:\\*(?'factor'))+ )"                 + "(?<factor>(?'number') )" + "(?<number>\\d++)" + ")" + "(?'sum')").matcher("5+6*8");  matcher.matches();
But the following line was simply returning NULL:
System.out.Println(matcher.group("number"));
Please what am I getting wrong?

Hello Matthew,
There is no group called number on the lowest level.
Number is only a group nested in another group.
You would have to inspect the capture tree to see what the group number
actually captured!
All the best,
Florian
All
On Sat, Jan 9, 2021 at 1:01 PM Matthew Elisha<EMAIL_ADDRESS>wrote:

I tested the following code
Matcher matcher = Pattern.compile("(?x)" + "(?(DEFINE)" + "(?
(?'summand')(?:\+(?'summand'))+ )" + "(? (?'product') |
(?'number') )" + "(? (?'factor')(?:\(?'factor'))+ )" +
"(?(?'number') )" + "(?\d++)" + ")" +
"(?'sum')").matcher("5+68"); matcher.matches();
But the following line was simply returning NULL:
System.out.Println(matcher.group("number"));
Please what am I getting wrong?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/florianingerl/com.florianingerl.util.regex/issues/10,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE6YEWSHULHKJCAHBKTH3GLSZBAP3ANCNFSM4V3REJNQ
.

Hello Matthew,
There is no group called number on the lowest level.
Number is only a group nested in another group.
You would have to inspect the capture tree to see what the group number
actually captured!
All the best,
Florian
All
On Sat, Jan 9, 2021 at 1:01 PM Matthew Elisha<EMAIL_ADDRESS>wrote:

I tested the following code
Matcher matcher = Pattern.compile("(?x)" + "(?(DEFINE)" + "(?
(?'summand')(?:\+(?'summand'))+ )" + "(? (?'product') |
(?'number') )" + "(? (?'factor')(?:\(?'factor'))+ )" +
"(?(?'number') )" + "(?\d++)" + ")" +
"(?'sum')").matcher("5+68"); matcher.matches();
But the following line was simply returning NULL:
System.out.Println(matcher.group("number"));
Please what am I getting wrong?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/florianingerl/com.florianingerl.util.regex/issues/10,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE6YEWSHULHKJCAHBKTH3GLSZBAP3ANCNFSM4V3REJNQ
.

Thanks alot.

Thanks alot.

Hi,
I still have an issue pls. The captured group value for all groups above index 1 return null. Is that normal?
How can I access the captured groups by name using the following pattern:
Matcher matcher = Pattern.compile("(?x)" + "(?(DEFINE)" + "(?<sum> (?'summand')(?:\\+(?'summand'))+ )"                 + "(?<summand>  (?'product') | (?'number') )" + "(?<product> (?'factor')(?:\\*(?'factor'))+ )"                 + "(?<factor>(?'number') )" + "(?<number>\\d++)" + ")" + "(?'sum')").matcher("5+6*8");  matcher.matches();

Hi,
I still have an issue pls. The captured group value for all groups above index 1 return null. Is that normal?
How can I access the captured groups by name using the following pattern:
Matcher matcher = Pattern.compile("(?x)" + "(?(DEFINE)" + "(?<sum> (?'summand')(?:\\+(?'summand'))+ )"                 + "(?<summand>  (?'product') | (?'number') )" + "(?<product> (?'factor')(?:\\*(?'factor'))+ )"                 + "(?<factor>(?'number') )" + "(?<number>\\d++)" + ")" + "(?'sum')").matcher("5+6*8");  matcher.matches();

Hello,
Any response to the above please?

Hello,
Any response to the above please?

You have to inspect the capture tree to see what these groups captured!
On Mon, Jan 11, 2021 at 9:24 AM Matthew Elisha<EMAIL_ADDRESS>wrote:

Hello,
Any response to the above please?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/florianingerl/com.florianingerl.util.regex/issues/10#issuecomment-757703839,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE6YEWRH4L42CN26IFPH5MLSZKYTXANCNFSM4V3REJNQ
.

You have to inspect the capture tree to see what these groups captured!
On Mon, Jan 11, 2021 at 9:24 AM Matthew Elisha<EMAIL_ADDRESS>wrote:

Hello,
Any response to the above please?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/florianingerl/com.florianingerl.util.regex/issues/10#issuecomment-757703839,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE6YEWRH4L42CN26IFPH5MLSZKYTXANCNFSM4V3REJNQ
.

Just to be sure: does it work for named groups also?
According testcase maybe a good idea.

Hello Reissner,
I just managed to deploy a new version where the bug is fixed.
It is version 1.1.11 and can now be downloaded from Maven Central.
This was a lot of work
All the best,
Florian

New version 1.1.11 can be downloaded from Maven central where the bug is fixed.


PCF8575  Latched Input change?    If the main-program, that work with FLAG or Counter from Interrupt, is to slow

Can I use the PCF8575 to reliably record short push-button commands to GND? Even if the program calls the read16() command more slowly.   I use 16 buttons and the Arduino works at limit ;-)
It is not possible with the standard interrupt with flag- or counter-setting, as the current input state is always read out later when reading with read16().
Read16() is always a snapshot when reading.
Is there no latch input function so that the cause of the interrupt can be detected?
I only know the possibility to use read16() in the interrupt routine and to store between, which is unattractive prog-style!?
I once read that the PCF8575 only resets the interrupt trigger when it is read out. But I don't know a SW-solution for this.

Thanks for reporting the issue through Github!

Checked the datasheet and the PCF8575 only has an OLAT = Output LATCH to hold the state.
Also checked the datasheet of the MCP23017 and it does not support input latching either.
So you need to add extra electronics that hold the state.
You might consider using a MCP23S17 (SPI version) which is faster than the PCF8575 (SPI need 4 IO lines)
Expect this one can be read under interrupt.

Have a look at SX1509 = 16-channel I2C GPIO with LED Driver and Keypad Engine

https://cdn.sparkfun.com/datasheets/BreakoutBoards/sx1509.pdf
https://github.com/sparkfun/SparkFun_SX1509_Arduino_Library

It can read a keypad so it should have some input latch

@Torsten61
Is your question answered?
If so you may close the issue.

Thanks and close


coco_train_ids.npy

where is coco_train_ids.npy？

Can you look at here？

Please!!!!!!!!!!

Hey! We updated the annotations link, now inside the zip file there is also the required file. Sorry for the inconvenience.


Add more customizations to form field

I needed to add some more customizations for i18n to your project. I'm using my local fork but I believe my changes are good for the community. Feel free to change as you like.

Thanks a lot @PauloLeal for your contribution.


Add support for receiving kernel audit messages

This library already has other netlink code, so adding support for receiving audit messages from the kernel over netlink shouldn't take a large effort. But parsing and enriching the data will take more effort.

[x] Add an audit_set_pid function to register our process with the kernel to receive events. #66
[x] Add a function for receiving events. #66
[x] Add the ability to parse the key/value data from the string. #68
[x] Enrich data with table lookups (e.g. arch to name, syscall to name, hex decoding, sockaddr decoding, etc.). #68
[x] Add functions for enabling audit, setting the rate limit, and setting the backlog limit. #69
[ ] Add the ability to detect dropped events.
[ ] Add a mechanism to set rules (either natively or by executing auditctl).
[ ] Add UID enrichment.

The audit code is moving to github.com/elastic/go-libaudit where it will have better visibility as a library.


1.3->1.4 class event handler lifespan change

I'm trying to upgrade an application from pyglet 1.3 to 1.4 (https://github.com/samcv/brainworkshop/issues/15),
an I've got a different behavior for event handler that are tied to a class:
now with 1.4 the class that holds the event handler is destroyed.
I made a minimal script to show this:

with 1.3 the Menu class is not destroyed until the app closes, and keyboard events are caught
with 1.4 the Menu class is destroyed right on start, so no keyboard event are caught

import pyglet

window = pyglet.window.Window(width=640, height=480)

class Menu:
    def __del__(self):
        print('Menu.del')
    def __init__(self):
        window.push_handlers(self.on_key_press)
    def on_key_press(self, key, mod):
        print("Key Pressed")
        return pyglet.event.EVENT_HANDLED

Menu()
pyglet.app.run()

Is this an intentional change ? Or does my app rely on undefined behavior ?

Not a pyglet developer, but I think is an intentional change, see issue #43
If you are going from 1.3 to 1.4 you may need to fix some other things, see
https://github.com/pyglet/pyglet/blob/master/RELEASE_NOTES#L76
and
https://github.com/los-cocos/cocos/blob/master/docgen/compatibility_notes.txt#L18

Thanks Claudio.
Yes, the big change is that the event system now only holds weak references to handlers. https://docs.python.org/3.5/library/weakref.html
This was a necessary change to avoid garbage collection issues with deleted objects.
All you should need to do is keep a reference to the objects. In your code, try doing menu = Menu().  This will create a reference, and prevent your instance from falling out of scope.

thanks!


update ghost from 1.x to 2.x in docker

docker exec -it blog bash
su node -c "ghost update"

bring me some error
Running sudo command: systemctl is-active ghost_undefined
A ProcessError occurred.

Message: Command failed: /bin/sh -c sudo -S -p '#node-sudo-passwd#'  systemctl is-active ghost_undefined
/bin/sh: 1: sudo: not found

Exit code: 127

Debug Information:
    OS: linux, v4.16.0-999-generic
    Node Version: v8.11.4
    Ghost-CLI Version: 1.9.1
    Environment: production
    Command: 'ghost update'

Additional log info available in: /home/node/.ghost/logs/ghost-cli-debug-2018-08-27T06_40_43_725Z.log

Try running ghost doctor to check your system for known issues.

Please refer to https://docs.ghost.org/v1/docs/troubleshooting#section-cli-errors for troubleshooting.

try
docker exec -u node blog ghost update

is not ok

I try to mv sudo to the docker, it is ok
but new error:
- Checking for Ghost-CLI updates
Running sudo command: systemctl is-active ghost_undefined
/usr/local/lib/node_modules/ghost-cli/lib/ui/index.js:132
            throw new errors.SystemError('Prompts have been disabled, please provide options via command line flags');
            ^

Error: Prompts have been disabled, please provide options via command line flags
    at UI.prompt (/usr/local/lib/node_modules/ghost-cli/lib/ui/index.js:132:19)
    at Socket.cp.stderr.on (/usr/local/lib/node_modules/ghost-cli/lib/ui/index.js:212:22)
    at emitOne (events.js:121:20)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at Pipe.onread (net.js:597:20)

You should be able to update by simply mounting your old 1.0-based volume on a Ghost 2.0 image (and it should auto-upgrade on first run).  It would probably be prudent for us to add a note about this to the docs.
cc @acburdine (I might be mistaken!)

That doesn't work. I don't have the detailed logs here, but it turns out the migration is not happening and the server won't start because the DB is missing the new comment_id field.

Hmm...it should work the way @tianon described, but I'll do some testing and check.

@crespum I checked locally and can't reproduce - the ghost v2 image migrates and starts fine when a ghost v1 content folder (using sqlite3 as the db) is mounted into it.

That's strange, I've gathered the logs I get (first I pull v2 image, then I stop and remove v1 container and finally I run v2):
root@debian:~# docker pull ghost
root@debian:~# docker stop ghost-blog
ghost-blog
root@debian:~# docker rm ghost-blog
ghost-blog
root@debian:~# docker run --restart always --name ghost-blog -d -p 6001:2368 -v /home/ghost/ghost-blog:/var/lib/ghost/content ghost
891cc5e9194de27...9cab5087970
root@debian:~# docker logs ghost-blog
[2018-08-29 07:13:12] WARN Theme's file locales/en.json not found.
[2018-08-29 07:13:13] INFO Blog is in maintenance mode.
[2018-08-29 07:13:13] INFO Ghost is running in production...
[2018-08-29 07:13:13] INFO Your blog is now available
[2018-08-29 07:13:13] INFO Ctrl+C to shut down
[2018-08-29 07:13:13] INFO Ghost boot 4.071s
[2018-08-29 07:13:13] INFO Creating database backup
[2018-08-29 07:13:16] INFO Database backup written to: /var/lib/ghost/content/data/blog.ghost.2018-08-29.json
[2018-08-29 07:13:16] INFO Adding demo post.
[2018-08-29 07:13:17] INFO Rollback: Fixture posts.
[2018-08-29 07:13:17] INFO Rollback: Bring back demo post.
[2018-08-29 07:13:18] ERROR

NAME: RollbackError
CODE: SQLITE_ERROR
MESSAGE: insert into `posts` (`author_id`, `comment_id`, `created_at`, `created_by`, `feature_image`, `featured`, `html`, `id`, `meta_description`, `meta_title`, `mobiledoc`, `page`, `plaintext`, `published_by`, `slug`, `status`, `title`, `updated_at`, `updated_by`, `uuid`, `visibility`) values ('5951f5fca366002ebd5dbef7', '5b86478dcd8f550001a2da47', '2018-08-29 07:13:17', 1, NULL, false, 'Content of demo post', NULL, 'v2-demo-post', 'draft', 'Koenig Demo Post', '2018-08-29 07:13:17', 1, 'c7f6f55d-d619-436a-8e4c-a874bbc67552', 'public') - SQLITE_ERROR: table posts has no column named comment_id

level:normal

OuterError: insert into `posts` (`author_id`, `comment_id`, `created_at`, `created_by`, `custom_excerpt`, `feature_image`, `featured`, `html`, `id`, `meta_description`, `meta_title`, `mobiledoc`, `page`, `plaintext`, `published_at`, `published_by`, `slug`, `status`, `title`, `updated_at`, `updated_by`, `uuid`, `visibility`) values ('1', '5b86478ccd8f550001a2da46', '2018-08-29 07:13:16', 1, 'Content of demo post', NULL, 'v2-demo-post', 'draft', 'Koenig Demo Post', '2018-08-29 07:13:17', 1, 'c7f6f55d-d619-436a-8e4c-a874bbc67552', 'public') - SQLITE_ERROR: table posts has no column named comment_id
    at RollbackError.KnexMigrateError (/var/lib/ghost/versions/2.0.3/node_modules/knex-migrator/lib/errors.js:7:26)
    at new RollbackError (/var/lib/ghost/versions/2.0.3/node_modules/knex-migrator/lib/errors.js:32:26)
    at /var/lib/ghost/versions/2.0.3/node_modules/knex-migrator/lib/index.js:496:23
    at tryCatcher (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:689:18)
    at Async._drainQueue (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:810:20)
    at tryOnImmediate (timers.js:768:5)
    at processImmediate [as _immediateCallback] (timers.js:745:5)

Error: SQLITE_ERROR: table posts has no column named comment_id

is done!

backup the data dir
docker rm -f blog
docker run -d --name blog -v ~/data/blog:/var/lib/ghost/content -p2368:2368 ghost:1.25
wait the ghost is run...
docker rm -f blog
docker run -d --name blog -v ~/data/blog:/var/lib/ghost/content -p2368:2368 ghost

That's works. I don't really know what my problem was. I was using v1 before, but the docker image seems to be quite different (250MB smaller)...
~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ghost               1.25                bcd04969a22b        6 days ago          820MB
ghost               latest              1029fdadd2aa        6 days ago          827MB
ghost               <none>              b5529c7678ac        7 months ago        584MB

I too have the same issue as OP's. I'm using docker-compose to deploy the stack, but when I re-pull the ghost image (to get a 2.0 image) and re-deploy the stack, bunches of Error: ER_BAD_FIELD_ERROR: Unknown column 'comment_id' in 'field list' pops up. Ghost is seemly not migrating the old data and database.

@BirkhoffLee you can Imitate my operation

@cnjack It didn't work in the first time, I tried it again and it magically worked :) thanks!

I too just got this issue.

Head over to the Ghost 2.0 Theme Compatibility
[https://forum.ghost.org/t/ghost-2-0-theme-compatibility-help-support/2103]
forum topic to discuss any changes and get help if needed.

That''s it!
We''re looking forward to sharing more about the new editor soon', NULL, 'v2-demo-post', 'draft', 'Koenig Demo Post', '2018-08-30 12:59:24', 1, 'd25e8546-dacd-4352-af3d-cfb39ed8b4f0', 'public') - SQLITE_ERROR: table posts has no column named comment_id
at RollbackError.KnexMigrateError (/var/lib/ghost/versions/2.0.3/node_modules/knex-migrator/lib/errors.js:7:26)
at new RollbackError (/var/lib/ghost/versions/2.0.3/node_modules/knex-migrator/lib/errors.js:32:26)
at /var/lib/ghost/versions/2.0.3/node_modules/knex-migrator/lib/index.js:496:23
at tryCatcher (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/var/lib/ghost/versions/2.0.3/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:810:20)
at tryOnImmediate (timers.js:768:5)
at processImmediate [as _immediateCallback] (timers.js:745:5)
Error: SQLITE_ERROR: table posts has no column named comment_id
I overcame the issue by

Export content under labs menu option in admin panel
Stopped ghost-:1-alpine
Deleted ghost.db under data
Started ghost:alpine (version 2 of ghost) pointing at same volumes as ghost:1-alpine was
Went into ghost in browser and setup admin account
Import previously exported content
Unpublished all the gettng started ghost posts.
Flushed any caches (nginx, Cloudflare between ghost on browser)

@PhilWhitehurst Did you by chance try to update to 2.x from a 1.x release < 1.25.4? In Ghost-CLI we added a provision that prevented updates if you were not already running the latest 1.x version of Ghost, and my guess is that the errors you're seeing are related to the fact that you need to upgrade to the latest 1.x version first before trying the 2.x upgrade.
@tianon would it be worth adding a section to the readme noting the above? (I can draft a PR) Since a couple people have run into it already i'd imagine more people might stumble across this.

Yeah, sounds like that'd be prudent! 👍

@acburdine  @tianon
Yes the version I was upgrading from was 1.22.7. It had been running in a docker container for 3 months without fail and I had not updated the image to the latest 1.x series.
Loving the new 2.0 editor by the way, very nice implementation of mobileDoc.

I can confirm that direct update to2-alpine didn't work, but doing an 1-alpine update before fixed it.

@acburdine I tried several times:

ghost:1-alpine
ghost:2-alpine

With no results until switching to :1. Probably I was having some issues cleaning my docker cache.


Introduce support for default instance type and preference inference from PVCs, DataVolumes and DataSources

What this PR does / why we need it:
This series introduces support for default instancetype and preference inference from PVCs, DataVolumes and DataSources as set out in the following design document:
https://github.com/kubevirt/community/blob/main/design-proposals/default-instancetypes-from-volumes.md
See below for an example of how this works currently:
Env
$ env | grep KUBEVIRT
KUBEVIRT_PROVIDER=k8s-1.24
KUBEVIRT_MEMORY=16384
KUBEVIRT_STORAGE=rook-ceph-default
[..]
$ wget https://github.com/cirros-dev/cirros/releases/download/0.5.2/cirros-0.5.2-x86_64-disk.img
[..]
$ ./cluster-up/virtctl.sh image-upload pvc cirros --size=1Gi --image-path=./cirros-0.5.2-x86_64-disk.img
[..]
$ ./cluster-up/kubectl.sh kustomize https://github.com/kubevirt/common-instancetypes.git | ./cluster-up/kubectl.sh apply -f -
[..]
$ ./cluster-up/kubectl.sh annotate pvc/cirros instancetype.kubevirt.io/default-instancetype=server.tiny instancetype.kubevirt.io/default-preference=cirros

Instance type and preference inference directly from an existing PVC
$ cat <<EOF | ./cluster-up/kubectl.sh apply -f -
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: cirros
spec:
  instancetype:
    inferFromVolume: cirros-disk
  preference:
    inferFromVolume: cirros-disk
  running: true
  template:
    spec:
      domain:
        devices: {}
      volumes:
      - persistentVolumeClaim:
          claimName: cirros
        name: cirros-disk
EOF
[..]
$ ./cluster-up/kubectl.sh get vms/cirros -o json | jq '.spec.instancetype, .spec.preference'
selecting docker as container runtime
{
  "kind": "virtualmachineclusterinstancetype",
  "name": "server.tiny",
  "revisionName": "cirros-server.tiny-ef0cbfb6-b48c-4e9f-aa7a-a06878b42503-1"
}
{
  "kind": "virtualmachineclusterpreference",
  "name": "cirros",
  "revisionName": "cirros-cirros-5bddae5d-47f8-433b-afa2-d4f846ef1830-1"
}

Instance type and preference inference indirectly through DataVolume and PVC
$ cat <<EOF | ./cluster-up/kubectl.sh apply -f -
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
  name: cirros-dv
spec:
  pvc:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 1Gi
    storageClassName: rook-ceph-block
  source:
    pvc:
      name: cirros
      namespace: default
EOF
[..]
$ cat <<EOF | ./cluster-up/kubectl.sh apply -f -
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: cirros
spec:
  instancetype:
    inferFromVolume: cirros-disk
  preference:
    inferFromVolume: cirros-disk
  running: true
  template:
    spec:
      domain:
        devices: {}
      volumes:
      - dataVolume:
          name: cirros-dv
        name: cirros-disk
EOF
$ ./cluster-up/kubectl.sh get vms/cirros -o json | jq '.spec.instancetype, .spec.preference'
selecting docker as container runtime
{
  "kind": "virtualmachineclusterinstancetype",
  "name": "server.tiny",
  "revisionName": "cirros-server.tiny-ef0cbfb6-b48c-4e9f-aa7a-a06878b42503-1"
}
{
  "kind": "virtualmachineclusterpreference",
  "name": "cirros",
  "revisionName": "cirros-cirros-5bddae5d-47f8-433b-afa2-d4f846ef1830-1"
}

Instance type and preference inference indirectly through DataVolume, DataVolumeTemplate and PVC
$ cat <<EOF | ./cluster-up/kubectl.sh apply -f -
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: cirros
spec:
  instancetype:
    inferFromVolume: cirros-disk
  preference:
    inferFromVolume: cirros-disk
  running: true
  dataVolumeTemplates:
    - metadata:
        name: cirros-dv
      spec:
        pvc:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 1Gi
          storageClassName: rook-ceph-block
        source:
          pvc:
            name: cirros
            namespace: default
  template:
    spec:
      domain:
        devices: {}
      volumes:
      - dataVolume:
          name: cirros-dv
        name: cirros-disk
EOF
[..]
$ ./cluster-up/kubectl.sh get vms/cirros -o json | jq '.spec.instancetype, .spec.preference'
selecting docker as container runtime
{
  "kind": "virtualmachineclusterinstancetype",
  "name": "server.tiny",
  "revisionName": "cirros-server.tiny-ef0cbfb6-b48c-4e9f-aa7a-a06878b42503-1"
}
{
  "kind": "virtualmachineclusterpreference",
  "name": "cirros",
  "revisionName": "cirros-cirros-5bddae5d-47f8-433b-afa2-d4f846ef1830-1"
}

Instance type and preference inference indirectly through DataVolume, DataVolumeTemplate, DataSource and PVC
$ cat <<EOF | ./cluster-up/kubectl.sh apply -f -
---
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataSource
metadata:
  name: cirros
spec:
  source:
    pvc:
      name: cirros
      namespace: default
---
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: cirros
spec:
  instancetype:
    inferFromVolume: cirros-disk
  preference:
    inferFromVolume: cirros-disk
  running: false
  dataVolumeTemplates:
    - metadata:
        name: cirros-dv
      spec:
        pvc:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 1Gi
          storageClassName: local
        sourceRef:
          kind: DataSource
          name: cirros
          namespace: default
  template:
    spec:
      domain:
        devices: {}
      volumes:
        - dataVolume:
            name: cirros-dv
          name: cirros-disk
EOF
[..]
./cluster-up/kubectl.sh get vms/cirros -o json | jq '.spec.instancetype, .spec.preference'
selecting docker as container runtime
{
  "kind": "virtualmachineclusterinstancetype",
  "name": "server.tiny",
  "revisionName": "cirros-server.tiny-76454433-3d82-43df-a7e5-586e48c71f68-1"
}
{
  "kind": "virtualmachineclusterpreference",
  "name": "cirros",
  "revisionName": "cirros-cirros-85823ddc-9e8c-4d23-a94c-143571b5489c-1"
}

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

NONE

/area instancetype
/cc @fabiand
/cc @dominikholler
/cc @akrejcir
/cc @davidvossel
/cc @aglitke

this is a neat idea. The primary concerns I have are about how to make this work in a consistent and predictable way.
For example, I'm hesitant to have any logic that attempts to use a preferred instance type if one is found, but ignores it if there is none found... or attempts to use a default preference unless a collision is detected and then ignores the preference.
basically, we need deterministic behavior.
Here's one thought. What if we add an option to the PVC volume on a VM that instance type and preferences should be sourced from a specific PVC... basically saying "we expect instance types and preference defaults to come from here".
Then we'd have deterministic behavior.

if PVC volume source has this default instance-type/preference detection set, then the mutator would fail if no instancetype/preference is found.
VM collisions with instanceType/preferences wouldn't be ignored because the user opted into the default instancetype/preferences on pvc
there would be no ambiguity about what pvc to source the defaults from

Ah so something in PersistentVolumeClaimVolumeSource that toggles all of this, yeah that could work. It also avoids us fetching more details about the PVC or any other type of volume we also support this with needlessly.
I did start drafting a design doc with this all in before PTO, I'll dust that off now and try to work something like this in before I post anymore WIP code.

https://github.com/kubevirt/community/pull/190 posted, I'll rework the code in-line with this shortly.

                    {
                        "type": "PodScheduled",
                        "status": "False",
                        "lastProbeTime": null,
                        "lastTransitionTime": "2022-12-02T16:32:52Z",
                        "reason": "Unschedulable",
                        "message": "0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims. preemption: 0/2 nodes are available: 2 Preemption is not helpful for scheduling."
                    }

I'll handle this now.

@davidvossel @akrejcir if you have any review time this should be closer, I'd really appreciate any feedback on the changes to the actual annotation names FWIW after switching to kebab-case as suggested by @0xFelix.

Excellent, thank you!
/lgtm


SL2P Dictionary issue

Hi Richard,
Firstly, thanks for creating this toolbox - incredibly useful!
I'm encountering a new error running some code in the ee browser derived from your JS example script.
When applying the LAI processor as per below:
//  Apply LAI processor
var varName = 'LAI'
var output_collection = ee.ImageCollection(SL2P.applySL2P(input_collection,varName,dictionariesSL2P));
print(output_collection,'S2 LAI collection')
The image collection object has the following error: Dictionary.get: Dictionary does not contain key: outputScale.
I've since run the example script unedited (both the sl2p and sl2p-ccrs code) and am encountering the same error.
Any ideas?
Jake

outputScale (and outputOffset) are supposed to be in the netOptions dictionary (probably not a good choice, as it relates only to scaling the output after running the net, so would be better in colOptions). The bind apparently works (for colOptions), but since netOptions are set up internally in users/richardfernandes/SL2P:SL2P you need to hack your own copy of that.


Added new exportString option

The exportString option makes it possible to put your compiled JST on to any object within your compiled template file. You can specify any object that is accessible to the file, window.JST or module.exports if you want to use it with browserify.

Found another spot that needed the options object passed through


Webpack and inline-imports

Webpack produces a (harmless) warning with the original form - this just cleans that up with an explicit require

Closing, too early - it is due to the circular dep, the above does not help at all.


Make plugin robust to lack of internet connection

Currently opening this widget offline crashes, because get_all_atlases_lastversions() errors without an internet connection. We should be robust to this case, and display a warning and local versions of downloaded atlases instead!

I think this can be closed now, as the API now works offline.


Make flutter path configurable

Some flutter installations such as using snap on ubuntu don't get automatically picked up whilst running flutter <command> using nvim's job start. Allow a user to specify the flutter path in their config. Technically this is already possible by specifying a different command in the lsp config but make it more explicit so it can be used throughout this project

maybe try check if exist $HOME/snap/flutter/common/flutter/bin/flutter and execute it before default config,or one flag bool

This is also resolved by 31d19710c5ec53c556e07bb82274058343bcddb4 which allows the user to set a path or a command to derive the path


identity map limit of 20k

#What is the reasoning for hard coding the identity map limit to 20k items? isn't it possible to get to 20k identities within the cleanup timeout interval of 5 minutes? what if we process a directory which contains 20k+ files?
with the upcoming fixes to filewatch related to open files leak, will that also affect the identity map? will the new corrected file closing mechanism also evict identities?
this relates to a discussion on discuss at https://discuss.elastic.co/t/logstash-identitymapcodec-has-reached-100-capacity/40210
@guyboertje thoughts?

ATM, the gazillion file read use case is not supported in the code, so I guess I and the PR reviewers felt that 20000 tailed identities per input was enough.

will the new corrected file closing mechanism also evict identities?

In fact v2.1.2 of the file input shipped with LS 2.1.1 supports this already and close_older defaults to 1 hour, i.e. close-able if the file's mtime (for this version) is more that one hour ago.
But yes the changes introduced in the file input and filewatch v0.8.0 will handle the 20k+ files better. But not if a user changes the max_open_files config to > 19999.  It is specifically designed to handle the many files use case.  However perhaps more user guidance (blog?) is necessary on setting the configs better.  In filewatch the way in which close_older is calculated has changed.  Now, instead of using the file mtime to calculate whether a file can be closed accessed_at, the time the last byte was read, is used.  Before, all files were opened or tried to and all were tested for closing, now only max_open_files number of files are opened and processed the rest are queued.  Each file is represented by a state tracking object, and only files in the active state are considered for closing.

Could MAX_IDENTITIES be made configurable so that it can be increased if necessary?


looking forward to your outstanding work

me too.

Code will be released in the next two weeks.

Dear author, I have benefited a lot from your research. I have a deep respect for you. I have a question to ask you, which code is used to realize the recomposition in your article.

Dear author, I have benefited a lot from your research. I have a deep respect for you. I have a question to ask you, which code is used to realize the recomposition in your article.

I am not sure if you are discussing about visualizing the reconstruction. If yes, please refer to the jupyter notebook from MAE official


Change base size for spacing/sizing to 16pt.

This change makes the iOS spacing and sizing constants align with the tokens on https://www.lightningdesignsystem.com/design-tokens/
I believe this is correct based on conversations with the SLDS design team who indicated that the spacing values should always be multiple-of-4.

👍 @ivanbogdanov what do you think?

Looks good to me


[joy-ui] How to use useRef?

I was wondering how to use useRef with Joy UI Input or TextArea components.
I know that in MUI it’s ‘inputRef’, but I can’t make this work in Joy UI.
I’m currently using onChange with useState, but I’d like to avoid re-rendering for each type.
Thanks,
Eytan

I think it can be done using slotProps
input
slotProps={{ input: { ref } }}
textarea
slotProps={{ textarea: { ref } }}

Input: <Input slotProps={{ input: { ref } }} />
Textarea: <Textarea slotProps={{ input: { ref } }} />
We can add a section in the docs that is specifically about input ref:
diff --git a/docs/data/joy/components/textarea/textarea.md b/docs/data/joy/components/textarea/textarea.md
index 06a8652a80..2c80a6d3a6 100644
--- a/docs/data/joy/components/textarea/textarea.md
+++ b/docs/data/joy/components/textarea/textarea.md
@@ -115,6 +115,8 @@ It's usually more common to see textarea components using decorators at the top

 {{"demo": "TextareaDecorators.js"}}

+### Textarea ref
+
 ## Accessibility

 In order for the textarea to be accessible, **it should be linked to a label**.

Thank you!

Thank you!

Would you like to submit a PR?

Sure, are you talking about my actual project right?

Sure, are you talking about my actual project right?

Sorry, no. I meant the PR to add a demo to our docs.

I would like to contribute to this issue  can you assign it to me ? also i am new to open source here i think i need to add demo to the docs how to use Ref right ?

@siriwatknp Please let me know how to pass the checks as I am failing in few. I have made PR to add a demo to docs.
Sharing my screenshot for the same

is this issue still open can i contribute

I know that in Material UI it’s […]

If we take Material UI, even if we have slot props: https://mui.com/material-ui/api/input/#Input-prop-inputProps inputProps an inputRef prop is https://mui.com/material-ui/api/input/#Input-prop-inputRef provided as well.
I think it opens the question of: What's the pros & cons? Is there a need for Joy UI and Material UI using a different tradeoff? If not, which one is best?

@siriwatknp I wonder a bit about the frequency of the need to access the input ref. Is this frequent enough to be worth a dedicated docs? I guess if it was in Material UI for a dedicated prop, it's likely the case, but I wonder if: 1. maybe inputRef was a mistake, it's not frequent enough: 2. if we can't teach this for all components.

We have the doc about the inner HTML input but we could make it more obvious to inner HTML input and ref?

Is this issue still open?

It is a very common use case where we want to use ref with html inputs. That's why it should be given as a singleton root prop in the Input component for better developer experience and avoid deep merge for input props.


mumble_git: 2018-01-12 -> 2018-07-01

Replace fetchgit with fetchFromGitHub now that it supports submodules.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

cc @viric @jgeerds @wkennington
What are people's thoughts on replacing mumble_git with mumble_snapshot? The source code for mumble_snapshot can be found on https://dl.mumble.info/. This means that rather than choosing an arbitrary git commit, we're using a build thati the Mumble team has decided should be a snapshot.


Please create an updated release

I would like to use the updated version of this board definition with the lower external clock speeds (FWIW to be compatible with 3.3V VCC), which I see already exists in master.
In the Arduino IDE 1.6.7 I have not been able to manually install the board definitions from the master .zip file.  No matter where I put the files the never seem to appear in the Tools->Board menu.
However the latest IDE still correctly interprets your json definition and updates the packages correcty, so it would be greatly appreciated if you could create a new release and update the json definition accordingly.

There is now a new release available.


figure out a way to retry "running" batches that are not running anymore

this can happen if we stop the server while a batch is running

Hello @arcstur, outreachy applicant here,
For this can a background service like celery be implemented to handle the tasks, that way even if the server stop working the batch processing can still continue


WebViewPanel regression starting with 1.56 -- race condition causes postMessage to get dropped

Does this issue occur when all extensions are disabled?: Yes (repros is with the C/C++ extension)

VS Code Version: 1.56.2 or latest Insiders, but doesn't repro with 1.55.2
OS Version: Windows

Steps to Reproduce:

Install the C/C++ extension preferably 1.3.1 (1.4.0 has a retry that attempt to workaround this bug, but it doesn't work reliably).
Configure Display Language and select one of the two Chinese languages -- this step isn't 100% required, but it increases the repro probability. Using the remote scenario also appears to increase the repro probability.
Use C/C++: Edit Configurations (UI) command. Using the command earlier during the extension activation appears to increase the repro probability. Reload Window and/or Configure Display Language can be used again try another repro.

Bug: The webview drops postMessage calls, leading to the UI fields being "blank" (they normally should be populated). There appears to be some race condition in which calls to postMessage that occur "too soon" in response to a onDidChangeViewState callback get dropped and no onDidReceiveMessage gets sent. (code is around https://github.com/microsoft/vscode-cpptools/blob/main/Extension/src/LanguageServer/settingsPanel.ts#L217)  Multiple users have reported this as a bug against our C/C++ extension since 1.56 was released, but it is a VS Code regression. We added a 2nd postMessage on a 500ms delay in 1.4.0 to try to workaround this bug, but it doesn't work reliably since a longer delay up to 3 seconds or so may be required and the re-updates cause the UI to revert to an earlier state, causing user input to be reset. It's possible we may be able to add a workaround that detects when postMessage isn't received (not sure yet).

I implemented a workaround that resends the webViewPanel.postMessage in 500ms if doesn't detect an onDidReceiveMessage response: https://github.com/microsoft/vscode-cpptools/pull/7647 . However, the delay can be up to 6 seconds -- ideally postMessage could be received earlier on, not sure if that's the root bug or not.

Please put together a minimal webview example extension that demonstrates the issue. You can use the webview sample extension as a starting point

I'm thinking a minimal repro may not repro the issue, because it seems like the race condition may require a big enough html file or something. Are you able to just use 1.3.1 of our extension as a minimal repro? https://github.com/microsoft/vscode-cpptools/archive/refs/tags/1.3.1.zip

You cannot call Webview.prototype.postMessage before window.addEventListener("message", ...) called on the webview. If you call it too early, the send messages are dismissed.
https://github.com/microsoft/vscode-cpptools/blob/20954f7f752def061d63d048dcdb06306322b68d/Extension/src/LanguageServer/settingsPanel.ts#L128
The following steps work well with the internal PDF viewer for LaTeX Workshop.

Register a callback to be called when the initialization finished message recieved, on the extension host.
Assign the HTML content to WebView.prototype.html
After the initialization of scripts on the webview finished, send  the initialization finished message from the webview to the extension host with vsCodeApi.postMessage.
Then, the registered callback will be called on the extension host.

https://github.com/James-Yu/LaTeX-Workshop/blob/a3adc13d833e171c4914c0cefd947a0198fc5134/src/components/viewer.ts#L303-L310

@tamuratak Thanks a lot for the info. It turns out VS Code is invoking the webViewPanel onDidChangeViewState with
WebviewPanelOnDidChangeViewStateEvent.webviewPanel.active set to true before our constructor is invoked, which is the root "regression" compared with 1.55 (or possibly an initialization performance regression?), but I don't know if that's a "by design" change or not, and we can workaround that via sending an initialization finished message as you suggested, which avoids the repeated update retries we were doing previously: https://github.com/microsoft/vscode-cpptools/pull/7656
So VS Code could close this issue if the changed behavior is as intended.

Thanks for the investigation @tamuratak!
@sean-mcmanus This doesn't sound unexpected to me, but if you provide more details about the code I would be able to say for sure. The webview contents are created asynchronously so you do generally need to use some kind of ready message to confirm that a webview is ready for messages

@mjbvz So our pending 1.4.1 update has the fix so that our panel will eventually update, but there is still a ~4-8x performance regression with VS Code's loading of our webViewPanel on the 1st run, i.e. after changing the display language to one of the two Chinese languages, as if some expensive language pack caching is being done.
1.55.2: Takes 1-5 seconds (usually 2 seconds).
1.56.2: Takes 8-40 seconds (usually 8 seconds).
I don't see any API to somehow preload it to avoid the delay.
I guess we can just wait till more users complain about it, since it's fast (1-2s) after the 1st load.


[Nominations Open] Top CDF Contributor Award 2021 🏆

This issue is to receive nominations for the Top CDF Contributor Award 2021.
To nominate someone, reply to this issue with the following:

Full name of the person you’re nominating
Short description of their contributions to the Continuous Delivery Foundation and why they should win.

Nomination deadline: Friday, April 30, 2021
More details are available here: https://cd.foundation/cdf-community-awards/

Owen Bowers Adams  https://github.com/obowersa
Owen has been incredibly important to the growth of the Ortelius community. He has not only provided us mentorship, direction and coaching, he also took on the conversion of our website so it could be more community driven. He is a treasure and a perfect model of an open source contributor. His direct honesty and constant watch over our path has been simply epic. Owen is someone you can depend upon.  He does what he says and owns what he does.  I know Owen has contributed to the Jenkins project and his well known as a open source champion. It is his time to shine.

I would like to nominate Chtistie Wilson for the Top CDF Contributor Award 2021.
Christie is an incredible mentor and an amazing person to work with. She has created a very warm and welcoming community in the Tekton world. She is very humble and approachable and encourages all of us in the community to engage and participate freely, making it a true Open Source. Her contributions and vision to make the project successful for all the Tekton Friends  are invaluable. In addition to supporting all of us in the community through her technical expertise, she has volunteered many hours administering the community including collecting feedback from us, managing working groups schedule, sending holiday wishes, and most importantly bringing friendliness in all the working groups. Thank you Christie for all your efforts and dedication that contributed to our success. Thank you for inspiring us!

I'd like to nominate Andrea Frittoli for this award.
Andrea does everything you could ask of a top open source project contributor. He has made key contributions to the project itself, developing new features and proposing others as TEPs. He is also extremely active in the community, answering questions on Slack, attending/chairing community meetings, triaging issues, and reviewing PRs. He is also an important contributor to Tekton's internal infrastructure and the project's own CI/CD pipelines. Andrea is also a great mentor, sharing his extensive knowledge to help new contributors feel comfortable both in Tekton and in open source more generally.
For all these reasons, I nominate Andrea for the 2021 Top CDF Contributor Award.

I would like to nominate Dan Lorenc (@dlorenc)
Dan is the member and de-factor lead of the CDF Technical Oversight Committee. He coordinates the TOC meetings, agenda, and coordinates the decision making process. On many occasions, Dan has been the only active TOC member handling duties of the entire team. His contributions have been instrumental to the CDF success.
Dan is also an active contributor and open source advocate in the software delivery space:

Dan is one of the community leaders in Tekton which is a founding project in the CDF
Dan contributes to many software signing tools, including cosign and the sigstore service. The tools are essential to the modern software supply chains, and they are very important for CDF project end users.
Dan promotes projects he is working and advocates for the best security practices. Check out his blog here!
Dan is an author of the blockbuster articles and practitioner stories about dependency management in containers: Who’s at the Helm?, The Dependency Jungle and Zombie Dependencies
Dan is also a speaker at many major conferences, e.g. Open Source is Under Attack at SwampUP

Thanks Dan for all the contributions! 🙇

I would like to nominate Priti Desai for Top CDF Contributor Award 2021 because she goes above and beyond as a leader in the Tekton community.
Besides contributing core features in Tekton Pipelines, such as Finally Tasks, Priti has been an excellent mentor to many contributors in Tekton. She pushes for high quality in Tekton through her timely, frequent and thorough reviews of designs and other contributions. As she solves hard problems, she takes her time to explain her findings and broadly share her knowledge with the Tekton community. She facilitates healthy debate by summarizing problems, possible solutions and tradeoffs that drive alignment and consensus in the community. She does all these and more with patience, humility and grace that creates camaraderie in the Tekton community. Thank you Priti for going above and beyond!

We are no longer accepting nominations. Thank you to everyone who nominated someone and good luck to the nominees!


validation commands could support config-dir option

Currently we can pass multiple tables to a validation command, these will be executed sequentially. We can also take a config file path via --config-file which will generate a single YAML file containing the multiple validations. This single YAML file can then be processed and will execute the validations sequentially.
It has been suggested by an end user that validation commands could also support the --config-dir option and then create one YAML file per validation rather than adding them all to a single file.
This has a couple of advantages:

Validations can be executed independently, e.g. if one validation is problematic it can be excluded or edited more easily
Validations can be executed in parallel
We support --config-dir for data-validation configs run commands therefore it is consistent to also support it for file generation too

Disadvantages:

Do we need to worry about overwriting files that already exist?

In this case the end user achieved what they wanted with a shell script (provided by us), snippet below:
SIMPLE_LIST=$(echo ${TABLES}|python3 -c 'import sys, json; data = json.load(sys.stdin); print(" ".join(["{}.{}".format(_["schema_name"], _["table_name"]) for _ in data]))')
for t in $SIMPLE_LIST;do
    echo "Processing ${i}"
    data-validation validate column --source-conn=${SC} --target-conn=${TC} \
      --tables-list="${t}" --config-file=${CONFIG_DIR}/${t}.yaml \
      --sum="*" --min="*" --max="*" --count="*"
done

If we implement this feature request we can simplify this process for them.

We should also consider porting --parts-per-file for this too. And use the same file format, e.g. nnnn.yaml, as for generate partitions. This enables us to run whole table validations in the same fashion as we do partition validations.
Perhaps --parts-per-file should be deprecated in favour of a new name --configs-per-file or --validations-per-file? The new name could then be shared by both code paths.


Gotta trim leading and trailing spaces before validating text length of quick tweet

@diwash007 It's done. Thanks for the contribution. Check this commit

trim leading and trailing spaces: suggested by @diwash007

@diwash007 It's done. Thanks for the contribution. Check this commit

trim leading and trailing spaces: suggested by @diwash007

Great!
You can use Fixes keyword on your commit message to automatically close the related issue.
"Fixes #10" in this case.


Bind openfl.external.ExternalInterface#call to proper this in html5 backend.

This change makes ExternalInterface#call in html5 backend work in a similar way to flash backend.
In flash, whenever you call ExternalInterface.call('ns.object.method'), the method will be called with ns.object as 'this'.
In html5 currently this would be just 'window'.

I am getting an error "Cannot read property 'bind' of undefined"
Object.Method.instance().get("myVar")
ends up
Object.Method.instance().get("myVar").bind(Object.Method.instance())
instance() is :
if (!Method.privateInstance) {
    Method.privateInstance = new Method();
}
return Method.privateInstance;


Support unions in YAML or JSON mappings

When defining a YAML or JSON mapping for an object that does not have a very strict schema, it would be useful to be able to define unions. For instance:
class Foo
  YAML.mapping({
    field: Int32 | String
  })
end

In order to support both field: foo and field: 10. This can be implemented for basic types by checking the kind property of the pull parser (see here for JSON).
This becomes more complicated when dealing with complex types, as each type should be able to answer whether it accepts that fragment of JSON or YAML or not (perhaps by raising a pre-agreed exception); and if it doesn't, then rewind the pull parser to its former state so the next type in the union can be tested. I'm not familiar with the underlying implementations for either pull parser, but is this feasible?
Do you think something like this would be useful?

I agree that  Int32 | String is useful. For example when dealing with query request/responses to elasticsearch.
I don't think more complex scenarios will appear. So 👍  for the Int32 | String

is there a way to iterate for Int32 | String inside macro? then i think it should be easy to implement

@kostya Yes! check out macro_specs.cr:542

Some things to consider:

You can currently read JSON/YAML from an IO, so rewinding is not an option. However, one can read the raw string and later reparse it. Check for example String::RawConverter and JSON::PullParser#read_raw.
How would reading a union work? One way I can think, but it's probably very slow, is to try to T.from_json(string) for every type and return the one that succeeds first. If the union consists of simple types maybe something custom can be done.
Int32 | String, in that place, is a method call, as @bcardiff says. And we don't have a syntax to refer to unions, but we could have one. Alternatively, we could change the language so that Foo | Bar creates a union instead of being a method call. We could also add Foo? for completeness, because it's common. So... right now the only way would be to decompose the Call ASTNode, which is very tedious.

@spalladino What's your specific use case?

The use case is parsing data returned from an API, where I have a "bag" of entities, that can be either strings or numeric, so I just have to deal with primitive types now; but I don't see it that odd having to handle complex types as well.
I was thinking something along the lines of what you mention in (2), where the mapping tries every type in the union in order, and returns the first one that did not raise a "I don't know how to parse this stuff"-exception.
As for reading the raw string and later reparsing, the mapping should be smart enough to save the string only if there is a union involved, to avoid a performance penalty.

i playing with implement it to msgpack, but got error, instance_vars is empty in macro:
module M
  macro bla
    @a : Int32 | String

    def initialize
      p<EMAIL_ADDRESS>      @a = 1
    end
  end
end

class A
  include M
  bla
end

p A.new

"[]"

@kostya yes, quite expected so in this case, since in the same macro, the "@a : Int32|String" wasn't even parsed yet when you invoke @type.instance_vars.

Actually, the issue is macro-inception. This works:
module M
  macro bla
    @a : Int32 | String

    def initialize
      p<EMAIL_ADDRESS>      @a = 1
    end
  end
end

class A
  include M
  bla
end

p A.new

Otherwise {{@type}} gets expanded as soon as you invoke bla, but you want it expanded when you then invoke initialize.

with msgpack diff is not so big to implement it: https://github.com/benoist/msgpack-crystal/commit/d5666accf23ba4cb61880dc603bfbdac23d525eb
this is not full implementation, just example
works:
require "./src/message_pack"

class Bla
  MessagePack.mapping({
    a: (String | UInt32),
    b: (String | UInt32),
    c: Int32,
  })
end

bla = Bla.from_msgpack({"a" => "bla", "b" => 11, "c" => 12}.to_msgpack)
p bla

@kostya Nice trick, splitting by "|" ;-)
Should this work too?
class Foo
  JSON.mapping({
    field: Array(Int32 | String),
  })
end

It gets trickier, and this implies modifying Array.new(pull : JSON::PullParser) to check if T is a union.

or problem with aliases:
alias Bla = Int32 | String
alias Bla2 = Char | Bool

class Foo
  JSON.mapping({
    field: Bla | Bla2,
  })
end

So... I thought about this a bit more.
First, I thought we could have a type JSON::Deserializer(T), so one can do: JSON::Deserializer(Int32 | String).new(pull_parser) and make it work. The compiler of course resolves the union inside the generic type, so aliases are solved, and inside JSON::Deserializer we can ask things about T with macro methods (is it a union? give me the union types, etc.).
However, that meant we'd had to use JSON::Deserializer everywhere, for example in Array.new(pull_parser), doing JSON::Deserailzer(T).new(...) instead of T.new. Kind of ugly and long.
Then I remembered about having Union as a first-class type to which one can add class methods. Then, problem solved: instead of JSON::Deserializer we just define a def self.new(pull_parser) method in Union, and that's it. No need to change Array, because T is already a union type. And for JSON.mapping one can pass Union(Int32 | String) to make it work. But, we can also use Union({{type}}) in JSON.mapping, so users can do value: Int32 | String. The macro generates Union(Int32 | String).new(pull_parser), which works, because it's a union of a union type, and the compiler flattens all types. It also works with Union(Int32), because that produces a Int32 type (not a union).
I think this is the "mathematically correct" solution to the problem :-)

In fact, it also makes more sense because one can also do:
require "json"

p Union(Int32, String).from_json(%(1)) # => 1
p Union(Int32, String).from_json(%("hello")) # => "hello"

which is more uniform and consistent with how you parse every other type into JSON.

So, union types in JSON mappings, and in general for parsing, are now supported.
Support still needs to be added for YAML, but we need to implement read_raw for YAML::PullParser first.


intelligent guides

lines that show the spatial relationships between different nodes

What do you mean by that? Just having connections between nodes?


Rename childID of the RelatedProcess model to parentID

This change is

Pull Request Test Coverage Report for Build 2812

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 70.992%

Totals

Change from base Build 2811:
0.0%

Covered Lines:
1882

Relevant Lines:
2651

💛  - Coveralls

Pull Request Test Coverage Report for Build 2812

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 70.992%

Totals

Change from base Build 2811:
0.0%

Covered Lines:
1882

Relevant Lines:
2651

💛  - Coveralls


scroll_id issue

Dear Sir,
I  see the scrollid option is supported.
--scrollId
The last scroll Id returned from elasticsearch.
This will allow dumps to be resumed used the last scroll Id &
scrollTime has not expired.
problem is how to get the lastest scrollid by elasticsearch-dump and i tested with scrollid.
It didn't resume but restart from the begining.
Looks for your earliest help. thank you!

lastScrollId is shown when the debug mode is on. Then you can resume.
and i tested with scrollid. It didn't resume but restart from the begining.
Did the scrollId you used come from endpoint or es-dump ?
Can show the commands used etc ? Thanks.

elasticdump --input=http://loalhost:9200/report/_doc --output=/data/v1.json --limit=500 --fileSize=10mb --type=data --scrolltime=10m --debug=true
elasticdump --input=http://loalhost:9200/report/_doc --output=/data/v2.json --limit=500 --fileSize=10mb --type=data --scrolltime=10m --debug=true --scrollid=DXF1ZXJ5QW5kRmV0Y2gBAAAAAAMRndQWWndSd3gzeDNTSm1LelJDclliODg0QQ==
i checked with scrollid come from es-dump. still not working.

Retested this and couldn't replicate the issue you're seeing. It works for me.
# rec 1
elasticdump --input=http://localhost:9200/icons~rec
--output=/s.json
--type=data

--input=http://localhost:9200/icons~rec
--output=/s1.json
--type=data
--scrollId=DnF1ZXJ5VGhlbkZldGNoAgAAAAAAAAADFm5XdHFsQ1BjUm5pMDJ6c19hUjFKMkEAAAAAAAAABBZuV3RxbENQY1JuaTAyenNfYVIxSjJB

THANK YOU FOR THE QUICK REPLY


Port the changes from documentation to main

@ricardofrantz already added quite  fair bit of docs in the documentation branches. These need to be ported to main.

@ricardofrantz : It seems you experimented with logging in the documentation branch. It is functional and should it be ported to main as well ?

I've decided not to port the logging stuff for the moment as it work only for gmres.
Once we released v1.0.0, we can create a new branch dedicated to adding logging to most subroutines if needed.