Send Http2PriorityFrame through fireUserEventTriggered for Http2MultiplexHandler

Motivation:
Http2PriorityFrame is used to indicate that a stream should be prioritized over others. Http2MultiplexHandler can have child channels like Http2StreamFrameToHttpObjectCodec which expects HttpObject and Http2PriorityFrame might be something they should be expecting via channelRead(...). Although this totally depends on the implementation of Http2StreamFrameToHttpObjectCodec, it's best to send them through fireUserEventTriggered which can be safely ignored if the implementation is not expecting such frames.
Modification:
Http2PriorityFrame is now being sent to child channels through fireUserEventTriggered instead of channelRead.
Result:
Handling of Http2PriorityFrame aligns with Http2ResetFrame in Http2MultiplexHandler

Honestly I am not even sure why we should send it via userEvent at all.. Maybe just drop it ?

That would be absolutely valid if the child is expecting HttpObject (HTTP/1.1) but if the child expects Http2 Frames, then that could be an issue because the priority frame would never reach.
I am open to suggestions but I want to tackle this from all prospective.

@hyperxpro can we add a test case as well?

Added a test and also fixed Http2MultiplexCodec

Oops, I almost had them completed.

@hyperxpro thanks


updating references - readme and paper_figure

2 partial subtasks of #293 .

@NikoOinonen - updated. let's see if the tests will fail once more (#295)


Add pascal headers

Hello  I created Wrapper for FreePascal / Delphi.
You can find more info here: https://github.com/IntelRealSense/librealsense/issues/11133

Great initiative,
We will definitely consider merging it but for that to happen I have got 2 requests:

Can you please based your change on development branch and PR to it?  ( like listed in our How To Contribution  ) section?
Can you please add a readme file for this new wrapper? see example here: opencv wrapper
Basically we need install & run instructions and basic info on the examples.

Thanks!

Hello, thanks all. I have a question:
Do youy need the examples compiled?. There is a folder called examples which some code.
I going to write a detail instructions, and  I going to the branch.

Hello, thanks all. I have a question: Do youy need the examples compiled?. There is a folder called examples which some code. I going to write a detail instructions, and I going to the branch.

We do not upload compilation artifact, only source code.
Please reference other SDK examples.
For documentation, the best output will be:

Installation guide + Supported versions
readme for every example on the example purpose, how to run and maybe some lightweight  screenshot of it running.

Thanks!

Hi @Blueicaro ,
We cannot take ownership on this new wrapper,  but it looks like a great initiative and can help the community.
If the wrapper will be mature enough and proved to be working we will gladly reference to it in our docs.
Any reason for closing this PR?

Hello, I'm sorry I deleted the reposity to change the developer branch. Now I can see that was a error. I make a new fork to developer branch, to continue working in wrapper.
/BlueIcaro

Now we have 2 PR's which one is relevant?

Hello the new one. This :
commit c30074cd5244c0743633efdd3f8be4213c194acf (HEAD -> master, origin/master, origin/HEAD)
Date:   Wed Feb 8 21:12:42 2023 +0100
fixed examples

Thanks

OK,  so I am closing this one as duplicate.


[Bug] Battery Service not setting battery level to 100% if battery level is exposed but not part of state on XHS2-SE door sensor devices

Describe the bug
All of the XHS2-SE door contact devices report "battery_low = false" in MQTT but show up as 0% battery in the homebridge accessories overview via the homebridge-z2m plugin.
I suspect this may be because the XHS2-SE in MQTT exposes both a battery_low and also a battery level, but for these devices only the battery_low is part of the status message.
Attempted to exclude_key and include_key various combinations of battery and battery_low did not fix this problem.
Related devices
XHS2-SE Window/Door Contact sensor
To Reproduce
Device that exposes both a battery and battery_low
Status payload with only battery_low = 0 (shows up on homebridge as Status Low battery = 0)
Expected behavior
Battery should be showing as 100% per https://z2m.dev/battery.html
MQTT messages
info  2022-06-11 19:43:27: MQTT publish: topic 'zigbee2mqtt/Guest Window', payload '{"battery_low":false,"contact":true,"last_seen":1654968316240,"linkquality":255,"tamper":false}'
Versions used
Please provide the version of the following pieces of software:

This plugin = v1.8.0
Homebridge = v1.4.1
Zigbee2MQTT = v1.25.2-dev

Was a status update published by Zigbee2MQTT whilst Homebridge was active?
If so, have you tried reopening the Home.app after that?
Sometimes an invalid state is reported initially if no status messages was received yet.
Besides that the Home.app also seems to cache some data.

I believe updates to homebridge have been published (during the debugging in physically opened/closed the device in question and the contact state changed all the way through the home app).
Just tried reopening the Home.app and no luck, I think the issue is probably somewhere in homebridge. When I go to the homebridge UI X acessories tab, it also shows up as 0% battery and status low battery = 0 (see screenshot)

That's strange. Can you also share the device model/exposes information, which was also requested on the issue template?

Sorry about that had to figure out where to get that from:
    "0x000d6f0010807167": {
        "date_code": "20190426",
        "definition": {
            "description": "Magnetic door & window contact sensor",
            "exposes": [
                {
                    "access": 1,
                    "description": "Indicates if the contact is closed (= true) or open (= false)",
                    "name": "contact",
                    "property": "contact",
                    "type": "binary",
                    "value_off": true,
                    "value_on": false
                },
                {
                    "access": 1,
                    "description": "Indicates if the battery of this device is almost empty",
                    "name": "battery_low",
                    "property": "battery_low",
                    "type": "binary",
                    "value_off": false,
                    "value_on": true
                },
                {
                    "access": 1,
                    "description": "Indicates whether the device is tampered",
                    "name": "tamper",
                    "property": "tamper",
                    "type": "binary",
                    "value_off": false,
                    "value_on": true
                },
                {
                    "access": 1,
                    "description": "Measured temperature value",
                    "name": "temperature",
                    "property": "temperature",
                    "type": "numeric",
                    "unit": "°C"
                },
                {
                    "access": 1,
                    "description": "Remaining battery in %",
                    "name": "battery",
                    "property": "battery",
                    "type": "numeric",
                    "unit": "%",
                    "value_max": 100,
                    "value_min": 0
                },
                {
                    "access": 1,
                    "description": "Link quality (signal strength)",
                    "name": "linkquality",
                    "property": "linkquality",
                    "type": "numeric",
                    "unit": "lqi",
                    "value_max": 255,
                    "value_min": 0
                }
            ],
            "model": "XHS2-SE",
            "options": [
                {
                    "access": 2,
                    "description": "Number of digits after decimal point for temperature, takes into effect on next report of device.",
                    "name": "temperature_precision",
                    "property": "temperature_precision",
                    "type": "numeric",
                    "value_max": 3,
                    "value_min": 0
                },
                {
                    "access": 2,
                    "description": "Calibrates the temperature value (absolute offset), takes into effect on next report of device.",
                    "name": "temperature_calibration",
                    "property": "temperature_calibration",
                    "type": "numeric"
                }
            ],
            "supports_ota": false,
            "vendor": "Sercomm"
        },
        "endpoints": {
            "1": {
                "bindings": [
                    {
                        "cluster": "genPollCtrl",
                        "target": {
                            "endpoint": 1,
                            "ieee_address": "0x00212effff07df4a",
                            "type": "endpoint"
                        }
                    },
                    {
                        "cluster": "msTemperatureMeasurement",
                        "target": {
                            "endpoint": 1,
                            "ieee_address": "0x00212effff07df4a",
                            "type": "endpoint"
                        }
                    }
                ],
                "clusters": {
                    "input": [
                        "genBasic",
                        "genPowerCfg",
                        "genIdentify",
                        "genPollCtrl",
                        "msTemperatureMeasurement",
                        "ssIasZone",
                        "haDiagnostic"
                    ],
                    "output": [
                        "genOta"
                    ]
                },
                "configured_reportings": [],
                "scenes": []
            }
        },
        "friendly_name": "Guest Glass Door",
        "ieee_address": "0x000d6f0010807167",
        "interview_completed": true,
        "interviewing": false,
        "manufacturer": "Sercomm Corp.",
        "model_id": "XHS2-SE",
        "network_address": 27252,
        "power_source": "Battery",
        "supported": true,
        "type": "EndDevice"
    },

Makes sense, I just tried excluding battery at both a device level, then excluding it as a property globally and no change to the battery states (still 0%) reported in the hoomebridge dashboard (logic happens maybe before exclude?).

It might be that the check to see if the key is excluded is missing. Next time I work on the plugin, I'll check this.

Had a quick peek in the code, but src/converters/battery.ts does seem to filter out all excluded keys/properties.
I could add a test to see if this specific logic is working, but it's used in other places as well of which I know for sure that it works.
Can you perhaps share your plugin configuration, so I can see how you've excluded the property?


Update colossalai version in Dockerfile

What does this PR do?
This was missed in #16747
cc @carmocca @akihironitta @borda

Probot doesnt allow us to only change the docker file. Wants to build NGC as well 🤔

There seems to be an issue where it's not pulling the latest statuses. Feel free to force merge


The Flash currency

Checklist

[x] #1468
[x] #1467
[x] #1466

Please provide the following information for your token.
JustList URL must be HTTPS.
JustList URL:https://github.com/thienvu333/theflashcurrency-TFC/blob/6365d6314127578c1513faced02475c7835698eb/tfc.java
JustList Name: The Flash currency
Link to the official homepage of the JustList manager: https://github.com/thienvu333/theflashcurrency-TFC

Sorry, your issue will be closed as you did not submit your information in the correct format.


[SCB-647] Update LICENSE for release 1.0.0-m2

Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Make sure there is a JIRA issue filed for the change (usually before you start working on it).  Trivial changes like typos do not require a JIRA issue.  Your pull request should address just this issue, without pulling in other changes.
[x] Each commit in the pull request should have a meaningful subject line and body.
[x] Format the pull request title like [SCB-XXX] Fixes bug in ApproximateQuantiles, where you replace SCB-XXX with the appropriate JIRA issue.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
 A more thorough check will be performed on your pull request automatically.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Coverage increased (+0.1%) to 74.744% when pulling f7b847a1529c87b03f3ef537918d00ffdd818e28 on yangbor:master into e729a5ee0faf8bd5db2a1fd2539fc7b62bb66b54 on apache:master.

Codecov Report

Merging #371 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #371   +/-   ##
=======================================
  Coverage   71.46%   71.46%
=======================================
  Files          25       25
  Lines        3690     3690
=======================================
  Hits         2637     2637
  Misses        884      884
  Partials      169      169

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 e729a5e...28e39ee. Read the comment docs.

Can we merge it now?


how to add custom clues in calendar per day

I want to let per day only has two calendar events.When per day has more than two events,I want to add some prompts in per day,like:oh there has another events in this day.But i do not find how to do,please help me.

You can use the eventLimit option of fullCalendar
http://fullcalendar.io/docs/display/eventLimit/
Fullcalendar will automatically add a link titled 'show more' which will show a popup with the additional hidden events when pressed.
For Example, say you want to set the amount of events shown to 2, you simply do
calendar : {     views: {         agenda : {             eventLimit: 2,         }     } }


Aj 5925

As part of ticket AJ-5925, I added a new task which instructs user to use Cloud Shell to use REST API.

looks good to me!


FeatDecouple COS and OBS dependencies with optional inclusion mechanism

…
improve the flexibility of the project by decoupling direct dependencies on the hadoop-cos and hadoop-huaweicloud libraries. These changes allow users to control whether COS and OBS dependencies are included in the final build, enabling a more customizable setup.
Proposed changes
Issue Number: close #xxx

run buildall

run buildall

run buildall


"socket hang up" error on subsequent request after Express server errors out once

Behavior:

Call an API expecting an error to be thrown (in our case, a GlooApiError).
Server returns the error -- all good so far.
Call another API on the server that should NOT error out
Call always fails with GlooApiError: socket hang up

My guess is it's the http client on the client-side not closing the connection when an error occurs. I'll try to verify by using a custom fetcher at some point. I tried commenting out the next(error) and the subsequent requests succeeded (and only after all requests went thru did the socket error get thrown), but that doesn't look like a fix.
Also another side-note -- noticed our "DocumentService.js" file (and other service files) has some await error.send(res). Should it be res.send(error)? Probably not an issue but just looked off.

in our case the subsequent call succeeds if we wait like 1-2 secs.

Hmmm very weird, surprised it hasn't come up before.

What versions of TS + express generators are you on?
Is the stacktrace from the socket hang up pointing to the first call or the second call?

socket hang up makes me think that the server is not receiving the request correctly. Are you able to check this with server logs? Is there possibly something with your deployment that could be causing this?

Also another side-note -- noticed our "DocumentService.js" file (and other service files) has some await error.send(res). Should it be res.send(error)? Probably not an issue but just looked off.

No, that's correct. The errors we generate for Fern have a send method that knows how to serialize itself and set the status code. res.send(error) wouldn't set the status code appropriately or serialize the response body.
export class SomeError extends errors.GlooApiError {
    constructor();
    send(res: express.Response): Promise<void>;
}

From DM

Only happens on localhost, not on prod 🤔
Adding sleep when running locally

Maybe the natural delay in prod of the network requests is equivalent to the sleep()?
No action needed rn

closing as no action needed


Onboarding @aleksey-zhidkov

Hello @aleksey-zhidkov. Thanks for your interest in becoming a member of Nuvola Apps project. There are a few actions to take. You can tick them here for your convenience.

[ ] I've invited you to Nuvola Maintainers team. After you accept the invitation, you will have write access to the Yandex Music repository.
[ ] Please create a Tiliado account and tell me your username. Your account will be then upgraded to developer account and you will gain free access to flatpak builds of Nuvola 4.x including all premium features.
[ ] Subscribe to the nuvola-player-devel mailing list as important announcements are posted there.
[ ] Take a look at Service Integration Guidelines: Rules and guidelines you should follow. Please make sure you are familiar with the process how releases are made. If you have any questions about the guidelines or suggestions to improve them, don't hesitate to ask here.
[ ] Make yourself familiar with Nuvola ADK and try to build & run your script. If there are any issues, don't hesitate to ask here.

Ping me once you are ready for next steps.

@fenryxo I already have Tiliado account - aleksey.zhidkov

I already have Tiliado account - aleksey.zhidkov

:+1: Upgraded to Tiliado developers

@fenryxo, I'm try to build script and getting this error:
atomic-armchair:Alive/nuvola-apps/nuvola-app-yandex-music> ./configure --with-dbus-launcher                       (master|✔)
Makefile written. Run `make all` and then `make install`.
atomic-armchair:Alive/nuvola-apps/nuvola-app-yandex-music> make all                                               (master|✔)
valac  --vapidir="/home/azhidkov/.local/lib/python3.5/site-packages/nuvolasdk/data/vapi" --pkg gio-2.0 --pkg gtk+-3.0 --pkg gio-unix-2.0 --pkg nuvolaruntime-runner -X "-DNUVOLASDK_APP_ID=\"yandex_music\"" -X "-DNUVOLASDK_UNIQUE_ID=\"eu.tiliado.NuvolaAppYandexMusic\"" -X "-DNUVOLASDK_FLATPAK_BUILD=0" -X "-DNUVOLASDK_APP_DATA_DIR=\"/usr/local/share/nuvolaruntime/web_apps/yandex_music\"" -o nuvola-app-yandex-music /home/azhidkov/.local/lib/python3.5/site-packages/nuvolasdk/data/launch_app.vala
error: Package `nuvolaruntime-runner' not found in specified Vala API directories or GObject-Introspection GIR directories
Compilation failed: 1 error(s), 0 warning(s)
Makefile:25: recipe for target 'nuvola-app-yandex-music' failed
make: *** [nuvola-app-yandex-music] Error 1

And cannot understand how to fix it

ADK seems to be trimmed not to include Nuvola VAPI files. You can build the script without -with-dbus-launcher as it is unnecessary for development. It is used in regular flatpak builds.

tiliado/nuvolasdk#4

I recommend going through Service Integration Tutorial, which provides information on how to use Nuvola SDK and to create web app scripts.

I've runned Yandex Music script, so I believe, that I'm ready for next steps

Great :+1:

[ ] Change maintainer_* in https://github.com/tiliado/nuvola-app-yandex-music/blob/master/metadata.in.json
[ ] Make sure you understand all code in integrate.js.
[ ] Increase api_major & api_minor to 4.8 in metadata.json.
[ ] Use custom actions API to integrate the like button - ticket #2.
[ ] Look at Media Player Integration and consider adding relevant missing functionality, e.g. track rating, progress bar and volume management integration.

Look at Media Player Integration and consider adding relevant missing functionality, e.g. track rating, progress bar and volume management integration.

Reticketed as #12.


Fix German translation of "Show more" in the MT overlay

Short description

Fixes the bug in the German translation of "Show more" in the MT overlay.
Proposed changes

Fix translation
Add JS/TS test for toggleOptionalText()
Introduce jsdom for more complex JS/TS tests

Side effects

None I'm aware of
Resolved issues

Fixes: #2830

Pull Request Review Guidelines

@deen13 Do you have an idea why the imports in eslint are failing while they work locally and for vitest? :)

@JoeyStk Not really, but I'll look into it and post here as soon as I find something. :)

It seems like the issues with eslint need some more time until they are resolved. Until then this PR is blocked :)

Performance issues have been resolved in #2847. Tomorrow, I will begin investigating the invalid interface error. :)


Pending notification changes (3 scenarios)

On no significant change from previous recommendation
On no significant change from current config
On Memory Limit not the same as Mem Request

On no significant change from current config

This part is done in the threshold check for variation


Update to handle jest 27

Do we need to update any docs for this change?

Do we need to update any docs for this change?

No, I was thinking that we would have to document the fact that this version of mocking bird requires version 27 of jest but that's not the case. this works with 26 and 27.
I don't actually know how our cusomt matchers were working with jest before this update but however we got it working before no longer works in jest 27. THis is now done "the proper way"


Chart is low resolution on mobile

Describe the Bug
When viewing the visitors chart on mobile, the chart appears low res/blurry compared to the rest of the UI

Database
Umami Cloud
Relevant log output
No response
Which browser are you using? (if relevant)
Mull (fork of FireFox on Android)
How are you deploying your application? (if relevant)
No response

I'm viewing the chart on a Samsung Galaxy Note 20 at HD resolution


feature request:  dataset only tokens

It'd be great if we could get tokens which only work for downloading/uploading datasets.  This would ensure that we don't accidentally leak kernels, which can especially be a tragedy when teaming.

Tracking: http://b/346849220


Added ReadTheDocs badge.

I switched http://firebase-arduino.readthedocs.io/en/latest/ over to point to the main repo, adding the badge to the readme.

LGTM


Need a new cover image for social media

[ ] Twitter
[ ] LinkedIn

App image to depict same filled up home screen as the one going on the app store. The cover image to have the app image + new tagline.

https://xd.adobe.com/view/f77e8d34-7a6f-4d34-aefe-8a0c79627557-a22d/screen/b8a9c0fb-b691-4368-b02e-9582d39b9d8e

Images uploaded respectively.


Support console caching

Describe the issue you are having
I've seen that you have/had entries for Nintendo/Sony/Microsoft (XBox). We've tested the LANcache setup within a gamesroom. PCs are working well with the caching for Steam services, but consoles aren't utilizing the cache. We've confirmed this with Nintendo and Sony consoles. But I couldn't see that MS consoles would support lancache at this point. Is there any way you would be willing to look into this issue?
I will receive a Switch to debug this to help out. Which would be our main use case. But also open to help with PS4/5 and XBox One/Series.
How are you running the container(s)
Unraid Official Docker setup
DNS Configuration
opnsense Router -DHCP-> lancache-dns --> lancache-monilith --> Router Unbound --> Quad 8/Quad 9
Output of container(s)
None on this matter

As a follow up, we've  looked into the connections and Nintendo seems to use HTTPS traffic for their content delivery. With this we can go ahead and close this ticket already as I don't think that Sony and MS would do anything different.
However, a lot of traffic was routed through lancache-monolithic as the domains used by lancache-dns are still valid :)

@0xlord fyi, sony is cached as is some microsoft. Nintendo is out as you'd guessed!


Aqara Motion Sensor - Last Seen is missing

Hello all,
I'm using the latest deConz Version: 2.10.4 Adapter (API Version: 1.16.0) on ioBroker.admin 4.2.1 with Node.js: v12.22.1 and
NPM: 6.14.12
The deCONZ software is running on v2.10.4
Over the RestApi from the deconz website I get this informations:
{"config":{"battery":100,"duration":90,"on":true,"reachable":true,"temperature":2500},"ep":1,"etag":"67b17b6832fa53f300a0999f22d5e5f8","lastseen":"2021-04-16T10:59Z","manufacturername":"LUMI","modelid":"lumi.sensor_motion.aq2","name":"Bewegungsmelder WZ","state":{"lastupdated":"2021-04-16T10:59:20.912","presence":false},"swversion":"20170627","type":"ZHAPresence","uniqueid":"00:15:8d:00:05:72:86:e7-01-0406"}
{"config":{"battery":100,"on":true,"reachable":true,"temperature":2500,"tholddark":12000,"tholdoffset":7000},"ep":1,"etag":"c16aba69aa7c6fcbdfbd7272d3b78a07","lastseen":"2021-04-16T11:54Z","manufacturername":"LUMI","modelid":"lumi.sensor_motion.aq2","name":"Bewegungsmelder WZ","state":{"dark":false,"daylight":true,"lastupdated":"2021-04-16T11:54:20.243","lightlevel":23803,"lux":240},"swversion":"20170627","type":"ZHALightLevel","uniqueid":"00:15:8d:00:05:72:86:e7-01-0400"}
I am missing the "lastseen" value in the ioBroker deconz Adapter. The value is set, when a motion is deteced.

Last seen is a newer attribute and not included in the adapter.
The last seen attribute is only a info when the last message was received from the device.
What you are looking for ist the lastupdated state.

What you mean ist the Lastupdated value


Add timing reports to kevlar find

No tests added yet, so there are likely bugs. Proceeding anyway since these bugs should not affect the correctness of the results.


get the drop item with Trash and unset the item in the list

https://github.com/marceljuenemann/angular-drag-and-drop-lists/issues/204
dnd-drop and dnd-inserted not working with dnd-list = []
i want to delete this in Database too but i got the info of trashed item
but its getting clone with original container...

I can only guess without code, but you probably didn't return on object in the dnd-drop handler, so the drop operation was aborted.

Yes, now its working fine.... Thanks alot


how can i get validate status when i submit values ?

hi, after reading your doc, I don't find how can i get validate status when i submit values.
here is my code.
// save
const save = async (values: PushFormProps) => {
    console.log(values)
    // todo i want to get validate status and alert to tell user if form validate success or not
}

<Formik
    initialValues={ initForm() }
    onSubmit={ (values) => save(values) }
>
    {/* form body */}
</Formik>

thank u~

handleSubmit function recive a React.FormEvent<HTMLFormElement> which return viod and this function should be aborted if you validations has one or more errors. see form submission
but you can run a function of form submitted to show a custom message
<Formik
   validationSchema={YourSchemaValidation}
   initialValues={{ name: '' }}
   onSubmit={onSubmit}
>
   {({ handleSubmit, handleChange, values, errors, touched }) => (
     <Form
        onSubmit={(values) => {
          showErrorMessage(errors)
          handleSubmit(values)
       }}
    >
        ...
    </Form>
  )}
</Formik>

I wish It was helpful

@mhmdAljefri
hi, after seeing your answer, i have few question.

In <Formik onSubmit={onSubmit}>, what is onSubmit function ?
In <Form onSubmit={()=>{showErrorMessage(errors); handleSubmit(values)}}, I see handleSubmit prop should receive an FormEvent not values ?

And I find there is a isValid prop in formik, I think it is helpful with my code, but how can I get this isValid before onSubmit={()=>{}}?
In this form submission article, it says if validate failed, formik not run onSubmit, I wonder if u can give me a more detail demo.
Very thank u~

Sorry. It's by mistake. I will edit my response with an small demo.

@liuguangsen0409 Can you check this example

@mhmdAljefri thank u for your demo~
I also use formik-antd in my code. I find formik-antd Form is different with basic form.
At last, I prevent default submit function, and control submit function by myself to solve it.
Thank u very much for your answer again~


Add x86-64 note to clear up lack of details

Added to the getting started guide under selecting platform.
QA Steps: Checked rendered html.
This commit addresses FFTK-2619
Readiness

[x] Merge (pending reviews)
[ ] Merge after date or event
[ ] Draft

Overview
Checklist

[ ] Run spelling and grammar check, preferably with linter.
[x] Avoid changing any header associated with a link/reference.
[ ] Step through instructions (or ask someone to do so).
[x] Review for wordiness
[x] Match tone and style of page/section.
[ ] Run make linkcheck.
[x] View HTML in a browser to check rendering.
[x] Use semantic newlines.
[x] follow best practices for commits.

[x] Descriptive title written in the imperative.
[x] Include brief overview of QA steps taken.
[x] Mention any related issues numbers.
[x] End message with sign off/DCO line (-s, --signoff).
[x] Sign commit with your gpg key (-S, --gpg-sign).
[x] Squash commits if needed.

[x] Request PR review by a technical writer and at least one peer.

Docs for f32a7ce2deb335170c8c56eb5015b7f8a58c6e7b are browsable at: https://ci.foundries.io/projects/fio-docs/builds/2294/docs/artifacts/html/index.html


chore(cost-model): use graphql crate instead of toolshed

Splitting the graphql parsing logic into its own crate now allows evolving the toolshed crate independently.

I performed some tests with the gateway codebase, and these changes work as expected.
@That3Percent @Theodus IMO, this PR is ready to be merged. Feel free to merge it anytime.


pop-launcher: prefer --replace-fail for substituteInPlace

Description of changes
Uses --replace-fail rather than --replace and move to pkgs/by-name

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 337457 run on x86_64-linux 1

2 packages built:

onagre
pop-launcher


Refactor to use RxJS and RxFire

📝Changed routes:

/my_classes

(view full size)

Commit 12e6a4dcbee1e73ba7a78d15838f02b212d6d0c9 (https://ash-library-game-3g3twqno6.vercel.app).


Get Azle back on the master branch of boa, enable classes

We want to get our derive trait implementations pull requested in, and we really want to get onto the master branch. This will allow us to use classes, which will hopefully allow us to use @dfinity/principal directly.

Back on the main branch now (basically). Testing out principal.


Clarify relationship with Python extension

My team is using black in VSCode, and we've been a little confused about the relationship between the Python extension and this one, and what settings should be in place. Basically, we want The Full Python VSCode Experience: formatting with black on save, language support with Pylance, linting with flake8, etc.
In particular, what is the relationship between the following settings? Are both needed?
"[python]": {
  "editor.defaultFormatter": "ms-python.black-formatter"
}

https://github.com/microsoft/vscode-black-formatter#usage
"python.formatting.provider": "black"

https://code.visualstudio.com/docs/python/editing#_formatting
Thanks!

Also, strangely, getting this error:

even though a) I have both listed under extensions in my devcontainer config, and b) the Python extension is listed as a dependency of this one:
https://github.com/microsoft/vscode-black-formatter/blob/afca47cfb26bc367b5d9cc664b79a5777bfaa3a1/package.json#L38-L40
Any idea why that might be?

Got it, thanks for those clarifications.

you need ms-python.python extension installed. If you are having installation issues

It does install fine, but my teammates and i are seeing that error regardless. Seems like there might be a race condition or something?

I'm working with @afeld on the project where we are experiencing this issue.
This may be a little out of left field, but I wanted to point out this other issue we're having in the same project/devcontainer: microsoft/pylance-release#2529.
The reason I bring this up is because that issue also appears to be related to a race condition / start up sequence of the devcontainer + installation/activation of extensions.
Our latest findings and repro steps for that issue are in the thread.

I'm not super knowledgeable in this topic, but I've been using devcontainer for some time and it has always been the case that if there are extensions that depend on others, especially the python extension, that you have to do Command Pallet -> Developer: Reload Window once after the prostcreate, because the python extension is not yet active after the install in the container while the other extensions are installed that depend on it. This has nothing to do with the pylance or black extension but seems to be a general shortcomming.
I suspect that it is because the remote containers extension or VSCode itself does not or can not pay attention to the current installation, to first resolve the dependency graph and then install extensions in the correct order with the correct delay?
Currently, all these extensions suggest to reload the window, which corresponds to the above command.

Canonical bug for the devcontainer issue is https://github.com/microsoft/vscode/issues/149309


[bug]: Opening Object Browser crashes UI

No existing issues.

[X] There is no existing issue for my problem.

Description
Opening the object browser from any other adapter leads to the UI crashing (at least some part of the tree).
I.e. partially screen is black, until the view is changed.
VM168 main.1e6546bb.js:2  Uncaught TypeError: Cannot read properties of undefined (reading 'palette')
    at Array.cellIdIconFolder (VM168 main.1e6546bb.js:2:166789)
    at u.getStyle (VM168 main.1e6546bb.js:2:435932)
    at pe.render (VM168 main.1e6546bb.js:2:295293)
    at ws (VM168 main.1e6546bb.js:2:6456901)
    at Vs (VM168 main.1e6546bb.js:2:6456697)
    at Si (VM168 main.1e6546bb.js:2:6500229)
    at Ml (VM168 main.1e6546bb.js:2:6488370)
    at gl (VM168 main.1e6546bb.js:2:6488298)
    at fl (VM168 main.1e6546bb.js:2:6488161)
    at ol (VM168 main.1e6546bb.js:2:6484941)
    at il (VM168 main.1e6546bb.js:2:6485332)
    at Nr (VM168 main.1e6546bb.js:2:6425924)
    at hl (VM168 main.1e6546bb.js:2:6485783)
    at Te (VM168 main.1e6546bb.js:2:6395066)
    at Uc (VM168 main.1e6546bb.js:2:6417742)
    at qt (VM168 main.1e6546bb.js:2:6402138)
    at $t (VM168 main.1e6546bb.js:2:6401922)

Pointing towards cellIdIconFolder here.
Is this a known issue? Any workaround available?
Reproduction instruction
In any adapter providing the possibility to open the Object Browser, for example Scenes or Scripts, open the Object Browser.
In the case of Scenes: Trigger --> [...] (click)
Edit: I just stumbled across the migration from v6->v7; Apologies if this is the wrong place to raise an issue.
Is the assumption correct that both 'Scenes' and 'Scripts' have not upgraded their respective code base?
Still; Is there a workaround? I am new to iobroker and looked for a way to manually downgrade the react adapter, but without success (yet)

Hm. Scenes works. Scripts too... which versions of scenes and scripts are you use?

Hi, thanks for your response.
(Java)Script: v8.7.6
Scenes: v3.2.1
I run the base setup from docker; latest buanet/iobroker image

Just interesting, if you update scenes and javascript to at least
v2.3.9 and v8.8.2 will the error disappear?

Updating Script Engine to 8.8.3 resolves the issue! :)
For Scenes I am not sure how to up/down(?)grade to 2.3.9 - manually update the package.json and run npm i, potentially clearing the lock as well?
-> Might be stupid questions.. Very new to IoBroker.
With the latest version from the beta repo the issue is still reproducible (v3.2.3)

facepalm
I can just downgrade with expert mode on.
-> Can confirm, Scenes v2.3.9 is working as expected. Odd.
So there is a workaround available; Should I raise a related issue in the scenes repo or is it completely by chance that bluefox shows up in their change history? :D
Thanks a lot!
Olli

We will shift the versions to stable and solve the problem

Hello, i had the same issue. Scenes UI crashes, wenn opening Trigger or CRON Dialog. Selecting groupobjects is no problem.
JavaScript 8.8.3
JS-Controler 7.0.6
Scenes 3.2.3
Downgrade to Scenes 3.0.4 fix the problem for me.


feat: add test builds of the snap on pull_request events

Adds test builds to assert the snap is buildable before changes are merged into main.  This will help identify future build failures like when this change was merged before merging to main, and will give automated builds some CI to run against
OPENG-2388

@sed-i I agree with you that it would be nice to deduplicate, but I'm not sure if the available options are better.
If we merge this into the "release" CI by adding if statements, would it feel strange that a pull_request event has a release CI run that passes but does not actually release anything?
If we put the common parts in a reusable  _build_snap workflow, _build_snap would run as a separate job (eg: separate runners).  The publish CI needs the .snap artifact produced by _build_snap, so we'd need to include upload-artifact/download-artifact steps to pass the artifact.  Since _build_snap only reuses ~15 lines of code, the new upload/download code will be about as much as we save.  So I'm not sure its worth it
tl;dr: I'm happy to do anything (all in release.yaml, make a _build_snap.yaml, or leave as is), but I don't have a strong preference on which :)  wdyt?

I poked @lucabello about this offline and I think he's roughly in the same "we could do whatever" space.  He raised how snap building will sometime be replaced by a central build CI too, so whatever we do here will likely get overwritten soonish

@sed-i and I discussed this offline.  We decided on leaving the duplication as is, but to add a comment at the top of the workflows so people know if they're editing one they should edit both.


Fixed copy paste error in 01-Scales.md

Noticed this typo/error when I was reading the documentation.

Thanks @matt-watson90


Bump version again?

I like your library! However, I cannot use it right now because it conflicts withe my aeson version >=1.3. I see you already fixed that, so would you mind bumping the version and uploading it to hackage again?

Had exactly the same issue. Version bump would be handy. Let us know if we can help with this.

Sure thing, I will upload a new version once CI passes.

https://hackage.haskell.org/package/ascii-table-<IP_ADDRESS>


Hcaptcha stuck on black screen when turn off internet in verify hcaptcha screen

Acceptance criteria:
STeps to reproduce

[ ] create account with turn on internet.
[ ] and when come to hcaptcha screen  and turn off internet it shows black screen and stcuk there.
[ ] instead of stuck on that screen throw some error

fixed this in PR https://github.com/Tonomy-Foundation/Tonomy-ID/pull/1255

:tada: This issue has been resolved in version 0.141.0-development.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 0.141.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Regression after merging #73

This is related to Palma project.
There is a huge patch coming, that it is followed by smaller patches that are causing issues.
You'd think there is some sort of a race condition and the smaller patches assume a certain state the doesn't exist at this point and that's why the cause an exception when they're attempted to be applied. Which is not the case.

When I delay the applying of the smaller following patches even for 30 seconds the exception is still thrown.
When I delay the applying of the bigger patch itself, the smaller patches don't come! It's like the appliance of the bigger patch triggers the request for the smaller following ones, which should diminish the race condition. But once I apply the big one, the following small ones come and an exception occurs.

I made sure that their app doesn't have the root cause by removing the panic mode (explained in #73), and it worked.
After a suggestion from @warpech I checked if the patches are same with and without the panic mode enabled, and there is a difference:

Reproduction steps

Go to URL†.
Change this drop down value to "Art".

Expected outcome
Nothing, no UI changes are expected, but no console error too.
Actual outcome
Nothing, no UI changes are happening, an error is thrown in the console.
† ask for the URL and creds on Slack.
Setting up your environment

Download Fiddler if you don't have it.
Do this

Then this:

Now you can modify the local palindrom-client file and see the changes.

/cc @tomalec

I've spent some time investigating it and probably made the same full circle as @alshakero, boiling down the problem to something similar to this: https://github.com/Polymer/polymer/issues/4279
Which is a notification problem fixed in Polymer 2.

@alshakero perhaps it is worth trying a different approach of doing the panic mode? Instead of https://github.com/Palindrom/palindrom-client/blob/969c0f3bcf3b0cc4786aecc916d7cec985b9b691/palindrom-client.html#L234-L240, you can try something that I hacked as:
var newElem = document.createElement(this.bound.localName, this.bound.getAttribute("is"));
newElem.innerHTML = '<starcounter-include view-model="{{model}}"></starcounter-include>';
nnewElem.id = this.bound.id;

var parent = this.bound.parentNode;
parent.removeChild(this.bound);
parent.appendChild(newElem);

this.bound = newElem;
this.bound.model = this.obj;

The idea here is to make a clone of the bound element as it looked before binding, remove the bound element and attach a fresh bound element. It worked well for me, except that a middle part of the current page was not re-rendered. But maybe that's due to another bug?

I achieved the same outcome of this with a simpler solution, but I couldn't investigate (the empty middle area issue) deeper because it's tremendously hard to know which file contains which code, then add a Fiddler rule for it, and then play with it.
I then got what seemed like a great idea, to find the longest common string among all patches, which refers to the root object that needs to be updated. I managed to get this path nicely in O(N) but when I do domBind.set(foundPath, domBind.get(foundPath)) it is considered a write operation and the server rejects it. And when I do notifyPath(foundPath) nothing happens. The notifyPath solution would work under Polymer 2.0.
I think at this point I need access to the server code to at least modify client-side code and see if the missing middle area is a bug.

I achieved the same outcome of this with a simpler solution, but I couldn't investigate (the empty middle area issue) deeper because it's tremendously hard to know which file contains which code, then add a Fiddler rule for it, and then play with it.

I find it super easy to locate any (unminified) code file using Chrome Network tab search tool. See here, searching for a URL of a HTML view that contains the word "example":

Is your case more complex?

Is your case more complex?

A little more. This whole part of the UI is coming via JSON.
But I didn't know about this search feature. I'll find the template HTML and search for some keyword.

I achieved the same outcome of this with a simpler solution

Here is the code for the simpler solution I mentioned above if you want to play with it
<!-- palindrom-polymer-client version: 7.1.0 | MIT License -->

<!--
`palindrom-client` element binds [Palindrom](https://github.com/Palindrom/Palindrom) with [Polymer's template binding](https://www.polymer-project.org/2.0/docs/devguide/templates.html).
That keeps your Polymer app, or just `dom-bind` template in sync with any server-side
data-model using Palindrom & [JSON Patch](https://tools.ietf.org/html/rfc6902) flow.
You get three-way data binding server - JS - HTML, kept in flawless sync.
    <palindrom-client
        obj="{{model}}"></palindrom-client>
It establishes the Palindrom connection when attached. All the changes made
in browser are sent to the server via WebSocket or HTTP, as
[JSON Patch](https://tools.ietf.org/html/rfc6902)es.
All the changes from server are also received and propagated to your HTML.
-->
<script src="../Palindrom/dist/palindrom-dom.min.js"></script>

<script>
    (function () {
        const defaultProps = {
            "useWebSocket": true,
            "debug": false,
            "localVersionPath": '/_ver#c$',
            "remoteVersionPath": '/_ver#s',
            "ot": true,
            "purity": false,
            "pingIntervalS": 60,
            "path": '/',
            "devToolsOpen": false,
            "fatalErrorReloadAfterS": 5,
            "mergedNotificationsThreshold": 100
        }
        const defaultAttribs = ['merged-notifications-threshold', 'remote-url', 'use-web-socket', 'debug', 'local-version-path', 'remote-version-path', 'ot', 'purity', 'listen-to', 'ping-interval-s', 'purity', 'fatal-error-reload-after-s', 'path'];
        class PalindromClient extends HTMLElement {
            constructor() {
                super();
                // assign default properties
                Object.assign(this, defaultProps);
            }
            static get observedAttributes() {
                return ['merged-notifications-threshold'];
            }
            reconnectNow() {
                this.palindrom.reconnectNow();
            }
            reload() {
                window.location.reload();
            }
            attributeChangedCallback(name, oldValue, value) {
                // it will only be called for merged-notifications-threshold attribute. See observedAttributes method
                this.mergedNotificationsThreshold = value;
            }
            cancelReloading() {
                clearInterval(this.reloadingInterval);
                delete this.reloadingInterval;
            }
            /**
             * assigns an instance of Palindrom according to given params, attaches it to .palindrom property
             *
             */
            connectedCallback() {
                // assign attributes to props
                for (const attrib of this.attributes) {
                    if (defaultAttribs.includes(attrib.name)) {
                        const prop = kebebCaseToCamelCase(attrib.name);
                        this[prop] = attrib.value;
                    }
                }
                const whereToBind = this.getAttribute("ref");
                let listenTo = this.listenTo;
                const pingIntervalS = this.pingIntervalS / 1;
                if (listenTo) {
                    listenTo = typeof listenTo == "string" ? document.getElementById(listenTo) : listenTo;
                }
                let palindrom = PalindromDOM.instances && PalindromDOM.instances.get(this.remoteUrl);
                if (!palindrom) {
                    /**
                     * To tell whether we connected to an existing instance,
                     * or created our own. This is useful for detachement, we don't want
                     * to destroy Palindrom instances that we don't own
                     * */
                    this.isUsingOwnInstanceOfPalindrom = true;
                    this.palindrom = palindrom = new PalindromDOM({
                        remoteUrl: this.remoteUrl,
                        pingIntervalS,
                        useWebSocket: this.useWebSocket,
                        debug: this.debug,
                        ot: this.ot,
                        purity: this.purity,
                        localVersionPath: this.localVersionPath,
                        remoteVersionPath: this.remoteVersionPath,
                        listenTo,
                        onLocalChange: this.onLocalChange.bind(this),
                        onRemoteChange: this.onPatchApplied.bind(this),
                        onPatchReceived: this.onPatchReceived.bind(this),
                        onIncomingPatchValidationError: this.onGenericError.bind(this),
                        onOutgoingPatchValidationError: this.onGenericError.bind(this),
                        onError: this.onGenericError.bind(this),
                        onPatchSent: this.onPatchSent.bind(this),
                        onSocketStateChanged: this.onSocketStateChanged.bind(this),
                        onConnectionError: this.onConnectionError.bind(this),
                        onReconnectionCountdown: this.onReconnectionCountdown.bind(this),
                        onReconnectionEnd: this.onReconnectionEnd.bind(this),
                        onStateReset: obj => {
                            this.obj = obj;
                            if (whereToBind) {
                                this.bindTo(whereToBind);
                            }
                            this.onPatchApplied([{ op: 'replace', path: '', value: obj }], [{ removed: this.obj }])
                        }
                    });
                    if (!PalindromDOM.instances) {
                        PalindromDOM.instances = new Map();
                    }
                    PalindromDOM.instances.set(this.remoteUrl, palindrom);
                } else {
                    this.isUsingOwnInstanceOfPalindrom = false;
                    // with already established connection we cannot change listenTo parameter
                    this.palindrom = palindrom;
                    palindrom.onLocalChange = this.onLocalChange.bind(this);
                    palindrom.onRemoteChange = this.onPatchApplied.bind(this);
                    palindrom.onPatchReceived = this.onPatchReceived.bind(this);
                    palindrom.onIncomingPatchValidationError = this.onGenericError.bind(this);
                    palindrom.onOutgoingPatchValidationError = this.onGenericError.bind(this);
                    palindrom.onError = this.onGenericError.bind(this);
                    palindrom.onPatchSent = this.onPatchSent.bind(this);
                    palindrom.onSocketStateChanged = this.onSocketStateChanged.bind(this);
                    palindrom.onConnectionError = this.onConnectionError.bind(this);
                    palindrom.onReconnectionCountdown = this.onReconnectionCountdown.bind(this);
                    palindrom.onReconnectionEnd = this.onReconnectionEnd.bind(this);
                    palindrom.onStateReset = obj => {
                        this.obj = obj;
                        if (whereToBind) {
                            this.bindTo(whereToBind);
                        }
                        this.onPatchApplied([{ op: 'replace', path: '', value: obj }], [{ removed: this.obj }])
                    }
                    // if already established (re-)set state
                    if (palindrom.obj) {
                        palindrom.onStateReset(palindrom.obj);
                    }
                }
                this.network = palindrom.network;
                this.morphUrl = palindrom.morphUrl.bind(palindrom)
            }
            disconnectedCallback() {
                if (this.isUsingOwnInstanceOfPalindrom) {
                    this.palindrom.unlisten();
                    // hacky way to stop Palindrom connection
                    this.palindrom.useWebSocket = false;
                    PalindromDOM.instances.delete(this.remoteUrl);
                }
            }
            bindTo(element) {
                // use node id or node itself;
                element = typeof element == "string" ? document.getElementById(element) : element;
                element.model = this.obj;
                this.bound = element;
            }
            propagateDomBind(sequence) {
                if (this.bound) {
                    this.notifyTemplateDomBind(this.bound.model, sequence, this.bound, "model");
                }
                else {
                    this.notifyTemplateDomBind(this.obj, sequence, this, "obj");
                }
            }
            onLocalChange(patches) {
                // todo #26
                this.propagateDomBind({ patches, results: patches.map(() => { }) });
            }
            fire(name, detail) {
                this.dispatchEvent(new CustomEvent(name, { detail }));
            }
            onPatchReceived(data, url, method) {
                this.fire("patchreceived", {
                    data,
                    url,
                    method
                });
            }
            onPatchSent(data, url, method) {
                this.fire("patchsent", {
                    data,
                    url,
                    method
                });
            }
            onSocketStateChanged(state, url, data, statusCode, reason) {
                this.fire("socketstatechanged", {
                    state,
                    url,
                    data,
                    statusCode,
                    reason
                });
            }
            onConnectionError(palindromConnectionError) {
                const eventDetail = {
                    error: palindromConnectionError,
                    handled: false
                };
                this.fire("connection-error", eventDetail);
            }
            onGenericError(error) {
                const eventDetail = {
                    error
                };
                this.fire("generic-error", eventDetail);
            }
            onReconnectionCountdown(milliseconds) {
                const eventDetail = {
                    milliseconds,
                    handled: false
                };
                this.fire("reconnection-countdown", eventDetail);
            }
            onReconnectionEnd() {
                const eventDetail = {
                    handled: false
                };
                this.fire("reconnection-end", eventDetail);
            }
            onPatchApplied(patches, results) {
                this.propagateDomBind({ patches, results });
                this.fire("patch-applied", {
                    patches
                });
            }
            notifyTemplateDomBind(tree, patchesAndResults, templateDomBind, polymerPathPrefix) {
                if (patchesAndResults.patches.length > this.mergedNotificationsThreshold) {
                    console.warn(`palindrom-client has noticed a huge patch of ${patchesAndResults.patches.length} operations. For better performance palindrom-client will replace the whole state object instead of applying your updates individually`);
                    // clone to prevent flash of content
                    templateDomBind.set('model', {});
                    templateDomBind.set('model', this.obj);
                    return;
                }
                let operation;
                let polymerPath;
                for (let operationNo = 0, len = patchesAndResults.patches.length; operationNo < len; operationNo++) {
                    operation = patchesAndResults.patches[operationNo];
                    const result = patchesAndResults.results[operationNo];
                    if (operation.path == "") {
                        //in case of root path, Polymer replaces the original obj, which detaches it from Palindrom
                        const newSequence = { patches: [], results: [] };
                        for (const prop in operation.value) {
                            if (operation.value.hasOwnProperty(prop)) {
                                newSequence.patches.push({
                                    op: "add",
                                    path: `/${prop}`,
                                    value: operation.value[prop]
                                });
                            }
                        }
                        this.notifyTemplateDomBind(tree, newSequence, templateDomBind, polymerPathPrefix);
                        continue;
                    }
                    polymerPath = polymerPathPrefix + translateJSONPointerToPolymerPath(operation.path);
                    if (operation.op === 'test') {
                        // we assume that jsonpatch covered it already
                    } else if (operation.op === 'move' || operation.op === 'copy') {
                        console.warn("move, and copy operations are not supported yet.")
                    } else {
                        // for add and remove we need to check whether it's an array or not
                        const lastSeparator = operation.path.lastIndexOf('/');
                        let name = operation.path.substr(lastSeparator + 1);
                        const parentsPolymerPath = polymerPathPrefix + translateJSONPointerToPolymerPath(operation.path.substring(0, lastSeparator));
                        const parent = templateDomBind.get(parentsPolymerPath);
                        if (Array.isArray(parent) && (name === '-' || isNormalInteger(name))) {
                            switch (operation.op) {
                                case 'add':
                                    // JSONPatch push
                                    if (name === '-') {
                                        name = result.index;
                                    }
                                    templateDomBind.notifySplices(parentsPolymerPath,
                                        [{
                                            index: parseInt(name, 10),
                                            removed: [],
                                            addedCount: 1,
                                            object: parent,
                                            type: 'splice'
                                        }]
                                    );
                                    break;
                                case 'replace':
                                    templateDomBind.notifySplices(parentsPolymerPath,
                                        [{
                                            index: parseInt(name, 10),
                                            removed: (result && [result.removed]) || [],
                                            addedCount: 1,
                                            object: parent,
                                            type: 'splice'
                                        }]
                                    );
                                    break;
                                case 'remove':
                                    templateDomBind.notifySplices(parentsPolymerPath,
                                        [{
                                            index: parseInt(name, 10),
                                            removed: (result && [result.removed]) || [],
                                            addedCount: 0,
                                            object: parent,
                                            type: 'splice'
                                        }]
                                    );
                                    break;
                            }
                        } else {
                            switch (operation.op) {
                                case 'add':
                                case 'replace':
                                    if (typeof operation.value === 'object') {
                                        templateDomBind.notifyPath(polymerPath);
                                    } else {
                                        templateDomBind.notifyPath(polymerPath, operation.value, false);
                                    }
                                    break;
                                case 'remove':
                                    //console.warn('Polymer does not support unsetting properties https://github.com/Polymer/polymer/issues/2565');
                                    //console.warn('remove is translated to JSON incompatible set to `undefined`, as there is no remove method in Polymer.')
                                    templateDomBind.notifyPath(polymerPath, null, false);
                                    templateDomBind.notifyPath(polymerPath, undefined, false);
                                    break;
                            }
                        }
                    }
                }
            }
        }
        customElements.define('palindrom-client', PalindromClient);
        function translateJSONPointerToPolymerPath(pointer) {
            return pointer.replace(/\//g, '.');
        }
        function isNormalInteger(str) {
            const n = ~~Number(str);
            return String(n) === str && n >= 0;
        }
        function kebebCaseToCamelCase(str) {
            return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
        }
    })();
</script>

I found out what's happening. There is a deep dom-repeat that populates a table that fills the missing part of the UI. This dom-repeat is not being re-rendereed with this fix, causing an empty UI. notifySplice-ing this dom-repeat manually fix this part of the issue. But there are other places in the UI that also need re-rendering and even notifying this dom-repeat alone is impossible.
Also, the current state of the code is better than this suggesion, because the same dom-repeat re-renders just fine with it but other issues emerge. So it's safe to say the suggesed solutions fails at earlier stage than the current code.
However, even though current code passes this limit, it's not better. Many things are breaking badly after a huge patch is applied. I could track each. But I doesn't seem rational to fix several issues (assume they're fixable) to serve a workaround.

However, even though current code passes this limit, it's not better. Many things are breaking badly after a huge patch is applied. I could track each. But I doesn't seem rational to fix several issues (assuming they're fixable) to serve a workaround.

I suggest we rollback the fix and suggest migrating to Polymer 2.0 to get a better performance. All these fixes and time we're spending will be trashed anyways when they migrate to Polymer 2.0.

I agree. Please discuss with Erik.

Closing as won't fix. It was confirmed with Jimmy that they will look into migrating to Polymer 2 instead of working around Polymer 1. See https://starcounter.slack.com/archives/C67JPA7NG/p1531815185000187


changed to yaml syntax, fixed debian bug

Hello!
Back to loan some old ansible roles.
Switched to fully yaml syntax, instead of the old foo=bar baz=bar
The Debian part now actually does what the intent was, using {{ net_path }} instead of hard coding the path.
Removed the commented out old code.
Greetings from Ericsson

Has travis taken a break?

The role has bugs preventing it's use by centos8, working on fixing them.

Greetings, this PR is against master branch. Please do PRs against devel branch.


Testing Subscriptions with Redis PubSub

I've implemented subscriptions with Redis PubSub, and when I test them manually things work just fine.
I'd like to write the test for them, but for some reasons stream.next().await.unwrap() never triggers.
I've used super basic code I've found in examples for tests:
Subscription:
    async fn values(&self, ctx: &Context<'_>) -> async_graphql::Result<impl Stream<Item=String>> {
        let client = ctx.data_unchecked::<Client>();
        let mut conn = client.get_async_connection().await?.into_pubsub();
        conn.subscribe("values").await?;
        Ok(conn
            .into_on_message()
            .filter_map(|msg| async move {
                msg.get_payload().ok()
            }))
    }

Publisher (mutation to trigger PubSub):
    async fn publish(&self, ctx: &Context<'_>, value: String) -> async_graphql::Result<bool> {
        let client = ctx.data_unchecked::<Client>();
        let mut conn = client.get_async_connection().await?;
        conn.publish("values", value).await?;
        Ok(true)
    }

Test:
    async fn test_subscription(pool: PgPool) {
        let schema = build_service_schema(pool, get_redis_test_client());
        let mut stream = schema
            .execute_stream(Request::new("subscription { values }"))
            .map(|resp| resp.data);

        let client = get_redis_test_client();
        let mut conn = client.get_connection().unwrap();
        let mut pubsub = conn.as_pubsub();
        pubsub.subscribe("values").unwrap();

        let response = schema.execute(r#"mutation{publish(value:"123")}"#).await.into_result().unwrap();

        let delay = time::Duration::from_secs(10);
        thread::sleep(delay);

        let msg = pubsub.get_message().unwrap();
        let payload: String = msg.get_payload().unwrap(); // This one confirms the publishing works

        let v = stream.next().await.unwrap(); // This one just waits forever
        assert_eq!(value!({ "value": "123"}), v);
    }

Note: if I change the subscription code just to generate some stuff without Redis, things work just fine.
This subscription works in the same test:
    async fn values(&self, ctx: &Context<'_>) -> impl Stream<Item = String> {
        let value = String::from("321");
        futures_util::stream::once(async move { value })
    }

I tried to add delays, but no luck. I appreciate any clues.

I had the same problem, I realized that I was only actually starting the subscription (with stream.next().await) after I had made my mutation. I had to start the subscription in the background, then mutate, then join the subscription back to the thread:
        let mut s = schema.execute_stream("subscription ...");
        let sub_next = tokio::spawn(Box::pin(async move {
            s.next().await
        }));
        // mutate ...
        let timeout_duration = Duration::from_secs(5);
        let val = match tokio::time::timeout(timeout_duration, sub_next).await {
            Ok(Ok(Some(val))) => val,
            Ok(Ok(None)) => panic!("Stream ended before getting value"),
            Ok(Err(e)) => panic!("Error joining stream thread: {}", e),
            Err(_) => panic!("Timeout waiting for value from stream"),
        };
        // assert ...


Enable shallow rendering mode

The popular shallow rendering mode in Vue/React/Angular testing frameworks, that only render the component under test directly, and not any sub-components it might be using, could be useful in Blazor testing as well.
The TestRenderer and Htmlizer class might allow this. Needs more investigation.

@egil,
Sorry about the delay. Ive had a few false starts trying while trying to get a handle on this and want to run by you my current status.
First, I spent some time looking into 1 above, and it looked like those frameworks leave the component declaration in place, but as you say, it sounded like this was a result of how the shallow rendering was accomplished. For one of the frameworks (I forget which) shallow rendering meant the renderer wouldn't know about the child components, and would therefore leave their markup alone. Importantly, none of the articles I read about shallow rendering made any specific points about this as a feature with important benefits. So, I would suggest we just leave <ComponentName/> in the location of a skipped component. Actually trying to reconstruct the .razor markup seems like it would add a lot of complexity, and in some cases wouldn't be possible (e.g.attribues with @ symobols)
In terms of producing a working demo I have had much more trouble than I expected in extending the example @SQL-MisterMagoo produced into a bigger proof of concept. Here are some notes from the last week (which I did using the current master).

I had started off trying to fit @SQL-MisterMagoo's code into ComponentParamenterExtensions.ToComponentRenderFragment. I expected to work with the components here, but after adding the component to the dummy RenderTreeBuilder, I found the component frame's frame.Component property was null. Presumably its a placeholder at this point and needs to be initalized somehow.
If all we need to do is remove the child component markup, that I got working easily in Htmlizer.RenderChildComponent. The downside I see here is the child components still exist.

This can cause exceptions. We could, I think, suppress exceptions originating in the children in TestRenderer.AssertNoSynchronousErrors.
User might need to provide additional cascading parameters to satisfy all the child components.
Worse, the child could have some event callbacks (maybe on a timer) and be changing the state of the parent component.

So, I think #1 is still a better option if it could work, but it looks like it would be difficult. I'm not sure what the best approach is. What do you think?

No worries @Siphonophora, this is not a small change, and we are all working for free. I am just happy to be getting your help at all!
I agree, we cannot rely on Htmlizer to do shallow rendering, since all components are still rendered, we are just not generating HTML. I also like the idea of leaving in the <ComponentName /> in the render tree to make it obvious that it is not rendered. To make it easier to detect that is not rendered, we could add a special attribute to it, e.g. <ComponentName blazor:renderSkipped="true" />.
Next week I hope to get some time to start working on a refactor, that will result in a bunit.core library, that does not have anything specific to HTML inside it, that will be in a bunit.web library. The idea is to enable other variants, such as bunit.mobile, and also remove direct dependency on xunit. Anyway, the point is, that your shallow rendering should exist in bunit.core. But do go ahead with prototyping, but do not use to much time making things pretty/clean, as I will be moving things around.

@egil I wanted to update you on some recent progress. Which is here: https://github.com/Siphonophora/bunit/tree/shallow-render2
Its messy, but here is whats happening: I've been using TestRenderTest.Test001 and as you can see there is a component called Shallow. All it does is display child content. Then ShallowBuilder.CreateShallowFragement is called. That ended up being an extention of what sqlmrmagoo produced above, except that you have to do a full render of the component in order to get the frames. That gets us the expected markup:
<button blazor:onclick="1">Click to count</button>

0

<Simple1 blazor:renderSkipped="true" blazor:renderSkippedFrameCount="2"/>

<EditForm blazor:renderSkipped="true" blazor:renderSkippedFrameCount="4"/>

Except the cascading value and button clicking don't work. I think I have successfully severed the markup from the component, but then all the methods and values on the component aren't there to be used. I tried putting the cascading parameter and the click handler on the shallow component to see if that would help, but it didn't make any difference.
I think if I had a deeper understanding of the internals of blazor, this might be going better. I'm having trouble telling if the right combination of RenderTreeFrames could be added to simulate the component still existing, or to point to an instance of the component without using its BuildRenderTree method.
The only other idea I have had is to try and inherit from the component, or maybe proxy calls to it, but substituting a different BuildRenderTree. A quick test of doing that manually provided the same markup as before. Where it looks like the cascading value and click events aren't working
    public class TestRendererTest : ComponentTestFixture
    {
        [Fact(DisplayName = "Renderer pushes render events to subscribers when renders occur")]
        public void Test001()
        {
            var res = new ConcurrentRenderEventSubscriber(Renderer.RenderEvents);
            //var sut = RenderComponent<ChildrenHolder>();

            ShallowClickCounter.Fragement = ShallowBuilder.CreateShallowFragement<ClickCounter>();
            var sut = RenderComponent<ShallowClickCounter>(
                CascadingValue(42));

            File.WriteAllText($@"c:\temp\click counter markup {DateTime.Now.ToString("yyyyMMdd HHmmssffffff")}.txt", sut.Markup);

            res.RenderCount.ShouldBe(1);

            sut.Find("button").Click();
            File.WriteAllText($@"c:\temp\click counter markup {DateTime.Now.ToString("yyyyMMdd HHmmssffffff")}.txt", sut.Markup);

            res.RenderCount.ShouldBe(2);
        }
    }

    public class ShallowClickCounter : ClickCounter
    {
        public static RenderFragment Fragement { get; set; }

        protected override void BuildRenderTree(RenderTreeBuilder __builder)
        {
            Fragement(__builder);
        }
    }

Let me know what you think. Also, I see you marked this as backlog. So, let me know what you think in terms of putting more time into this now.

hi @Siphonophora, thanks for your efforts in this. Regarding marking this issue as "backlog", that's just because I don't feel it is a need-to-have feature before going for v1 final release. Maybe I should rename it to nice-to-have :)
As for understanding the internals, I do feel your pain. I've been digging around the the base renderers code, and it's quite complex.
I am not sure the approach you seem to be taking by providing an override to ChildContent will work in all cases, what we really need is a way to hook into the RenderTreeBuilder that is passed to the BuildRenderTree method of each component.
One challenge with that is that each component seems to get its own instance of the RenderTreeBuilder (see ComponentState class), and that means we cannot create a Wrapper component whose child content is the component under test. If they shared a RenderTreeBuilder, we could hack into the one received by the wrapper and add our own logic. And sadly, the RenderTreeBuilder type is also sealed, so it will mean a full copy/paste and a custom Renderer/RenderHandle to hook into the pipeline, as far as I can see. That would probably not be a good long term solution, as we would end up having to copy/paste most of the existing internal renderer code into bUnit.
There could quite likely be other options I am not seeing. We could create an issue in the aspnetcore repo and ask for some input on this. If it is not possible at all with the current renderer architecture, then we might inspire them to add some hook points for us in the future.

@egil I agree, everything I have tried seems fragile in one way or another. I did spend time thinking about #53 in relation to this. Anything that would allow you to substitute a mock should, I think, allow us to do shallow rendering. If there was an option for a component to be specified by an interface then registered DI that would be great.
Asking the aspnetcore team for input on modifying or substituting the component does seem like a good idea. I see a few potentially related open items, like https://github.com/dotnet/aspnetcore/pull/19642 but it won't hurt to ask.
In any case, I'm happy to put some time into another issue that's higher priority for the initial release if you want to suggest one.

Awesome. Lets park this for now. Take a look at the beta-8 milestone issues. Those are next in line :-)


Question regarding different Show instances for Digest between cryptonite and cryptohash

The following code snippet yields different results for both packages.
import Crypto.Hash
import qualified Data.ByteString.Char8 as BSC

hash' bs = hash bs :: Digest MD5

show . hash' . BSC.pack $ "foo"
-- Returns
--   "\"acbd18db4cc2f85cedef654fccc4a4d8\"" for cryptonite
--     "acbd18db4cc2f85cedef654fccc4a4d8"   for cryptohash

This is probably due to the different Show instances:
Cryptonite:
instance Show (Digest a) where
    show (Digest bs) = show (B.convertToBase B.Base16 bs :: Bytes)

Cryptohash:
instance Show (Digest a) where
    show (Digest bs) = BC.unpack $ toHex bs

Will the instance in cryptonite stay as it is?
This would prevent cryptonite from being used as a drop-in replacement
for cryptohash, but maybe it isn't intended as such.

yes, I think that should be a bug at this stage. There's no reason the show instance should be different


Remove button disabled to completed test orders. Fix #483.

Fix #483

Coverage increased (+0.03%) to 60.426% when pulling 46ca691e0470fb439e5a087387d63d7ac65bbea9 on edrisse:do-not-allow-removal-completed-test-order into ca1d2f72ff0a01dc4b54a3996044a7d9d3591aad on esaude:master.


hadoop doesn't build: can't find file to patch at input line 16

Describe the bug
building '/nix/store/k0bxs8gfgg07qj9njfrimaqp1gp4d4pl-hadoop-2.7.7-bin.drv'...
unpacking sources
unpacking source archive /nix/store/zfpzqp8h6g7smw5m2jqvxhdx56hfb90g-hadoop-2.7.7-src.tar.gz
source root is hadoop-2.7.7-src
setting SOURCE_DATE_EPOCH to timestamp<PHONE_NUMBER> of file hadoop-2.7.7-src/hadoop-yarn-project/CHANGES.txt
patching sources
applying patch /nix/store/9vyjbpcg72zsjvpblnqhlx9igv862d1s-2886.patch
patching file hadoop-common-project/hadoop-common/src/main/native/src/exception.c
can't find file to patch at input line 16
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
|+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
error: builder for '/nix/store/k0bxs8gfgg07qj9njfrimaqp1gp4d4pl-hadoop-2.7.7-bin.drv' failed with exit code 1;
       last 10 log lines:
       > Perhaps you used the wrong -p or --strip option?
       > The text leading up to this was:
       > --------------------------
       > |--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
       > |+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt
       > --------------------------
       > File to patch:
       > Skip this patch? [y]
       > Skipping patch.
       > 1 out of 1 hunk ignored
       For full logs, run 'nix log /nix/store/k0bxs8gfgg07qj9njfrimaqp1gp4d4pl-hadoop-2.7.7-bin.drv'.
error: 1 dependencies of derivation '/nix/store/86sw1mbw6pb00fvlpk4rw1w5lmyqkb6z-hadoop-2.7.7.drv' failed to build

Steps To Reproduce
Steps to reproduce the behavior:

cd ~/nixpkgs
nix-build -A hadoop

Expected behavior
Screenshots
Additional context
Notify maintainers

@volth
Metadata

system: "x86_64-linux"
host os: Linux 5.14.3-zen1, NixOS, 21.11 (Porcupine)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.4pre20210922_bcd73eb
channels(root): "nixos-21.11pre299825.d8079260a30"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Maintainer information:
# a list of nixpkgs attributes affected by the problem
attribute:
# a list of nixos modules affected by the problem
module:

Notify maintainers
@volth

I can hover @volth's user name to show the usual Github info, but clicking it produces a Github 404 page.

Notify maintainers
@volth

I can hover @volth's user name to show the usual Github info, but clicking it produces a Github 404 page.

Me too :/

Yeah, their github account seems to be deleted. They are active on the forum, so I'll send them a message.

volth pointed me to https://github.com/NixOS/nixpkgs/pull/141143 . which seems to have fixed the build. :tada:


build: Don't link against libatomic on Linux

The dependency on libatomic was removed in 97df90fbf157b9a6f80c9854aa8b4728cb941655. This commit removes leftover cases that still link against libatomic.

@swift-ci please test

@compnerd Found some cases I missed in the original PR.

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 302e82d7cd4471924ebc98b390e7fb00e774d80d

Build failed
Swift Test OS X Platform
Git Sha - 302e82d7cd4471924ebc98b390e7fb00e774d80d

I am fine with this. Just be careful! Make sure you do your due diligence!

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 53c81799491dd31cdb9f6c0504a414f15cca832e

Build failed
Swift Test OS X Platform
Git Sha - 53c81799491dd31cdb9f6c0504a414f15cca832e

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 4c0b8fa5c36abeaa34945bfcda699191c5eebc16

@swift-ci please test


[Swift 4.2] Updated Hash Table

Checklist

[x] I've looked at the contribution guidelines.
[x] This pull request is complete and ready for review.

Description

References #748. Makes it easier to find algorithms to update.

Thanks for the update 💯


Maximizing a window to specific monitor

Calls to glfwSetWindowPos on Windows do not position the window to include the offset required for the title bar. This is not limited to maximized windows and also occurs to windowed windows.
This seems like it is correct according to glfw documentation.
https://github.com/glfw/glfw/blob/2c519709be0dacc7af2908982a7ab80b889a8126/docs/window.dox#L800-L805
Trying to work around by glfwGetWindowPosition to obtain the current x/y position and offsetting the position before calling glfwSetWindowPos results in slightly incorrect results.
If this is intended behavior, is there a proper way to request a window be maximized to a specific monitor?
This behavior was observed using latest Lwjgl3's glfw release, glfwGetVersionString: 3.4.0

Do you want to make a window full screen on a specific monitor but without a video mode switch?
If so I recommend setting it with glfwSetWindowMonitor as in the second example here.

Do you want to make a window full screen on a specific monitor but without a video mode switch?

No, I'm trying to make a new maximized window with title bar/decorations on a specific monitor.

Oh, that makes sense. There's no single function for creating a window that's maximized on a specific monitor, but it can be done. Here is one example of how, by centering the window in the monitor's workarea.
glfwWindowHint(GLFW_VISIBLE, 0);
GLFWwindow* window = glfwCreateWindow(window_width, window_height, "Title", NULL, NULL);
glfwGetMonitorWorkarea(monitor, &area_x, &area_y, &area_width, &area_height);
glfwSetWindowPos(window,
    area_x + area_width / 2 - window_width / 2,
    area_y + area_height / 2 - window_height / 2);
glfwMaximizeWindow(window);
glfwShowWindow(window);

Thanks!


NamedQuery: add dummy update handler and support for specifying WorkGroup

Issue #, if available:
Description of changes:
NamedQuery: add dummy update handler and support for specifying WorkGroup
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Do we need to add any tests for failure? I just saw test for successful case.

Adding workgroup is optional, so it shouldn't cause any additional failures. I left the original tests without workgroup as-is to make sure the existing functionality didn't break, and added new ones with workgroup to make sure the Athena API request is populated correctly


Unreliable test TestToggleEvents

Describe the bug
This test failed during PR validation for an unrelated change https://github.com/microsoft/MixedRealityToolkit-Unity/pull/6411
https://dev.azure.com/aipmr/MixedRealityToolkit-Unity-CI/_build/results?buildId=6369&view=ms.vss-test-web.build-test-results-tab&runId=13820&resultId=100036&paneView=debug
Toggle select did not fire
Expected: True
But was: False

@keveleigh still an issue?

Not sure. Can't say I've seen it recently. I'll go ahead and close unless we see it again


Smoke tests and Characterisation tests with small data sets

Hi,
First, thanks a lot for sharing this on Github, I'm sure this will help to easily manage contributions.
I think it would be good to add some scripts for testing purpose.
The main motivation is because research tools like Merlin are very likely to be modified (they are not supposed to converge to something specific and stable) and, thus, it is necessary that previous behaviors are still reproducible with newer versions.
Two things to realize this:

Smoke tests: a script that runs the pipeline with many different configurations using very small train/valid/test sets, in order to check that the previous features are still runnable (basically no crash).
Characterisation tests: Using bigger train/valid/test sets, the pipeline can be run on standard configuration (e.g. one DNN and one LSTM). Then, the objectives measures can be used to verify that the results do not change for these configurations.

What do you think ?
Cheers,

Hi,
First of all, thank you for your suggestions. I am also thinking on the same lines.
I will be preparing some short and full data - one speaker from Arctic (16 khz sampling frequency) and one other speaker (with 48khz sampling frequency).
The data will be uploaded somewhere in our servers and is publicly accessible.
We are also looking to support phoneme alignments (rather than forcing everyone to use state labels). Once this is done, I will be uploading the data -- you can help me writing the test scripts, if you have time.
Cheers
Srikanth

Great. I can start writting a script to automatically test the pipeline on DNN and LSTM using the data in dnn_baseline_practice that Zhizheng gave us. We can still change the data later on anyway.
Using phoneme alignement, how will the states be aligned on the data ? just uniformly ? there is no expected loss in doing so ?

That would be great.
There won't be any states.  3 numerical features for coarse-coded position of the current frame in the current phoneme and 1 numerical feature for duration of the current segment are used -- as suggested in the paper by Heiga zen. (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/40837.pdf)

Hi,
I revamped the Merlin scripts -- added example demo directory in egs. Also, created some scripts to automatically setup the workspace, create config files and run the models.
Can you please check with the latest setup, if possible? Also, can you please update me on the progress with your scripts to automatically test the pipeline?
Cheers
Srikanth

Well, it seems I can refactor what I did :P
Could you drop a subset of slt voice somwhere ? (like 50 sentences only)

At the moment, the scripts in egs/slt_arctic does the same -- the demo runs only on 60 files. But, the setup.sh downloads all the files -- so that we can do Smoke tests with file_id_list_demo.scp and later Characterisation tests with file_id_list.scp
Does that make any sense?

Fully sense! You actually did what I thought to do :D
For the charac. test. I'll make a script that compare the obj. meas. with saved ones.

Done in #4

BTW, I really like the way you reorganized the files, much cleaner!
For the generation of the config files, there might be a simpler solution though:
We could put templates config files in misc/recipes/general_config/
and modify them in setup.sh (using sed) under the "### default settings ###" section
In doing so, you get rid of both prepare_config_files.sh script, which is a bit heavy, and global_settings.cfg, which repeats the content of the conf files.
what do you think ?

Thank you.
The current scripts are written without much thought -- just aiming for automatic end-to-end system building without configuring anything.
We need global settings file -- for those who want to tweak or set only few important parameters. Going forward, we might end up with too many configurable variables in conf files and hence global conf file is required for demo purpose.
However, the creation of config files can be changed. But, at the moment, I am concentrating more on restructuring the source code for training DNN.

Ok, I understand.
So I would just suggest to copy the conf files from misc/recipes/ and modify them according to global_settings.cfg. I'm happy to do it if you want.

I just wanted to comment on this. Thanks for writing the demo scripts. I had to set up a new machine today for our DL research. I was running this code on my Msi gaming laptop with a GTX860 processor on Ubuntu. And now I am running it on a desktop with the new GTX1080 processor. The speed-up is significant.
To run the full script the train_DNN step for the duration model took 4.52m on the laptop and it takes 2.21m on the server. But more impressively, the train_DNN step for the acoustic model took 39.39m on my laptop and only 6.05m on the server.

Could you give us your numpy and theano version ?
This should be printed in your log at the beginning.
I ask you this because I experienced huge differences of running time between numpy/theano versions.

I didn't know that. My laptop has newer versions at the moment. Theano is 0.9.0dev1.dev and numpy is 1.11.1. The new machine was initially configured by someone else so it has theano 0.8.2 and numpy 1.7.1.
I am planning to upgrade numpy to 1.11.1 as I currently get a message when I load it in python:
/usr/lib64/python2.7/site-packages/numpy/lib/utils.py:254: FutureWarning: Numpy has detected that you (may be) writing to an array returned
by numpy.diagonal or by selecting multiple fields in a record
array. This code will likely break in the next numpy release --
see numpy.diagonal or arrays.indexing reference docs for details.
The quick fix is to make an explicit copy (e.g., do
arr.diagonal().copy() or arr[['f0','f1']].copy()).
ai = a.array_interface

Hi,
First of all thanks for merlin.
I have trained slt_arctic_full_data whose output is awesome, now  I want to know how can we test new unseen sentences in merlin. In the case of Festival uss voice we use(SayText "promt" ) command. Is there any provision for testing unseen data?  along with that I want to know  what are the steps/modification  required to train different languages apart from english.

Hi @dreamk73 and @sushantakpani ,
This thread mentions many different issues that are not related to the initial subject. May I ask you to open new issues dedicated to your problems?
@sushantakpani there is currently no easy-going command to synthesis an arbitrary text, because this would need to call a phonetizer. You can provide a list of separate test sentences though (look at test_id_scp).
Thanks


Add Jenkins support for CI

use AMPLab infrastructure.

This is now set up and running at https://amplab.cs.berkeley.edu/jenkins/job/ampcrowd/.
@EntilZha: 2 questions.

Are you able to view the Jenkins page / observe build output?
Right now I'm only running docker-compose build to verify that the code builds. Is there a docker-approved way to run tests, or should I add a build step that just runs python manage.py test?

Everything showed up fine for me.
Probably the best way would be to execute the code within the docker environment, which you could do by running:
docker-compose build
docker-compose up -d
docker exec django_container_name python manage.py test
docker-compose kill
docker-compose rm

Or something that looks very similar to that. I can write something up when I get a moment.


注释upx流程

Codecov Report

Merging #1612 (faec5b0) into master (7812f41) will decrease coverage by 0.03%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1612      +/-   ##
==========================================
- Coverage   70.56%   70.52%   -0.04%
==========================================
  Files         443      443
  Lines       42232    42232
==========================================
- Hits        29802    29786      -16
- Misses      10514    10527      +13
- Partials     1916     1919       +3

Flag
Coverage Δ

go-1.15
70.52% <ø> (-0.01%)
:arrow_down:

go-1.16
?

go-1.17
?

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

Impacted Files
Coverage Δ

os/gspath/gspath_cache.go
84.21% <0.00%> (-10.53%)
:arrow_down:

net/gtcp/gtcp_pool.go
34.09% <0.00%> (-4.55%)
:arrow_down:

os/gmutex/gmutex.go
94.73% <0.00%> (-2.64%)
:arrow_down:

container/gtree/gtree_avltree.go
97.21% <0.00%> (-0.60%)
:arrow_down:

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 7812f41...faec5b0. Read the comment docs.


fanLevelControl stays at 0 when adjusted

I've been using one of your other plugin "homebridge-xiaomi-fan" which works great except that I can't stop/oscillate the fan in Control Center. But, I found out that this "homebridge-miot" can do that; a feature I sorely missed cause I often access devices through Control Center in iOS.
However, there's only one issue with it - it consistently reports zero speed when adjusting the fanLevelControl. Tried this on zhimi.fan.za4 (Smartmi Standing Fan 2S). My other Xiaomi fans like zhimi.fan.fb1 (Mi Smart Air Circulator Fan) and dmaker.fan.p9 (Mi Smart Tower Fan) doesn't exhibit this issue though.
Also, is it possible to change to other fan icon in HomeKit? I don't see that option, but my ceiling fan connected to wall switch does show three different fan icons.

Appreciate your response. Thank you!

The zhimi.fan.za4 is not a miot device but i can use the miot protocol over the micloud to still allow controlling the device. The disadvantage with this approach is that this only supports a limited set of properties. For the zhimi.fan.za4 fan speed is not reported over micloud so that is why it shows as 0%.
As for the icon, icon changing is only supported on the old Fan v1 homekit accessory. This plugin uses the new Fan v2 homekit accessory which does not allow to change the icon. This is a limitation by Apple, why they removed the icon changing in the Fan v2 accessory i have no idea...

Ah I see. Perhaps if its possible that the slider follows the fan speed we manually set?…  Just like we can with the AC partner v2. 🤷♂

Normally it uses the fan level, but in that case it is kind of a special case which I first need to correctly handle! But I will check it put!

I got excited too early when I saw the update 😅 only to find the speed still saying zero when adjusted haha

Well, sorry... did not have time to have a look it yet.

Hi, any update on this? I’m guessing its not possible?

Issue should be fixed in version 0.9.17


how can I see my print in hello.py

hi, I try to print some message in hello.py like print("hello world")
but ,I run the docker and  the terminal show
SOFTWARE-143:docker-flask-master jack.ke$ docker run -p 80:80 line-bot
/usr/lib/python2.7/dist-packages/supervisor/options.py:295: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
'Supervisord is running as root and it is searching '
2017-07-10 03:42:52,311 CRIT Supervisor running as root (no user in config file)
2017-07-10 03:42:52,312 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
2017-07-10 03:42:52,330 INFO RPC interface 'supervisor' initialized
2017-07-10 03:42:52,330 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2017-07-10 03:42:52,330 INFO supervisord started with pid 1
2017-07-10 03:42:53,335 INFO spawned: 'nginx' with pid 7
2017-07-10 03:42:53,337 INFO spawned: 'uwsgi' with pid 8
2017-07-10 03:42:54,350 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-07-10 03:42:54,350 INFO success: uwsgi entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
I can't see any print message , any idea?

Perhaps it logs into a file as specified here ?:
https://github.com/p0bailey/docker-flask/blob/master/app/uwsgi.ini#L13
You can check the the log file /var/log/uwsgi/app/app.log either via docker exec command to run a bash attached to your running container or you can use docker volume option to have the folder /var/log/uwsgi/app/ mounted so some local folder when you run the docker run command.
Otherwise I suppose you can have a python environment locally so you can do python hello.py directly to test your code without docker environment.

OK, I don't see python log in /var/log/uwsgi/app/app.log
I will keep trying to find the other solution, thanks for your suggestion.


chore(doc) add repo = redhat-developer/red-hat-developer-hub-theme to package.json

chore(doc) add repo = redhat-developer/red-hat-developer-hub-theme to package.json

/assign nickboldt