Transfer playback to .smartphone after a pause

HI @Peter-Schorn,
I've got an edge case scenario that you might be able to shed some light on.
In brief:

I've got a view that uses the getAvailableDevices method.
In the scenario that I'm working in, there are two devices returned of types: .smartphone and .computer.
The Spotify user has a premium subscription.
There is a selector that allows the user to selected any of the available devices and stores that in a @State variable
There is a play button in the view
When the play button is tapped, I run getAvailableDevices again (because phones seem to dissapear quickly)
Then I do a .first on the results of getAvailbleDevices for the id of the selected device in state.
There is a pause button that uses the pausePlayback method.
The following only happens when playback has been paused, and a couple/few of seconds have passed.
The app only tries to play/transfer if the device is in available devices; otherwise, it opens the Spotify app.  This is intentional and necessary, I believe.

If play is tapped when the selected device is of type, .computer, whether or not that device is active, the song will play using the transferPlayback method using the result offirst from item 7 above.  This always works.
Here's the problem
If play is tapped when the selected device is of type, .smartphone, even with that device being active, the song will only sometimes play using the transferPlayback method with the id from first from item 7 above.
When this does not play, I can catch the error in a do/catch, and the error message is:
SpotifyError(message: "Not found.", statusCode: 404)

When this occurs, I handle this in the catch block by opening the Spotify app to the track that is paused, using:
await UIApplication.shared.open(url)

Oddly enough, when the Spotify app opens, the track continues where it left off when paused.
Further, the device selector in the View is a Swift UI menu, when the menu is opened, it runs getAvailableDevices and populates menu items for each device, so that the menu is always "fresh".
Tapping on an available device in the menu, will attempt to play the track using the transferPlayback method.
Similar to the above, the .computer always works.
Here's were it gets weird
Selecting .smartphone device in the menu sometimes plays/transfers the track (if not more than a few seconds have passed).
When it doesn't work, one of two things can happen:

If the track is playing, nothing happens until I switch to the Spotify app where it seems to "catch up" and begin to continue the track, playing on the phone
If the track is paused, and I just wait, maybe after 10 or 20 seconds, the track starts playing in the app

For the record, the play method seems to have the same issue in that it throws the aforementioned error in the same circumstances that the transferPlayback method does with .smartPhone devices.
I know that's probably way more than you wanted to read, but it's an interesting edge case that I was wondering if you'd come across before.
I am intentionally not playing on the first available active device, in this scenario, as in some scenarios the user wants to play the track on their phone.
While opening up the app when the error mentioned above is thrown is a workaround, I was hoping to see if there was a solution that provided a better user experience.
As always, I love your library, appreciate your insight, and know that underlying issues may just be because of how the Spotify playback API works.
So thanks for any ideas you have to share.

There is a selector that allows the user to selected any of the available devices and stores that in a @State variable

I discourage you from storing any of the devices in another variable precisely because the available devices can change frequently. If the device stored in this variable is no longer in the list of available devices returned by availableDevices, then you can't use it for API calls anymore. Instead, you should use the availableDevices method to display a list/menu of the devices to a user; then, when they select a device from that list/menu, you should immediately transfer playback to that device.

Further, the device selector in the View is a Swift UI menu, when the menu is opened, it runs getAvailableDevices

How do you detect when the menu is opened? Post the code.

Selecting .smartphone device in the menu sometimes plays/transfers the track (if not more than a few seconds have passed).
When it doesn't work, one of two things can happen:

If the track is playing, nothing happens until I switch to the Spotify app where it seems to "catch up" and begin to continue the track, playing on the phone
If the track is paused, and I just wait, maybe after 10 or 20 seconds, the track starts playing in the app

The underlying issue for this behavior is the application lifecycle on iOS. When the user switches from one app to another, the former app is suspended after a short interval, except for certain special cases, such as if the app is playing music. When the Spotify iOS app is not playing music and you switch from it to your app, it will be suspended. A consequence of this is that it is no longer an active or available device (although the Spotify web API may incorrectly report it as active/available). When you issue a web API command on your app that targets the Spotify iOS app on the same device while it is suspended, then the command will only take effect after you switch back to the Spotify iOS app because it will no longer be suspended.

HI @Peter-Schorn, thanks for your detailed reply.

I discourage you from storing any of the devices in another variable precisely because the available devices can change frequently...

I understand your point, however, the app needs to display what the currently selected device is to the user regardless of it's current state of availability or activeness.  This is why, before performing any action on the selected device (e.g. play, transfer, etc.), I perform a getAvailableDevices, check if the selected device is the result, and use that status (if it's there) to transferPlayback or open the Spotify app if the selected device is not there.
After pondering your reply, I did a little test to check how the Spotify app behaves:

Play a track in the Spotify iOS app.
Transfer playback to my laptop running the Spotify macOS app
Note the icon changes to a "computer" symbol.
Quit the Spotify app on the mac
Note that playback stops, the play buttons in the iOS app change from pause to play, and the selected device icon/menu changes from computer to a generic symbol.
Tapping play in the iOS app resumes the track on the iPhone (there are no other available devices).

I wonder how the heck they do that? 🤔  My guess is that the app knows the phone is always there when the Spotify app is running and it's contantly polling the selectedDevice.
Here's my transfer playback scenario in my app once more:

User taps play
App runs getAvailableDevices before attempting to transferPlayback.
App checks if the selectedDevice is in the result of getAvailableDevices (using ID to find via .first)
If the matched device, from step 3 above, is not of type, .smartphone, run the transferPlayback method.  This always works when the device is my computer running the macOS Spotify app even when the device is not active.
If the matched device, from step 3 above, is found and is of type, .smartphone && the selectedDevice is active, run the transferPlayback method using the ID from the matched result with the play parameter set to true; otherwise, open the Spotify app.

Again, the problem is that after a few seconds of a track being paused and the user starts at step 1 above, and the device is a smartphone, and it's active, the app transferPlayback method throws the error:
SpotifyError(message: "Not found.", statusCode: 404)

I log this on the line immediately before the transferPlayback is called and the error is thrown.
Device(id: Optional("cbf47231224e87ab30353bdaa645aexxxxxxxxxx"), isActive: true, isPrivateSession: false, isRestricted: false, name: "Kim’s iPhone", type: SpotifyWebAPI.DeviceType.smartphone, volumePercent: Optional(100))

How do you detect when the menu is opened? Post the code.

At first I was using .onAppear on one menu item that is always in the menu, but I opted for using .onTapGesture instead:
SpotifyDetailMenuView(
    availableDevices: $availableDevices,
    selectedDevice: $selectedDevice,
    isPlaying: $isPlaying,
    isPaused: $isPaused,
    nowPlayingTrack: $nowPlayingTrack,
    handlePlayThisTrack: self.handlePlayThisTrack,
    item: item
)
    .onTapGesture(perform: {
        Task.init {
            Logger.log(.info, "Polling Available Devices")
            await pollAvailableDevices()
        }
    })

In the above, pollAvailableDevices() sets up a timer to run getAvailableDevices every second for 5 seconds, after whih the timer ends itself (I haven't figured out how to run an action, like cancelling the timer, when closing a Swift UI menu yet).  Results from getAvailable devices are populated into the $availableDevices @State variable (which I understand you discourage, but in this scenario the results are pretty fresh, I believe).  This is kinda similar to the sheet that gets opened when you click on the device selector in the Spotify app, I imagine, as there's a spinner next to where it say "Select a Device".
The above is obviously flawed.  And I think that there's a reason they are using a sheet here instead of a menu, as menus don't seem to dynamically update.  I can only see changes in the menu after closing and re-opening, even though I can see availableDevices changing, using an .onChange.  I may need to change out this menu for a sheet, to see for sure.

The underlying issue for this behavior is the application lifecycle on iOS...
I understand what you're saying, however, in the scenario that I've attempted to describe, the user remains in my app when the Spotify 404 error occurs.

So in the case where the user attempts to play or transfer playback to a device of type, .smartphone after a track has been paused for a few seconds, even with the "freshest" results from getAvailableDevices and the smartphone being in those results and claiming to be active", the user doesn't leave the app.  Only an error is thrown.  At which point, I catch that error and then open the track in the Spotify app when the caught error has the message of "Not found."
For the record, although not relevant except that it pertains to the iOS app lifecycle, I'm using the following to "configure spotify" when the user returns to the app.  The same thing happens .onAppear.
.onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
            Logger.log(.info, "Spotify detail view became active!")
            Task.init {
                await configureSpotify()
            }
        }```

I think I'm almost ready to just open the Spotify app whenever there's the result returned from getAvailableDevices does not include a device that is something other than .smartphone.

I wonder how the heck they do that? 🤔 My guess is that the app knows the phone is always there when the Spotify app is running and it's contantly polling the selectedDevice.

More likely, each Spotify client (the iOS app, desktop app, etc.) communicates with a backend server when it is running and broadcasts its availability. The client currently playing music sends information about the current playback to the server as well. The clients likely establish two-way connections—meaning the server can send information to a client without the client first requesting it. This eliminates the need for the client to constantly "poll" the server for, say, the available devices, like we have to do with the API.

I understand what you're saying, however, in the scenario that I've attempted to describe, the user remains in my app when the Spotify 404 error occurs.

Again, the problem is that after a few seconds of a track being paused and the user starts at step 1 above, and the device is a smartphone, and it's active, the app transferPlayback method throws the error:

The user is using your app, not the Spotify app. Therefore, if the Spotify app is not playing music, then it's suspended. In other words, it's frozen. It cannot run any code. This is why you cannot play music on the Spotify app (without making it the foreground app first). This also explains why the music sometimes begins playing only after you switch back to the Spotify app. At this point the Spotify app becomes unfrozen and can respond to messages sent to it, such as a request to play music.

even with the "freshest" results from getAvailableDevices and the smartphone being in those results and claiming to be active

As I said before:
When the Spotify iOS app is not playing music and you switch from it to your app, it will be suspended very shortly after. A consequence of this is that it is no longer an active or available device (although the Spotify web API may incorrectly report it as active/available).
The last part is bug because the system notifies an app when it's about to be suspended, so the Spotify app should change its status at this point to unavailable. But it doesn't do this, so the API reports the device as still active or available, even though it's neither.
Please re-read my previous post.

.onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
    Logger.log(.info, "Spotify detail view became active!")
    Task.init {
        await configureSpotify()
    }
}

SwiftUI has its open new API for responding to lifecycle events. See this article.

Therefore, if the Spotify app is not playing music, then it's suspended...
The last part is a bug because...

Ah, I get you now.  That is very clarifying 💡
Thank you very much for taking the time to undestand and provide insight on this issue!


Build failure

I git cloned this project and did a 'cmake CMakeLists.txt'. It failed because I did not have linenoise.c under ext/linenoise. I then placed linenoise.c under ext/linenoise and repeated the above command and it succeeded. It generated a Makefile. But when I hit 'make', I get the following error. Can you please tell me what I should do? I git cloned the libelfin project separately, built it and then placed the .so files under ext/libelfin. Please advise.
[ 22%] Built target hello
make[3]: *** No targets specified and no makefile found.  Stop.
CMakeFiles/libelfin.dir/build.make:57: recipe for target 'CMakeFiles/libelfin' failed
make[2]: *** [CMakeFiles/libelfin] Error 2
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/libelfin.dir/all' failed
make[1]: *** [CMakeFiles/libelfin.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

The project uses git submodules, so you should be able to git submodule init and git submodule update to grab the dependencies.


Module 1 Exercise 2 [Pascal Cleland]

Linear trends.docx

Please "drag & drop" exercise 2 file below.

Please UPDATE THE TITLE of this "Issue" in the title bar above with your name.

Excellent observations on the graphs!


social aspect of website

Good job, man 💯
@surajgoud36 please write a comment on the issue and close it,
good job again 🥇

User Posts and User Reviews are working successfully and no issues.


DEX-549 New integration tests issues

Added "connections.max.idle.ms" both to consumer and producer.


running oae-following tests in isolation fails

running the full test suite works, but grunt test-module:oae-following fails:
2 failing

1) Following Activity verify user gets notification and email when a user follows them:
   Uncaught AssertionError: 0 == 1
    at /home/stuart/src/hilary/node_modules/oae-following/tests/test-activity.js:362:28
    at /home/stuart/src/hilary/node_modules/oae-email/lib/test/util.js:105:32
    at allDone (/home/stuart/src/hilary/node_modules/oae-activity/lib/internal/email.js:201:20)
    at /home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:119:16
    at _collectBuckets (/home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:138:16)
    at /home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:149:16
    at /home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:215:28
    at /home/stuart/src/hilary/node_modules/redback/lib/advanced_structures/Lock.js:80:20
    at b (domain.js:183:18)
    at try_callback (/home/stuart/src/hilary/node_modules/redis/index.js:592:9)

2) Following Activity verify users get a single aggregated activity in their email when 1 or multiple users follow them:
   Uncaught AssertionError: 0 == 1
    at /home/stuart/src/hilary/node_modules/oae-following/tests/test-activity.js:420:32
    at /home/stuart/src/hilary/node_modules/oae-email/lib/test/util.js:105:32
    at allDone (/home/stuart/src/hilary/node_modules/oae-activity/lib/internal/email.js:201:20)
    at /home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:119:16
    at _collectBuckets (/home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:138:16)
    at /home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:149:16
    at /home/stuart/src/hilary/node_modules/oae-activity/lib/internal/buckets.js:215:28
    at /home/stuart/src/hilary/node_modules/redback/lib/advanced_structures/Lock.js:80:20
    at b (domain.js:183:18)
    at try_callback (/home/stuart/src/hilary/node_modules/redis/index.js:592:9)

Assigning to @stuartf for fix


[Github] ⚠ Broken WebHook: Fix wrong class for Amount in LastPayment - Swag\PayPal 8.4.1

LastPayment is Using the Wrong Class for Amount
Base of Change is Tag 8.4.0
Hello,
Since updating from PayPal 7 to PayPal 8, in Subscriptions (Api V1) any attempt to access the $amount property inside LastPayment will fail. This issue arises because a specific Amount class that was previously used has been changed to the Common Amount class.
This change is understandable, given that the property name in the LastPayment-class is "amount," which could lead to confusion. In reality, the amount structure in the PayPal-Api Json matches the structure of the Common/Money class. You can compare the two in the screenshots at the bottom.
The original Amount-Class of LastPayment was actually also just an extension of the Money-Class as you can see here.
This issue is correctly handled in the case of $shippingAmount in Subscription.php.
Currently, the $amount-property of LastPayment will always be Null, as the Amount-class cannot be instantiated due to non-matching property names during assignment. This is a minor, non-invasive fix that should restore functionality.
This fix should be back-ported to all currently supported versions (8, 9 and the upcoming 10).

Comparison of Api and Class
PayPal Api JSON

Common\Money Class

Imported from Github. Please see: https://github.com/shopware/SwagPayPal/pull/39

[public] Automated response: This issue is linked to the internal issue https://shopware.atlassian.net/browse/PPI-972.
[created from PPI-972, comment 484412]


[DataStorage] Add SetYaml function for DataStorage configuration

Signed-off-by: Taewan Kim<EMAIL_ADDRESS>Description
This PR is intended to create DataStorage's configuration file, such as datastorage-device.yaml dynamically.
Related #302
Type of change

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Run TC and compare the result to the configs/datastorage/datastorage-device.yaml file.
$ go test -v ./internal/controller/storagemgr/config/
RESULT
INFO[2021-06-08T19:30:24+09:00]yaml_test.go:112 TestYaml
name: datastorage
manufacturer: Home Edge
model: Home Edge
labels:
- rest
- json
- numeric
- float
- int
description: REST Device
deviceResources:
- name: json
  description: json
  properties:
    value: {type: String, readWrite: RW, mediaType: application/json}
    units: {type: String, readWrite: R}
- name: int
  properties:
    value: {type: Int64, readWrite: RW, mediaType: text/plain}
    units: {type: String, readWrite: R}
- name: float
  description: float
  properties:
    value: {type: Float64, readWrite: RW, mediaType: text/plain}
    units: {type: String, readWrite: R}
- name: jpeg
  description: jpeg
  properties:
    value: {type: Binary, readWrite: RW, mediaType: image/jpeg}
    units: {type: String, readWrite: R}
- name: png
  description: png
  properties:
    value: {type: Binary, readWrite: RW, mediaType: image/png}
    units: {type: String, readWrite: R}
- name: string
  description: string
  properties:
    value: {type: String, readWrite: RW, mediaType: text/plain}
    units: {type: String, readWrite: R}

Test Configuration:

Firmware version: Ubuntu 18.04
Hardware: x86-64
Edge Orchestration Release: Coconut

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

@tdrozdovsky PTAL. ^^


Typescript

I hope to catch some bugs with this even if in the end we don't merge it...

Working on it now. making some progress. nice work btw

OK, so I got it working using build tools that I'm familiar with. This is just proof of concept as it needs plenty of work still.
# get working code
git clone -b ts-test https://github.com/paxperscientiam/imagelightbox
# cd
cd ./imagelightbox

You don't have to install anything unless you wanna try it, of course. The code is all under ./src. It's all very rough and not to be taken too seriously.
I can easily put what I wrote aside and pluck out what you like to add/change in the code you've got now. Anyway, thoughts?

@paxperscientiam Oh, that's a load :D
I like the splitting of code. I don't like that the output js bundle in ts-test is 20% bigger. I don't like the change in tooling - I'm not a front-end developer and honestly, to keep it simple for potential contributors, I would like to stick to the well-known tooling systems. That's gulp/webpack for me. I don't really understand some changes and why they should be made, like the mass changing of this to self. Or the changes to the declaration files.
That's just a preliminary look...
Do you know where the size growth comes from?
Anyway, thanks for the code. I'll look at it closer and figure out what can be merged right away and where there's something more to do :)

In the meantime, since you're building on this code anyway, would you please do a review of it so I could merge it? I can't add you as a reviewer atm, seems like you need to accept the invitation to the repo (should've gotten an e-mail)...

I like the splitting of code. I don't like that the output js bundle in ts-test is 20% bigger. I don't like the change in tooling

I totally hear ya. No real change in tooling suggested: it's just what I'm used to so I used it strictly for this purpose (responding quickly on the question Typescript transcription).
The size difference, I imagine, is just an artifiact of change in tooling. FuseBox inserts its API into code.

... like the mass changing of this to self

Where you see it changed, should just be to preserve the reference to the class instance. This becomes necessary as the meaning of "this" depends on the scope.
const self = this;
$components.$buttonObject.appendTo($components.$wrapper).on('click.ilb7', function (): void {
            self._quitImageLightbox();
        });

Here's an explanation on SO: https://stackoverflow.com/a/962040
Interesting that this person discourages the use of "self" as it may clash with window.self. But, "self" could be replaced with whatever.

Do you know where the size growth comes from?

Pretty sure FB API, but it's moot as just used it for experimentation.
Oh, I didn't realize it was an invitation that needed to be accepted -- done!
OK, so what I'll do is just put aside my experiment and review your PR. See that it's working and then we can develop this branch. Is that good?

@marekdedic I haven't pinpointed it yet, but do you know what's up with this? The lightbox is no longer centered.

How about here: https://github.com/marekdedic/imagelightbox/pull/198/files?file-filters[]=.ts#diff-b5912b49b715a4b5ee678109655ec789R432

Hm, I changed it back and no change. I also tried reverting "return false" lines, but no change. So, no answer yet.

@marekdedic OK, I've narrowed it down a bit. I wrapped this bit of code in a setTimeout(..., 1000) and what I saw is that the image positioned in the middle and then moved to the left after the setTimeout ended.

@marekdedic OK, this will probably be the best way to figure this out. Here is how to compare the uncompressed JS between tip of this PR and tip of master branch.
git diff -w --ignore-blank-lines a446c8a:docs/javascripts/imagelightbox.js 00114cf:docs/javascripts/imagelightbox.js

@paxperscientiam I've fixed the issue in f1476f7, thanks for spotting it!


Make checklist of test cases before merge/release

Before merge changes to master we should verify, that all functionality is fine
Should be list of checks, like:
GUI

Send to one user

with transaction fee
with default fee
with valid/invalid amount

Send to multiple users

with transaction fee
with default fee
with valid/invalid amount

Receive

valid (all fields are correct)

invalid (some combinations)

Zerocoin mint
Zerocon spend
Transactions
Znode

Settings

Encrypt wallet
Options
Help

Debug window
Command-line options

File

...

To test fresh sync and also wallet reindex.
Zerocoin spends both first party and third party.
Backup wallet
To test in wallet mining? setgenerate true
getblocktemplate still works?
May need @psolstice or @mfrankovi  feedback as well


Fix category boosts

When walking over the child categories for a reflection, we were looking up category information in the categories collection, but this doesn't get written to until the end of the block, so there was no guarantee it would be found. Most straightforward fix seems to be to just use the raw category name when checking for boosts.

Yikes, that's a problem!

Thanks for the quick merge. Hopefully that's the last of the issues... I'll do a little more testing, then return to the defaults issue when I can.


Composite file selection use date / time in filename, not image age

In main.cpp, searchForImages, the code looks for which data sets to use for creating composite images based on the file creation date being within 6 hours (21,600 seconds) of the current time:
if(entry.path().extension() == ".gcp" && fileCreatedSec < 21600) { //6h
This works well when images are created just after each pass has been created when the file creation time for the .gcp file is accurate. However when processing pass .wav files in a batch mode, i.e. some time after the passes, when several .gcp files will have been created in the last few minutes or so, this will inaccurately match file data sets to be included in the composite data selection.
What I'd suggest is to parse the filenames for the gcp files to get the age of the passes as this directly reflects the pass date time and not when the pass data was processed:
2022-12-1-18-27-38.gcp

Source file for settings.ini and the .s and .tle files - https://kiwiweather.com/downloads/meteordemod.zip (339MB - let me know when you've downloaded this so I can remove it). I can supply the .wav files, but that is about twice as much space!
Commands used to generate the images:
meteordemod -i 2022-12-01-16-41-42-METEOR-M_2.s -t 2022-12-01-16-41-42-METEOR-M_2weather.tle -f jpg -d 01-12-2022
meteordemod -i 2022-12-01-18-21-57-METEOR-M_2.s -t 2022-12-01-18-21-57-METEOR-M_2weather.tle -f jpg -d 01-12-2022
meteordemod -i 2022-12-02-06-41-13-METEOR-M_2.s -t 2022-12-02-06-41-13-METEOR-M_2weather.tle -f jpg -d 02-12-2022
When generating each of these three data sets sequentially over a few minutes, all get included in the composite. I'd expect only the first two (date = 01-12-2022) to be included and not the last one (date = 02-12-2022) as that pass is about 12 hours later than the first two.


Does it support mesh topology?

Hi,
No, this is only for BLE. For BT Mesh we have a separate app: https://play.google.com/store/apps/details?id=com.siliconlabs.bluetoothmesh&hl=en
The source code for this app can be found in the BT Mesh ADK which can be downloaded via Simplicity Studio: https://www.silabs.com/community/software/simplicity-studio
Regards,
Tiago


Unexpected Token < ... bundle.js

Everything seems to be working great! Just getting a single error...

And when I open it up, the console tells me...

Has anyone ran into this error before? Thanks!

Ah got it. Had to remove the script tag in my index.html file, manually referencing my bundle at /build/bundle.js. HtmlWebpackPlugin() inserts the script tag in the body in reference to the bundle. The more you know...

Hi! I have the same problem
this is my code
<!doctype html>

Reduxstagram

and the reduxstagram.js here
import React from 'react';
import {render} from 'react-dom';
import css from './styles/style.css'
render (prueba, document.getElementById('root'));
if you can helpme; textme please!


OCPBUGS-29637: azurepathfix: fix stack hub, government and workload identity setup

this fixes azure government cloud, where the suffix differs.

/jira refresh

this is critical to both 4.15 and another backport to 4.14.
/label acknowledge-critical-fixes-only
/cherry-pick release-4.15

/test e2e-aws-ovn-image-registry

/test e2e-hypershift

/lgtm

/retest

/payload periodic-ci-openshift-release-master-ci-4.16-e2e-azure-ovn

/label qe-approved

/payload-job periodic-ci-openshift-release-master-ci-4.16-e2e-azure-ovn

we're seeing some intermittent auth errors on various jobs - I'm looking into them.
/hold

/test verify

/payload-aggregate periodic-ci-openshift-release-master-ci-4.16-e2e-azure-ovn 4

/test e2e-azure-operator

The payload job failed not because the tests didn't pass, but because I chose to run it 4 times (instead of the required 6 to succeed). I inspected every test with image-registry in its name individually, and each of them had passed 4 times as expected.

I'm running the same tests locally, let's see who's fastest.
/test e2e-azure-operator

Test run on a 4.15.0-0.ci.test-2024-02-20-161756-ci-ln-pl80pmb-latest cluster (built by ClusterBot with the code in this PR). Note that I removed some output to make the tests result more clear:
go test -v -run PVC ./test/e2e               ✔  18:32:16 
=== RUN   TestDefaultPVC
    [...]
--- PASS: TestDefaultPVC (133.62s)
=== RUN   TestCustomRWXPVC
    [...]
--- PASS: TestCustomRWXPVC (124.35s)
=== RUN   TestCustomRWOPVC
    [...]
--- PASS: TestCustomRWOPVC (123.45s)
PASS
ok  	github.com/openshift/cluster-image-registry-operator/test/e2e	391.967s

I'm trying to get a 4.16 build of this PR but so far have not been able to. Will report back.

It is already on hold;
/lgtm

/lgtm
/retest

the job changed in this PR does not run on AWS, and hypershift is AWS only - the failures are unrelated.
/override ci/prow/e2e-hypershift

/hold cancel


Invoke grpc call

implemented invoke, added -Werror -Wunused:all -deprecation -feature and cleaned up the core codebase

codegen tests fail for obvious reasons, needs work on codegen side of the equation


Background worker - Clair request timeouts crashes background worker

The background worker crashes when a request timeout in Clair happens, this seems to happen when processing layers which are big e.g 600mb+.
The Clair API request time out is set to the default  of 900 seconds. The background worker timeout before this time has elapsed. I assume Portus is using a smaller client timeout.
I would expect the background worker not to crash because of a timeout as well.
Portus version 2.3.1
Running under Kubernetes 1.9.4
Error:

/usr/lib64/ruby/2.5.0/net/protocol.rb:181:in rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)         from /usr/lib64/ruby/2.5.0/net/protocol.rb:157:in readuntil'
from /usr/lib64/ruby/2.5.0/net/protocol.rb:167:in readline'         from /usr/lib64/ruby/2.5.0/net/http/response.rb:40:in read_status_line'
from /usr/lib64/ruby/2.5.0/net/http/response.rb:29:in read_new'         from /usr/lib64/ruby/2.5.0/net/http.rb:1494:in block in transport_request'
from /usr/lib64/ruby/2.5.0/net/http.rb:1491:in catch'         from /usr/lib64/ruby/2.5.0/net/http.rb:1491:in transport_request'
from /usr/lib64/ruby/2.5.0/net/http.rb:1464:in request'         from /srv/Portus/lib/portus/http_helpers.rb:160:in block in get_response_token'
from /usr/lib64/ruby/2.5.0/net/http.rb:910:in start'         from /usr/lib64/ruby/2.5.0/net/http.rb:609:in start'
from /srv/Portus/lib/portus/http_helpers.rb:159:in get_response_token'         from /srv/Portus/lib/portus/security_backends/clair.rb:97:in post_layer'
from /srv/Portus/lib/portus/security_backends/clair.rb:28:in block in vulnerabilities'         from /srv/Portus/lib/portus/security_backends/clair.rb:28:in each_index'
from /srv/Portus/lib/portus/security_backends/clair.rb:28:in vulnerabilities'         from /srv/Portus/lib/portus/security.rb:57:in block in vulnerabilities'
from /srv/Portus/lib/portus/security.rb:55:in each'         from /srv/Portus/lib/portus/security.rb:55:in vulnerabilities'
from /srv/Portus/lib/portus/background/security_scanning.rb:47:in block in execute!'         from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/activerecord-4.2.10/lib/active_record/relation/batches.rb:51:in block (2 levels) in find_each'
from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/activerecord-4.2.10/lib/active_record/relation/batches.rb:51:in each'         from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/activerecord-4.2.10/lib/active_record/relation/batches.rb:51:in block in find_each'
from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/activerecord-4.2.10/lib/active_record/relation/batches.rb:124:in find_in_batches'         from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/activerecord-4.2.10/lib/active_record/relation/batches.rb:50:in find_each'
from /srv/Portus/lib/portus/background/security_scanning.rb:35:in execute!'         from /srv/Portus/bin/background.rb:56:in block (2 levels) in <top (required)>'
from /srv/Portus/bin/background.rb:54:in each'         from /srv/Portus/bin/background.rb:54:in each_with_index'
from /srv/Portus/bin/background.rb:54:in block in <top (required)>'         from /srv/Portus/bin/background.rb:53:in loop'
from /srv/Portus/bin/background.rb:53:in <top (required)>'         from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/railties-4.2.10/lib/rails/commands/runner.rb:60:in load'
from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/railties-4.2.10/lib/rails/commands/runner.rb:60:in <top (required)>'         from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:123:in require'
from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:123:in require_command!'         from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:90:in runner'
from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:39:in run_command!'         from /srv/Portus/vendor/bundle/ruby/2.5.0/gems/railties-4.2.10/lib/rails/commands.rb:17:in <top (required)>'
from bin/rails:12:in require'         from bin/rails:12:in '
exit status 1

@owenhaynes the 2.3 image has already been updated. Could you pull the image again and tell me if you can still reproduce this issue ?

After some time we will release a proper 2.3.4 release with this fix included :+1:

Looks to be working well at the moment.
On Fri, 6 Apr 2018, 9:46 am Miquel Sabaté Solà<EMAIL_ADDRESS>wrote:

After some time we will release a proper 2.3.4 release with this fix
included 👍
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/SUSE/Portus/issues/1751#issuecomment-379189329, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABZ5fbfCCUf57-9uegDH2PtTufCGnhjeks5tlytvgaJpZM4TDnTI
.


[Auto-generated] Check & update dependencies (pyproject.toml)

Update dependencies (pyproject.toml)
Automatically created PR based on the 'CI - Check pyproject.toml dependencies' workflow in SINTEF/ci-cd.

Codecov Report
Patch and project coverage have no change.

Comparison is base (51e0add) 90.48% compared to head (ca2d937) 90.48%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@                  Coverage Diff                   @@
##           ci/dependency-updates     #106   +/-   ##
======================================================
  Coverage                  90.48%   90.48%
======================================================
  Files                         25       25
  Lines                        389      389
======================================================
  Hits                         352      352
  Misses                        37       37

Flag
Coverage Δ

linux
90.48% <ø> (ø)

windows
?

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Fix bad deployment env name/value pair

Issue #, if available:
Description of changes:
Fix bad deployment env name/value pair
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/lgtm


RFE: Increase resiliance for long-running clusters / optimize resource usage

The default configuration of libvirt-machines is not very specific on resource-usage and disk optimization.
When running a OpenShift cluster on overprovisioned disk, one will want to make sure that sparse-disks will release/trim freed blocks, otherwise the vms will get paused due to no space left on device.
Also there is no need to have a graphical system included on the vms, as serial output has some additional benefits like ability to scroll back to missed output.
Steps to be done:

[X] remove graphical-device and vnc from the vm-definition
[X] test "discard-mode: unlink" for OS-disks used by OCP
[X] check if scheduled fstrim runs need to be enabled on the nodes
[x] apply kubelet-config with tight imageGarbageCollection

This issue should be considered as a draft for optimizations in regards to limited resource usage on a single host.

vm.xml.j2 needs adjustments:
Change disk-driver options:
   <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/{{ vm_instance_name }}.qcow2'/>
      <target dev='vda' bus='virtio'/>
   </disk>

should become to:
   <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' discard='unmap' />
      <source file='/var/lib/libvirt/images/{{ vm_instance_name }}.qcow2'/>
      <target dev='vda' bus='virtio'/>
   </disk>

Change machine-type:
<os>
    <type arch="x86_64">hvm</type>
    <boot dev="hd"/>
  </os>

Change from old pc-i440fx-* to q35-* and also switch to UEFI instead of BIOS (would allow secure-boot later on).
  <os firmware="efi">
    <type arch="x86_64" machine="q35" >hvm</type>
    <boot dev="hd"/>
  </os>

  <devices>
    <controller type="pci" index="0" model="pcie-root"/>
    ...
  </devices>

Remove:
<graphics type="vnc" port="-1"/>

Add:
<video>
    <model type='none'>
</video>

After the system is set to Q35 and the driver-option to enable discarding, I was able to run fstrim on a node:
% oc debug node/compute-0.compute.local
...
sh-4.4# chroot /host
sh-4.4# fstrim / -v
/: 108.9 GiB<PHONE_NUMBER>56 bytes) trimmed

Also the size of the qcow image reported a smaller number:
# qemu-img info -U /var/lib/libvirt/images/ocp4-compute-3.qcow2
image: /var/lib/libvirt/images/ocp4-compute-0.qcow2
file format: qcow2
virtual size: 120 GiB<PHONE_NUMBER>80 bytes)
disk size: 10.3 GiB
cluster_size: 65536
backing file: /var/lib/libvirt/images/rhcos-4.10.3-x86_64-qemu.x86_64.qcow2
backing file format: qcow2
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

For testing purpose, I added your suggestion into branch libvirt-xml-improvements

Tested on RHEL8 and RHEL9, vnc/video change is really great.

Branch libvirt-xml-improvements merged into devel.

The following machineConfig would needed to be applied for reduced caching of images:
# from https://cloud.redhat.com/blog/image-garbage-collection-in-openshift
apiVersion: machineconfiguration.openshift.io/v1
kind: KubeletConfig
metadata:
  name: imgc-kubeconfig
spec:
  kubeletConfig:
    imageGCHighThresholdPercent: 66
    imageGCLowThresholdPercent: 50
    imageMinimumGCAge: "5m30s"
  machineConfigPoolSelector:
    matchLabels:
      pools.operator.machineconfiguration.openshift.io/worker: ""

@ableischwitz why not just use a smaller disk? What's the reason to reduce chaing of images?

The reason is quite simple: a) the size of 120G is documented as minimum size for disks and b) the size of disks is limited on such setups. The image-cache is sized for setups which don't suffer from disk-limitations.
Reducing that size (60% of 120G is still quite large) allows to maintain slim vm-disks, while also being able to use more space in case it's needed.
In case we reduce the size of the vm-disks, there won't be any easy way to start larger (or rather hughe??) workload images.

I don't get it if you don't have enough size for 3x120Gb disk it then use smaller disks. You cannot grow either...
You would suggest adding this as post-install step, if you like to automate it you can write your own post-install add-on.


How to guarantee data deduplication by clickhouse?

At first，I thought ReplacingMergeTree can do this, after i tried serveral times (insert a set of data by file with version 1, than insert the same data set with version 2), i find this method can't realize data  deduplication, even if i create a  materialized view by select with final keyword, or group by max(ver).
I also read it from the documents "https://clickhouse.yandex/docs/en/table_engines/replacingmergetree.html" that guarantee of data deduplication can't be done by ReplacingMergeTree .
So how do i guarantee data deduplication when some cases i have to insert a set of data many times(load data from file to table is terminated by unexpected exceptions)?

If you use Replicated tables, it will deduplicate inserted blocks of data:

if exactly identical block of data (same rows in same order) was inserted twice, it will be effectively inserted once.

See:
https://clickhouse.yandex/docs/en/table_engines/replication.html?highlight=deduplicated
(after "Blocks of data are deduplicated.")
Non replicated tables doesn't have this feature.

I can't remember which version introduced the DEDUPLICATE to the OPTIMIZE query but it was effective for me in removing dupes. It does appear to "rewrite" the whole table. Also, I can't remember if I needed to use FINAL.
OPTIMIZE TABLE tablename [FINAL] DEDUPLICATE;

@lttPo do you have any further questions?

Thx @daledude. Final is necessary for this case.


Release PR workflow should be idempotent

What steps did you take and what happened:

Run the create_release_pull_request action such that it fails during the manifest or doc generation
Fix the cause of the failure and get it merged into main
Trigger the create_release_pull_request job again

What did you expect to happen:
I expect the create_release_pull_request option to reset the already existing branch to the updated main branch before proceeding with the release
Anything else you would like to add:
Environment:

Eraser version: v1.0.0-beta.3

No longer applicable since we can't use this workflow anymore. Closing for now


[BUG] [VSCode Extension]

Describe the bug
A clear and concise description of the bug.
How To Reproduce the bug
Steps to reproduce the behavior, how frequent can you experience the bug:
1.
Screenshots

On the VSCode primary side bar > the Prompt flow pane > quick access section. Find the "install dependencies" action. Please it and attach the screenshots there.
Please provide other snapshots about the key steps to repro the issue.

Environment Information

Promptflow Package Version using pf -v: [e.g. 0.0.102309906]
Operating System: [e.g. Ubuntu 20.04, Windows 11]
Python Version using python --version: [e.g. python==3.10.12]
VS Code version.
Prompt Flow extension version.
On the VS Code bottom pane > Output pivot > "prompt flow" channel, find the error message could be relevant to the issue and past them here. That would be helpful for our trouble shooting.
If your code to repro the issue is public and you want to share us, please share the link.

Additional context
Add any other context about the problem here.

Hi @tasnef , seems this is an empty issue template, I'll close it for now, please add more description and reopen it if you have anything would like to share with us.


Bugs in the UI for the Landing Page

@anjalit03 I think I should work more on the UI enhancement of home page.
There are few issues which i have observed -

Responsiveness in featured Events.

The font of the homepage somewhere is not visible as it black and the background color is also with some darker theme, also the theme is not consistent throughout which contributes to bad user experience.

The navbar is too enlage and inconsistent.

Please assign me these tasks so that I can fix these issues under HacktoberFest 2024.

Yes please work on this but about the navbar someone is already working on this so please work on the other issues

Plz assign to me

@anjalit03 Please review PR #39 for the desired changes.


Add term industrial process

Description of the issue
Issue #243 has shown that a class industrial process is needed.
Also there is an IPCC sector industrial processes and processes where a relation covers some industrial process would fit well.
Ideas of solution
Wikipedia's definition:

Industrial processes are procedures involving chemical, physical, electrical or mechanical steps to aid in the manufacturing of an item or items, usually carried out on a very large scale. Industrial processes are the key components of heavy industry.

Workflow checklist

[ ] I discussed the issue with someone else than me before working on a solution
[ ] I already read the latest version of the workflow for this repository
[ ] The goal of this ontology is clear to me

I am aware that

[ ] every entry in the ontology should have a definition
[ ] classes should arise from concepts rather than from words

I like the definition of wikipedia, but without the last sentence:

Industrial processes are the key components of heavy industry.

I would leave this out, because it limits the industrial process to heavy industry. But the first part sounds good to me.

Since the term has it already in it's name, I would suggest to use process as a parent class and adapt the definition accordingly:
An industrial process is a process involving chemical, physical, electrical or mechanical steps to aid in the manufacturing of an item or items, usually carried out on a very large scale.

usually carried out on a very large scale

This is rather vague.

Some further definitions I found which aren't too bad:

a systematic series of mechanical or chemical operations that produce or manufacture something. This definition in the  ExO ontology. From this definition I like that it mentions the series of subprocesses.
process of producing goods, definition in Wikidata. With that definition I like that it relates it to the term good (which is probably the same or at least related to the term we will define in #340).

The definition you proposed above does not link very much to the terms we already have in our ontology. So I try a definition that reuses existing terms:
An industrial process is a process that has output object or object aggregates that are economic goods. An industrial process consists of several subprocesses. Examples of subprocesses that can be involved in an industrial process are energy transformations and chemical reactions.

Your second definition proposal sounds also good to me. I would just add some words at the end:
An industrial process is a process that has output object or object aggregates that are economic goods. An industrial process consists of several subprocesses. Examples of subprocesses that can be involved in an industrial process are energy transformations, mechanical operations and chemical reactions.

As we have not yet defined a class mechanical operation I tend to leave it out of the list of examples. But if you insist I am okay including it in the examples.
I think we are ready to implement, if @sfluegel05 agrees, too.
@Vera-IER , do you want to implement? Then I would assign you to this issue.

Yes I can implement it, after @sfluegel05 agreed.

I agree. Maybe we can add a relation has output some (object or object aggregate) as well.

I don't know how to create an or in a relation. Is it possible?
If not I tend to leave the relation out, because it's hard to decide if object or object aggregate would fit better.

That's possible. In Protegé, you can write 'has output' some (object or 'object aggregate') in the class expression editor. It is the same processes as for single classes but instead of the class name you use two class names with an or in between.

Okay, I include it then.


Missing results for query "rtl"

Hi, it would be great if you could provide a reference on how to implement the right-to-left feature in the themes.

could this be a good recipe to have within https://docs.astro.build/en/recipes/i18n/ @sarah11918 ?

There's literally no solution about RTL layout in this link.

I don't think they were suggesting there was a solution there, but saying that might be a good place to ADD something!
I'm not sure what you mean by "in the themes"? I think we could have a recipe showing how to add RTL support in an Astro site, but I don't know if you mean something different or more specific? But also, this is not something special to Astro, it is usually done by adding CSS. So we often do not document things that are outside of Astro, like normal CSS or JavaScript. I think you can search outside of Astro Docs and see how to get the CSS support you need for RTL.

I suggest creating a document explaining how to create rtl.css for different themes, not for a specific theme, but all of them.


Opening http://localhost in the existing Chrome browser

Use case
Running the following command helps me build and run my project.
flutter run --debug -d chrome --target=lib/main_development.dart --web-port=64146

The issue I’m facing is that Flutter launches a new Chrome browser to display the app. Since this is my company laptop with strict policies, I can’t create a new profile or must log in to my profile every time I run the app, which is quite frustrating. This is especially inconvenient because I already have an open browser where I’m logged in.
Note: Although I can copy and paste the localhost URL into a new tab in the existing browser, it isn’t connected to Flutter, so I can’t debug or view logs!

Proposal
I am looking for an ability to let me ask Flutter to open the localhost as a tab in the existing browser (Profile).
In case of having multiple profiles, I need to tell Flutter that which Profile I want the localhost opens in.
So, these are the cases I can imagine:
Case 1: When any Chrome browser is not open then Open a new one (what we are doing right now)
Case 2: When one Browser/Profile is open then open the localhost in this profile
Case 3: When the Chrome browser has multiple profiles then open the localhost in a browser/profile that user has defined (possibly as a command line argument)

@HesamKamalan
Can you try flutter run -d web-server that will run a plain server for you to open in your own browser to see if it helps in your case or not ?

Thank you @darshankawar for your answer. Yes, I tested that before. It helps a lot and I can test my app as long as I don't need to debug. Also, I noticed that I can see my logs if I logged them using the print() function but not using the development.log() function.

Thanks for the update. Keeping the issue open for team's tracking.

 This should serve the debug version of the app accessible via any working browser you have.
Use a separate installation of Chromium-compatible browser, such as Chrome for Testing, and then pass the CHROME_EXECUTABLE variable, e.g. CHROME_EXECUTABLE=/path/to/chromefortesting flutter run -d chrome.

I'm not sure if we can do much more for bespoke company policies like this.


Upgrade flow-go to include bootstrapping with NFT and Metadata Views

Description
see https://github.com/onflow/flow-go/pull/4536
I removed the three contracts from common contracts as FVM bootstrapping now already adds those.

For contributor use:

[ ] Targeted PR against master branch
[ ] Linked to GitHub issue with discussion and accepted design OR link to spec that describes this work
[ ] Code follows the standards mentioned here
[ ] Updated relevant documentation
[ ] Re-reviewed Files changed in the GitHub PR explorer
[ ] Added appropriate labels

Codecov Report

Merging #443 (ecad54e) into master (ebdcc45) will decrease coverage by 0.32%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #443      +/-   ##
==========================================
- Coverage   54.51%   54.19%   -0.32%
==========================================
  Files          27       27
  Lines        3590     3572      -18
==========================================
- Hits         1957     1936      -21
- Misses       1473     1476       +3
  Partials      160      160

Flag
Coverage Δ

unittests
54.19% <ø> (-0.32%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

emulator/contracts.go
69.23% <ø> (-5.77%)
:arrow_down:

... and 1 file with indirect coverage changes


[ISSUE #6112] fix typos

Make sure set the target branch to develop
What is the purpose of the change
close #6112
Brief changelog
fix typos
Verifying this change
XXXX
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Codecov Report

Merging #6113 (d9bc56e) into develop (975b4f1) will increase coverage by 0.08%.
The diff coverage is 81.81%.

@@              Coverage Diff              @@
##             develop    #6113      +/-   ##
=============================================
+ Coverage      43.23%   43.31%   +0.08%
- Complexity      8846     8859      +13
=============================================
  Files           1094     1094
  Lines          77137    77137
  Branches       10057    10057
=============================================
+ Hits           33350    33414      +64
+ Misses         39623    39560      -63
+ Partials        4164     4163       -1

Impacted Files
Coverage Δ

...cketmq/acl/plain/RemoteAddressStrategyFactory.java
89.51% <81.81%> (ø)

.../rocketmq/client/producer/RequestFutureHolder.java
81.39% <0.00%> (-6.98%)
:arrow_down:

.../org/apache/rocketmq/remoting/netty/TlsHelper.java
71.57% <0.00%> (-6.32%)
:arrow_down:

...ache/rocketmq/common/stats/MomentStatsItemSet.java
39.13% <0.00%> (-4.35%)
:arrow_down:

...tmq/remoting/protocol/body/ConsumerConnection.java
95.83% <0.00%> (-4.17%)
:arrow_down:

...rg/apache/rocketmq/remoting/netty/NettyLogger.java
13.60% <0.00%> (-1.37%)
:arrow_down:

...rocketmq/client/impl/factory/MQClientInstance.java
46.82% <0.00%> (-1.19%)
:arrow_down:

...cketmq/broker/schedule/ScheduleMessageService.java
56.91% <0.00%> (-1.14%)
:arrow_down:

...he/rocketmq/client/impl/consumer/ProcessQueue.java
60.79% <0.00%> (-0.89%)
:arrow_down:

...rocketmq/broker/processor/PopMessageProcessor.java
36.68% <0.00%> (-0.46%)
:arrow_down:

... and 19 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Get-DbaDbView & Get-DbaDbStoredProcedure - fix issue #6172 with piping

Type of Change

[X] Bug fix (non-breaking change, fixes #6172
[ ] New feature (non-breaking change, adds functionality, fixes # )
[ ] Breaking change (effects multiple commands or functionality, fixes # )
[X] Ran manual Pester test and has passed (`.\tests\manual.pester.ps1)
[ ] Adding code coverage to existing functionality
[ ] Pester test is included
[ ] If new file reference added for test, has is been added to github.com/sqlcollaborative/appveyor-lab ?
[ ] Nunit test is included
[X] Documentation
[ ] Build system

Purpose
Issue #6172 - errors piping from Get-DbaDatabase into Get-DbaDbView & Get-DbaDbStoredProcedure
Approach
Implement use of $InputObject for both, copying functionality from Get-DbaDbTable
Commands to test
Get-DbaDatabase -SqlInstance server -ExcludeSystem | Get-DbaDbView
Get-DbaDatabase -SqlInstance server -ExcludeSystem | Get-DbaDbStoredProcedure

failed tests are for unrelated files

Ha - you beat me to this, was just about to push similar changes to add the tests. Do you want me to push them for Get-DbaDbStoredProc... did you just add for the view function?

Sorry, I'm working on both and got to looking at the test and working on fixing them as well....shaving off perf issues on each command.
This is ridiculous for the stored procedure enumeration:

Ha - yeah I noticed the tests were realllly slow.

Just made a change to the Get-DbaDbView file, it was unhappy with the -not for IsSystemObject, tests pass now locally.

thanks to you both!

I had already updated those but I guess your change overwrote my commit.


How to incrementally deploy typescript bot from VS Code?

Hi,
I cloned and deployed 13.basic-bot using Bot Cli. Now I did minor changes in typescript files and want to deploy it to Azure App Service. How to do that? I don't want to clone the whole bot again just web app source code?
If I user aspnet core and Visual Studio I test to download publishing profile and successfully deploy the back-end using Visual Studio. How to do that with Typescript and VS Code?
Best,
Bojil

The Microsoft Bot Framework team prefers that how to questions be submitted on Stack Overflow. The official Bot Framework Github repos are the preferred platform for submitting bug fixes and feature requests.

Yep .. that is annoying for Node developer.
I ended up with having two projects. One coming from the via the Azure portal generated source in JavaScript and another one, where I actually really develop in TypeScript.
In order to deploy I have to copy and paste the JavaScript files into my local Azure project and deploy from there via the az cli.
This is not elegant at all, but there is no automatic Azure way to deploy TypeScript.


Checking for compatible peer protocols MIA?

We will apparently happily allow incompatible peer protocols to connect and add to the socket.
This is a major oops!

Well, maybe not a major oops, but a definite oversight.  Harmless for correctly configured networks, but incorrect nonetheless.

Oh wait, I think I stand corrected.  This appears to be handled at the transport layer.


Add endpoint to accept client admin invites

As a pending client admin who received an admin invite link, I should be able to click on the link and be sent to a page to accept.
Acceptance Criteria

Clicking on the link as a logged in user should take them straight to the acceptance page
Clicking on the link as an anonymous user should take them to the login page and redirect to the acceptance page
Accepting the invite should create a new ClientAdmin instance linking the current user and the client that the invite is associated with.

Blocked until the invitation model is created in #19.


Chart.js & ajson binding

Unfortunately i have a small problem with the new ajson logic and chart js:
Not every chart is displayed:

I implemented a new custom compression:
https://github.com/abap2UI5/abap2UI5/blob/c9e154d02e4cdf6395ea88a7eb70a486cdd162eb/src/01/05/z2ui5_cl_cc_chartjs.clas.abap#L616
The model at the frontend looks very similar to the former version now:

@choper725 i have no time to check the whole frontend logic. maybe you have a chance to see what we need to add here? when you set a breakpoint at the new compression implementation you see that you have all freedom now to decide which attribute is send to the frontend.

reason for the change here https://github.com/abap2UI5/abap2UI5/issues/843

in the json there is a parameter called scaleid which should be scaleID and  also there are some keys i change syntax in the CC class set method..
which i see is not working thats why some charts dont show up

ah thanks, good hint
yes scaleid stays scaleid because it is not written in snake case. it is just defined as:
scaleid
the others which get camelcased are defied in snake case like:
border_color
border_width
etc.
they become:
borderColor
borderWidth
etc.
Mhh i think fixing is no problem, but the old approach than would not work anymore.
Maybe you can ensure first if all your other sceanrios and apps run with the new json logic and then we can adjust chart.js in the end.

ill check all of my custom control and let you know if something behaves wierd

with the latest PR, one chart more works again:

see https://github.com/abap2UI5/abap2UI5/issues/843


error setting up interface service

i am new to kserve , i am following the guide from
https://kserve.github.io/website/latest/get_started/first_isvc/
kubectl apply -n kserve-test -f - <<EOF
apiVersion: "serving.kserve.io/v1beta1"
kind: "InferenceService"
metadata:
name: "sklearn-iris"
spec:
predictor:
model:
modelFormat:
name: sklearn
storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"
and i am getting the error
error: resource mapping not found for name: "sklearn-iris" namespace: "" from "STDIN": no matches for kind "InferenceService" in version "serving.kserve.io/v1beta1"
ensure CRDs are installed first

The CRD does not look installed. What steps did you follow to install KServe?

thanks you i installed the CRDs now its working


[1.18.2] Copper tools able to mine obsidian

It seems like copper tools are able to break obsidian blocks, is this a bug? Since copper is less durable than iron and iron tools can't mine obsidian (if you break obsidian with iron it drops nothing), it seems to not make sense that obsidian is more readily available if you have copper tools than it would otherwise be if you were only able to acquire it when using either obsidian, ruby, emerald, diamond etc. Love the mod so far!

Copper should not break obsidian.  Which version of the mod are you using.

EmeraldTools-Fabric-1.18.2-1.3.43.jar, running on a server using 1.18.2, same version mirrored on server and client

ok, must be something more going on here.  I tried on single player and on my server.  copper pickaxe could not break obsidian or crying obsidian.  Copper excavator and hammer could not break adjacent obsidian either.
Can you explain more details about what you are seeing when it occurs?

Oh, I see.  if you beat on the obsidian until it breaks it drops the block, which it should not.

Ok, the problem is that I some how set the default mining level of the copper tool material to 3 (diamond) instead of 2 (iron).
I will fix the default in next update, but you can change on your side in the config:
"copperMiningLevel": 2

Please confirm that fixes it for you.

Same with steel tool material:
"steelMiningLevel": 2,

Updated the config, that doesn't appear to change the behavior

Both configs?
Client and Server.

Yep, with client and server configurations changed I'm still able to get obsidian blocks with copper tools. Is it by design that the client and server can run with different settings? Because if so, that seems like an issue in itself if players can override the server config by editing their client config.

usually no.  The mining level is set by the server config.  I get no obsidian drops with the copper pickaxe, hammer, or paxel.  Did you restart the server after the config change or just a reload?

Also, what other mods are you running on the server?

Ok I think we're getting somewhere. Just tested with the Paxel and Pickaxe and can confirm, setting copper `"copperMiningLevel": 2" achieves intended behavior, however the hammer continues to be able to generate obsidian drops. I've been playing on survival, are those stats cached on a per-item basis or are they applied globally?
Mod list is as follows:
architectury          4.3.53
cloth-config          6.2.57-fabric
consistency_plus      0.5.0+1.18.2-fabric
EmeraldTools-fabric   1.18.2-1.3.43
fabric-api            0.51.1+1.18.2
Incendium             5.0.3
lithium               18.2-0.7.9
sodium                18.2-0.4.1+build.15
starlight             1.0.2+fabric.89b8d9f
Terralith             2.2.1a

I don't understand what you are asking:  "are those stats cached on a per-item basis or are they applied globally?"

What I meant by that was "if I were to acquire a different copper hammer would that hammer have the lower mining level than the one that I already had" in other words, are the stats cached for each individual item? I answered my question though because even with destroying and creating a new instance of a copper hammer, the copper hammer is able to get obsidian drops.
As I said above, I've tested the paxel and pickaxe and those appear to be working correctly now, I can't get obsidian drops with those, just the hammer.

oh, I see.  So, no, material values are loaded at startup and applied to ALL items of that material, no matter what they were before.
NOTE:  I have covid 19 and my brain is a bit foggy as a result.
I thought I tested the the hammer, but I didn't.  I just tested the hammer and it breaks obsidian with drops.  I looked into my code and I can see why.  I do a manual check to see if the block state is suitable to break by a diamond pickaxe.
I will look again in the morning to see how I can fix that.

Aw damn, sorry about that! Wishing you a speedy recovery. All good, noticed this was an issue and wanted to confirm it as such. Thanks again for helping me diagnose!

copper hammer is fixed in latest update.  Also fixed the mining level 2 hammers in MoreGems.
Various hammers in the 1.19.1 version will be fixed in the next updates.


Handle onClick event on timegraph row

This feature was woking fine with earlier versions of PIXI
Current PIXI is not able to handle events for elements with opacity 0.
Changed the Opacity as a workaround fix.
Fixes #52
Signed-off-by: muddana-satish<EMAIL_ADDRESS>

Adding @MatthewKhouzam as reviewer. I think he worked on something similar at some point when moving to pixi 5, no?

Changed Opacity to 0.001 which is almost same as 0. Thanks @MatthewKhouzam  for the suggestion.

@tahini can we revert these changes since @MatthewKhouzam has fixed this issue in #70 ? Or should I create a new PR to remove these changes?

@muddana-satish sure! You can revert the commit and then do a PR for it ;-) I think it's the best way to go, if we really want to test that it works before merging.


feat: route all prints through common::shell

Motivation
Fixes #3981.
Fixes #2433.
Fixes #1976.
Implementation from cargo, tweaked so it can be a global static instead of a field in a Config struct.
Solution
Disallow std::print! and similar by replacing them with Shell macros.

Blocked on a UI test refactor.

Superseded by #6569


Compiler crash when using as on numeric literal

When compiling following code,
actor Main
  new create(env: Env) =>
    try
      let n = 0 as I64
    end

compiler crashes and shows stacktrace.
e:\github\ponyc\src\libponyc\type\matchtype.c:403: is_x_match_nominal: Assertion `0` failed.

Backtrace:
  (ponyint_assert_fail) [00007FF7D110D11D]
  (is_x_match_nominal) [00007FF7D10F0731]
  (is_x_match_x) [00007FF7D10EF78E]
  (is_matchtype) [00007FF7D10EF6A7]
  (add_as_type) [00007FF7D108E8BC]
  (expr_as) [00007FF7D108CC08]
  (pass_expr) [00007FF7D105A195]
  (ast_visit) [00007FF7D0FF837C]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (ast_visit) [00007FF7D0FF82BE]
  (visit_pass) [00007FF7D0FF869F]
  (ast_passes) [00007FF7D0FF89A8]
  (ast_passes_program) [00007FF7D0FF7E93]
  (program_load) [00007FF7D100DB7A]
  (compile_package) [00007FF7D0FEE827]
  (main) [00007FF7D0FEED50]
  (__scrt_common_main_seh) [00007FF7D2873CA5]
  (BaseThreadInitThunk) [00007FFA75E22774]
  (RtlUserThreadStart) [00007FFA76D80D61]

Expected Result: No crash at least. I'm not sure what should be done.
Compile version: debug build from 2ca91f9ca30454070926124d4d84a23959c497ee
0.15.0-6a50fb290 [debug]
compiled with: llvm 3.9.1 -- msvc-15-x64

Using as operator on float literal also produce same result.
actor Main
  new create(env: Env) =>
    try
      let n = 0.0 as F64
    end

We need to fix the crash, probably in a similar way to the solution in #2035.
But from a larger perspective, we should probably add a check to the syntax pass that looks for a numeric literal on the left side of an as operator, and gives a compiler error telling you that this isn't how you give the inference hint for a numeric literal - the correct pattern is to use I64(0), not 0 as I64.

actor Main
  new create(env: Env) =>
    try
      if true then
        1
      else
        2
      end as I64
    end

This also crash. I'll update PR #2041, adding a check to expr pass.

@jemc I'd argue that 0 as I64 should be allowed as a mean to specify a literal type. It's consistent with the explicit array syntax ([as I64: 0; 1; 2]).

@Praetonus - if we allowed that, would it be an "error-raising" operation?

If yes, it definitely seems unwieldy to me to have an extra error-raising operation where there need not be one if you just used the constructor.
If no, it seems very inconsistent and confusing for the as binary operator to sometimes be able to raise an error, and other times not.

@jemc That's an interesting point.
One possibility would be to make as an error-raising operation only when the resulting match would be non-exhaustive (i.e. when the LHS type isn't equivalent to the RHS type). Specifying literal types would probably be the only interesting operation with equivalent types on both sides of an as, but at least we'd have a consistent rule.

Yeah, that's one option, though it does seem to go against the spirit of #1771, whose purpose is to make it obvious from syntax where an error may be raised.

Good point, I think that's a compelling argument against that new rule for as, and by extension against specifying literal types with as.
Then the correct fix would be to issue a compiler error in expr_as if the LHS type is a literal type.

Then the correct fix would be to issue a compiler error in expr_as if the LHS type is a literal type.

Agreed - we need to fix it there so that it covers all cases. However, I do think the change in #2041 would be a good additional measure, to provide a more helpful error message for the common, confusing case.

#2041 should fix this.


v0.10.4 release planning

Release v0.10.4 is scheduled for this Friday.  Here is a proposed release plan for discussion:
Include in v0.10.4:

#1689, #1690, #1962
#1944
#1952, #1985
#1979, pending agreement that the method is sufficiently well-defined in the reference

Defer to the future:

#1708
#1763
#1781
#1893

It looks like I haven't made the contributor list yet.  My gut feeling is I should be on it based on a variety of input.

Yep, we are definitely sloppy about making sure each PR records all of its contributors.  Instead, we have a step in the release procedure to add the names of any missed reviewers and such, so the "finalize release" PR will get you on there :)

Thanks for keeping things moving, @kandersolar!


🌶 rubbish

why do your team support ukraine  without any knowing of their history ?because of the us government ?   dog thing,  cao n m,si quan jia de dog thing ,terrible

Stand for world peace.
Please make sure to support any people suffering in the war no matter what color is in the future.

Although it is not known whether the source is authentic, Ukraine also has a great deal of responsibility in the events at this time. They don't understand politics. . I don't want to judge too much, please don't politicize open source. Technologists are basically not good at politics, and they shouldn't interfere too much in politics.

Helping civilians in the Ukrainian War is not a political issue.
Supporting Ukraine is an act of demanding peace itself. Fundraising to help civilians in danger cannot be seen as any political act. Most of the actions to help Ukraine are against civilians, meaning to stop attacking innocent people. Everyone has witnessed innocent people in Ukraine being attacked, and not many people deny it.
Developers and several open-source organizations do not live in virtual spaces far from reality, and the reality we live in sees many attacks on Ukrainian civilians. If this is called politics, all social movements are considered political, but most modern societies do not object to human rights-related support.

Github Chief Executive Officer - Thomas Dohmke

"What we are witnessing now is something I never wanted to see again. It is devastating for the innocent people in Ukraine, and it is leading to feelings of helplessness and anger for those of us near and far away."
https://github.blog/2022-03-02-our-response-to-the-war-in-ukraine

Hashicorp

"We’re sorry, but because of the conflict underway in Ukraine, HashiCorp is prohibiting availability of our products and services in Russia and Belarus."
https://discuss.hashicorp.com/t/access-to-releases-hashicorp-com-is-denied/36348

Keep in mind that the technology of the advanced IT industry operating in the United States cannot be supported in countries that act of war crimes. React has never been included in the scope of U.S. export suspension, but Facebook and GitHub, U.S. companies, have minimal actions to follow as members of society. It should keep in mind that they are making this technology available to everyone with minimal social behavior, and that many teams are moving according to their social position.
Simply opening a link to charity fundraising for Ukraine is not a political act. If this was the time for the United States to take real political action, it would not be possible to even use it at all in russia, not just a simple charity fundraising event for Ukraine. Don't think humanitarian behavior has political significance. Deepening these disputes can serve as an excuse for blocking access to open source sites in the face of sanctions.
If you don't actually want this, here's what you should do.

Don't create disputes or spams that can intensify public opinion.
Send PR to emphasize that this is support for civilians so that political opinions are not contained.
Persuade them in appealing English. (Don't blame others emotionally.)

"Real political action" is increasingly required while you send issues to innocent react.js teams.
Don't fight the political messages of the non-existent react.js team, see what the existential threat is, and the political messages required of the existential OSS below. While many people are arguing with the react.js issue page, these threats are becoming real, and you should know that the react.js team is not part of it.

An open letter from IT industry specialists to protect Ukraine from information warfare.

"On February 24, 2022, the Russian Federation cowardly attacked independent Ukraine. They are waging a dirty information war against the whole world and direct armed warfare on the territory of Ukraine.
The publicly available IT projects, package managers, forums, CDNs, and other resources created for the benefit and convenience of IT professionals are now used to wage war and destroy innocent civilians. We also believe that these resources (i.e. source code, software, and other digital information) help disseminate false information in Russia and can be used to conduct military operations. These resources also make it possible to finance and continue the war in Ukraine with the help of the Russian IT sector.
We call you to stop helping the Russian IT sector in any activity. We call you to stop using Russian information resources and not finance the Russian IT sector, because this way you finance the war. We call to the public resources providers used by the Russian IT sector to restrict any traffic and access to these networks from Russia:"
https://github.com/stop-war-in-ukraine/stop-russia-it

Avi Press - Founder of Scarf

“Scarf will be blocking all package and container downloads originating from Russian Government sources until further notice.”
"My analysis showed that Scarf has fulfilled ongoing software download requests from at least 17 distinct sources that have been confirmed to originate from the Russian Government. This activity primarily comprises their downloading of containerized applications via Scarf Gateway, including internal communications & chat, IT service orchestration, and more. The traffic spans multiple government departments, including The Federal Guard Service, The Ministry of Finance, The Main Center of Information and Computing, Ministry of Culture, and others.
Today, open-source software powers just about everything we touch. I’m constantly reminded of that as I work day-in and day-out building Scarf. That still doesn’t make it any less heartbreaking to see beautiful open technology being exploited by forces like the Russian government so they can more effectively invade Ukraine. It then begs the question of how else they might be leveraging OSS, today, and in the future. With the looming threat of Russian Intelligence organizations resorting to cyber attacks to get their way, it’s hard to imagine OSS not playing a key role.
The notion of Russian government cyber attack operations leveraging software downloaded through Scarf’s platform is unacceptable. The notion of facilitating the atrocious invasion we're witnessing in Ukraine is not acceptable. As a result, Scarf will be blocking all package and container downloads originating from Russian Government sources until further notice. Traffic originating from other Russian sources such as businesses, civilian internet service providers, or otherwise, will be unaffected by this change. "
https://about.scarf.sh/post/standing-with-ukraine?utm_source=thenewstack&utm_medium=website&utm_campaign=platform

Okay, but still to say we can't judge world events and technologists shouldn't stand for anything involving national events, the open source community can support peace, but it has to be neutral, especially if the details aren't clear, It is a wrong decision to choose to stand blindly for this event. It is certain that if this event is true, reactjs has made a wrong decision, and open source should not be politicized.

@jack9603301
Humanitarian aids is not political.
There can be no neutrality when it comes to human rights.
Are all organizations that provide humanitarian aid political organizations?
It is a remark without a basic concept of human rights.

Even just in terms of human rights, this is not an issue that a technical open source group should be involved in, because it's not just a matter of donations. The tech community shouldn't speak too much about such events

The tech community shouldn't speak too much about such events

Tell us clearly what you're concerned about, it's not clear what you're against.
You said that what is not a political issue is a political reason, but now you tell them not to post the issue at all.

@jack9603301
经过长时间的讨论，在经过多数同意后，以中立的信息修改了react主页上的文章。 希望把政治上可能被误解的信息改善为更好的善意信息，并帮助制定所有人都需要的解决方案。https://github.com/reactjs/reactjs.org/pull/4438
让我们创造一个更好的 React.js，让社区朝着更好的方向发展。

I posted this response in one of the other threads, but I can't find it so I'll repost it here:

Hi there.
People in Ukraine are in the middle of a severe humanitarian crisis. According to UN, a million of people have become refugees this week. It is widely reported that many people, including kids, are sheltering in basements, traveling in freezing temperatures, and are short on supplies. This is why we would like to encourage everyone using React to help those in need.
It is true that we have not responded to every humanitarian disaster. There is no single objective threshold of scale, and we’ve only started doing these banners recently. However, this is not a zero-sum activity. First, we are only a single project, and there are other projects which may choose different causes (or not support any causes at all). Second, getting the message out about one crisis does not hurt people affected by a different crisis. This is why the “whataboutism” is mostly a distraction, and we will not spend time seriously entertaining it.
The Meta Open Source teams have collectively taken a stance in supporting humanitarian aid to Ukraine. The React team supports this stance. You are free to suggest other causes to support in the future. However, spamming the repo with duplicate issues and comments is disruptive. This violates the GitHub the terms of service, and GitHub will be removing this type of content. There is nothing more we would like to say on this at this point, so we will be locking this issue.
Thank you!


The performance of 4 vCPUs is slower than 1 vCPUs

Describe the Bug
Summary:
Host Environment
HAXM version: Tried with 7.3.2 and 7.4.1
Host OS version: Windows 10 Pro version
Host OS architecture: x86_64
Host CPU model: Core i7-8550U
Host RAM size: 16GB
Guest Environment
Android Emulator:
Guest OS version: Tried with Lolipop, Nougut, Oreo
Guest OS architecture: tried with both x86 and x86_64
To Reproduce
Steps to reproduce the behavior:

set hw.cpu.ncore=4 in Nexus_10_API_27.avd/config.ini
emulator -avd Nexus_10_API_27.avd
run Antutu benchmark in Android, the GPU score is about 40000, the code consuming time of  writel in goldfish kernel is about 40us one time.
set hw.cpu.ncore=1 in Nexus_10_API_27.avd/config.ini
emulator -avd Nexus_10_API_27.avd
run Antutu benchmark in Android, the GPU score is about 50000, the code consuming time of  writel in goldfish kernel is about 30us one time.
Expected Behavior

Expectation: the code consuming time of  writel is shorter with 4 cores than 1 core
Reproducibility
100%

My result is different with yours. Mine results of 4 cores is faster than 1 core. Using Antutu v7.3.0, 4 cores scores is better in every area,or at least the same, especially in the total score. Would you bother to try it again? Other environment as below:
Host: windows 10 64bit v1511, CPU: Intel Slk, RAM: 16G
HAXM v7.5.1
Emulator: 28.0.25
Guest: Image: 5x_GoogleAPI_API27_x86 v8, Ram 1.5G


Failed to install imutils using pip

I apologize if this is a trivial issue. I am no expert in python.
I am unable to install imutils using pip.
My pip version is pip 23.2.1
My python version is Python 3.9.11
I am getting the following error.
gamalakabani:08/01/23:~$ pip install imutils
Collecting imutils
Using cached imutils-0.5.4.tar.gz (17 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [49 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/private/var/folders/lc/tbblv6l95sz47jzgk5nkbjyc0000gn/T/pip-install-492yytaq/imutils_36302717c4004751aec4d99d2c2c490a/setup.py", line 3, in
setup(
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 147, in setup
_setup_distribution = dist = klass(attrs)
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/setuptools/dist.py", line 496, in init
_Distribution.init(
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 283, in init
self.finalize_options()
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/setuptools/dist.py", line 934, in finalize_options
for ep in sorted(loaded, key=by_order):
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/setuptools/dist.py", line 933, in
loaded = map(lambda e: e.load(), filtered)
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/setuptools/_vendor/importlib_metadata/init.py", line 208, in load
module = import_module(match.group('module'))
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 972, in _find_and_load_unlocked
File "", line 228, in _call_with_frames_removed
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "", line 850, in exec_module
File "", line 228, in _call_with_frames_removed
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/npe2/init.py", line 9, in
from ._dynamic_plugin import DynamicPlugin
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/npe2/_dynamic_plugin.py", line 19, in
from ._plugin_manager import PluginManager
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/npe2/_plugin_manager.py", line 30, in
from ._command_registry import CommandRegistry
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/npe2/_command_registry.py", line 10, in
from .manifest import utils
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/npe2/manifest/init.py", line 1, in
from ._package_metadata import PackageMetadata
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/site-packages/npe2/manifest/_package_metadata.py", line 14, in
class PackageMetadata(BaseModel):
File "pydantic/main.py", line 198, in pydantic.main.ModelMetaclass.new
File "pydantic/fields.py", line 506, in pydantic.fields.ModelField.infer
File "pydantic/fields.py", line 436, in pydantic.fields.ModelField.init
File "pydantic/fields.py", line 552, in pydantic.fields.ModelField.prepare
File "pydantic/fields.py", line 668, in pydantic.fields.ModelField._type_analysis
File "/Users/gamalakabani/.pyenv/versions/3.9.11/lib/python3.9/typing.py", line 852, in subclasscheck
return issubclass(cls, self.origin)
TypeError: issubclass() arg 1 must be a class
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
gamalakabani:08/01/23:~$

I encountered a similar issue on Python 3.12
You can try installing using the following method
pip install setuptools
and
pip install wheel
Finally, reinstall imutils
pip install imutils
good luck


Figure out the project status to be displayed in the website

What's There Currently
Currently, there are about 8 or more project statuses in the website's Data page. Some of the statuses are: active, inactive, finished, private_finished, archived
What's To Be Included
We need to figure out how many project statuses we are to display in the website.
The Plan
Currently, there is no mechanism to filter project list by status. So, we are planning to add a filter by project status filter in the Data page to make it more convenient to the users. For that, we need to figure out which statuses we are to include

Just include Active and Finished in the website data page filter options

@Katbaloo So, the mapswipe website will only list projects that are active or finished?

@jhenshall and @Katbaloo to finalize it


.componentType as a property

This PR refactors .componentType attribute of constructed ASN.1 types into a read-only property (like all other ASN.1-related attributes).
By way of doing this, the SetOf/SequenceOf.componentType becomes a container holding single ASN.1 type denoting the only field of the type.

Codecov Report

Merging #46 into master will increase coverage by 0.07%.
The diff coverage is 82.45%.

@@            Coverage Diff             @@
##           master      #46      +/-   ##
==========================================
+ Coverage   81.56%   81.63%   +0.07%
==========================================
  Files          25       26       +1
  Lines        3781     3807      +26
==========================================
+ Hits         3084     3108      +24
- Misses        697      699       +2

Impacted Files
Coverage Δ

pyasn1/type/tagmap.py
74% <ø> (ø)
:arrow_up:

pyasn1/type/namedval.py
77.31% <ø> (ø)
:arrow_up:

pyasn1/type/base.py
78.65% <100%> (+0.37%)
:arrow_up:

pyasn1/codec/ber/decoder.py
81.09% <20%> (+0.13%)
:arrow_up:

pyasn1/type/univ.py
77.25% <63.63%> (-0.21%)
:arrow_down:

pyasn1/type/namedtype.py
83.65% <93.33%> (+0.57%)
:arrow_up:

pyasn1/type/unnamedtype.py
93.75% <93.75%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9cf49a6...0868392. Read the comment docs.


Setting placement property of Action to "navigation" does not work as expected

Problem description
Setting placement property to 'navigation' makes the Action unvisible on Android.
The behaviour is strange when setting placement property to 'navigation'. If the Action is text-only it's not visible but it's visible when the image property is set. Maybe that behaviour is expected but I could not find any information in the documentation.
Expected behavior
The Action is visible even if image property is not set.
Environment

Tabris.js version: 3.2.1-dev.20191014
Device: Pixel 3
OS: Android 10

Code snippet
import {Action, NavigationView, contentView, device} from 'tabris';

contentView.append(
  <NavigationView stretch>
    <Action placement='navigation' title='Close'/>
    <Action placement='default' title='Settings'/>
    <Action placement='overflow' title='Share'/>
  </NavigationView>
);

The action is placed correctly in your snippet. The reason why you don't see it, is that the action does not support text as a navigation action. Please use an appropriate icon to visualize the action.


NameNode and ZooKeeper on the same node

Is it possible to have NameNode and ZooKeeper on the same node (for any/all cluster types)?
Per the link below, it seems that Name Node runs on the head node, while ZooKeeper is described as separate nodes for each node type above.
https://stackoverflow.com/questions/19681957/azure-hdinsight-what-is-head-node-in-a-hadoop-cluster

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 86061ff8-2c49-bccb-0550-4950094e08b4
Version Independent ID: e6f22286-e23a-364d-6e1d-4e39baf7f983
Content: Cluster setup for Hadoop, Spark, Kafka, HBase, or ML Services - Azure HDInsight
Content Source: articles/hdinsight/hdinsight-hadoop-provision-linux-clusters.md
Service: hdinsight
GitHub Login: @JasonWHowell
Microsoft Alias: jasonh

Hi @dcbrown16 - Head nodes run master services and ZooKeeper nodes ensure that services, data (worker) nodes, and gateways know which head node a master service is active on. NameNode is a master server that manages the HDFS file system namespace, which is a master service that can be active on a Head node. NameNode and ZooKeeper would not be on the same node.
Here's a good explanation of the different node types: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-high-availability-linux

Thanks @mamccrea, I'll pass that on. The customer for this case is also wondering if there is a way to specify which processes run on which nodes. I received an initial opinion internally that this isn't possible, can you confirm? If there isn't any method, feel free to close.

Closing per offline follow-up, thanks!
(For others' reference, I wasn't able to verify any way to specify which processes run on which nodes.)


make the --save option to 'yotta install' the default behaviour

and completely ignore the --save-target option for now (maybe we will something equivalent back in the future)
these options will be removed (and cause errors) in the future, but for now they are silently ignored
fixes #89

before merging this the yotta uninstall behaviour needs reviewing

Uninstall should do the exact opposite of install IMO

yup probably, this means uninstall and unlink need to be implemented separately. It might still be useful to have a command with the old uninstall behaviour (just remove from disk) too.


MergedResetSink/ProxyListener (JS) fix

Do not pass sub in reset signal call

Branch #confluence needed merge; this was a red herring.


Offset not taken in consideration

In version 2.0.0, in src/js/gumshoe.js at line 238
// Get current position from top of the document
var position = root.pageYOffset;

should be
// Get current position from top of the document
var position = root.pageYOffset + config.offset;

in order to work with the offset param. I suspect this is only a mistake, because config.offset isn't used anywhere in version 2.0.0

Doh, good catch. I'll get this fixed this week. Thanks!

Doh, good catch! I'll get this fixed this week.

Fixed. https://github.com/cferdinandi/gumshoe/pull/22

My pleasure! Keep up the good work.


Transitive dev dependencies of workspace packages are not installed

I just ran into an issue in our CI pipeline (after upgrading to uv 0.4.10), which I believe was caused by this change:
https://github.com/astral-sh/uv/pull/7318
I agree that theoretically it makes sense to not install dev dependencies transitively, however that may be different for workspace sources in a monorepo.
This is the outline for the issue that came up:
We have a monorepo, using uv workspaces.
In there, we have multiple packages, all part of the same workspace. The root package has a dependency on all of those, so that their dependencies are all installed into the venv transitively.
Now all of the packages in the monorepo have different dev dependencies, one of those for example moto.
Before this change, I was able to run tests by doing uv run pytest <package>, because the root venv also had all dev-dependencies installed. Now this is no longer the case, instead I get a ModuleNotFoundError: No module named 'moto'.
Should we now specify all dev dependencies of the sub-packages also as dev dependency of the root package?
Or maybe it would make sense to still install dev dependencies transitively for all packages where workspace = true is set in tool.uv.sources?

Sorry this broke your setup!

Should we now specify all dev dependencies of the sub-packages also as dev dependency of the root package?

I think this is the recommendation, if you want to use them from the workspace root.
Otherwise, you can use uv run --package <name> pytest ... to run with the development dependencies of a workspace member.
@charliermarsh may have more thoughts.

Could we have a flag colocated with workspace = true to decide if the dev dependences should be added?

Otherwise, you can use uv run --package <name> pytest ...

Thank you - this worked for us, and it's now what I did to resolve the issue for now.
However, now after running tests, and then doing an uv sync will uninstall all the dev dependencies again. Which makes sense, but also feels a bit weird.
The reason we prefer to have the dev-dependencies separate for each package is that they should be as standalone as possible, e.g. if at any point we want to make them their own repositories instead they should be fully self-contained.

Could we have a flag colocated with workspace = true to decide if the dev dependences should be added?

I like that suggestion a lot, e.g. something like:
[tool.uv.sources]
package-a = { workspace = true, include_dev = true }
package-b = { workspace = true, include_dev = true }
ruff = { include_dev = true }  # if I want for whatever reason we could maybe also include dev dependencies of pypi packages?

what do you think?

For right now my approach is to put all the dev packages into an optional package and then include that in the dev dependencies of itself and the root package.

I think this also gets at competing notions of workspace members as strict dependencies of the root versus composable "mix-in" workspace members.
In the former, workspace members should be proper dependencies (dev or otherwise) of the root, but the root shouldn't have to "know" anything about workspace member deps.
In the latter, a workspace member may function as a mix-in, in which case its dev dependencies augmemt the root's dev dependencies. You could imagine the isolation of different (yet not incompatible) packages isolated as workspace members which are pluggable and augment the root.
Then in OP's monorepo layout, an ephemeral "root" but the workspace members that want to share their tooling.
I think we can agree that in either case, the root's "proper" project.dependencies should be unaffected by workspace members' project.dependencies e.g. at build time.
I wonder if the workspace concept may be too overloaded in handling all of the dependent/mixin/monorepo use cases, or if enough config flags can be tracked on to the workspace concept to satisfy everyone.

it would be nice to have a flag that installs everything (all devDependencies in all projects and root workspace).  this is how things work by default in javascript land (npm/yarn/pnpm/bun/etc)

We now have uv sync --all-packages, which I think satisfies this use-case.