Cleanup namespaces properly when e2e test fails

Fix for issues/134. defer() isn't called from log.Fatal (i.e. os.Exit). Wrap the main test
function in a helper function so deferred functions can be triggered
on errors properly.

@rshriram the test error is due to your recent change:
2017/02/14 06:23:54 Response time is 292.393201ms with status code 0
2017/02/14 06:23:54 Expected response time is 5s +/- 2s with status code 503

We need to clean up stale namespaces in the cluster. I can do that once you merge this in.

Running presubmits at https://istio-testing.appspot.com/job/manager/job/presubmit/283/ ...

manager/presubmit failed. Details at https://istio-testing.appspot.com/job/manager/job/presubmit/283/.

So, I don't understand.. My recent changes is making sure that new code does not break fault injection or version routing. And looking at the above message, it seems that fault injection is not working at all. What do you suggest we do?

Jenkins job manager/presubmit started

Jenkins job manager/presubmit failed

Jenkins job manager/presubmit started

Jenkins job manager/presubmit failed

Jenkins job manager/presubmit started

Jenkins job manager/presubmit failed

Jenkins job manager/presubmit started

Jenkins job manager/presubmit failed

Jenkins job manager/presubmit started

Jenkins job manager/presubmit passed

Jenkins job manager/presubmit started

Jenkins job manager/presubmit passed

Jenkins job manager/presubmit started

Jenkins job manager/presubmit passed


[feat]

Describe the problem
Mobile starts slow
Describe the solution you'd like
why not use flutter on mobile platform? Then we can use flutter's ecosystem.
considier on compile time, ts -> dart -> flutter.
Alternatives considered
No response
Additional context
No response

Flutter is not a webview so this is basically impossible. And we can't just transpile ts to dart without loosing all the APIs you expect from a webview/browser.
In case you know these other projects, this is the same as if you'd ask the Ionic or Capacitor maintainers for a flutter backend.


Add login command into user guide.

Signed-off-by: jjlee050<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build 141

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 86.509%

Totals

Change from base Build 136:
0.0%

Covered Lines:
1680

Relevant Lines:
1942

💛  - Coveralls


rows and cols methods need to return usize and not Ix

... because that's not an Index type but a quantity.
https://bluss.github.io/rust-ndarray/master/ndarray/struct.ArrayBase.html#method.rows
https://bluss.github.io/rust-ndarray/master/ndarray/struct.ArrayBase.html#method.cols

Thank you. It doesn't make any technical difference, but we can do this.

Do you want me to make a PR ?

Sure

https://github.com/bluss/rust-ndarray/pull/206


Add connection load balancing feature

Add connection load balancing feature with pgx.Connect() and pgxpool.Connect().

The original PR #1 has already been approved before it was merged into the branch load_balance. Merging it into master now.


iOS TintTransform not working while Android and UWP does.

Description
I'm trying to tint my iOS cache image via the TintTransformation via code. Using Xamarin Forms.
Steps to Reproduce
Create an image in iOS via xaml and pass a reference to the image to your view model. Then in the view model change the tint.
I set the init method in appdelegate:
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new App());

            //Init the FFImage renderer.
            CachedImageRenderer.Init();

            return base.FinishedLaunching(app, options);
        }

And set the image transforms on button tap with:
            //Set the tint of the aimer image.
            AimerImage.Transformations = new List<ITransformation> {
                new TintTransformation {
                    HexColor = AimerColor,
                    EnableSolidColor = true
                }
            };

Expected Behavior
The color should change.
Actual Behavior
It stays white (my image defaulted is white).
Basic Information

Version with issue: 2.3.4
Platform: iOS

Duplicate of https://github.com/luberda-molinet/FFImageLoading/issues/939 - let's continue there.


Cannot cut squid on a cutting board

One of the mods you are using must add a knife to the farmer's delight knives tag that doesn't exist.


Login page

Added the calls for a user to log in to their account. Removed the check password function as it was outdated. Will start  main activity when successful

Added option to nav menu to log out and added function to main activity to log out

If the user logs in and closes the app. When they reopen it they will be directed to the login page. If they sign out of the app they will be directed to the login page. Added sign out button to settings page based on Figma

Added a basic test

Final test implemented now ready for code review


Direct scanout not working because clients choose incompatible modifier

Direct scan-out isn't working because clients will always choose modifier incompatible with scanout on my system. Tested with XWayland and native Vulkan clients.
Hardcoding supported modifiers in types/wlr_linux_dmabuf_v1.c linux_dmabuf_send_modifiers will make it work.
Should wlr_linux_dmabuf only advertise formats/modifiers supported by scanout?
RX 6700XT, 5.13.4-zen1-1-zen, mesa 21.1.5-1, vulkan-radeon 21.1.5-1, xorg-xwayland 21.1.2-1

Should wlr_linux_dmabuf only advertise formats/modifiers supported by scanout?

This won't cut it, because this will prevent non-fullscreen clients from using more optimized modifiers.
The plan is the following: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/8


bugfix: 服务模板同步状态展示异常 (fixed #94)

Codecov Report

:exclamation: No coverage uploaded for pull request base (V1.0.7rc@717443c). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             V1.0.7rc     #95   +/-   ##
==========================================
  Coverage            ?   0.04%
==========================================
  Files               ?     177
  Lines               ?    8652
  Branches            ?       0
==========================================
  Hits                ?       4
  Misses              ?    8648
  Partials            ?       0

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 717443c...6aac357. Read the comment docs.


CI: Build then Push Apache Isis Packages to 'Nightly Repo'

does not work yet; getting HTTP-400 when pushing to gh-packages

I wonder if using a personal access token will fix this (as in #9 for the site) ?


Matrix room link is broken.

#jojiiMail:matrix.jojii.de Doesn't work element returns. M_UNKNOWN was returned while trying to access the room.

This room doesn't exist anymore, I removed it from the readme.


ERROR in ./src/index.jsx SyntaxError: Unexpected token (13:4)

Hello.
Trying to make it working. Even ubunu reinstalling didn't help.
Did everything as explained here:
https://jasonwatmore.com/post/2017/12/07/react-redux-jwt-authentication-tutorial-example
Installed node, npm, npx, nvm:
$ node -v
v12.18.4
$ npm -v
6.14.6
$ nvm -v
0.36.0
$ npx -v
6.14.6

Installing passes well:
$ npm install
But trying to start it gives me following:
 npm start

><EMAIL_ADDRESS>start /home/al/python/template/ui
> webpack-dev-server --open

ℹ ｢wds｣: Project is running at http://localhost:8080/
ℹ ｢wds｣: webpack output is served from /
ℹ ｢wds｣: Content not from webpack is served from /home/al/python/template/ui
ℹ ｢wds｣: 404s will fallback to /index.html
ℹ ｢wdm｣: wait until bundle finished: /
✖ ｢wdm｣: Hash: 11349b9868bb6765819a
Version: webpack 4.43.0
Time: 1755ms
Built at: 10/03/2020 1:21:37 PM
     Asset       Size  Chunks             Chunk Names
index.html  831 bytes          [emitted]
   main.js    396 KiB    main  [emitted]  main
Entrypoint main = main.js
[0] multi (webpack)-dev-server/client?http://localhost:8080 ./src 40 bytes {main} [built]
[./node_modules/ansi-html/index.js] 4.24 KiB {main} [built]
[./node_modules/ansi-regex/index.js] 139 bytes {main} [built]
[./node_modules/html-entities/lib/index.js] 449 bytes {main} [built]
[./node_modules/loglevel/lib/loglevel.js] 8.43 KiB {main} [built]
[./node_modules/strip-ansi/index.js] 161 bytes {main} [built]
[./node_modules/webpack-dev-server/client/index.js?http://localhost:8080] (webpack)-dev-server/client?http://localhost:8080 4.29 KiB {main} [built]
[./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.51 KiB {main} [built]
[./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket.js 1.53 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/createSocketUrl.js] (webpack)-dev-server/client/utils/createSocketUrl.js 2.91 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/log.js] (webpack)-dev-server/client/utils/log.js 964 bytes {main} [built]
[./node_modules/webpack-dev-server/client/utils/reloadApp.js] (webpack)-dev-server/client/utils/reloadApp.js 1.59 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/sendMessage.js] (webpack)-dev-server/client/utils/sendMessage.js 402 bytes {main} [built]
[./node_modules/webpack/hot sync ^\.\/log$] (webpack)/hot sync nonrecursive ^\.\/log$ 170 bytes {main} [built]
[./src/index.jsx] 834 bytes {main} [built] [failed] [1 error]
    + 18 hidden modules

ERROR in ./src/index.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: Unexpected token (13:4)

  11 |
  12 | render(
> 13 |     <Provider store={store}>
     |     ^
  14 |         <App />
  15 |     </Provider>,
  16 |     document.getElementById('app')

Child html-webpack-plugin for "index.html":
     1 asset
    Entrypoint undefined = index.html
    [./node_modules/html-webpack-plugin/lib/loader.js!./src/index.html] 995 bytes {0} [built]
    [./node_modules/lodash/lodash.js] 528 KiB {0} [built]
    [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 470 bytes {0} [built]
    [./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 500 bytes {0} [built]
ℹ ｢wdm｣: Failed to compile.

[```
What did I do wrong?

After some research I created following .babelrc file:
$ cat .babelrc
{
  "presets": [
    "react",
    "es2015"
  ]
}

After that I get following:
$ npm start

><EMAIL_ADDRESS>start /home/al/python/template/ui
> webpack-dev-server --open

ℹ ｢wds｣: Project is running at http://localhost:8080/
ℹ ｢wds｣: webpack output is served from /
ℹ ｢wds｣: Content not from webpack is served from /home/al/python/template/ui
ℹ ｢wds｣: 404s will fallback to /index.html
ℹ ｢wdm｣: wait until bundle finished: /
[BABEL] Note: The code generator has deoptimised the styling of "/home/al/python/template/ui/node_modules/react-dom/cjs/react-dom.development.js" as it exceeds the max of "500KB".
✖ ｢wdm｣: Hash: 3db8f8faee867891c547
Version: webpack 4.43.0
Time: 10950ms
Built at: 10/03/2020 1:32:43 PM
     Asset       Size  Chunks             Chunk Names
index.html  831 bytes          [emitted]
   main.js   1.53 MiB    main  [emitted]  main
Entrypoint main = main.js
[0] multi (webpack)-dev-server/client?http://localhost:8080 ./src 40 bytes {main} [built]
[./node_modules/react-dom/index.js] 1.32 KiB {main} [built]
[./node_modules/react-redux/es/index.js] 789 bytes {main} [built]
[./node_modules/react/index.js] 189 bytes {main} [built]
[./node_modules/strip-ansi/index.js] 161 bytes {main} [built]
[./node_modules/webpack-dev-server/client/index.js?http://localhost:8080] (webpack)-dev-server/client?http://localhost:8080 4.29 KiB {main} [built]
[./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.51 KiB {main} [built]
[./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket.js 1.53 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/createSocketUrl.js] (webpack)-dev-server/client/utils/createSocketUrl.js 2.91 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/log.js] (webpack)-dev-server/client/utils/log.js 964 bytes {main} [built]
[./node_modules/webpack-dev-server/client/utils/reloadApp.js] (webpack)-dev-server/client/utils/reloadApp.js 1.59 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/sendMessage.js] (webpack)-dev-server/client/utils/sendMessage.js 402 bytes {main} [built]
[./node_modules/webpack/hot sync ^\.\/log$] (webpack)/hot sync nonrecursive ^\.\/log$ 170 bytes {main} [built]
[./src/App/index.js] 338 bytes {main} [built]
[./src/index.jsx] 600 bytes {main} [built]
    + 137 hidden modules

ERROR in ./src/_components/PrivateRoute.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: Unexpected token (4:53)

  2 | import { Route, Redirect } from 'react-router-dom';
  3 |
> 4 | export const PrivateRoute = ({ component: Component, ...rest }) => (
    |                                                      ^
  5 |     <Route {...rest} render={props => (
  6 |         localStorage.getItem('user')
  7 |             ? <Component {...props} />

 @ ./src/_components/index.js 7:20-45
 @ ./src/App/App.jsx
 @ ./src/App/index.js
 @ ./src/index.jsx
Child html-webpack-plugin for "index.html":
     1 asset
    Entrypoint undefined = index.html
    [./node_modules/html-webpack-plugin/lib/loader.js!./src/index.html] 995 bytes {0} [built]
    [./node_modules/lodash/lodash.js] 528 KiB {0} [built]
    [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 806 bytes {0} [built]
    [./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 521 bytes {0} [built]
ℹ ｢wdm｣: Failed to compile.

Were able to run it under windows. Facing troubles under Ubuntu.


docx: include hyperlink URLs in metadata.link_urls/link_texts

partition_docx() includes hyperlink text inline where it appears in the paragraph. It does not however include the URL of the link in the element metadata.
Add extraction of hyperlink particulars (text, URL) as a distinct working object when parsing paragraphs and add those pairs to the element metadata.
Note: this is a straightforward extension of the more granular paragraph parsing required to handle rendered page-breaks where they occur mid-paragraph: #1447. Note also that support for this more granular parsing likely belongs upstream in python-docx to avoid imposing too much docx-specific domain knowledge on maintainers of this library.

Added in #1746


Enable PSP by default

This PR enabled the PSP by default in the chart, fixing installation issues on new CAPI providers

Going with a ping


Added a Disk Size parameter for Google Compute Engine.

Signed-off-by: Ray Tsang<EMAIL_ADDRESS>

Tested on GCE.  Works as expected.

Changed GiB to GB.  Cheers!

LGTM


Replace ternary numpy.einsum

Merge #4738 first.
Ternary numpy.einsum (without optimize option, which is not available in old numpy) is slow.  Do some optimization manually.

Could you please rebase it on the master now that #4738 is merged?

Rebased.

Thanks for the quick response. Do you have any benchmarks to back these changes up?

I've done only a quick check with
CHAINER_TEST_GPU_LIMIT=0 pytest tests/chainer_tests/functions_tests/connection_tests/test_bilinear.py.
The results ==== 12 passed, 11 skipped in * seconds ==== were {4.82, 4.74, 4.78} before the PR (53d0977fea95e0e5147dadd4a0fdd20ff7b9ef98), and are {4.00, 4.02, 4.07} with the PR.

Could you verify this with a practical case with larger arrays and maybe different memory? I could unfortunately not observe the same significant improvement (I ran the same test in about half your time on my machine). At the same time, I noticed that replacing some of your einsums with tensordot gave a quite large improvement instead. Would you mid verifying it?

Thanks a lot.  tensordot improved the performance.
It's possible that your environment installed numpy==1.14.0 (not other 1.14.*) or 1.15.0dev, where ternary numpy.einsum is optimized by default.

Thanks for the fixes. Indeed, I am testing with numpy==1.14.0. Again, the results vary depending on the data but I ran a couple of benchmarks covering older numpy versions and could see some improvements, especially for backward. I'll merge this PR once merging is unblocked.

jenkins, test this please.

LGTM!


mWeb - Rate per mile updated is not sync in real time on second login

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

Issue found when executing PR https://github.com/Expensify/App/pull/22243
Action Performed:

Go to Reimbursement page and click on first section, you will get a popup page.
Check by changing the data in the second section (Track Distance) for the rate and unit, so that it gets reflected after saving on the reimbursement page.
Open the 3rd section (Unlock next-day reimbursements), and check see if its opening correctly.
Go offline and then turn online, and see if the component gets sync.
Open the app in a different place (anywhere...desktop, mobile) and change the data in second section (Track Distance)

Expected Result:
The rate updated must sync in real time on second device
Actual Result:
The rate updated not sync in real time on second device (mWeb and iOS)
Workaround:
Unknown
Platforms:

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

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[x] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.42-21
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Expensify/Expensify Issue URL:
https://github.com/Expensify/App/assets/93399543/e785f3ee-6edb-49e2-b5d7-08d7dc34a232
Issue reported by: Applause- Interna Team
Slack conversation:
View all open jobs on GitHub

hey @marcochavezf wanted to get a double check here. I dont think this is a bug since it synced upon refresh. I am not sure if it is possible to sync this any more real time, or if we want to optimize for that. Let me know what you think

I tried to recreate the situation on local as well as stage but for me the rendering is pretty fast as compared to the added video.
I have checked with a combination on all six platforms (i.e; iOS, Android, web, desktop, mobile-chrome, mobile-safari)
There may be certain points that can be considered like network latency or battery optimisation of device that maybe putting one of the process in waiting queue (better if we can test on 2 devices rather than 2 windows - still on my Mac the 2 windows situation also works perfectly fine)

Hi @mateocole, in theory we should send a pusher event to update the account in real-time, so I think this is a bug
@kbecciv just to confirm, is this only happening on the second login? (i.e. the rate per mile is sync with the primary login?). Also is this only happening on Safari?

Hi @marcochavezf I tried with combination Android app and Android/Chrome, but not able to reproduce it.
https://github.com/Expensify/App/assets/93399543/828df651-3d71-4171-aa33-92e8bd76e0e4
I looked dipper for this issue, posting comments and video.
Combinations:

If primary login IOS app changed the rate -  secondary login mWeb/safari is failed (not updated)
If secondary login mWeb/safari changed the rate -  primary login IOS app is Pass 9 rate updated)

https://github.com/Expensify/App/assets/93399543/f8760143-fde7-48d2-b947-9489d82ae72c

I just tried this on iOS safari and it worked for me. Not sure why it wasn't for you but it seems fine, so I'm going to go ahead and close. Let me know if you disagree!


Setup fails in Linux ARM64 platforms

cargo kani setup fails to download the bundle for the aarch64-unknown-linux-gnu platform.
[0/5] Running Kani first-time setup...
[1/5] Ensuring the existence of: /home/accorell/.kani/kani-0.40.0
[2/5] Downloading Kani release bundle: kani-0.40.0-aarch64-unknown-linux-gnu.tar.gz
Error: Kani does not support this platform (Rust target aarch64-unknown-linux-gnu)

with Kani version: 0.40.0
The problem is that the setup program contains a platform check that which hasn't been updated.

It's possible to work around this failure by manually executing the remaining cargo kani setup steps:

Download the [kani-0.40.0-aarch64-unknown-linux-gnu.tar.gz] bundle.
Unpack the bundle: tar -zxf kani-0.40.0-aarch64-unknown-linux-gnu.tar.gz (this will generate a kani-0.40.0 folder)
Copy the bundle: cp -r kani-0.40.0 ~/.kani/
Install the nightly toolchain: rustup toolchain install nightly-2023-10-31
Link the toolchain: ln -s ~/.rustup/toolchains/nightly-2023-10-31-aarch64-unknown-linux-gnu ~/.kani/kani-0.40.0/toolchain
(optional) Install Python dependencies: python3 -m pip install --target ~/.kani/kani-0.40.0/pyroot cbmc-viewer==3.8


listchaintxns reports incorrect transaction amount

Background
LND reports 0 transaction amount
Your environment

version of lnd: lncli version 0.5.1-beta commit=
which operating system (uname -a on *Nix) = Darwin Brians-MacBook-Pro.local 18.2.0 Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64
version of btcd, bitcoind, or other backend= <IP_ADDRESS>
any other relevant environment details; using Pierre's node launcher

Steps to reproduce
Not sure how to reproduce; moving my seed to a new user on my computer doesn't show this error
Expected behaviour
listchaintxns should list chain transactions accurately
Actual behaviour
{
"tx_hash": "475bed38d094ea2705c768a6a18d0a771adc0c3781a1e3c986910deb2c87008e",
"amount": "0",
"num_confirmations": 634,
"block_hash": "0000000000000000000836adc919c3ea83aa98cd5c3bcbb287247a763e5877e1",
"block_height": 554524,
"time_stamp": "1545246946",
"total_fees": "0",
"dest_addresses": [
"bc1qpstu3n87yazvge49cgxqwqtjg6z5hnce7nxgs5xmt4z6r5dqm6vqwtxujx"
]
}
The actual transaction value was above 0 (but would round to 0 if using bitcoins as the unit of account): https://blockstream.info/tx/475bed38d094ea2705c768a6a18d0a771adc0c3781a1e3c986910deb2c87008e
Also, timelock appears to be in the past…like 30 years ago.

This tx was a force close on my end. lncli pendingchannels shows the limbo funds. If the "amount" field must be an integer, I guess 0 is as good as any. NaN would be more accurate.


"Garbage collector" for unused user defined subdomains

Error from the log: "The subdomain foo.bar.com is unavailable. Assigning a random subdomain".
The subdomain  foo was used earlier and ssh connection was lost, but sish assumes it is still in use.

Hmm, do you have an example of how to reproduce this? I haven't experienced it myself.

I had this case three times on two different machines, but with a new admin panel, who cares ;)

Heh, fair enough. I think I solved the issue with the latest version on the admin_features branch/tag. You can pull the admin_features tag from dockerhub to test out the latest stuff. I also updated the console to fix some issues.

@antoniomika, I`ve pulled latest image, and now everything  seems to work fine, also gzip works flawlessly.  I think, now remains to refine web templates, and merge the code.

@fork04 great! I'm glad that's the case! Do you have any recommendations for the web console that I could work on tomorrow/today

I think you could organize the appearance of the admin interface a bit, maybe something like that? - https://i.imgur.com/qNWhWYH.png. Maybe also add basicauth on the admin side?

@fork04 in hopes of keeping PRs small, I'm gonna go ahead and merge in admin changes and close your two issues. I'm gonna create a new issue to track changes we could potentially make for the admin parts now and I'll tag you over there.


Add Twitter feeds for each ANC and its committees to the Overview tab

It would be useful to pipe the Twitter feeds of the various ANCs (and their committees, whenever the committees have their own Twitter feeds) into the overview tab, maybe as a sidebar window.

This could be neat, but I don't think that our current database model would permit user-submitted information for the ANCs themselves.  How hard would that be to do, @JoshData?


adxl345: Driver, initial commit for review.

Please prefix the issue title with the primary package affected. For example,
if this PR fixes periph.io/x/devices/v3/cap1xxx, prefix the PR title with "cap1xxx:".

Mention the issue number it fixes or add the details of the changes if it
doesn't have a specific issue. Examples:

Added basic support for the adxl345 accelerometer.

Once integrated, send a PR to https://github.com/periph/cmd to leverage the
new functionality (if relevant).

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (c14e02d) 62.5% compared to head (75b1480) 62.5%.

Additional details and impacted files
@@           Coverage Diff           @@
##            main     #66     +/-   ##
=======================================
- Coverage   62.5%   62.5%   -0.0%
=======================================
  Files         64      64
  Lines       7337    7337
=======================================
- Hits        4585    4582      -3
- Misses      2598    2601      +3
  Partials     154     154

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Please fix the CI error.

Please fix the CI error
I m sorry but i can't figure out what is that error

fatal: cannot mkdir /home/cuong/go/src/github.com/benoit-pereira-da-silva/devices-0: No space left on device

Oh, I meant https://github.com/periph/devices/actions/runs/7348677329/job/20007433704?pr=66


Removed sleep command from county selection, added tag to take snapshot ...

...if it fails, increased the browser size to 1024*768

There's not a way to test this locally, is there?

Hmmm you could introduce a failure to confirm that the test takes a snapshot
In navigation.feature change to a bogus link id to the Journey links scenario
| link_id   		                    | page_title                      | relative_url                             |
| prepare-header-linkzZZZ         | Know the Process         | process/prepare/                    |
then run behave -k features/navigation.feature
Go to browser_testing/test-results and you should see a browser snapshot of the test that failed

:+1:


Fix login and allow new inspector debugging protocol

Problem(s) and fix(es)
The user model used for login was broken due to an upstream DB change,
this is fixed. Updated electron to use new inspector protocol for
debugging, this necessitated a change to the arg parsing.
To use the new inspector protocol add the following line to the relevant section in your VSCode launch.json
            "protocol": "inspector",

This also probably requires the latest version of VSCode as well.

🎉


Possible overhaul of instructions.

Note: Maybe this whole issue can be ignored if we want to migrate the push interpreter to CPushPush.

Instructions
We should easily be able to rely more on inheritance and add more functionality to the constructor of Instruction in order to remove a lot of code duplication.
See the way instructions are made in Propel and CPushPush for examples of patterns that are much better than what is currently in pyshgp.
Instruction Set
Each python module which defines Push Instructions should define __all__ and then we can safely use import * in the instructions __init__.py. This should make the whole instructions sub-package much easier to understand.
Tests
This time we should put a lot more thought into removing the code duplication. Here is a sketch of what I would currently suggest, although more thought should maybe be put into this:
common_tests = [
    [
        {'_integer': [1, 2, 3]},
        {'_integer': [1, 2]},
        '_integer_pop'
    ],
    [
        {'_boolean': [True]},
        {'_boolean': []},
        '_boolean_pop'
    ],
    [
        {'_string': ['A']},
        {'_string': ['A', 'A']},
        '_boolean_pop'
    ],
    [
        {'_float': [1.5, 2.3]},
        {'_float': [2.3, 1.5]},
        '_float_swap'
    ],
    [
        {'_integer': [1, 2, 3]},
        {'_integer': [2, 3, 1]},
        '_integer_rot'
    ]
]

for test in common_tests:
    assert run_test(*test)

5394078912dada49ee31645cb725024e24fbcb1d is a minor refactor that will make the adding of "docstrings" to instructions easier.
An initial pass as restructuring the Instruction object so that the func attribute wouldn't have to handle to popping of arguments and pushing of results was done as part of this work, but it was quickly scrapped.
The reason I am holding off on this change is because instructions need to remain atomic. If the popping of instruction arguments is abstracted away, it will have to revert in the event that some other condition causes the instruction to not run. (ie. If the denominator of division is 0)

Fixed with #102


feat(cpp-prompts): added param type prompts for cpp and c

This PR adds the functionality to prompt for param types for C and CPP, as detailed by #173 (sort of). This PR just adds the prompts for the param because the return type was giving me trouble with these languages (for some reason it doesn't pick up the locals correctly). I'll open a separate PR for that when I figure out what's going on with that.

@pranavrao145 Could you specify auto as the default type for C++ ? As I don't see any reason why someone needs to insert INSERT_TYPE which he will definitely replace by the type, when he could just use prompt. But with the auto program with work correctly without substitution.

Correct me if I'm wrong, but is this not only allowed in C++20? I think C++14 can do it with a special flag, but anything before that does not support auto in function prototypes. That's why I thought it might be better to keep it generic.

You are right that pre-20 C++ doesn't support it, but what is the difference between changing INSERT_TYPE into needed type or changing auto into it. Maybe, a good compromise is to add a user-configured language-specific parameter for the default type.

LGTM


amazing

Thanks so much for this!

Really awesome !! Do you think you could add Claude 3 compatibility ? You would be the first ever to do this ! 😎

@inconnu26 Check out constant.py - using claude 3 is as simple as specifying which attribute of Model you want to use. As long as you have Claude Pro, you'll be able to use claude 3.


[FRS-13] Draft pr for implementing reduce partition.

What is the purpose of the change
*This is a draft PR for implementing reduce partition for #13 *
Brief changelog
(for example:)

Introduce reduce partition mode for shuffle service.

Verifying this change
This change added tests.

An old draft code for ReducePartition implementatioin. Close it.


"Today" HI/LOW temperature forecast

Describe the bug
The high temperature for the "today" forecast is incorrect. I think (not certain) that this occurs when switching to night from day. This is the second day in a row that I've noticed the issue.
Expected behavior
Report correct daily forecast high temperature for current day/current night.
Actual behavior
It appears that the high temp being forecast for current day is actually the highest temperature in the 8 day forecast period. The actual daily high temperature forecast for 1/19 (current day) reported by the MerrySky website for my location is 30F, who is located within a few miles of me. Pirate Weather is forecasting a daily high of 62F. The only forecast for a daily high of 62F at my location occurs on 1/25.
Home Assistant version
2024.1.4
Integration version
1.4
Other details

Troubleshooting steps

[X] I have updated my Home Assistant installation to the latest version.
[X] I have updated the Pirate Weather Integration to the latest version.
[X] I have gone through the documentation, parameter documentation and sensor documentation before opening this issue.
[X] I have searched this repository and Pirate Weather Repository to see if the issue has already been reported.
[X] I have restarted my Home Assistant installation.
[X] I have checked to see if the issue is not an API issue.
[X] I have written an informative title.

as a temporary solution, I'm using 12h and 24h as a way to eyeball the daily high.

as a temporary solution, I'm using 12h and 24h as a way to eyeball the daily high.

Thanks for the tip. I can likely write a template sensor that reports the actual daily high, but I'd then have to implement something else that would dynamically modify the Pirate Weather get_forecast results to put the data where I'd need it. Even then, it doesn't solve the issue of a forecast daily high. Better than nothing, though. Thanks again!

While this is an API issue that is scheduled to be fixed in V2 of the API a temporary fix could be changing it from temperatureHigh to temperatrueMax. I don't think the bug applies to temperatureMax but I can double check in a couple of hours once the bug happens to see if it's affected or not.
If it's not affected by the bug then I can update the integration (or merge a PR if anyone creates one) and release 1.4.1 with this change.

Did a quick test last night and can confirm that the bug doesn't apply to temperatureMax so I created a PR to have the integration use temperatureMax instead of temperatureHigh. Just needs to be reviewed by @alexander0042 before going live.

Did a quick test last night and can confirm that the bug doesn't apply to temperatureMax so I created a PR to have the integration use temperatureMax instead of temperatureHigh. Just needs to be reviewed by @alexander0042 before going live.

That's awesome, Kev! Many thanks!

I've released version 1.4.1 which contains this change and should hopefully solve this issue. If the issue still occurs after the change then you'll have to wait for V2 of the API to release which will fix this isssue.


Dangerously set inner html?

Say I have a string of html generated by some other trusted source and I want to dangerously set it as the innerText of a node in a uhtml-ssr template (from a variable for example). Is that possible somehow?
import {render, html, svg} from 'uhtml-ssr';

const someHtml = '
hello world
'

// What's the right way to do this without escaping?
const output = render(String, html`

Hello µhtml-ssr

${someHtml}

`);

Use the tag as function, passing an array, instead of a static template, as first argument:
const output = render(String, html`

Hello µhtml-ssr

${html([someHtml])}

`);

Yeah i'm using it for a simple static site build and want to source some inner html from markdown. The performance shouldn't be an issue


[5.1] Keep the keys when adding an item to the stack with prepend

array_unshift will wipe out the keys since it re-order the array. This will avoid loosing the keys.

Can you add a unit test that proofs this fixes the bug?

Casting value to an array seems odd? What if it is an object?

Can you also add another use case for a collection with existing numeric keys?

Please fix the cs issues and squash to one commit.

Now it doesn't return $this?

Yeh, this looks wrong.

Ok my PR was lame but the bug is still there...

Do we have an issue for this bug?

I have created an issue: https://github.com/laravel/framework/issues/9327


Inserting System.exit in a workflow makes GUI enable to initialize the project

This is partially expected, but I'm wondering if we should explicitly disallow usage of System.exit inside of GUI.

Because it shuts down the process, it kills the Language Server before it gets a chance to initialize.
The biggest problem is - the user can insert the System.exit node into a workflow, but afterwards it becomes impossible to remove it. Because to remove it the Language Server needs to initialize, but it shuts down before it has the chance to do so - breaking such a workflow completely, until it is manually edited in an external editor.

We definitely do not want to allow System.exit from breaking the Language Server.
Perhaps it should Panic if ran in interactive mode instead?

Shouldn't System.exit exit the current execution instead of the entire process in this case?

Truffle offers a sandboxed way of doing exit. Instead of calling System.exit directly one should throw an exception with exit status.
More on Truffle exit.


Resources that use TypeName for Service Instance: Not working for non-english environments

Details of the scenario you tried and the problem that is occurring
The SPBlobCacheSettings resource tries to retrieve and configure the blob cache, only if the "Microsoft SharePoint Foundation Web Application" service is started on the server. However, we should use TypeName to determine if a service is started or not since it is culture dependent. E.g. my client has a French SharePoint environment and the service TypeName is "Application Web de Microsoft SharePoint Foundation" and therefore never detects or configures it.
This issue is widespread across multiple resource. We should modify every resource that uses the property TypeName to determine the status or retrieve an instance, so that it uses a parameter that is culture independent.
Verbose logs showing the problem
N/A
Suggested solution to the issue
Use .GetType().Name where possible (Web Foundation and Central Admin have the same name, so it won't work in that case), or the Name itself to determine the instance of the service (Central Admin has a name of Wss_Administration, and web foundation has an empty name).
The DSC configuration that is used to reproduce the issue (as detailed as possible)
N/A
The operating system the target node is running
Windows Server 2012 R2 (French)
Version of SharePoint that is used (e.g. SharePoint 2016)
SharePoint 2013
Version and build of PowerShell the target node is running
PoSh 4
Version of the DSC module that was used ('dev' if using current dev branch)
<IP_ADDRESS>

Not fully fixed, needs some more work


Better ModelDesc

The original design lacks enough consideration and it's not clear how the graph is built, and what one can and cannot do inside build_graph. E.g.:

Is it OK to create placeholders inside build_graph?
What symbolic functions are allowed to use and what not? (e.g. tf.layers.batch_norm? tf.train.input_producer?)..
What to put in get_inputs and what not? Is this interface even necessary?
How to access a tensor a bit later? Because setting self.xxx sadly doesn't work (#287), and using the tensor names is not easy. (#315, #317, #442)
On the contrary, self.cost needs to be set. This seems very hard-coded, and the reason behind it is that self.cost is only set because some (but not all) trainers need it. This contract between Model and Trainer needs to be addressed in a clearer way.
FIXED What's worse, some examples now actually is using self.xxx. Technically they should not rely on this unsupported use.
Fancy dynamic stuff might also be hard, but I'm not very familiar.

Some of example use case that is hard or too tricky to do with the current interface:

Input data has different layout (needs different placeholder) in training vs inference.
Access some tensors in all towers.
Mix of data/model parallel. A special case is to create some variables (not reuse) in each tower.

Nothing should be deprecated because the current interface works well for most problems. But I'm thinking about new ones which can expose more of the graph building process to users.

Could you also add a method to just dump out the base graph to Tensorboard? (No training yet, just general structure debugging) I'm using something like below but it requires to comment/uncomment  some part in batch_norm.py every time between debugging/training (mostly the ctx).
def _visualize_graph(self, outdir):
    x = tf.placeholder(tf.uint8, shape=(None, None, None, 3))
    y = tf.placeholder(tf.uint8, shape=(None, None, None, None))
    self._build_graph([x, y])

    with tf.Session() as sess:
        writer = tf.summary.FileWriter(outdir, sess.graph)
        print(sess.run(self.graph_tree))
        writer.close()

Could you be more specific what's wrong with the current graph in tensorboard?
My understanding is that it includes something you don't want to see. But a graph is complicated because neural net training is just so complicated, no way I can automatically guess what you want to see in the graph and what you don't. If you're OK with what your code sample produces, then you can just use it.
What's wrong with batch norm? I think their ops would be grouped under the variable scope so it should look fine.

I really like the current design. It would be frustrating to refactor all models. But it might be helpful if one could write:
Trainer.tower[0].model.var

When writing self.var = ...
I do not see a reason for rewriting most stuff. There will always be a cost Tensor.

@ppwwyyxx Sorry for not being clear enough. It's not about all of the ops in the whole graph but the main portion itself. For example:
def _build_graph(self, inputs):
    image, label = inputs

    ### Main Network - simple neural network
    with argscope(Conv2D, out_channel=32, kernel_shape=3, nl=tf.nn.relu):
        l = Conv2D('conv0', image, 32, 3, nl=tf.nn.relu)
        l = MaxPooling('pool0', l, 2)
        l = FullyConnected('fc0', l, 512, nl=tf.nn.relu)
        l = Dropout('dropout', l, 0.5)
        l = FullyConnected('fc1', l, 10, nl=tf.identity)

    ### Main Network - complex network with lots of interconnections between layers
    with argscope(Conv2D, out_channel=32, kernel_shape=3, nl=tf.nn.relu):
        l = Conv2D('conv0', image, 32, 3, nl=tf.nn.relu)
        l1, l2, l3 = layer_a('complex_layer_a', l)
        l = layer_b('complex_layer_b', [l, l1, l2])
        l = tf.concat([l, l1, l2, l3], 3)
        l = FullyConnected('fc1', l, 10, nl=tf.identity)

    ### Others stuff in graph for whole training process
    loss = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=label)
    loss = tf.reduce_mean(loss, name='xentropy-loss')

    add_moving_summary(loss)
    self.cost = loss

And I want to debug the l tree, in a simple case, there is no need for visualization before actual training. But in a more complex case, visualization is needed if I want to make sure all the layers (or components) are linked as intended before actually run the trainer. For now, I do this via
def _visualize_graph(self, outdir):
    x = tf.placeholder(tf.uint8, shape=(None, None, None, 3))
    y = tf.placeholder(tf.uint8, shape=(None, None, None, None))
    self._build_graph([x, y])

    with tf.Session() as sess:
        writer = tf.summary.FileWriter(outdir, sess.graph)
        print(sess.run(self.graph_tree))
        writer.close()

With self.graph_tree = l in _build_graph. However, for _visualize_graph to run just by
model = Model()
model._visual_graph('model_graph')

I need to modify whenever variable ctx with ctx = get_current_tower_context() is used in all the ops in l (in my case, it is the BatchNorm). Because in case above, there clearly no context of the tower and I'm not sure how to set the context manually.
In short, some placeholder for similar situation or an official support to visualize part of the whole graph tree. Beside, to actually get to the graph tree in Tensorboard via running the trainer is also taking much longer time and not suit to debug just the main structure I think.

I still could not see what's the problem with the current graph in tensorboard. In your code you still dumped everything in _build_graph to tensorboard. I can see the only difference to what is now done in tensorpack is that 1. you won't dump the backward part 2. you won't dump the inference tower. I would expect these two parts won't make too much mess in tensorboard.
See docs for your problem about the context.

@vqdang Are you looking for (?):
m = Model()
hdrs = m.get_reused_placehdrs()

with TowerContext('', is_training=False):
    m._build_graph(hdrs)
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())

        # do you stuff here

Then the ctx is available.

@PatWie I updated the issue with some more concrete use cases.

Some other things to consider about how to potentially break and fix ModelDesc:
Partial inference: DiscoGAN is a good example. For prediction you might want to only go from A->B.
Additionally, you may want to the graph to vary significantly in prediction (like running A->B generator multiple times recursively, this is currently rather cumbersome with the predictor).
Loading in a predictor network: Networks that rely on things like Inception score for instance. PyTorch handles this really well by allowing you to just call the model inference of Inception from another model.
Input Desc: Seems a little redundant to me, how is it different from place holders? Can I only send data to placeholder Tensors? It would be nice to be able to pump data into any part of the subgraph. In which case, what's the point of placeholders at all? Can we inject placeholders into the model on demand? Does this have negative performance implications? Does this violate the principle of least astonishment.
Easy way to parameterize models. Additionally, well self.XXX is nonstandard, I think it can be extremely useful for building the model. CycleGAN example of using Resblocks come to mind. Defining the depth of the model should be easy to parameter meaning there should be some easy way to send model arguments. Maybe even trainers that can do parameter sweeps? Should trainers be part of the model.
We really should encourage people to use proper namespaces. Should we prefix entire ModelDesc with model names? What if a user want to do this.
I know it's slightly outside the scope of Tensorpack, but can we make ModelDesc composable? Can I have models in my models? Can I have ModelDesc from stuff as simple as Resblocks? Should we have generic ModelDesc for different frameworks?
When and where to call collect_variables can be a little confusing. Should it be baked into the model? Should it not?
Idea for accessing specific Tensors: Encourage Tensornamed namespaces? Force users to use them in the model somehow. Maybe even draft a style guide.
I will say, one of my favorite things about Tensorpack is the ability to learn by example thanks to the very flushed out examples and limited symbolic functions. While I understand maintaining the latter is outside the scope of this project, implementing models can really help find flaws in stuff like trainers and ModelDesc. The example of WGAN comes to mind.

The InputDescr is needed, otherwise the data flow does not know how the data goes into the graph.
If it wouldn't be there models hard to read as you have to backtrack the cost tensor to the input which sometimes require a large mental stack.
And you can use Models in Models as the constructor is empty. I did this multiple times. Models parameterization is also possible, just add a constructor with the parameter. I used it to build entire recurrent networks and specify the time steps which can varying during interference.
So it is not as bad as it looks like 😄
Also the partial inference: you just specify the output tensor and your done?!
And in TensorFlow you can send data to placeholders only. This is not a limit of tensorpack which even provide a workaround.
I just see the issue with the namespace, which depends on which by trainer is used. Maybe a default 'tower0' fixes this.
It might be that I inhaled already too much tensorpack code. Please do not try to make a second ideas or of it and oversimplify things.

In addition to the above comments to @Skylion007
Partial inference: yes the graph might vary a lot in prediction and that's one of the use case I put
in this issue.
Loading a network: I don't see any problems with that.
InputDesc: it exists mainly for working with InputSource, which is an abstraction of all possible input source,
not only including placeholders, but could switch among tensors, queues, etc.
In tensorflow you cannot pump data into any part of the subgraph when data comes from an op.
Parameterize ModelDesc: as @PatWie said you can do it.
More complicated models: as mentioned there is no plan to add more models.
collect_variables is not a function of tensorpack.
It's an example -- meaning that's something the user (in this case myself), should write.
The user might not write it clear enough but that's unrelated to the design of tensorpack.

Possible solutions to the problems left:

Allow users to build the whole graph by themselves. (i.e. no ModelDesc at all)
This seems to solve all the problems mentioned, and provide best flexibility for complex graphs.

It's easy to do: currently the trainer does two jobs: setting up the whole graph from ModelDesc (_setup()), and run the loop. We just need a trainer which does nothing in _setup().

ModelDesc will be only for simple graphs, then. But it's still awkward to access tensors. The ideal way is to simply do model.towers[0].cost, or model.towers['tower0'].cost for a tensor set by self.cost = .... This is possible but I still have to see how nicely it can be done.

One general philosophy about design is that: when you pass something to someone that doesn't need it for sure, it's a design problem. Packing a bunch of (possible None) objects together is a way to hide this design problem (because then you only pass one giant object), but the problem still exists.
ModelDesc packs three things: InputDesc, build_graph, get_optimizer.
InputDesc is only for working with different types of InputSource. Different InputSource creates very different tensors but they share this common metadata. InputDesc is not used for anything else in the whole project.
get_optimizer is only used for training, so ideally ModelDesc shouldn't be used to inference.
TrainConfig packs a number of things. A lot of them are not useful in certain cases, e.g. only multiGPU trainers need towers. A custom trainer may not need model or dataflow.
Packing all stuff together introduces another problem in TrainConfig: those stuff cannot depend on each other, although they may logically do. For example, a callback may depend on the outcome of building the model (need to use tensor names).
The new trainer interface in development doesn't depend on either ModelDesc or TrainConfig. Instead of taking those packaged objects, it takes individual options. ModelDesc and TrainConfig can then be used through high-level wrappers around the trainers. Then users will get more control over the details when the high-level interface isn't enough, or when a different high-level interface is needed. For example, it will be much easier to train a Keras model with the new trainers.
(nothing is broken for the moment. just sharing some progress)

With the new trainer API, we can answer the problems at the beginning:

Is it OK to create placeholders inside build_graph?
What symbolic functions are allowed to use and what not? (e.g. tf.layers.batch_norm? tf.train.input_producer?)..

You can use anything as long as your training iteration can still run. e.g., if you use a placeholder, you need a callback to feed it when the placeholder is a dependency. If you use tensorflow input ops, you may need a callback to start the queues.

What to put in get_inputs and what not? Is this interface even necessary?

They are used only to setup InputSource in SingleCostTrainer as well as InferenceRunner. You don't have to use InputDesc if not working with InputSource. But you'd better use InputSource for performance reasons.

How to access a tensor a bit later? Because setting self.xxx sadly doesn't work (#287), and using the tensor names is not easy.

A new abstraction called TowerTrainer will cover models whose graph can be built by calling a function (tower function) with input tensors one or more times. SingleCostTrainer belongs to TowerTrainer.
The tower function will keep track of the scopes every time it get called, and then the tensors can be accessed. The API is still not ready yet, but should be something like trainer.tower_func.towers[0]['cost'], or trainer.tower_func.towers['tower0']['cost'].
Of course, you can only access the tenors after the graph has been built. So if using high-level one-shot training wrappers, you will only have the chance to use this interface inside callback.setup_graph.

On the contrary, self.cost needs to be set. This seems very hard-coded, and the reason behind it is that self.cost is only set because some (but not all) trainers need it. This contract between Model and Trainer needs to be addressed in a clearer way.

It is hard-coded. We'll keep it this way. But now SingleCostTrainer takes a function which explicitly returns one cost, i.e., the hidden contract become an API requirement. Other trainer doesn't have any notion about "cost".

Btw. build_graph(tensorA, tensorB) looks more natural than _build_graph(inputs): tensorA, tensorB = inputs. The latter exists for historical reasons. But maybe it's better to use the first one?

Be careful for these changes, e.g. the Offline-predictor now requires a single tensor as an input or a list. I found this a little bit unintuitive as I now have some cases, where I want to evaluate the perceptual loss only sometimes. So sometimes I feed in two images (anneed a list) and some only one image (without a list). This makes writing the code a little bit cumbersome.

I think current recommended calling convention for predictors are positional-args, which means you don't need to use list. You should be able to call with pred(tensorA) or pred(tensorA, tensorB). Please tell me if this fails. The idea for build_graph is similar because I feel this is more intuitive, then pred([tensorA]) and pred([tensorA, tensorB]). But maybe I'm wrong.

Given a List, we can anyway use func(*my_list). So there is no huge difference.

Sure you can always convert between the two.
Just feel writing tensorA, tensorB, tensorC = inputs all the time is redundant.

I think the future (and final) changes to ModelDesc would be:

Prefer build_graph(self, a, b) instead of _build_graph(self, inputs)
Prefer return cost instead of self.cost = cost
Won't automatically apply REGULARIZATION_LOSSES collection if using the new build_graph+return cost interface. Keep (?) the old behavior if using the current interface. Reasons explained in the old thread.

These can probably be smoothly executed without breaking anything.
I found a lot of changes I made recently were to remove some "automatic" parts from the framework (or at least make them more explicit): setting logger directory, automatically load epoch number, clear the inference queue before inference, etc. A lot of these "automatic" behaviors look good at the beginning but end up causing trouble in unexpected scenarios.

Not sure, if build_graph(self, a, b) is better than _build_graph(self, inputs). In a recent project, we had something like
def _get_inputs(self):
    InputDescs = []
    for i in range(ONLY_KNOWN_AT_RUNTIME):
        InputDescs.append(InputDesc(tf.float32, (B, H[i], W[i], 3), 'input_%i' % i))
    return InputDescs

This works quite nice in the current version, but might not work in the proposed changes. How does _build_graph looks like? How do you handle this case:
class Parent(object):
    def __init__(self):
        super(Parent, self).__init__()

    def _get_inputs(self):
        pass

    def _build_graph(self, inputs):
        pass

class Child(Parent):
    def __init__(self, num):
        super(Child, self).__init__()
        self.num = num

    def _get_inputs(self):
        self.inputs = []
        for i in range(self.num):
            self.inputs.append(object)

    def _build_graph(self, a, b):
        print a, b

c = Child(3)
c._get_inputs()
c._build_graph([1, 5, 6])

You can use *args, but that's a good point. I'm not confident which one is better.
return cost will be used by ModelDesc which is intended for single-cost single-optimizer training only.

Looking further, however, I think letting users to "write a class" is the one thing that makes tensorpack very hard to use at the first sight. Usually you don't use a library by inheritance..
For example, if we could transit to something like:
TrainConfig(
model=ModelFactory(
  inputs_desc=[],
  tower_func=lambda image, label: return cost,
  optimizer=tf.train.GradientDescentOptimizer(0.1)
)
...
)

This would probably make everything looks much simpler. The Tensorpack+Keras example is written somewhat like this.

For a second, it sounds like a nice idea to ease the way of using tensor pack for new users.
But again input—desc should be a function. Maybe, this would even allow to directly use tf.placeholders. I think for small examples (Mnist) the function style is much easier to understand.
But thinking about a bit longer, I feel VERY uncomfortable.
Personally, I like the way of using a class rather than writing multiple lines of a config. Passing tons of lines as a config instead of objects usually smells like a bad design.  In addition, Inputs, Graph, Optimizer are not a loose collection they are strongly connected. In C++ you usually want to pass struct  objects instead of its members to functions, right? Your proposal sounds like dropping c++ and going back to C.
When touching ModelDescr, maybe usingthe design of
Class Model
  Def Inputs
    Return tf.placeholders
  Def Graph
    Return cost
  Def Optimizer
    Return Adam

might be a proposal from my side: just rename these methods. Directly using TF.placeholders might be possible as well. You can always place them first in a second graph to get their shapes and just delete this helper graph.
Hopefully, when changing  anything you will still support the class based way. tensorpack is now in a state, where people like me do not want to maintain all old examples -- besides maybe renaming ModelDescr to ModelDescrOld.

Yes I agree using a class is more powerful, e.g. able to change number of inputs, able to share attributes between these three functions, etc. These concepts are strongly connected and having them in a class makes sense. I thought about how I would write some of the complex models without the class and that doesn't look very good.
In the meantime, having a class makes it hard to write things. Somehow I recently felt tensorpack was too complicated for the easiest tasks. I'll need a "boilerplate.py" to start working -- that's a bit sad. I don't know whether ModelFactory can be a solution, but I think both renaming and tf.placeholder sound good!

How about 39fa465655a2767b ? Both methods can be supported together, and I think inputs() + tf.placeholder look great.

This is awesome and exactly what I meant by the helper-graph :+1:
Let me now nag about _build_graph vs graph and _get_optimizer vs optimizer :-)

Considering *args as a default in
class Parent(object):
    def __init__(self):
        super(Parent, self).__init__()

    def inputs(self):
        pass

    def graph(self, *inputs):
        pass

class Child(Parent):
    def __init__(self, num):
        super(Child, self).__init__()
        self.num = num

    def inputs(self):
        self.inputs = []
        for i in range(self.num):
            self.inputs.append(object)

    def graph(self, *inputs):
        image, label = inputs
        print image, label

class Child2(Parent):
    def __init__(self, num):
        super(Child2, self).__init__()
        self.num = num

    def inputs(self):
        self.inputs = []
        for i in range(self.num):
            self.inputs.append(object)

    def graph(self, image, label):
        print image, label

c = Child(3)
c.inputs()
c.graph(1, 5)

c = Child2(3)
c.inputs()
c.graph(1, 5)

would make the examples look much more intuitive. Looking forward to something like
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File: mnist-tflayers.py

import os
import argparse
import tensorflow as tf

# Just import everything into current namespace
from tensorpack import *
from tensorpack.tfutils import summary, get_current_tower_context
from tensorpack.dataflow import dataset

IMAGE_SIZE = 28

class Model(ModelDesc):
    def inputs(self):
        """
        Define all the inputs (with type, shape, name) that
        the graph will need.
        """
        return [tf.place_holder(tf.float32, (None, IMAGE_SIZE, IMAGE_SIZE), 'input'),
                tf.place_holder(tf.int32, (None,), 'label')]

    def graph(self, image, label):

        image = tf.expand_dims(image, 3) * 2 - 1

        l = tf.layers.conv2d(image, 32, 3, padding='same', activation=tf.nn.relu, name='conv0')
        l = tf.layers.max_pooling2d(l, 2, 2, padding='valid')
        l = tf.layers.conv2d(l, 32, 3, padding='same', activation=tf.nn.relu, name='conv1')
        l = tf.layers.conv2d(l, 32, 3, padding='same', activation=tf.nn.relu, name='conv2')
        l = tf.layers.max_pooling2d(l, 2, 2, padding='valid')
        l = tf.layers.conv2d(l, 32, 3, padding='same', activation=tf.nn.relu, name='conv3')
        l = tf.layers.flatten(l)
        l = tf.layers.dense(l, 512, activation=tf.nn.relu, name='fc0')
        l = tf.layers.dropout(l, rate=0.5,
                              training=get_current_tower_context().is_training)
        logits = tf.layers.dense(l, 10, activation=tf.identity, name='fc1')

        tf.nn.softmax(logits, name='prob')   # a Bx10 with probabilities

        # a vector of length B with loss of each sample
        cost = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=label)
        return tf.reduce_mean(cost, name='cross_entropy_loss')  # the average cross-entropy loss

    def optimizer(self):
        return tf.train.AdamOptimizer(0.001)

def get_data():
    train = BatchData(dataset.Mnist('train'), 128)
    test = BatchData(dataset.Mnist('test'), 256, remainder=True)
    return train, test

def get_config():
    dataset_train, dataset_test = get_data()
    # How many iterations you want in each epoch.
    # This is the default value, don't actually need to set it in the config
    steps_per_epoch = dataset_train.size()

    # get the config which contains everything necessary in a training
    return TrainConfig(
        model=Model(),
        dataflow=dataset_train,  # the DataFlow instance for training
        callbacks=[
            ModelSaver(),   # save the model after every epoch
            MaxSaver('validation_accuracy'),  # save the model with highest accuracy (prefix 'validation_')
            InferenceRunner(    # run inference(for validation) after every epoch
                dataset_test,   # the DataFlow instance used for validation
                ScalarStats(['cross_entropy_loss', 'accuracy'])),
        ],
        steps_per_epoch=steps_per_epoch,
        max_epoch=100,
    )

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--gpu', help='comma separated list of GPU(s) to use.')
    parser.add_argument('--load', help='load model')
    args = parser.parse_args()
    if args.gpu:
        os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu

    # automatically setup the directory train_log/mnist-convnet for logging
    logger.auto_set_dir()

    config = get_config()
    if args.load:
        config.session_init = SaverRestore(args.load)
    # SimpleTrainer is slow, this is just a demo.
    # You can use QueueInputTrainer instead
    launch_train_with_config(config, SimpleTrainer())

I'm happy with the current ModelDesc interface:
inputs() with placeholders
build_graph(self, a, b) which returns a cost (or nothing for generic ModelDescBase)
optimizer()
closing this finally.


schema aware update

I have some issue with non text input field. It looks like the value returns in the change callback of an input field is string even if the input type is number and the initial value set is number.
In this spec, it says,
value = floating-point number
A string representing a number.

I guess, that may be the reason the value is string even for non text field!
onChange handler of field, just calls the formValue.update with the string value, and Value.update simply updates the field to callback value. This caused the validation to fail. A solution could be to update check the type of the field from schema and do necessary typecast.

Hmm... It is up to input component to return correct value type. Do you use just <input type="number" />? I'm not sure if it returns numbers and not strings.

hi @andreypopp thanks for the super quick response :-)
I have a small wrapper around input, but the rendered html is
<input type="number" class="form-control" value="123" data-reactid=".<IP_ADDRESS>.<IP_ADDRESS>.0.$integerType.1.2">

I guess, input, irrespective of type is retuning string. I solved by a custom input like.
const Number = ({onChange, ...rest}) => {
  function onNumberChange(value) {
    onChange(parseInt(value, 10));
  }
  return <Input onChange={onNumberChange} {...rest} />;
};

you can close this if the current behavior is better and don't wan't to consider special cases in value update.

Also, type=checkbox didn't work. had to define a custom component like
import React, {PropTypes} from 'react';

export default function Checkbox({value, onChange, ...rest}) {
  function onCheckedChange(e) {
    const checked = e.target.checked;
    onChange(checked);
  }

  return (
    <input {...rest}
      type="checkbox"
      onChange={onCheckedChange}
      checked={value}
    />
  );
}

Checkbox.defaultProps = {
  value: PropTypes.bool.isRequired,
  onChange: PropTypes.func.isRequired,
};

I guess the way value is set is different for checkbox as explained here https://facebook.github.io/react/docs/forms.html#why-controlled-components
I know older versions of this library provided something similar.

I know older versions of this library provided something similar.

Yes, and the older version was too much opinionated sadly. The current version just does one thing — data flow for form like structures.
It is possible though to make components on top of react-forms which render different inputs for different schema types (or use input component which can be defined on schema nodes).
I'll close this issue as it's out of scope of React Forms. Feel free to continue discussion though.

thanks Andrey. I provided above two cases as examples, and they work fantastic. It is quite trivial and takes very little code, so I am happy the way it is now.
But, would be useful to mention it in the doc, if you too observe that, built-in Input component is only suitable for input type="text". Cheers.

Sure, I'd like use them as a basis for examples in docs, if you approve.

Sure deal. you saved tons of time for us and let ignore form complexities :-). Cheers.


Can't 'back' out of web application

While the browser back button works for navigating within the application, it's a real pain to back out of the web application altogether.  I believe this problem is being caused by the 'home page' being pushed to the Backbone.history after the application has loaded.

Done


Revamp for github workflow testing

Tests are failing on Linux and Windows.
I removed "use v6.d;" from code since it's specified in the META6.json file.
For Linux github testing I tried to use the xvfb fake X server for xclip use with no success as of yet.
I will try the Clipboard on Linux interactively later today

Great! Thank you for your efforts!

You are very welcome, Anton, I hope it helps a bit.


Support for non-generated parts of documentation

Currently we are lacking support for adding non-generated, i.e. human written, parts for the documentation, including some front matter, abstract, etc,.
See e.g. for comparison:

We need to think about how we could best support the inclusion of these texts and items into the specification, as rewriting those by hand every time a specification is updated is quite annoying.
I think we need at least:

URL of the current version
URL of the previous version
List of editors (name, organization, e-mail)
Links to GitHub based on base repo URL - link, new issue, list of commits, list of pull requests
Some generic links (POD, contact e-mail)
"Thanks" to grants
Abstract

Support for 1-5 is there, 6 & 7 is still to be done

1-5 can be configured as additional metadata.
7 Abstract is configurable directly in the UI.
6 Thanks - I need more details on what you mean by that.

Already resolved. Please open new issues if you have a problem with any particular part.


Add notice to ensure wasm target is installed under setup-page for SSR apps

Right now the setup/get started for CSR setups includes a line of "remember to add wasm target". While the SSR setup instructions do not.
Logically speaking if you use the book from one end to the other, you would have added it in CSR and thus don't need it in SSR. But for users that know they want to make an SSR app, they might skip the CSR setup (like me), and go straight to SSR, and then running the commands there will give a large amount of errors:
error[E0425]: cannot find function, tuple struct or tuple variant `Some` in this scope
    --> /home/fm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.14.5/src/map.rs:4915:29
     |
4915 |             Some((_, v)) => Some(v),
     |                             ^^^^ not found in this scope

I missed the step in CSR setup, and forgot about the obvious part of making a webapp require the wasm target to be installed, so I had to search on your discord before I found the answer. (My first time doing a web target with rust)
So I think repeating that small bit of instruction with the same wording as CSR setup, is worth it on SSR setup page :)
Current SSR setup page:

Happy to include this in the docs. I would very strongly recommend not skipping the first half of the book -- Maybe you mean skipping ahead to the cargo-leptos install instructions and then going back to the beginning.
(Also a side note: Rust errors can be hard to understand when there are so many of them, but IIRC the recommendation to install the wasm32-unknown-unknown target is displayed near the top of the error text)

Happy to include this in the docs. I would very strongly recommend not skipping the first half of the book -- Maybe you mean skipping ahead to the cargo-leptos install instructions and then going back to the beginning.
(Also a side note: Rust errors can be hard to understand when there are so many of them, but IIRC the recommendation to install the wasm32-unknown-unknown target is displayed near the top of the error text)

Yeah, I formulated myself badly. Meant skipping to SSR for install and initial setup, then jump back to the first part to learn about the user interfaces, reactivity, async, routing, etc. :)
Ah fair, I had so many lines of errors that I gave up on scrolling up and seeing the first errors, as all the others seemed to be identical. So I probably missed that part of the error message 😅


Load ICESat-2 and GEDI Data

Sliderule is currently the best server option for getting subsets from arbitrary polygons https://slideruleearth.io

https://slideruleearth.io/web/rtd/user_guide/GEDI.html
https://slideruleearth.io/web/rtd/user_guide/ICESat-2.html

It should also be possible to run client-side with https://github.com/SlideRuleEarth/h5coro

Added basic functionality for this, but will leave open until documentation is added


[FLINK-12961][datastream] Providing an internal execution method of StreamExecutionEnvironment accepting StreamGraph as input parameter

What is the purpose of the change

Expose an internal method execute(StreamGraph) of StreamExecutionEnvironment. So the pluggable runner could get a chance to set properties of StreamGraph.

Brief change log

Add a new abstract method execute(StreamGraph) of StreamExecutionEnvironment
Make execute(jobName) of StreamExecutionEnvironment as an implementation since all subclasses have same logic

Verifying this change

This change is already covered by existing tests

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

@flinkbot attention @aljoscha

Ah, wait a second, I might have discovered a new thing. I have to check how this will work together with a StreamExecutionEnvironment where a user also applied transformations, those would be ignored in the new execute(StreamGraph) call. This scenario can happen when a user mixes a Table API and DataStream program. Let me think.

Ah, wait a second, I might have discovered a new thing. I have to check how this will work together with a StreamExecutionEnvironment where a user also applied transformations, those would be ignored in the new execute(StreamGraph) call. This scenario can happen when a user mixes a Table API and DataStream program. Let me think.

@aljoscha
I think you have raised a good question!
AFAIK, Blink runner generates StreamGraph itself. And it also keeps transformations itself. When a DataStream is translated to a Table, the Blink batch runner back tracks the all transformations of StreamExecutionEnvironment through transformations kept by itself.
Although there is a corner case that if there exists a disconnected sub graph in StreamExecutionEnvironment which might not be touched by back tracking. I have not reached an agreement with my colleague about this case.
I'm wondering whether there is a better solution for Blink batch runner?

I have this alternative proposal, which makes the schedule mode configurable on the ExecutionConfig.  This would let everything integrate, reuse the same StreamGraph generation logic. I think the schedule mode was the only thing that is not configurable that the Blink Planner would need.

Abandon this PR since we think alternative approach is better.

We have changed idea, will continue working on this. Rebase master to resolve conflicts.

Address review comments.
BTW, trigger Travis checking again.

I merged this. 👌


v1.9, with angular 17.3 no longer fires an event from buttons with editableOnCancel or editableOnSave directives.

I'm submitting a
Regression (a behavior that used to work and stopped working in a new release)
Current behavior
The view switches from viewMode template to editMode template, but then neither of my two buttons fire an event, so user can't go back to view mode or save changes. I tried changing the (save) attribute to (modeChange), but if some event is firing from either button, neither of those picks it up.
Expected behavior
Buttons with those directives should produce events.
Minimal reproduction of the problem with instructions
in component ts file:
import { EditableComponent, EditModeDirective, ViewModeDirective } from '@ngneat/edit-in-place';

...
indicateSaveClicked (){ alert('Save clicked.'); }

in template:
            <editable (save)="indicateSaveClicked()">
              <ng-template viewMode>{{ user.$commissionLevel?.name || '(Unspecified)' }}</ng-template>
              <ng-template editMode>
                <select class="form-control"
                  style="width:10rem"
                  editableOnEnter
                  editableOnEscape
                  [(ngModel)]="tmpCommLvlId"
                  name="tmp-comm-lvl-id">
                  @for (opt of user.$commissionLevelOpts; track opt) {
                  <option [value]="opt.id">{{opt.name}}</option>
                  }
                </select>
                <button class="btn btn-light"
                  editableOnCancel>

                </button>
                <button class="btn btn-primary"
                  editableOnSave>

                </button>
              </ng-template>
            </editable>

from my package.json:
  "dependencies": {
    "@angular/animations": "^17.3.0",
    "@angular/cdk": "^17.3.0",
    "@angular/common": "^17.3.0",
    "@angular/compiler": "^17.3.0",
    "@angular/core": "^17.3.0",
    "@angular/elements": "^17.3.0",
    "@angular/forms": "^17.3.0",
    "@angular/localize": "^17.3.0",
    "@angular/platform-browser": "^17.3.0",
    "@angular/platform-browser-dynamic": "^17.3.0",
    "@angular/router": "^17.3.0",
    "@angular/upgrade": "^17.3.0",
    "@fortawesome/angular-fontawesome": "^0.14.0",
    "@fortawesome/fontawesome-svg-core": "^1.2.34",
    "@fortawesome/free-brands-svg-icons": "^5.15.2",
    "@fortawesome/free-regular-svg-icons": "^5.15.2",
    "@fortawesome/free-solid-svg-icons": "^5.15.2",
    "@ng-bootstrap/ng-bootstrap": "^16.0.0",
    "@ng-select/ng-select": "^12.0.4",
    "@ngneat/edit-in-place": "^1.9.0",
    "@popperjs/core": "^2.11.8",
    "@stripe/stripe-js": "^3.0.10",
    "@tinymce/tinymce-angular": "^7.0.0",
    "bootstrap": "^4.5.0",
    "d3": "^7.8.5",
    "eslint-config-prettier": "^9.1.0",
    "font-awesome": "^4.7.0",
    "ng-mocks": "^14.12.1",
    "ng-qrcode": "^17.0.0",
    "ngx-image-cropper": "^7.2.1",
    "ngx-mask": "^15.0.0",
    "ngx-stripe": "^17.1.1",
    "papaparse": "^5.4.1",
    "rxjs": "~6.6.0",
    "tinymce": "^6.7.0",
    "tslib": "^2.0.0",
    "zone.js": "~0.14.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^17.3.0",
    "@angular-eslint/builder": "17.2.1",
    "@angular-eslint/eslint-plugin": "17.2.1",
    "@angular-eslint/eslint-plugin-template": "17.2.1",
    "@angular-eslint/schematics": "17.2.1",
    "@angular-eslint/template-parser": "17.2.1",
    "@angular/cli": "^17.3.0",
    "@angular/compiler-cli": "^17.3.0",
    "@cypress/schematic": "^2.5.1",
    "@types/d3": "^7.4.1",
    "@types/jasmine": "~3.6.0",
    "@types/node": "^12.11.1",
    "@typescript-eslint/eslint-plugin": "6.13.1",
    "@typescript-eslint/eslint-plugin-tslint": "^6.14.0",
    "@typescript-eslint/parser": "6.13.1",
    "codelyzer": "^6.0.0",
    "cypress": "^13.7.0",
    "eslint": "^8.54.0",
    "eslint-plugin-import": "^2.29.0",
    "eslint-plugin-jsdoc": "^46.9.0",
    "eslint-plugin-prefer-arrow": "^1.2.3",
    "jasmine-core": "~5.1.2",
    "jasmine-spec-reporter": "~7.0.0",
    "js-beautify": "^1.14.11",
    "karma": "~6.4.3",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "^2.1.0",
    "otplib": "^12.0.1",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~5.4.2"
  }

What is the motivation / use case for changing the behavior?
No response
Environment
Node v18. Ubuntu 20.

Hello, the library is now using the Standalone API, so you have to import all the directives you use in your component individually.

Hi @smonff, I confess I'm used to WebStorm and could not figure out how it was a problem as I have the template highlighted if a directive is not imported. I just tried Visual Studio Code with Angular language service extension and discovered it was not a feature.
There is an open issue for it: https://github.com/angular/vscode-ng-language-service/issues/2011

Same in Emacs, that use LSP.


compiling issue

whenever i try to compile it just says this:
source/states/PlayState.hx:563: characters 3-39 : Warning : FlxCamera.defaultCameras is deprecated, use FlxG.cameras.setDefaultDrawTarget instead
source/states/CharacterEditorState.hx:258: characters 5-41 : Warning : FlxCamera.defaultCameras is deprecated, use FlxG.cameras.setDefaultDrawTarget instead
source/LuaClass.hx:42: characters 56-58 : Abstract haxe.ds.Map has no @:to function that accepts haxe.IMap<Any, LuaClass>
and yes i tried the
haxelib remove linc_luajit
haxelib remove hxvm-luajit
method, but it still did not work

Update to haxe 4.2.4


Move and update testharness.js

This change is in preparation for importing the web-platform-tests.
This builds upon https://github.com/web-animations/web-animations-next/pull/448 (because development of the subsequent patches made use of grunt debug).

More or less LGTM. My main concern is that it's not 100% clear what part of the change comes from importing recent changes to the testharness and what part is added by you for the polyfill logic. I'm not sure what to suggest beyond splitting the second commit into two - the import and your extra logic.
How often does the testharness update? Are we going to need to pull in more changes like this in future?

We'll need to update this as often as web-platform-tests requires a new version.
I can imagine that's a bit of manual work that would be nice to avoid, I can probably use the inner submodule checkout in web-platform-tests instead and just proxy the testharnessreport.js file in Karma. Does that sound like a better option?

Yeah, that sounds preferable. Thanks!

LGTM


Protocol: Guarantee

Trusted inputs have multiple conveniences that can be derived from a simple protocol:
protocol Guarantee<Value> {

    associatedtype Value

    static func predicate(_ value: borrowing Value) -> Bool

    init(unchecked value: consuming Value)
}

The only problem is that it duplicates validation checks in debug mode, but I also don't want init(unsafe:).

Hm. I could require that it only stores its value, adding some abstract capabilities to the current trusted inputs. Alternatively, I could omit that and instead mark Divider<T> as a Guarantee type to trim some boilerplate code. It's basically just a trusted input that stores some additional data.

Meh. It's not enough boilerplate to worry about.

I might want to add this, or something like it, simply to aid the prototyping of various trusted input types. It also simplifies testing since derived operations are identical for all types.


How should MQTT resubscriptions be made for reconnections?

When the MQTT client has to reconnect and resubscribe on a disconnection, how should this be achieved? The client instance is required to subscribe again, but this is not available (as far as I'm aware of) inside the callback provided to the EspMqttClient.new function. Is there a way to achieve this?

The client reconnects automatically. How I re-subscribe is that I'm listening for Connected events and re-subscribing the client after that.
And yes, you have to subscribe the client from outside the callback.


jitsi: patch RPATHs for missing libraries

Jitsi bundles some .so files for Linux that need RPATHs to function correctly.  Otherwise, Jitsi will still start (if installed in a user environment, #9754), but with missing functionality, for example without audio because no audio libraries are found.
CC @edwtjo as the maintainer of openjdk8: Is it alright for me to add an architecture passthru variable as there is in the openjdk7 expression (openjdk/default.nix)?  Could you please confirm that this is still valid (and in particular, the name of the i386 directory)?  I'm running 64-bit and haven't tested with a 32-bit system.  Also, jdk.jre.home has the same value as jdk.home, is using jdk.jre.home preferred?
Thanks.

@khumba right now I'm unable to confirm you changes, I'll ping you when I do. I have in principal no problem with adding useful attributes to the passthru set. To your last question I would answer, do you need the home of the jdk or the jre? It isn't necessarily true that they have to be the same, even if they are so at this moment.

On Fri, 11 Sep 2015 00:36:18 -0700
Edward Tjörnhammar<EMAIL_ADDRESS>wrote:

@khumba right now I'm unable to confirm you changes, I'll ping you
when I do. I have in principal no problem with adding useful
attributes to the passthru set.

Alright, thanks Edward, no rush.  If I find time this weekend, I'll
test a 32-bit install out and report back whether it works for me,
installing NixOS being the effortless task it is.

To your last question I would answer, do you need the home of the
jdk or the jre? It isn't necessarily true that they have to be the
same, even if they are so at this moment.

Just the JRE, this path is only for runtime; thanks.
Also, I'm interested in maintaining this, so I added a commit for
that.

You can build for 32bit using nix-build -A openjdk8 --argstr i686-linux. You need to resolve the conflicts.

Oh that's a nice trick.  Then yes, the lib/openjdk/lib/i386 directory
is correct for the 32-bit build.  Branch rebased, the conflict was
only me being added to maintainers.

Great, thanks and welcome!

Thank you!  Nix* is awesome.

This merge causes an evaluation problem.
error: while querying the derivation named ‘jitsi-2.8.5426’:
while evaluating the attribute ‘installPhase’ of the derivation ‘jitsi-2.8.5426’ at <nixpkgs>/pkgs/applications/networking/instant-messengers/jitsi/default.nix:8:3:
attribute ‘architecture’ missing, at <nixpkgs>/pkgs/applications/networking/instant-messengers/jitsi/default.nix:57:45

@vcuant, which JDK are you passing in?  openjdk7 and openjdk8 both have this passthru defined now (but it could be missing from other JDKs).

What's the command you're running?  nix-build . -A jitsi --dry-run and nix-env -f . -qaP evaluate for me, as of f2d03ee.

That's the tarball job broken. I see this failure is on darwin evaluation.

I'll fix this – I've seen such errors already.

Fixed in 80b26e4079. I still don't understand why evaluation of such parts of packages is attempted on platforms not supported by the package; I've seen only such work-arounds so far.


Remove trailing whitespace from parsed domains

Whitespace after the domain name shouldn't be considered part of the domain
Currently, a line with a space and comment at the end of the line like
<IP_ADDRESS> myhost.dev # for local dev

is parsed as ['<IP_ADDRESS>', 'myhost.dev ']

@feross any chance you could review this soon? I'd love to unpin my local code from the forked repo :)

released as 1.1.1


fix: update to @sinonjs/fake-timers@8

Summary
Has some nice improvements to infinite timers error. Also removed the shipped types

Test plan
Green CI

Tracked in https://github.com/sinonjs/fake-timers/pull/398


Remove Supply feild in MsgGasPriceVoter

Closing as it seems no longer relevant with the current state of the project. Feel free to reopen it.


WebXR issue on PICO Neo 3

I'm working on a WebXR experience, and everything was functioning well until the update to version 1.68.1 from 1.68. Since the update, all my WebXR projects have stopped working on the PICO Neo 3 headset. However, they continue to work on Meta Quest headsets. Even PC tutorials aren't working.
Here's a link to the tutorial I'm referencing. If this works, there shouldn't be any issues:
https://developer.playcanvas.com/tutorials/webxr-vr-lab/

The problem occurs specifically on the PICO Browser.
Steps to Reproduce

Open the PICO browser.
Navigate to WebXR VR Lab Tutorial.
Attempt to enter WebXR mode.

Hey @Maksims, do you know what's new in 1.68.1 that could have caused this?

There were no changes between 1.68.0 and 1.68.1 that affected anything in the engine related to WebXR or feature detection.
I unfortunately do not have PICO device to test.
To ensure it is only a version related, I've made 2 builds of the VR Starter Kit:
1.68.0 https://playcanv.as/b/548eb056
1.68.1 https://playcanv.as/b/86ea0a35
@Sycmasters please let me know if you do see a problem between these two versions also. If not, then the issue must be due to something else.

Hi @Maksims
There's no difference in functionality between version 1.68.0 and 1.68.1; neither works for my project. I've tested it, and the last version that works correctly is 1.67.x.

So, the issue started with version 1.68.0, while everything operates as expected in version 1.67.x.

Hi @Maksims
There's no difference in functionality between version 1.68.0 and 1.68.1; neither works for my project. I've tested it, and the last version that works correctly is 1.67.x.
So, the issue started with version 1.68.0, while everything operates as expected in version 1.67.x.

So the issue is with the 67 to 68 update. Do you have console logs?

@Maksims Yes exactly, but sadly I don't have any logs, it doesn't give back any logs, I just try to enter VR mode and immediately
takes me back to a normal web browser without any logs or errors, since I'm not sure what is happening I cannot provide more info than that I'm sorry.

Following up on this issue, it seems like my non-PlayCanvas projects work on PICO, so it seems is an engine compatibility issue, but reviewing there is no log or anything that I can provide so I'm still lost about this.

Same here on Pico4. The WebVR Demo does not start VR mode, here is the console output:

1.67.3 works
1.68.0+ does not start VR mode

This is very helpful! I will make a PR that allows XR features to detect availability in an alternative way.
In short: Pico WebXR implementation is somewhat outdated, that is why it has this property missing.

@Sycmasters, @fimbox pushed a fix, if you could check it with custom built engine on your device, would be awesome.


git-secret: Add gawk to wrapper

Motivation for this change
The git-secret script(s) use gawk. Before this change:
$ nix-env -f ~/code/nixpkgs -iA git-secret # master branch of nixpkgs
installing 'git-secret-0.2.4'
$ git secret init
/nix/store/i5xpjcrjvsh89ckkw470c94561nzw948-git-secret-0.2.4/bin/.git-secret-wrapped: line 129: gawk: command not found
'/home/aiken/code/git-secret-test/.gitsecret/' created.
/nix/store/i5xpjcrjvsh89ckkw470c94561nzw948-git-secret-0.2.4/bin/.git-secret-wrapped: line 254: gawk: command not found

@lo1tuma
Things done

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

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

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

Is a backport required?

The issue does also exist in 18.09, yes


Update custom-settings.md

See https://forum.mendixcloud.com/link/questions/92380. It is not always clear what parametername and value to put here. This is making the list of options more complete.

Submitted to runtime team for verification.


test spark-conf

Read then delete

Make sure to use a concise title for the pull-request.
Use #patch, #minor or #major in the pull-request title to bump the corresponding version. Otherwise, the patch version
will be bumped. More details

TL;DR
Please replace this text with a description of what this PR accomplishes.
Type

[ ] Bug Fix
[ ] Feature
[ ] Plugin

Are all requirements met?

[ ] Code completed
[ ] Smoke tested
[ ] Unit tests added
[ ] Code documentation added
[ ] Any pending items have an associated Issue

Complete description
How did you fix the bug, make the feature etc. Link to any design docs etc
Tracking Issue
https://github.com/lyft/flyte/issues/
Follow-up issue
NA
OR
https://github.com/lyft/flyte/issues/

Codecov Report

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


Adding a status effect that can speed up or slow down time for the world or for the player or both

https://user-images.githubusercontent.com/1374/131239985-29f84215-ab84-4625-b4aa-142542718012.mp4

https://user-images.githubusercontent.com/1374/131240296-416fe5c1-7ceb-4a01-bcc7-74d1fe3663c6.mp4

Ah, and my favorite topic, maybe you can add to jsonschema\current\dungeoneer\statuseffects\StatusEffect.schema.json as well?

Added some easing into and out of the effect.
https://user-images.githubusercontent.com/1374/131424417-f5b1b04a-da13-497c-9336-e60d70019ad7.mp4


fix(secret): typo in doc string (#3751)

Backport
This will backport the following commits from k8s-30/main to k8s-28/main:

fix(secret): typo in doc string (#3751)

Questions ?
Please refer to the Backport tool documentation

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 4650

Questions ?
Please refer to the Backport tool documentation


Proxy classes

Need to implement some sort of proxy classes to be able to pass C# callbacks into Java.

[ ]  Basic proxy class.
[ ] Example. AlertDialog.

Looks like everything around Proxy objects in current Unity realization deps on build-on classes like AndroidJavaProxy, e.g. native handler _AndroidJNIHelperInvokeJavaProxyMethod. So, right now the only way I can do it - using AndroidJavaProxy =\


Intuitive Explanations

Hey you're doing some great stuff here. Quick question about some of your solutions -- are you going to be including intuition-based explanations (in addition to straight code) and potential runtimes?
For example, with problem 16, is circular_buffer a python-specific function? I was considering using a heap structure -- not sure if that's what they were going for...

As mentioned in the README, everything tagged as a "Note" are comments of mine where I felt there was a need for stating assumptions or providing reasons for the implemented solution. I've kept these to a minimum on purpose, since such kind of comments do attract debates and bikeshedding ;)
Re: #16, the problem statement asks you to use the most efficient data structure wrt the API. Performance of get_last(n) rules out any structure based on linked lists, and record(id) requires fast head removal and tail insertions. An indexable queue is therefore the most appropriate data structure in this case, and a circular buffer is a queue with a known maximum number of elements https://goo.gl/6i3gKQ .
Queue are available in python as part of the collections package; see Deque https://goo.gl/M7WRWc . I however implement my circular buffer on top of a python list.


SizedBox: render library exception when width or height is null

The code
class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        body: new SizedBox(
            width: 200.0,
            height: null,
            child: new FittedBox(
              fit: BoxFit.contain,
              child: new Image(image: new NetworkImage('http://via.placeholder.com/400x100'))  ,
            )),
      ),
    );
  }
}

Documentation says that width and height can be null. The code above attepts to constrain on the width, letting the height being adjusted automatically. It actually works, but with the following log:
I/flutter (28864): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (28864): The following assertion was thrown during performLayout():
I/flutter (28864): 'package:flutter/src/rendering/box.dart': Failed assertion: line 303 pos 12: 'width > 0.0': is not
I/flutter (28864): true.
I/flutter (28864):
I/flutter (28864): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter (28864): more information in this error message to help you determine and fix the underlying cause.

I/flutter (28864): #81     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter (28864): #82     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter (28864): #83     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:751:7)
I/flutter (28864): #85     _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
I/flutter (28864): #86     _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
I/flutter (28864): #87     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:165:12)
I/flutter (28864): (elided 3 frames from class _AssertionError and package dart:async)
I/flutter (28864):
I/flutter (28864): The following RenderObject was being processed when the exception was fired:
I/flutter (28864):   RenderFittedBox#9e461 relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (28864):   creator: FittedBox ← SizedBox ← MediaQuery ← LayoutId-[<_ScaffoldSlot.body>] ←
I/flutter (28864):   CustomMultiChildLayout ← AnimatedBuilder ← DefaultTextStyle ← AnimatedDefaultTextStyle ←
I/flutter (28864):   _InkFeatures-[GlobalKey#085b2 ink renderer] ← NotificationListener<LayoutChangedNotification> ←
I/flutter (28864):   PhysicalModel ← AnimatedPhysicalModel ← ⋯
I/flutter (28864):   parentData: <none> (can use size)
I/flutter (28864):   constraints: BoxConstraints(w=200.0, 0.0<=h<=592.0)
I/flutter (28864):   size: MISSING
I/flutter (28864):   fit: contain
I/flutter (28864):   alignment: center
I/flutter (28864):   textDirection: ltr
I/flutter (28864): This RenderObject had the following child:
I/flutter (28864):   RenderImage#d80d4 relayoutBoundary=up3 NEEDS-PAINT
I/flutter (28864): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (28864): Another exception was thrown: RenderBox was not laid out: RenderFittedBox#9e461 relayoutBoundary=up2 NEEDS-PAINT
I/flutter (28864): Another exception was thrown: RenderBox was not laid out: RenderConstrainedBox#ece9f relayoutBoundary=up1 NEEDS-PAINT
I/flutter (28864): Another exception was thrown: RenderBox was not laid out: RenderFittedBox#9e461 relayoutBoundary=up2

Flutter Doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, v0.3.1, on Microsoft Windows [Version 10.0.16299.402], locale zh-HK)
[√] Android toolchain - develop for Android devices (Android SDK 27.0.1)
[!] Android Studio (version 3.0)
    X Unable to determine bundled Java version.
[√] Android Studio (version 3.1)
[!] Android Studio (version 2.1)
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    X Unable to find bundled Java version.
[!] VS Code, 64-bit edition (version 1.19.1)
[√] Connected devices (1 available)

! Doctor found issues in 3 categories.

Fyi @csells

/cc @Piinks

Initial thoughts, this appears to be an issue of the FittedBox needing to know from SizedBox what size it is in order to scale and position its child, and SizedBox needing to know from FittedBox what size it is so it can match its size.
Playing around a bit with the code, I don't know how this could actually work. Perhaps this is an exception to the documentation and it should be updated to reflect that?