driver contribution guidelines

Add driver contribution guidelines to readme.

/cc @samalba @shykes @nathanleclaire @bfirsh

Nice start.  LGTM
I have some things I want to add/consider but we can do them in a followup PR (noting them here so I remember):

Caveat that the project moves pretty quickly so merging new code in requires persistence
Notice of intention to eventually move over to a plugin model (i.e. just because it is in the "core" now does not mean that it will be "core" forever)
Preferably, pretty specific (objective) criteria about "what gets in" and "when we yank".  This will have to be discussed thoroughly, of course, so it's more of a long-term goal.  An example for the second, for instance, could be, "If we haven't heard from the maintainer or their organization in 30 days after notifying them that we need help, we will yank the driver".

Looks great! Perhaps this should be under the contributing section?
More generally we need to make sure that we route people to the correct place. It's super important that "if you want to install and use machine, go to the docs" is super prominent, because this is what 95% of users will be looking for. Contributing docs can be less prominent.
For Compose, we very clearly fork off these two routes at the bottom, tucking away all of the contributing docs into a separate page so that users don't miss the big "here's the documentation!" link: https://github.com/docker/compose

@bfirsh i like the idea of separating this out to a contributing page.

Updated re: @bfirsh reqs.  PTAL

Merging. We will continue to update in future PRs.


WhatsApp not working in Firefox

Sharing on WhatsApp uses the URL api.whatsapp.com/send?text= which does not load any styling when used on Firefox:

The solution appears to be to use web.whatsapp.com/send?text=; although the official docs say to use wa.me/?text=:
https://faq.whatsapp.com/en/26000030/
Hopefully it's as easy as updating src/networks.json#L73:
https://github.com/nicolasbeauvais/vue-social-sharing/blob/master/src/networks.json#L73
If you require a pull request please let me know :)

Hello @etn-egg, thank you for raising this issue, this will be fixed in the next release!


Sometimes remove the code

After sometime, format code will remove the code. The reason is still unclear.

fixed


--rest tries to start all the listeners

Empire Version
2.0.0-beta, fresh from git as of Friday May 12th, 5pm PST
OS Information (Linux flavor, Python version)
ubuntu, x64
Expected behavior and description of the error, including any actions taken immediately prior to the error. The more detail the better.
when attempting to start the empire with --rest, empire attempts to actually start all the listeners and bails out with errors saying that the ports are already in use. This is because I've been trying to use the API to expand the functionality of an already-running instance of empire.
With the previous version of empire, the user was able to start one version of empire (the one the user would use by hand) and a second version of empire with the rest API enabled.
this would allow the user to have a functional version of empire up and running, while also being able to run automated scripts against the API to do things like dramatically expand the autorun capabilities of empire, or conduct specific actions on specific shells if they meet a certain criteria like get/put files, take screenshots, enable keylogging, fetch the keylogs etc.
It seems the easy fix for this is to simply tell empire to not start the listeners if --rest is passed to it at the commandline, so that the previous functionality can continue to be used.

This is related to another issue I need to file a bug about. I haven't done a ton of testing on the problem, but I spent quite a bit of time in the API code a few weekends ago.
Here's more information from what I've been able to find:
When you fire up Empire, it looks in it's SQLite DB, and fires up any listeners that may have been recorded in there (works well for crash recovery). Not only does it fire up listeners, but it keeps the details of those listeners in memory. Or maybe you start a listener manually, and its details get recorded to the DB and added onto the dict in mem.
 But it CAN read from the database, and because it doesn't know if some other empire instance is running or not, it tries to fire up all the listeners that were recorded in the DB. The user sees the error messages of "port in use", but --rest should still work (requiring you to ignore the errors).
Now, this works both ways and we get into the bug that I need to file. If you start a listener from a script via the API, it never shows up in the Empire console app if it was running parallel with --rest. IOW, the console doesn't know about the new listener that was started because it never checks the DB for updates on it's own.
The REST API OTOH, because it always checks the DB for every call should be the authority. So, if you start a listener with --rest or the console, you should be able to query it via the API.
Finally, if you're using --headless, this problem never appears as you're using the API for everything.

I've run into this bug as well while updating CME's empire_exec module. Will see if I can track down the issue.

So I've managed to find the problem, basically the restAPI argument passed from the main empire script here to lib/common/empire.py here is ignored, so when you start the REST API it tries to start existing listeners in the database as well.
Creating a fix for the REST API so it doesn't start listeners in the db on startup is trivial.
Problem is because of how Empire 2.0 now loads the listener modules (each listener is now a thread in a dictionary) if you do start the REST API after starting Empire there is no way for it to know about existing listeners so you won't be able to interact with them through the REST API
The lazy solution (and probably the most viable one imho) would be to just have an argument in the main empire script which starts both the console and the REST API. I have no clue what to call the flag though lol
@HarmJ0y @xorrior @rvrsh3ll any thoughts?
Cheers

--with-rest

There really was no use for the existing --rest flag due to the reasons I mentioned above. When the PR is merged the --rest flag will start the API and the console.
Cheers

Ah, perfect! :D

Addressed in #529


http://phantomjs.org/

@ewpatton
In your readme.md It ponits to http://phantomjs.org/ but the information says phantomjs is suspended.

Because of lack of contribution phantomjs is suspended but that doesn't mean that we can't use phantomjs anymore.

We continue to use phantomjs for running some of our unit tests. Eventually I'd like to migrate to another option, but we don't have a timeline to do so. In the meantime you can still use phantomjs and our Jenkins CI will continue to use it.


Downloading blob file takes huge time and downloaded file is appended multiple times

Storage Explorer Version:1.4.4
Platform/OS Version:  Windows 10 latest update as of this post
Architecture: 64bit
Regression From: 0.9.6
Steps to Reproduce:

Open blob
Download file

We use blob to store our application logs. So each request we receive on our API, our code create file for that day 2018-10-24_Info.txt.
Once that done we append incoming request data like ip address, requested URL, headers etc with date and time entry.
So for every new request we keep appending log at the end of txt file.
What I observed:

Even 10 MB files takes a lot of time and when downloaded it goes around 40,50 or even as high as 80 MB.
After examining content of file we saw that some entries were appearing again and again with same timestamp. Each entry in log file has unique timestamp.
When download file from blob it somehow keep appending file again and again.

Expected Experience:

Downloading file should not take long time. For 10MB file with 50 MBPS internet speed it is taking ridiculous amount of time. Plus full bandwidth is not being utilized.
File size should be the same as shown in blob container

Actual Experience:

Downloading file taking long time. For 10MB file with 50 MBPS internet speed it is taking ridiculous amount of time.
File size is utterly high.

File size in Blob storage: 16 MB

Still downloading:
Download started from: 4:33 PM IST
Partial size is way more than original

Entries are getting appended: Searching firs entry in notepad++

Final file size after downloading:

@ameyvaidya are you still having issues when using latest storage explorer?

Hi Matthew, It's working perfectly in latest version. Thank you. I'll close the issue.


Jax cli

Add __init__
Add --help in pybamm_install_jax
Add an option to force install compatible versions of jax and jaxlib if already installed using cli

What are the lines that lost coverage?

Not sure on why this is happening. Might be due to adding few init files?

Looks like adding an __init__.py to the models/full_battery_models/lithium_metal directory exposed dfn.py to coverage.

Does there have to be an __init__.py in that folder right now? Can you open an issue to add the test?

Should I remove the init file from lithium_metal?

Yes, thanks


[WIP] CONTRIBUTING.md

It's probably helpful to have one of these, not that I am very good with writing them. Anyway, this is a first draft that I am hoping will be improved with help from the community.

@Half-Shot progress?

Err yes, I need to read through it again.

....


PixMob MIDI Control

I created an Arduino Sketch using MIDI to control the PixMobs.
Really fun playing, while the bands light up.
https://github.com/xfapeh/PixMob-MIDI/
Thanks for your great work! Keep it up!

That's so cool :)


Config file not found on Windows if project path contains spaces

Laravel Mix Version<EMAIL_ADDRESS>Node Version v14.15.1
NPM Version 6.14.9
OS: Windows 10 Pro (Version 2004)

Description:
Issue #2621 does not address the problem on Windows. While quoting is technically the correct solution, having node.js spawn a process with parameters containing spaces will not pass them correctly to the underlying process as quotes are being removed.
While someone came up with a quirky workaround, I think it would likely be preferable to have the webpack config file be passed with a relative path instead if applicable by defining let config = require.resolve('../setup/webpack.config.js'); and then passing the config as such: "${config.substr(config.startsWith(process.cwd()) ? process.cwd().length + 1 : 0)}"
It's certainly not a perfect solution, but it would address the most common error scenario on Windows, while not causing OS-specific bloat where it doesn't belong.
Steps To Reproduce:
Run mix on Windows while having the project reside in a path containing one or more spaces.

Sorry, but I tried out both the latest npm version (supposedly 6.0.5) and the current master branch. Both of which still observe the same error when using a setup with standard installation paths. What change is supposed to address this problem?
Failure to launch:
"C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" run watch-poll --scripts-prepend-node-path=auto

> @ watch-poll C:\Program Files\Apache\htdocs\xxxxx
> mix watch -- --watch-options-poll=1000

[webpack-cli] Running multiple commands at the same time is not possible
[webpack-cli] Found commands: 'bundle', 'Files\Apache\htdocs\xxxxx\node_modules\laravel-mix\setup\webpack.config.js'
[webpack-cli] Run 'webpack --help' to see available commands and options
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ watch-poll: `mix watch -- --watch-options-poll=1000`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the @ watch-poll script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\---\AppData\Roaming\npm-cache\_logs\2020-12-28T21_07_36_665Z-debug.log

Process finished with exit code 2

For completeness the 2020-12-28T21_07_36_665Z-debug.log:
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'watch-poll',
1 verbose cli   '--scripts-prepend-node-path=auto'
1 verbose cli ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'prewatch-poll', 'watch-poll', 'postwatch-poll' ]
5 info lifecycle @~prewatch-poll: @
6 info lifecycle @~watch-poll: @
7 verbose lifecycle @~watch-poll: unsafe-perm in lifecycle true
8 verbose lifecycle @~watch-poll: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Program Files\Apache\htdocs\xxxxx\node_modules\.bin;C:\Python27\;C:\Python27\Scripts;C:\Program Files\ImageMagick-7.0.8-Q16;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\IDM Computer Solutions\UltraEdit;C:\ProgramData\ComposerSetup\bin;C:\Program Files\AMD\AMDuProf\bin;C:\Program Files\Calibre2\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\TortoiseGit\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Geth;C:\Program Files (x86)\Gpg4win\..\GnuPG\bin;C:\Program Files\Inkscape\bin;C:\Program Files\Apache\php74;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Users\---\AppData\Local\JSONBuddy;C:\Users\---\AppData\Local\Microsoft\WindowsApps;C:\Users\---\AppData\Roaming\Composer\vendor\bin;C:\Users\---\AppData\Roaming\npm
9 verbose lifecycle @~watch-poll: CWD: C:\Program Files\Apache\htdocs\xxxxx
10 silly lifecycle @~watch-poll: Args: [ '/d /s /c', 'mix watch -- --watch-options-poll=1000' ]
11 silly lifecycle @~watch-poll: Returned: code: 2  signal: null
12 info lifecycle @~watch-poll: Failed to exec watch-poll script
13 verbose stack Error: @ watch-poll: `mix watch -- --watch-options-poll=1000`
13 verbose stack Exit status 2
13 verbose stack     at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:315:20)
13 verbose stack     at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:315:20)
13 verbose stack     at maybeClose (internal/child_process.js:1048:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
14 verbose pkgid @
15 verbose cwd C:\Program Files\Apache\htdocs\xxxxx
16 verbose Windows_NT 10.0.19041
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "watch-poll" "--scripts-prepend-node-path=auto"
18 verbose node v14.15.1
19 verbose npm  v6.14.10
20 error code ELIFECYCLE
21 error errno 2
22 error @ watch-poll: `mix watch -- --watch-options-poll=1000`
22 error Exit status 2
23 error Failed at the @ watch-poll script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 2, true ]

The most promising ticket for the underlying situation is this here: https://github.com/nodejs/node/issues/29532
But it has been lying dormant for over a year now. Given that situation it is not sensible to just close this issue in laravel-mix. A lot of developers will run into this problem and waste their time when a simple one-line-fix can work around the problem altogether.

Yes, I confirm it is an issue.
I have a space in the account name of the windows system, and not works.
"C:\Users\FirstName LastName"

The workaround I found is updating the package.json with Laravel 7.x's scripts:
"scripts": {
        "dev": "npm run development",
        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --disable-host-check --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --config=node_modules/laravel-mix/setup/webpack.config.js"
    },

This seems to be working right now.

The workaround I found is updating the package.json with Laravel 7.x's scripts:
"scripts": {
        "dev": "npm run development",
        "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "npm run development -- --watch",
        "watch-poll": "npm run watch -- --watch-poll",
        "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --disable-host-check --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --config=node_modules/laravel-mix/setup/webpack.config.js"
    },

This seems to be working right now.

Unfortunately, it does not work.
It seems now.......
$ npm run prod

@ prod D:\Current Projects\practice-laravel
npm run production

@ production D:\Current Projects\practice-laravel
cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progres
s --config=node_modules/laravel-mix/setup/webpack.config.js

error: unknown option '--no-progress'
[webpack-cli] Run 'webpack --help' to see available commands and options
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ production: cross-env NODE_ENV=production node_modules/webpack/bin/w ebpack.js --no-progress --config=node_modules/laravel-mix/setup/webpack.config.j s
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the @ production script.
npm ERR! This is probably not a problem with npm. There is likely additional log
ging output above.
npm ERR!      C:\Users\ASUS\AppData\Roaming\npm-cache_logs\2021-01-08T14_51_12_2
11Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ prod: npm run production
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the @ prod script.
npm ERR! This is probably not a problem with npm. There is likely additional log
ging output above.
npm ERR!      C:\Users\ASUS\AppData\Roaming\npm-cache_logs\2021-01-08T14_51_12_4
81Z-debug.log

Unfortunately, it does not work.
It seems now.......
$ npm run prod

@ prod D:\Current Projects\practice-laravel
npm run production

@ production D:\Current Projects\practice-laravel
cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progres
s --config=node_modules/laravel-mix/setup/webpack.config.js

error: unknown option '--no-progress'
[webpack-cli] Run 'webpack --help' to see available commands and options
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ production: cross-env NODE_ENV=production node_modules/webpack/bin/w ebpack.js --no-progress --config=node_modules/laravel-mix/setup/webpack.config.j s
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the @ production script.
npm ERR! This is probably not a problem with npm. There is likely additional log
ging output above.
npm ERR!      C:\Users\ASUS\AppData\Roaming\npm-cache_logs\2021-01-08T14_51_12_2
11Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ prod: npm run production
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the @ prod script.
npm ERR! This is probably not a problem with npm. There is likely additional log
ging output above.
npm ERR!      C:\Users\ASUS\AppData\Roaming\npm-cache_logs\2021-01-08T14_51_12_4
81Z-debug.log

@Developer-Rezwan my bad, it only works for dev builds.
I could run prod builds but I had to downgrade to version 5.0.9, with Laravel 7's scripts. That works as expected, of course.
I guess we'll have to stick to that version until someone fixes this, or move the projects to any directory without spaces (bad solution)

@Developer-Rezwan my bad, it only works for dev builds.
I could run prod builds but I had to downgrade to version 5.0.9, with Laravel 7's scripts. That works as expected, of course.
I guess we'll have to stick to that version until someone fixes this, or move the projects to any directory without spaces (bad solution)

Can I compile Vue-3 by laravel-mix 5.0.9?

Can I compile Vue-3 by laravel-mix 5.0.9?

Only in version 6 and above. But you could try kabbouchi/laravel-mix-vue3 for version 5.

Only in version 6 and above. But you could try kabbouchi/laravel-mix-vue3 for version 5.


Create a Getting Started Developers Guide

Initial landing page for app software developers that will consume the various software from Eclipse so this will be used to track the guide to the basics.

This has been done with the new website


No Auto Pause in Helm Chart

The helm chart does not have any ENABLE_AUTOPAUSE option though the base image supports it. Am I missing something?

You're correct, it's not there. I hesitate to add it since I'm not confident it will perform well consistently. I often find kubernetes containers (kubelet, etcd, kube-controller-manager) processes using much more CPU than an idle minecraft container.

its sitting at about .3 cpu and 2.5gigs of ram idle. It was really the ram usage I was looking to drop. Thank you for the update

Ah, if reduced ram usage was a goal, then the paused container/process still holds the memory when it is paused.


Pantheon's global QT_QPA_PLATFORMTHEME affects other environments, breaks Lomiri

Describe the bug
https://github.com/NixOS/nixpkgs/blob/cb8b6a5d00464c268db7452e698ea6094649e9bd/nixos/modules/services/x11/desktop-managers/pantheon.nix#L272-L275
If both Lomiri and Pantheon are enabled, then this globally-set envvar breaks Lomiri:
2024-06-02T22:54:35.179158+02:00 Carlos lomiri[597145]: /run/current-system/sw/bin/Xwayland
2024-06-02T22:54:35.319812+02:00 Carlos lomiri[597145]: [2024-06-02:22:54:35.318] Using mirserver qt platform
2024-06-02T22:54:35.319846+02:00 Carlos lomiri[597145]: [2024-06-02:22:54:35.319] Not using nested server, using null mir cursor
2024-06-02T22:54:35.321341+02:00 Carlos lomiri[597145]: [2024-06-02:22:54:35.321] qtmir.screens: ScreensModel[ScreensModel(0x246c3a0)]::ScreensModel()
2024-06-02T22:54:35.389632+02:00 Carlos .lomiri-wrapped[597145]: cannot open display:
2024-06-02T22:54:35.414733+02:00 Carlos systemd[591136]: lomiri.service: Main process exited, code=exited, status=1/FAILURE

Steps To Reproduce
Steps to reproduce the behavior:

services.xserver.desktopManager.pantheon.enable = true
services.desktopManager.lomiri.enable = true
Sort out the lightdm greeter preference
Try to launch into Lomiri
Get booted back to the DM

Expected behavior
Both DEs should be able to co-exist without workarounds.
Screenshots
n/a
Additional context
This can be worked around by setting this envvar to an empty value.
environment.variables.QT_QPA_PLATFORMTHEME = "";

...but then this breaks how Qt apps are displayed in Pantheon.
Maybe there is a way to apply this preference in a session-specific manner?
Or Qt's list of GTK environments could be patched to acknowledge Pantheon?
Or Pantheon could be patched to indicate Pantheon:GNOME, which should then be properly picked up by Qt? But maybe not considering GNOME as a generalisation of Pantheon is done by them on purpose.
Notify maintainers
@NixOS/pantheon
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.6.32, NixOS, 24.05 (Uakari), 24.05.675.805a384895c6`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.2`
 - channels(bt1cn): `"unstable"`
 - channels(root): `"nixos-24.05, unstable"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Add a :+1: reaction to issues you find important.

...but then this breaks how Qt apps are displayed in Pantheon.

Ugh, we can call it "leave the decision to user" 🙃
P.s.: I mentioned the Qt status quo in https://github.com/elementary/default-settings/pull/295, and it looks like they really only want to support the xdgdesktopportal theme (well, there is the elementary-files file chooser), though I guess doing that globally can lead to another bad story 🙃


Triggers for a 'unique' set Monster and a 'UniqueMonster' of the same name are the same

Also should probably change UniqueMonster to something else to avoid confusion.

Exactly what we are struggling with at the moment! Actually we did not find a way to trigger events based on the defeat of a "UniqueMonster" we defined. Is this possible in the current version?
It is  crucial for us to be able to define e.g. a Lieutenant's behavior and couple that with a trigger such as a win condition in many quests.

It should work, but the current version of the editor won't prompt you (have to add manually).  The new version will have it selectable (already done).  If your unique has a different item name than the base type there is also no issue.
PS: Lieutenants have been added to 0.8.0.

OK, maybe we got confused with the "unique" double definition. I tested some things and here is what we have so far. As far as I can see this triggers the EventWon if "Defeated" is selected from monster group icon. It does not trigger if "Unique Defeated" is selected. Any ideas?
[MonsterMauler2hero]
xposition=4
yposition=0
text="Place the master Ettin as shown, ignoring group limits. This is Mauler. \nMauler has 4 additional Health."
event1=MonsterGoblins
button1="Confirm"
flags=#2hero
monster=UniqueMonsterEttinMauler2heroes
placement2=MPlaceMauler
unique=true
uniquetitle="Mauler"
uniquetext="Mauler has 4 additional Health.\n\nMauler spends {surge} in the following order:\n{surge}: +X {heart}.\n\nThrow: Place the hero as far as possible away from Mauler in direction of the entrance."
[UniqueMonsterEttinMauler2heroes]
base=MonsterEttin
name=Mauler
info=
activation=EttinHeal EttinAttack EttinThrow
health=12
[EventWon]
text="Mauler collapses to his knees, one of his heads emitting a grumbling wail.  The other head stuggles to speak: "Though we may die, we are but servants of the almighty Overlord. Our master will be triumphant in the end! Arhynn will fall!" The both heads grow silent and the beast topples over.\n\nYou win!"
event1=EventEndCampaignPhaseWonGoblinsEscaped0 EventEndCampaignPhaseWonGoblinsEscaped1 EventEndCampaignPhaseWonGoblinsEscaped2 EventEndCampaignPhaseWonGoblinsEscaped3 EventEndCampaignPhaseWonGoblinsEscaped4
button1="Confirm"
trigger=DefeatedUniqueMonsterEttinMauler2heroes

It should trigger on both.  DefeatedUniqueUniqueMonsterEttinMauler2heroes should trigger on the defeated unique bit.
Having said that both types of unique aren't meant to be used together (but it should work).  You can have a monster than is normal except for some extra ability and can be individually defeated (unique=true), or you can have an entirely unique monster (can replace everything) in UniqueMonsterMyMonster.

I will test these combinations when I get a chance.

However, it would be great to be able to define a new monstertype with [UniqueMonster] to be able to define custom activations for the minions and then add a unique monster to that group.

I figured it out. It works as intended. Although it would be great to clear up the confusion with the definition of "unique".

Yep that was the idea behind this issue!

Changed UniqueMonster to CustomMonster.  Monster also changed to Spawn.


is it possible that 2.7.5 contains BC break?

in https://github.com/bushbaby/BsbFlysystem module everything works with <=2.7.4 then I changed zend-sericemanager from 2.7.4 to 2.7.5 in composer and run composer update:
Updating dependencies (including require-dev)
  - Removing zendframework/zend-eventmanager (2.6.3)
  - Installing zendframework/zend-eventmanager (3.0.1)
    Loading from cache

  - Removing zendframework/zend-servicemanager (2.7.4)
  - Installing zendframework/zend-servicemanager (2.7.5)
    Loading from cache

  - Removing zendframework/zend-cache (2.5.3)
  - Installing zendframework/zend-cache (2.6.1)
    Loading from cache

  - Removing zendframework/zend-log (2.6.0)
  - Installing zendframework/zend-log (2.7.1)
    Loading from cache

  - Installing psr/http-message (1.0)
    Loading from cache

  - Installing zendframework/zend-diactoros (1.3.5)
    Loading from cache

  - Installing zendframework/zend-escaper (2.5.1)
    Loading from cache

  - Installing zendframework/zend-uri (2.5.2)
    Loading from cache

  - Installing zendframework/zend-http (2.5.4)
    Loading from cache

  - Installing zendframework/zend-psr7bridge (0.2.1)
    Loading from cache

  - Removing zendframework/zend-mvc (2.6.3)
  - Installing zendframework/zend-mvc (2.7.3)
    Loading from cache

Writing lock file
Generating autoload files

after only this change tests fails.
because travis did not work as expected I copy pasted phpunit output here
https://github.com/bushbaby/BsbFlysystem/pull/25
ping @weierophinney

Looking at the output and the specific tests and code, it looks like you're getting a null value for the given plugin manager after pulling it from the container; this is then being passed to the factory, which is when the error occurs.
I'll need you to do some more tracking to figure out why the null values are being returned, as I'm not familiar enough with the code in that module.

@weierophinney ok I have tracked down it may not be related with service manager but with zend-mvc here https://github.com/zendframework/zend-mvc/blob/release-2.6.3/src/Service/ServiceManagerConfig.php#L114 service locator is set here in zend-mvc 2.6.3 but in zend-mvc 2.7.0 this initializer is refactored and no longer set the service locator
now it look like this:
https://github.com/zendframework/zend-mvc/blob/release-2.7.3/src/Service/ServiceManagerConfig.php#L131-L171
I am not sure how this should work here maybe you can explain? what changed?
again: the issue is not with zend-servicemanager I guess, but with zend-mvc >=2.7.0 unless I am wrong :D should we move this to zend-mvc?

I just inverted if in the initializer like this
ServiceLocatorAwareInitializer' => function ($first, $second) {
    if (!$first instanceof ContainerInterface) {
    // ^ added '!' here
        $container = $first;
        $instance = $second;
    } else {
        $container = $second;
        $instance = $first;
    }
//....

Noticed that both of them implement ContainerInterface so just tested and now everything works as expected at least tests pass and also works in my project, but I have no idea what I just did so @weierophinney can you explain or fix this?

That "fix" would break any other type of ServiceLocatorAware class!
I figured out what the issue is, and it's definitely an edge case. What's happening is that you're relying on using the initializer to inject your plugin managers. This causes a unique situation with the initializer, because both arguments are implementations of ContainerInterface, and, as such, the first conditional was always evaluating true, regardless of zend-servicemanager version. In this situation, the $instance evaluates to the SM instance under v2, determines it's not SM-Aware, and moves on without doing anything.
This works fine for the plugin managers that have factories in zend-mvc, as the factories were rewritten to inject the service manager instance during instantiation of the plugin manager, which means that the current initializer behavior of  is not a problem for them, as the SM instance is already injected.
In your situation, however, it breaks under v2, because you're not injecting the SM instance in your abstract factory, and thus the fact that the initializer mis-detects the plugin manager instance as the SM instance leads to a no-op.
There are two situations, then, to address:

I'll create a patch for a 2.7.6 release of zend-mvc to address the behavior. This patch will also test to see if an SM instance is already injected, and, if so, do nothing.
You should update your abstract factory to inject the SM instance. This will be necessary anyways to make your code forwards compatible with zend-servicemanager v3, as plugin managers in that version require that you pass the parent locator to the constructor.

that's not my module just run into those problems while updating, but I will think about creating PR for them.

You should update your abstract factory to inject the SM instance. This will be necessary anyways to make your code forwards compatible with zend-servicemanager v3, as plugin managers in that version require that you pass the parent locator to the constructor.

That would be me :-) @svycka a PR would be great!


Fetch deployment vms in parallel for vms command

#145037925
Signed-off-by: Yulia Gaponenko<EMAIL_ADDRESS>

Merged in 146fdd744f08730fd9353781f5cedfb3fd195eda.


ENG-1509 - Update dependabot interval, bump dependencies

Description

Update dependabot interval to monthly.
Bump dependencies

Testing required outside of automated testing?

[x] Not Applicable

Screenshots (if appropriate):

[x] Not Applicable

Rollback / Rollforward Procedure

[x] Roll Forward
[ ] Roll Back

Reviewer Checklist

[ ] Description of Change
[ ] Description of outside testing if applicable.
[ ] Description of Roll Forward / Backward Procedure
[ ] Documentation updated for Change

:tada: This PR is included in version 1.0.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[Rancher] Restructure ingress controller docs on Rancher installation page

Make it clearer in which cases you need to install an additional ingress controller and in which you don't
Move Ingress Controller docs closer to the cluster provisioning docs
Move hosted kubernetes cluster docs to k8s-tutorial so that they are next to the RKE, RKE2 and K3s docs in the menu
Clearly distinguish between ingress and ingress controller

Fixes https://github.com/rancher/docs/issues/4109

@jtravee here is the promised PR to address the feedback from https://github.com/rancher/docs/issues/4109. It would be great, if you could have a look.
Somehow related to this is also this PR that still needs attention: https://github.com/rancher/docs/pull/4065


🚀 Feature: instrument instructor

Which component is this feature for?
All Packages
🔖 Feature description
Add instrumentation for the library instructor which allows to get structured outputs from LLMs.
🎤 Why is this feature needed ?
Instructor works by patching the client, whether it's OpenAI, Cohere, Anthropic, etc. Currently, it seems to be incompatible with the OpenLLMetry instrumentation for these clients (no telemetry is captured).
After browsing, I found an openinference package  for it, but it seems out of date / incompatible with the OpenLLMetry instrumentation I'm using because the application crashes with some library errors.
✌ How do you aim to achieve this?
Would be nice to able to instrument instructor with the OpenLLMetry toolset!
🔄 Additional Information
No response
👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

Are you willing to submit PR?
None

Thanks @zilto! Yes we'll need to some black magic here to support that. OpenInference, unfortunately, doesn't follow semantic conventions, so it doesn't look like it will ever be compatible with OpenTelemetry.
Would love it if you can assist with that!

@nirga I think this is really an ordering issue. You first:

turn on open telemetry,
import instructor.

If you do the reverse, then things break.

Took some debugging, but some notes:

Ordering matters. Telemetry behaves properly if the library (openai at least, others weren't thoroughly tested) is instrumented before creating the instructor client. Otherwise, code will run, but no telemetry will be logged.

import openai
import instructor
from opentelemetry.instrumentation.openai import OpenAIInstrumentor

OpenAIInstrumentor().instrument()

instructor_client = instructor.from_openai(openai.OpenAI())

instructor_client.create(...)

The issue I encountered yesterday seems specific to instructor + opentelemetry + notebook environment. The above approach works in a .py script, but fails in a .ipynb notebook.

instructor  uses event loops that clash with the notebook's event loop, specifically when openai is instrumented (via openllmetry or openinference).
Conclusions
I'll open an issue on the instructor repo. Maybe all we need to do here is add a docs page? Feel free to close the issue


bower update

Hi community
Quickly one:

When a commit is made, if I go to bower and update the Materialize folder, will I get the changes? If not, does anybody know what do I have to do?

Thanks :smiley:

If you want daily updates, you should clone the git repo and use that is the lib package instead. then using git pull will sync you to the latest updates. Bower will get updated every release and not in between. Hope this helps.

I got it, I'll change to a git repo instead of Bower.
Thanks


Memory usage of Redis-64 (3.0.503)

Hi,
frankly, I don't even know if it is an issue or even expected behavior, but since I'm a bit at a loss I'd like to report the following observation.
Previously, we used Redis-64 version 2.8.17, no special configuration settings, except "maxmemory", which is set to "4gb". When starting this instance on a server (Windows Server 2008 R2, 128 GB RAM) it has the following memory usage:
    Virtual Memory:           6.375.632 K
    Private Bytes:               16.164 K
    Working Set:                 27.216 K

Especially the Virtual Memory usage seems to align nicely with the "maxmemory" setting choosen.
Now, when we use Redis-64 version 3.0.503 on the same hardware, it has the following memory usage:
   Virtual Memory:     1.073.813.028 K
   Private Bytes:          2.116.476 K
   Working Set:               22.860 K

Again, all observed values were directly after startup, no traffic / operations done so far (albeit the values don't change significantly after some days of uptime - we only do pubsub operations though).
Is that expected behavior or do I miss some configuration setting?
Update: One more detail: I just figured, that the maxmemory-policy is different:
The 3.0.503 version is set to noeviction,
the 2.8.17 version is set to volatile-lru.
Thanks,
Christian

Well, may be 2.8.17 was evicting keys and 3.0.503 does not? But that's still a large difference

Yes, and also there never are/were keys in the instances (see "all observed values were directly after startup,"). Also, in the meantime I tried with changing the maxmemory-policy to the same value for both instances - no difference in the results.

OK, just as an "update". I just took the plain vanilla "Redis-x64-3.2.100.zip" from the "releases" and started redis-server.exe (no additional options no redis.conf file) yields the same memory usages.
Also, for reference, here are the info memory outputs of the original versions, again, both immediately after startup:
2.8.17:
# Memory
used_memory:4395040
used_memory_human:4.19M
used_memory_rss:4362128
used_memory_peak:4410160
used_memory_peak_human:4.21M
used_memory_lua:33792
mem_fragmentation_ratio:0.99
mem_allocator:dlmalloc-2.8

3.0.503
# Memory
used_memory:692128
used_memory_human:675.91K
used_memory_rss:655184
used_memory_peak:692128
used_memory_peak_human:675.91K
used_memory_lua:36864
mem_fragmentation_ratio:0.95
mem_allocator:jemalloc-3.6.0


ARM releases should have builds for arm5, arm6, arm7 respectively

I tried to setup dnscrypt-proxy using the released version of dnscrypt-proxy (2.0.19) for FreeBSD "arm" on a Raspberry Pi 2. Unfortunately it seem to have been compiled with GOARM=5 which causes it to exit with:
./dnscrypt-proxy -version
runtime: this system has multiple CPUs and must use
atomic synchronization instructions. Recompile using GOARM=7.

If I recompile it manually on my Mac using either:
GOOS=freebsd GOARCH=arm go build -ldflags="-s -w"
or
GOOS=freebsd GOARCH=arm GOARM=6 go build -ldflags="-s -w"
or
GOOS=freebsd GOARCH=arm GOARM=7 go build -ldflags="-s -w"
it runs fine.
If I compile it using GOARM=5 it will result in a binary with the same broken behaviour.
It seems like the release builds are built using GOARM=5, or that the default Go build parameter is different than mine is (go version go1.11.4 darwin/amd64).

Is it still the case?


add custom cursors

With the suggestions on #45 I started fresh on this PR, here's the result :)

Thank you @JaapWijnen.


Escalate to a group chat

The documentation says i should be able to
"Escalate to a group chat that connects them immediately with an expert allowing real time video/screen-sharing ability". I see where the experts can chat on an issue but how is it that a requestor can escalate to a group chat and get connected with an expert. How is this done? TIA

First you need to make sure an on call team is created for the escalate functionality to work.
To escalate your issue to on call team follow the steps below.

Click on the messaging extension of the remote support end user bot which can be found under the chat box. A following window will appear

Select the active request which you want to escalate. A card containing details of your request with escalate button will appear.
. Press enter and the card will be sent to the bot.

Click the Escalate button and your request will be escalated to the on call team.
Note :- If the on call team is not created the escalate button will not appear on the card when the request is selected from messaging extension.


feat: Adds simple file validation

Description
This PR adds simple file validation when handling Image and SVG file uploads using their mime type. The error is displayed via a toast using sonner (useful for handling future error messages!)
Preview
https://github.com/user-attachments/assets/8b9b632a-be4f-441a-b08b-1504cb61a8fd
Current
Production currently lets you upload any file type, so this PR fixes that.

Also added toast errors in case file is somehow missing when uploading a file.

I added a shitty alert before I saw this 😭 down to rebase it on current state and move the alerts there?

I added a shitty alert before I saw this 😭 down to rebase it on current state and move the alerts there?

Sure thing, I made validation even better and more dynamic for future tools, check out #65!


[hotfix][connector][jdbc] fix JDBC split exception

Purpose of this pull request

SplitEnumeratorContext#currentParallelism() is runtime method that will give incorrect results when used in SplitEnumerator#open()
Spark will periodically trigger the checkpoint to close the task. The reader needs to acquire the checkpoint lock to ensure that a single split read is completed.

Check list

[x] Code changed are covered with tests, or it does not need tests for reason:
[x] If any new Jar binary package adding in your PR, please add License Notice according
New License Guide
[x] If necessary, please update the documentation to describe the new feature. https://github.com/apache/incubator-seatunnel/tree/dev/docs

@hailin0 PTAL


Publish to pypi from CI

See original issue on GitLab
In GitLab by [Gitlab user @jjardon] on Apr 2, 2020, 10:52
AFAIK publishing new releases at https://pypi.org/project/BuildStream/ is a manual process

In GitLab by [Gitlab user @SotK] on Apr 2, 2020, 10:59
There's an example of setting this up in bst-external. Assuming bst is packaged sensibly the exact same code should work here too providing the correct credentials are set in CI variables.

Fixed by #1723.


reserved identifier violation

I would like to point out that an identifier like “CXXOPTS__VERSION_MAJOR” does eventually not fit to the expected naming convention of the C++ language standard.
Would you like to adjust your selection for unique names?

I didn't realise that the double underscore was reserved. I will make a new one and deprecate the current one in a future release.


Fix "Declaration shadows a local variable" warning

This method has two instances called error and if a very strict warning policy is set for the project it will likely trigger a warning or an error if the developer is using the treat warning as error configuration.

Hi @JGiola,
Thanks for taking the time to submit a PR :+1:
Can you please tell us which is the strict warning policy that you're using in your project? It is likely that this change needs to be applied in more methods. You only made the change for findLoginForURLString:. If we decide to make the change, we might as well make it throughout the entire code base.
Have an amazing weekend!

It's the -Wshadow clang attribute or the GCC_WARN_SHADOW option in the project setting.
In fact I've corrected only the error that is triggered by the OnePasswordExtension class (and at least in my Xcode settings is the only one that is triggered), but I haven't check in the demo projects.

Hi @JGiola,
We have the same situation for the ACME Browser target where the NSError variables are shadowed. More precisely in - (void)fillLoginIntoWKWebView:(WKWebView *)webView forViewController:(UIViewController *)viewController sender:(id)sender completion:(void (^)(BOOL success, NSError *error))completion and in - (void)fillLoginIntoUIWebView:(UIWebView *)webView webViewController:(UIViewController *)viewController sender:(id)sender completion:(void (^)(BOOL success, NSError *error))completion
Can you please make the necessary changes?
Cheers!

I've enable all the warning settings that people can have enable in their project if they follow the "Xcode hard mode" configuration.
And I have fix all the warnings that Xcode has showed me in both the demo project.
I leave only the one that says that in the xcassets files there are two images that aren't assigned to anything because I don't know if I can remove them.

Hi @JGiola,
We do not want to force developers to use all the warning settings when the integrate with the 1Password App Extension API.
This PR should only address the shadowed error variables.
Thanks!

Hi @JGiola,
I just merged PR #165 which basically does what you had suggested in your first commit and which closed this PR.
Thanks for the help buddy!

Sorry for the delay but in this two days I was a little busy preparing a small speech.
I don't understand why you don't want to turn on more strict warning detection in the two example projects.
People has to only copy the OnePasswordExtension .h and .m files and those do not carry around all the warning settings of the demo projects.
I am missing something? I ask only because this is my first ever pull request and I want to do a better job the next time :)


Changes in pxt.json yotta are not reflected in compiled yotta.json file

Change a variable in pxt.json, click "compile", see that yotta.json does not reflect change.

Still an issue?

Won't fix


clean up: Provide better URL encoding primitives.

Instead of accepting a dictionary of an unspecified type, the near_stream_message_url bundle of functions was refactored to receive parameters of specific types. All the functions that use them were also refactored to adapt.

Since the near_message_url functions only need a little information about the message to create the URL, they were refactored to receive each info separately (realm: Realm, message_id: int, display_recipient: DisplayRecipientT, stream_id: Optional[int], topic_name: Optional[str]).
This decision was made, instead of accepting a Message object, because of the event-handling functions that use those, as the functions from  zerver/lib/outgoing_webhook.py for example, because they don´t work with Message objects and the change would affect all the events mechanics in Zulip.

If the use of a Message object is necessary, I would like the feedback, so I could work on the changes to the event-handling functions to make this possible.
Fixes: https://github.com/zulip/zulip/issues/25021
Self-reviewed

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[x] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[x] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

@timabbott Thank you for your feedback! I have implemented your suggested changes.


Create a Point Cloud Mesh type

The Point Cloud Mesh type mapping (more or less) 1:1 the point data and attributes as defined in the potree point type.

Note: If I read the source code correctly, the Potree point type contains all LAZ-attributes, if necessary.
See: https://github.com/potree/PotreeConverter/blob/develop/Converter/include/PotreeConverter.h#L136
and some other places, where these values are being saved and converted. Therefore, we should discuss which types we want to support, too

@wrestledBearOnce creates a laz file with all attributes

Obsolete since #622


Ingest: Clean up & Simplify Tests

Related to #631.
Motivation
Clean up to_parquet fn and its associated tests.
Changes

Previously,  to_parquet fn took in a recipes.Config object as its input and then parsed it inside. Given that the Config object is evolving (the structure of Config object may change, i.e. new attributes) and we just need its file.Format object, I replaced recipes.Config with file.Format. This simplifies tests dramatically because we don't need to worry about creating a whole fake recipes.Config object to test to_parquet.

I removed the part downloading data from s3 from to_parquet fn. We already download data in run.py before we call to_parquet, so the data is already available locally. This change makes  to_parquet more atomic.

Update test resources. Previously, we were creating fake recipes.Config objects in a test file, and the code started becoming lengthy because of a wide variety of data formats (test cases). So make it more simple, I create custom objects in transform_to_parquet_template.yml where each object, i.e. test case, consists of file.Format and test file name. I feel it's easier to maintain these tests long term if we have all info about test cases in one place, the yaml file.

Love it! Have one comment about a few lines that maybe should be cut but other than that this is great, everything is much cleaner with these tweaks


gitlab-runner: 13.7.0 -> 13.8.0

Motivation for this change
https://gitlab.com/gitlab-org/gitlab-runner/blob/v13.8.0/CHANGELOG.md
Things done

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

[ ] NixOS
[ ] macOS
[ ] 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 nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

/cc @bachp @zimbatm @globin @dlouzan

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 110280 run on x86_64-linux 1

1 package built:

gitlab-runner

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 110280 run on x86_64-linux 1

1 package built:

gitlab-runner


Video stream

Add support to generate the a stream of video data, ideally based on the W3C MediaStream and/or MediaStreamTrack formats.

The high level interfaces would be implemented as another package.
I added to get raw frames via cam.frameRaw() at v1.0.0 now.


request: ability to fork to organization on GitHub

I would like to be able to run this:
hub fork --org=mtnnr

And have it fork not on my username, but to the @mntnr organization, or any other organization I have access to.

This is already available in the latest prerelease: https://github.com/github/hub/commit/cdd7a65e05e33a346c4cffb9130d88cfc9e18ff1

Fantastic. Thank you.


Add support for socketIO when generating client access URI

Add support for socketIO when generating client access URI

API change check
APIView has identified API level changes in this PR and created following API reviews.
com.azure:azure-messaging-webpubsub


multiroom: unpin client image

Change-type: patch
Signed-off-by: Tomás Migone<EMAIL_ADDRESS>

@balena-ci I self-certify!


About Training Settings

Hi,
Thank you for your good work for the community. Can I ask about the settings for training VILA-U? For example, GPU type, quantity, and days.
Best regards,
BAI Fan

Hi @baifanxxx,
Thank you for your interest!
We trained VILA-U on 16 nodes of A100 for around 20K GPU hours. This includes the training of the unified vision tower, multi-modal pre-training and sft. Please feel free to reach out if you have additional questions.
Best,
Zhuoyang

I am not sure if the details of sft data are in the paper. I do not find it. Could this be released? Thank you!


Installation issue

Following these steps:
git clone https://github.com/lab-cosmo/metatensor-models
cd metatensor-models
pip install .

An error came out during the installation. Any suggestion to solve it?
I attach down here the output:
Processing /Users/coffeedealer/Desktop/metatensor-models
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: ase in /Users/coffeedealer/anaconda3/lib/python3.11/site-packages (from metatensor-models==2023.11.29) (3.22.1)
Collecting metatensor-learn==0.2.2 (from metatensor-models==2023.11.29)
  Downloading metatensor_learn-0.2.2-py3-none-any.whl.metadata (1.6 kB)
Collecting metatensor-operations==0.2.1 (from metatensor-models==2023.11.29)
  Downloading metatensor_operations-0.2.1-py3-none-any.whl.metadata (1.7 kB)
Collecting metatensor-torch==0.5.1 (from metatensor-models==2023.11.29)
  Downloading metatensor_torch-0.5.1.tar.gz (103 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.1/103.1 kB 2.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [28 lines of output]
      Traceback (most recent call last):
        File "/Users/coffeedealer/anaconda3/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/Users/coffeedealer/anaconda3/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/coffeedealer/anaconda3/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
                 ^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/_9/p501rwm53ynbd7jvcv72c4h40000gr/T/pip-install-usm6stl6/metatensor-torch_ac28d9be6c184e7bb66b564b93b23f29/build-backend/backend.py", line 57, in get_requires_for_build_wheel
          defaults = build_meta.get_requires_for_build_wheel(config_settings)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/_9/p501rwm53ynbd7jvcv72c4h40000gr/T/pip-build-env-ookkrpct/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/_9/p501rwm53ynbd7jvcv72c4h40000gr/T/pip-build-env-ookkrpct/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
          self.run_setup()
        File "/private/var/folders/_9/p501rwm53ynbd7jvcv72c4h40000gr/T/pip-build-env-ookkrpct/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 276, in <module>
        File "/Users/coffeedealer/anaconda3/lib/python3.11/subprocess.py", line 548, in run
          with Popen(*popenargs, **kwargs) as process:
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/coffeedealer/anaconda3/lib/python3.11/subprocess.py", line 1026, in __init__
          self._execute_child(args, executable, preexec_fn, close_fds,
        File "/Users/coffeedealer/anaconda3/lib/python3.11/subprocess.py", line 1950, in _execute_child
          raise child_exception_type(errno_num, err_msg, err_filename)
      FileNotFoundError: [Errno 2] No such file or directory: 'cmake'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

There are a couple of strange things here. The issue seems to be with the installation of metatensor-torch, not the code in this repo, so I'll transfer the issue there.
Could you share which version of pip you have, and since it looks like you are using macOS could you tell us which version and if you have an M1 or Intel CPU?
There is a pre-built version of metatensor-torch, and I don't understand why it is not being picked by pip here.


[multi.vsl] freezes Pd when receiving feedback

Since [multi.vsl] sends multiple output messages on input, it escalates very quickly, so much so that stack overflow detection doesn't save us. Both Pd and plugdata freeze completely

I dunno what you mean :)


Unable to get list of channels

Drill down into the peer and the list of channels is empty. Here is the error from console... looks like google-protobuf need to be updated on stitch...

done


Setting port on spark notebook

We have a very simple question. How is the port set for spark notebook to access our cloud spark install? Can someone point to documentation on this? Thank you - Jason

you may add -Dhttp.port=someport when starting the service.
default is 9000.


Unsubscription from onLangChange throws error

[x ] bug report => check the FAQ and search github for a similar issue or PR before submitting

Hy guys I'm using ng2-translate in our project. Currently I have a problem with the subscribe/unsubscribe process.
Current behavior
We have a table component which is reused on various "pages" of the application. I have to subscribe to the onLangChange-Event due to rerender parts of the component (ng2 datatable) to translate also the header of the table. In the constructor the component is subscribing to  the onLangChange event. In the onDestroy I want to unsubscribe from it again. It works perfectly when I dont unsubcribe, but I'm not sure if this will cause errors if the component is rendered several times during the application lifetime?
But when I unsubscribe in the onDestroy of the component the following erro is thrown when the component is used the next time:
index.js:56623 EXCEPTION: Uncaught (in promise): Error: Error in ./ClientsListPage class ClientsListPage - inline template:3:12 caused by: object unsubscribed

Here is a snippet of the code
    constructor(
    public translate: TranslateService
) {
    // subscribe to lang service in case language is changed
    this.translate.onLangChange.subscribe((lang) => {
        console.log('lang');
        this._initDataTableColumns();
    });
}

ngOnInit() {
    this._initDataTableColumns();
}

ngOnDestroy(){
    this.translate.onLangChange.unsubscribe();
}

Any idea on that issue? Of course I just could neglect the unsubscribe process, but I dont know if this is causing other issues later on?
Please tell us about your environment:

ng2-translate version: 2.5.0

Angular version: 2.1;0

Browser: [all]

Language: [all]

I think what you really want is this.
private subscription: Subscription<any>;

constructor(
    public translate: TranslateService
) {
    // subscribe to lang service in case language is changed
    this.subscription = this.translate.onLangChange.subscribe((lang) => {
        console.log('lang');
        this._initDataTableColumns();
    });
}

ngOnInit() {
    this._initDataTableColumns();
}

ngOnDestroy(){
    this.subscription.unsubscribe();
}

@SamVerschueren
aaah big thx, this is usually what I do, but in that case I tought I could directly unsub from the translation service. now it is working :)

@SamVerschueren
many thanks..
same issue .. same question .. and you help again :)


new logit 8 features code

Thanks for adding the code and dataset.  Do we still want to merge this and #97 after our discussion about how the idea from https://github.com/gitter-lab/ml-bio-workshop/issues/80#issuecomment-670053772 didn't work as expected?

We discussed this pull request and it is no longer needed.


Refactor: change the module configuration method name [register] to [forRoot]

According to NestJS Community guidelines, the global modules should be configured with the method forRoot / forRootAsync.

register - expecting to configure a dynamic module with a specific configuration for use only by the calling module.
forRoot - you are expecting to configure a dynamic module once and reuse that configuration in multiple places.

It would be nice to follow NestJS community guidelines.

Hi @OsoianMarcel, thanks for feedback. This week I'll publish a new version.

Hi @OsoianMarcel, I published the beta version for this changes. You can check this 3.0.0-beta.1

Hi @OsoianMarcel, I published the stable version 3.0.0


Compilation error for v1.14.8

go.mod:
module [redacted]

go 1.16

require github.com/mattn/go-sqlite3 v1.14.8

main.go:
package main

import (
	_ "github.com/mattn/go-sqlite3"
)

func main() {
}

Error I get:
/usr/bin/ld: $WORK/b001/_pkg1_.a(_x011.o): undefined reference to symbol 'pthread_mutexattr_settype@@GLIBC_2.2.5'
/usr/bin/ld: /usr/lib/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

ldd --version:
ldd (GNU libc) 2.33

Do I have to downgrade the glibc to work with this library?

Fixed after adding these flags to compiler (in my case gccgo) -gccgoflags -lpthread


[Enhancement] Adjust batch size in dispatcher so that a single batch doesn't exceed managedLedgerMaxReadsInFlightSizeInMB

Search before asking

[X] I searched in the issues and found nothing similar.

Motivation
Current managedLedgerMaxReadsInFlightSizeInMB will have to be set to value that is higher than dispatcherMaxReadBatchSize * maxMessageSize.
Otherwise it could result in error Time-out elapsed while acquiring enough permits on the memory limiter to read from ledger [ledgerid], [topic], estimated read size [read size] bytes for [dispatcherMaxReadBatchSize] entries (check managedLedgerMaxReadsInFlightSizeInMB).
dispatcherMaxReadBatchSize defaults to 100 and maxMessageSize defaults to 5MB in bytes.
This means that currently managedLedgerMaxReadsInFlightSizeInMB must be set to 500 or higher to prevent the issue from occurring in all cases.
Solution
Adjust batch size in dispatcher so that a single batch doesn't exceed managedLedgerMaxReadsInFlightSizeInMB
Alternatives
No response
Anything else?
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

There's another problem. The current solution expects that managedLedgerReadEntryTimeoutSeconds is set. It will fail immediately without waiting in that case, resulting in a similar exception.


We still need this file with containerized deployment because the
nfs-ganesha package isn't installed on the host.
Fixes: #6501
Signed-off-by: Dimitri Savineau<EMAIL_ADDRESS>

jenkins test centos-container-all_daemons


Behavior of multiple chained switchMap operators

Hi,
i am running into a problem with the use of multiple switchMaps in ngrx Effects. The problem is not scoped only to ngrx though.
So i have an effect, that needs to call three different APIs after each other. It only makes sense in this order and there is no case where a single call to one of the APIs would make sense.
My initial code looked like this:
 threeApiCalls = createEffect(() =>
    this.actions.pipe(
      ofType(MyActions.SomeAction),
      switchMap(action => this.api.callOne(action.params)),
      switchMap(resultOfCallOne => this.api.callTwo(resultOfCallOne)),
      switchMap(resultOfCallTwo => this.api.callThree(resultOfCallTwo)),
      map(result => MyActions.ReceiveResult({ result })),
      catchError(error => of(MyActions.ReceiveResultError({ error })))
    )
  )

Then i ran into the problem, that an error in one of the api calls would complete the observable and thus the effect. For the people not familiar with ngrx effects: An Effect should not complete. If it completes, it is useless.
The solution to that is to catch errors on every of the calls:
threeApiCalls = createEffect(() =>
    this.actions.pipe(
      ofType(MyActions.SomeAction),
      switchMap(action => this.api.callOne(action.params).pipe(catchError(err => of(err)))),
      switchMap(resultOfCallOne => this.api.callTwo(resultOfCallOne).pipe(catchError(err => of(err)))),
      switchMap(resultOfCallTwo => this.api.callThree(resultOfCallTwo).pipe(catchError(err => of(err)))),
      map(result => MyActions.ReceiveResult({ result })),
      catchError(error => of(MyActions.ReceiveResultError({ error })))
    )
  )

Now the observable does not complete on error. But i have the very ugly problem that i need to introduce type checks to every of the API calls after the first one because it may have received an error:
threeApiCalls = createEffect(() =>
  this.actions.pipe(
    ofType(MyActions.SomeAction),
    switchMap(action =>
      this.api.callOne(action.params).pipe(catchError(err => of(new MyErrorClass(err))))
    ),
    switchMap(resultOfCallOne => {
      if (resultOfCallOne instanceof MyErrorClass) {
        return of(resultOfCallOne);
      }
      return this.api.callTwo(resultOfCallOne).pipe(catchError(err => of(new MyErrorClass(err))));
    }),
    switchMap(resultOfCallTwo => {
      if (resultOfCallTwo instanceof MyErrorClass) {
        return of(resultOfCallTwo);
      }
      this.api.callThree(resultOfCallTwo).pipe(catchError(err => of(new MyErrorClass(err))));
    }),
    map(result => {
      if (result instanceof MyErrorClass) {
        return MyActions.ReceiveResultError({ error: result });
      }
      return MyActions.ReceiveResult({ result });
    },
   catchError(error => of(MyActions.ReceiveResultError({ error }))))
  )
);

This is a lot of overhead. :(
Now for my actual question/proposal:
Is it possible to propagate errors from switchMaps inner observable to its source observable (wihout completing), so that i only have to catch them in a single catchError and don't have to worry about the type checking in any of the subsequent switchMaps? And if no, is it possible to write an operator that has this behavior?

You should be able to use the second argument that is passed to the catchError selector. It's a reference to the source observable:
 threeApiCalls = createEffect(() =>
    this.actions.pipe(
      ofType(MyActions.SomeAction),
      switchMap(action => this.api.callOne(action.params)),
      switchMap(resultOfCallOne => this.api.callTwo(resultOfCallOne)),
      switchMap(resultOfCallTwo => this.api.callThree(resultOfCallTwo)),
      map(result => MyActions.ReceiveResult({ result })),
      catchError((error, source) => concat(
        of(MyActions.ReceiveResultError({ error })),
        source
      ))
    )
  )

thanks a lot @cartant Your solution is solving my problem! As I use this approach in many places of our app I wrapped it into a custom operator to reduce the overhead even more.
export const catchSwitchMapError = (errorAction: (error: any) => any) => <T>(source: Observable<T>) =>
  source.pipe(catchError((error, innerSource) => innerSource.pipe(startWith(errorAction(error)))))

final result:
threeApiCalls = createEffect(() =>
  this.actions.pipe(
    ofType(MyActions.SomeAction),
    switchMap(action => this.api.callOne(action.params)),
    switchMap(resultOfCallOne => this.api.callTwo(resultOfCallOne)),
    switchMap(resultOfCallTwo => this.api.callThree(resultOfCallTwo)),
    map(result => MyActions.ReceiveResult({ result })),
    catchSwitchMapError(error => MyActions.ReceiveResultError({ error }))
  )
);


README.md: Fix broken link for SDK user manual

The link to the SDK user manual is broken and gives me a 404.
I think I have corrected it to the link it's supposed to be.

Thanks for fixing this link.

Thanks for fixing this link.


Ice cream turns into candy

When I try to make ice cream, it pops out as candy!

Please check the wiki, high priority recipes will override low priority ones, and if there're multiple recipes matched and are same priority, they'll be randomly chosen weighted by their weight. Also, have a look at if your pot level is high enough.
If you still think that there's a bug, feel free to open this issue again.


linux os packaging

deb & rpm recipes + mod of the Makefile in order to
output them and have them stored instead of the ZIP files
on the github.com release/folder/space

merged


Restore null and string.Empty handling from EncoderExtensions

prior test encoders were never invoked for null or empty strings e.g.

    public static void HtmlEncode(this IHtmlEncoder htmlEncoder, string value, TextWriter output)
    {
...
        if (!String.IsNullOrEmpty(value))
        {
            htmlEncoder.HtmlEncode(value, 0, value.Length, output);
        }
    }

/cc @Tratcher @pranavkm

:up::date:

:shipit:

Thanks @Tratcher Just waiting for aspnet/Mvc#3453 opinions. Also slightly prefer to get this in after CI looks greener.

:up::date: @Eilon

Slight :up::date: to remove garbage.

:shipit:

:up::date: FYI. Will push shortly.

037196d


Fixed file not found error due to relative path

When updateHostFile.py is not run from the project directory we get a file not found error trying to find readmeData.json

gonna be honest here and say my goal was to just fix the error (I run this as a cron) I noticed other files being referenced by relative path too but did not really have a look how they are used

I like!  :+1:


Cannot set modifiers when a decorator exists

Hello,
I use your module for TypeScript file generation from AST, but I have an error in two cases :
On a class :
If I declare decorators and set the isExported to true it throw the error :
Error: Error replacing tree! Perhaps a syntax error was inserted (Current: ExportKeyword -- New: Decorator).

Code:
@HOInherit()
    at BaseError (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/errors/BaseError.js:5:9)
    at InvalidOperationError (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/errors/InvalidOperationError.js:6:9)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:57:19)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:65:17)
    at handleChangingParent (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:78:13)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:63:17)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:65:17)
    at replaceTree (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:53:9)
    at Object.replaceTreeCreatingSyntaxList (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:13:5)
    at Object.insertSyntaxList (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/insertion/insertSyntaxList.js:12:12)

On a property :
If I declare decorators and set the scope to private it throw the error :
Error: Error replacing tree! Perhaps a syntax error was inserted (Current: PrivateKeyword -- New: Decorator).

Code:
    @HOField()
    at BaseError (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/errors/BaseError.js:5:9)
    at InvalidOperationError (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/errors/InvalidOperationError.js:6:9)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:57:19)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:65:17)
    at handleChangingParent (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:78:13)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:63:17)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:65:17)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:65:17)
    at handleNode (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:65:17)
    at replaceTree (/Users/acidspike/Development/Sources/SCM/External/TSSimpleAst/dist/manipulation/tree/replaceTree.js:53:9)

Thanks for reporting this @anthonybriand!
This is fixed in 0.70.1.

Sorry, but errors are always here.
There is the code sample for reproduction :
const sourceFile = ast.addSourceFileFromStructure('./test.ts', {
    imports: [
        {
            namedImports: [
                {
                    name: 'HOModel'
                },
                {
                    name: 'HOInherit'
                },
                {
                    name: 'HOMapping'
                },
                {
                    name: 'HOConnectionInfo'
                },
                {
                    name: 'HOField'
                }
            ],
            moduleSpecifier: '@harmony/orm'
        }
    ],
    classes: [
        {
            name: 'TestModel',
            'extends': 'HOModel',
            isExported: true,
            decorators: [
                {
                    name: 'HOInherit',
                    arguments: []
                },
                {
                    name: 'HOMapping',
                    arguments: [
                        '\'test\''
                    ]
                },
                {
                    name: 'HOConnectionInfo',
                    arguments: [
                        '\n    {\n        connectionName: \'test\'\n    }\n'
                    ]
                }
            ],
            properties: [
                {
                    name: 'test',
                    type: 'string',
                    decorators: [
                        {
                            name: 'HOField',
                            arguments: []
                        }
                    ],
                    scope: 'private',
                    initializer: 'null'
                }
            ],
            methods: [
                {
                    name: 'getTest',
                    bodyText: 'return this.test;',
                    returnType: 'string'
                },
                {
                    name: 'setTest',
                    parameters: [
                        {
                            name: 'test',
                            type: 'string'
                        }
                    ],
                    bodyText: 'this.test = test;\nreturn this;',
                    returnType: 'this'
                }
            ]
        }
    ]
});

console.log(sourceFile.getFullText()); // Throw errors


No good way to replace the list without losing your position.

If you want to replace the entire contents of the list and just issue a notifyDataSetChanged() there is no good way to do that. If you remove all items from the observable collection and re-add them, you list will scroll up to the top since at one point it had no items. Calling setItems() on the adapter will also do the same thing.

This is fixed in 0.13. The adapters use a direct reference to the provided list instead of copying it. Therefore, you can simply pass in a list and then call notifyDataSetChanged() when you have changed it. You can also implement ItemId for RecyclerView which should also help in this regard.


Built-in namespaces not introspectable

Should we expect built-in namespaces to be introspectable? I have found none of these working:
put (keys $builtin)
put (keys $locals)
put (keys $up)
put (keys $builtin:builtin)

Style note: Your example shows a useless-use-of-put - you can just run the keys commands to the same effect.
The builtin: namespace can be introspected if you use it first:
[~]|> use builtin
[~]|> keys $builtin:
▶ fg~
▶ path-ext~
▶ put~
▶ +~
...

The locals, up and $builtin:builtin namespaces do not exist in Elvish AFAIK.

Thank you, @zzamboni. I confirm, it works very well for builtin.
Here is where I have read about local and up. They are called namespaces too. locals is a typo of mine, but I'm still not sure how to introspect local.
Regarding $builtin:builtin - if builtin is a built-in namespace, I would expect to find it in builtin too. This is why I gave a try. It is not necessarily needed though.

@gergelyk I see - I remember now reading about local: and up:, but I have never used them as well. I assume because they are "magic" namespaces, they are probably not resolvable all the time.
@xiaq any thoughts about this?

Regarding $builtin:builtin - if builtin is a built-in namespace, I would expect to find it in builtin too.

While namespaces can be nested builtin: isn't a member of builtin:. I don't see how that would be useful. You also won't find math: (or any of the other bundled modules) inside the builtin: namespace.
The local: and up: namespaces are special lexical scopes. See https://elv.sh/ref/language.html#pre-defined-modules. I don't see any reason it couldn't be made possible to introspect them but it's not clear what the use cases would be. See also issues #668, #999 and #1026.

Regarding $builtin:builtin - if builtin is a built-in namespace, I would expect to find it in builtin too. This is why I gave a try. It is not necessarily needed though.

I think what led you to this conclusion is that that $builtin:foo now works without requiring use builtin; I will change that, which is tracked in #1227.
In any case the original issue has been resolved, and the issue with other special namespaces are listed in @krader1961's comment. Closing.

@krader1961, my initial motivation was to improve python integration. I was thinking of something like:
fn py [code]{

# collect local variables from outer scope
vars = [&greeting=hello &name=john]

full_code = "import json, sys
locals().update(json.loads(sys.stdin.read()))
"$code"
"

echo (to-json [$vars]) | python -c $full_code
}

###############################################################################

var greeting = hello
var name = john

py "print(f'{greeting.title()} {name.title()}!')"


Include annotations along with method names to allow filtering

Since instrumentation allows filtering by annotation, it would be useful to include list of all annotations for each test method and the whole test class.
Also, in what format should the data be stored? CSV with different separators for columns and lists, or maybe JSON?

Any update on this? This would indeed be useful.

@sander-m, I've implemented it on my fork (https://github.com/kirillzh/dex-test-parser/commit/9b8d473d24a9f91dff099be835e2680733d015b8). I had to disable JUnit 3 tests though (I don't need them). Tests will be saved JSON format:
[
   {
      "class":"com.app.tests.SomeFeatureTests",
      "method":"fooTest",
      "annotations":[
         "com.app.annotations.Smoke",
         "org.junit.Ignore",
         "org.junit.Test"
      ]
   },
   {
      "class":"com.app.tests.SomeOtherFeatureTests",
      "method":"barTest",
      "annotations":[
         "com.app.annotations.Regression",
         "org.junit.Test"
      ]
   }
]

Sorry for not responding earlier....I'm not quite clear what the benefit of this would be. We do lots of filtering internally, but we just run the test anyway and let AndroidJUnitRunner decide to run or skip the test. The benefit of this approach is that the skipped tests will still show up in the JUnit test report as skipped, rather than missing entirely.

No problem!
So how do you guys group your test cases? For example if I categorize my test cases as smoke, regression, etc. or maybe by feature A, feature B, etc., how do I run only smoke tests, or only feature A tests?

We group our tests by package and run them that way (e.g. com.example.smoke.featureA, com.example.regression.featureB. Then if you wanted to run all the featureA tests, you'd just regex for .featureA., or similarly package=com.example.smoke and run all the matching tests individually.
I was thinking you could choose to run a specific test (e.g. -e class com.example.smoke.MyTest#foo) and also specify an annotation filter (e.g. -e annotation com.android.foo.MyAnnotation)
Now that I think about it, I'm not sure if that would actually work or not. I'd be hopeful that it does, and it won't trigger a classpath scan by AndroidJUnitRunner, but if that doesn't work, then I understand why this feature would be needed.

I see, com.example.smoke.featureA and com.example.regression.featureB is a pretty good idea, didn't think about it haha.
I group my tests by feature only though, so it's easier for me to convert test say from smoke to regression simply by changing annotation instead of moving it from one class to another.
And you're right, I could just run all tests with annotation filter, it won't run the tests without this annotation:
INSTRUMENTATION_RESULT: stream=

Time: 0

OK (0 tests)

INSTRUMENTATION_CODE: -1

But I guess I'd have to parse and ignore this test in reports somehow...

Thanks @kirillzh I will have a look at that branch.
Currently our tests use class-level annotations to group them by type (Unit/Integration/UI etc), and I plan to use this dex-parsing for sharding test runs with Firebase Test Lab(https://cloud.google.com/sdk/gcloud/reference/firebase/test/android/run), which doesn't take annotation filters.

It would be really nice to have annotations support. As mentioned, the Firebase Test Lab expects a list of tests to run.

I'm not opposed to adding that if it's useful. Do you all think it's a requirement to have it write the data to a file? If we only expose this through the Java/Kotlin api, then we don't need to worry about the file format.
I'm guessing you'll want it as a file though, if your test harness isn't written in a JVM language (for us, our test harness is a gradle plugin, so we don't even use the file output from this project).

I just checked with the Firebase team and they support filtering by annotations. It's just undocumented.

adb shell am instrument -w -e annotation com.android.foo.MyAnnotation

gets translated to something like:

--environment-variables annotation=com.android.foo.MyAnnotation

AndroidJUnitRunner
running subset of espresso tests

If we only expose this through the Java/Kotlin API

I think exposing via the API makes sense. It's not that difficult to create a wrapper jar which outputs in the desired format.

I found a use case. The default AndroidJUnitRunner only allows running a single annotation. If you want to run multiple annotations (SmallTest & LargeTest), then you'd have to write a custom test runner.
If the dex-test-parser API offered annotation support, then it'd be easy to build a list of tests using custom logic to mix and match instead of being limited by the test runner.

I believe I have this working locally for both JUnit 3 and JUnit 4. I'll put up a PR either tomorrow or sometime next week, after doing some more testing. I might implement #5 first, to have better regression coverage, because this is a fairly significant change.
One thing to note, gathering all this extra annotation information does have a performance overhead. I've been testing against an apk with ~5000 JUnit 4 test methods (I don't currently have a large scale JUnit 3 test apk to profile against). Prior to these annotation changes, dex-test-parser took ~300ms to process this apk. With annotation collection, it takes ~500ms. I'm assuming that 5k methods is on the high end of test apk sizes, so 500ms is not that bad of an absolute time, but I don't have many data points for how these times scale for others (especially JUnit 3 users).
I think this is probably fine, given the benefits of this feature, but just wanted to make sure it's called out here since I know I monitor my own build and test speeds very closely.

This is checked in and released in 1.1.0! 😄

Awesome. Thank you!!
On Thu, Jul 13, 2017, 6:50 PM Drew Hannay<EMAIL_ADDRESS>wrote:

This is checked in and released in 1.1.0! 😄
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/linkedin/dex-test-parser/issues/1#issuecomment-315223155,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABHmQS-h5qpY6SBWnoDeA7cLB-cHuA0oks5sNp9QgaJpZM4NL87Q
.


BOM-1074 - Run black on edx-lint

Seems like black doesn't know our line length is 120?

@nedbat yea, I had left it alone until I figured out if I wanted at pyproject.toml or not.  But added it to the make targets for now.

I am fine with postponing black indefinitely :)


[[FIX]] Add other fetch spec globals - Request, Response, Headers

Fixes #2582

LGTM other than the alphabetical nitpick.

be nice to see this merged.

I've re-ordered the properties and landed this at 07bb596c8e0303a97e60e036e6aedcabc8d24e2e. Thanks, @lukeapage!


ISPN-6739 Include generated META-INF/services in tools.jar

https://issues.jboss.org/browse/ISPN-6739

Integrated, thanks Tristan!


Add custom rule in ckb-indexer

At present, ckb-indexer runs get_cells, get_transactions through scan matching, which will gradually increase the cost of this operation, which will lead to a problem similar to ETH, where the cost of state reading increases with the size of the state.
For specific applications, scan matching will affect the access speed and may affect the response speed of the application.
Can ckb-indexer add custom rules, such as specifying lock_script, type_script, lock_code_hash, type_code_hash or other rules, and then pre-store the involved cells and transactions, put them in the cache to speed up access. When the request hits the cache, it can return quickly.
Because different projects only pay attention to their own cells, they definitely hope that the access speed of related cells will not be affected by other cells, such as certain types of sUDT cells, or cells of a certain Layer2 protocol.

This is a great idea, and we will look into how to implement this.

@xcshuan Can you review if this PR #57 meets your needs?

ckb-indexer uses rocksdb as storage, which is an LSM tree. When designing the data structure of the ckb-indexer storage and the rpc methods, we use prefix search, this range scan does not bring significant read performance degradation due to the growth of data volume, especially after LSM tree leveled compaction.
We will not consider adding this optimization for now until there is a performance bottleneck.

Ok, since the parsing and filtering of the rules is implemented, it is enough.


Quick access to the paths of explorers already opened in the "save" and "open" popups

Description of the new feature / enhancement
In File Explorer, provide quick access to folders currently opened in other file explorers.
Scenario when this would be used?
When software asks you to save a file, you often want to save it in a directory that you're already working on in Windows Explorer.
It would be great if the explorer's "quick access" menu included directories that are currently opened.
This way, you don't have to search for the window you're interested in, then copy and paste the path into the save window.

Supporting information
No response

The APIs to make this feature work do not exist in the File Explorer. This recommendation is better for the Feedback Hub.
/feedbackhub


Is there any mocking library available to plug with protractor/serenity setup for Non-Angular apps?

Hi Jan,
I am having an non angular app under test. So, most of the time I am using browser.waitForAngularEnabled(false). In this circumstance, most of the general mocking library does not work with protractor (ex: protractor-http-mock etc) as, for non angular apps protractor can not track the http calls.
I found out a library ng-apimock which can be useful but for already deployed app, it seems bit hard to proceed on. Refer my ticket here: https://github.com/mdasberg/ng-apimock/issues/84
So, have you encountered such issues in past? Can you suggest me a suitable mocking library or anything so that i can get start with.

Hey @abhinaba1080 - good question! The answer depends on the type of the framework your app uses and the affordances it provides. I.e. does the framework allow you to inject test doubles in an elegant way like Angular does? Or would you have to mock things at a lower level, for example by using an xhr-mock?
One way or another, you'll probably be looking at loading some external mocking script using the ExecuteScript.from, and then configuring the mocks using ExecuteScript.sync or ExecuteScript.async.
For example:
import { ExecuteScript } from '@serenity-js/protractor'l

actor.attemptsTo(
    ExecuteScript.from('https://unpkg.com/xhr-mock/dist/xhr-mock.js')
    ExecuteScript.sync(`
        window.XHRMock.post('/api/user', {
            status: 201,
            reason: 'Created',
            body: '{"data":{"id":"abc-123"}}'
        });
    `),
    DoSomethingThatTriggersTheAPICall(),
);

Does this help?

Thank @jan-molak .

What does ExecuteScript.sync does? what is the alternative protractor browser.executeScript command?

i have tried the same by simply executing chrome console, it seems nothing happens. if time permits, can try a basic scenario in your chrome console and let me know the outcome.

All the ExecuteScript interactions inject JavaScript code into the browser used in the test.
You can use this feature to interact with your application at a low, programmatic level (a.k.a. do things that the user would not have normally done).
It's a rather advanced technique and is basically the same as if you typed JavaScript code into the Chrome console during the test.
To learn more about those, check out the tests demonstrating the behaviour of those interactions.
For example, here's what ExecuteScript.sync does, and here's the implementation of those interactions - that's where you can see the corresponding protractor methods.
If you wanted to execute my example in the console, you'd have to do this as follows:
document.write("<script src='https://unpkg.com/xhr-mock/dist/xhr-mock.js'></script>");

Followed by:
window.XHRMock.post('/api/user', {
            status: 201,
            reason: 'Created',
            body: '{"data":{"id":"abc-123"}}'
        });

Hi @jan-molak
Do we have in-built mocking utility inside the API library of Serenity 2.0?
Any documentation will help as I have just started to migrate the API testing framework from Serenity 1.x to 2.0.

Hey @abhinaba1080 - there are two ways you can do it.
Axios Mock
The ability to CallAnApi uses axios under the hood, which means you can mock the responses using something like the axios-mock-adapter.
For example:
import { engage, Actor, Cast } from '@serenity-js/core';
import { CallAnApi } from '@serenity-js/rest';
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';

class APIActors implements Cast {
     prepare(actor: Actor) {
        const axiosInstance = axios.create({
          // .. options, see https://github.com/axios/axios#creating-an-instance
        });
        const mock = new MockAdapter(axios);  // see https://github.com/ctimmerm/axios-mock-adapter

        mock.onGet('/users', { params: { searchText: 'John' } }).reply(200, {
            users: [
                { id: 1, name: 'John Smith' }
            ]
        });

        return actor.whoCan(CallAnApi.using(axiosInstance));
    }
}

Engage the in the before hook of your chosen test runner, i.e. Cucumber:
Before(() => engage(new APIActors()));

Then in the test:
When('......', () => actorInTheSpotlight().attemptsTo(
    Send.a(GetRequest.to('/users')),     // this will call the mock
));

Then('...', () => actorInTheSpotlight().attemptsTo(
    Ensure.that(LastResponse.status(), equals(200))
    Ensure.that(LastResponse.body(), equals( {
        users: [
            { id: 1, name: 'John Smith' }
        ]
    }),
));

However, what the test is doing is effectively just calling the mock.
This might be useful to prototype the test when the API is not ready yet, or test-drive the API design.
Local server
Another way to do it is to use a fake API server via @serenity-js/local-server.
For example:
import { actorCalled } from '@serenity-js/core';
import {
    ManageALocalServer, StartLocalTestServer, StopLocalTestServer
} from '@serenity-js/local-server'
import { CallAnApi, GetRequest, Send } from '@serenity-js/rest';
import { Ensure, equals } from '@serenity-js/assertions';
import axios from 'axios';

const actor = actorCalled('Apisit').whoCan(
    ManageALocalServer.using(/* requestListener */),
    CallAnApi.using(axios.create()),
);

actor.attemptsTo(
    StartLocalTestServer.onRandomPort(),
    Send.a(GetRequest.to(LocalServer.url())),
    Ensure.that(LastResponse.status(), equals(200)),
    Ensure.that(LastResponse.body(), equals('Hello!')),
    StopLocalTestServer.ifRunning(),
);

The requestListener you see in the code sample above can be any restify, koa, hapi, express, or other Node.js server. So you can use a dedicated node mock server, or write your own.
The nice thing about using this approach is that the @serenity-js/local-server starts an actual node.js HTTP or HTTPS server, which you can connect your UI to if you needed.

Let me know which approach you decided to take!
Jan

Hi @jan-molak ,
I was trying stuff out with Axios-mock-adapter. I am getting below error:
Given user is logged in application with username as "admin"
    oar_api_admin wants authenticate user= admin
      ✗ oar_api_admin sends a POST request to '/api/login' (5ms)
        TypeError: Cannot convert undefined or null to object
  ⇢ When user sends GET request to the resource "users"
  ⇢ Then user receives success response from the API resource

✗ Execution failed with error (56ms)

  TypeError: Cannot convert undefined or null to object
      at Function.keys (<anonymous>)
      at mapToString (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\reports\SceneReport.ts:269:27)
      at C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\reports\SceneReport.ts:281:34
      at SceneReport.withMutated (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\reports\SceneReport.ts:351:9)
      at SceneReport.httpRequestCaptured (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\reports\SceneReport.ts:272:21)
      at MatchesObjectsWithCommonPrototype.transformation (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\strategies\SceneReportingStrategy.ts:40:57)
      at MatchesObjectsWithCommonPrototype.MatcherRule.execute (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\tiny-types\src\pattern-matching\rules\MatcherRule.ts:13:21)
      at ObjectMatcher.PatternMatcher.else (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\tiny-types\src\pattern-matching\PatternMatcher.ts:17:71)
      at MatchesObjectsWithCommonPrototype.transformation (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\strategies\SceneReportingStrategy.ts:49:22)
      at MatchesObjectsWithCommonPrototype.MatcherRule.execute (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\tiny-types\src\pattern-matching\rules\MatcherRule.ts:13:21)
      at ObjectMatcher.PatternMatcher.else (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\tiny-types\src\pattern-matching\PatternMatcher.ts:17:71)
      at SingleSceneReportingStrategy.SceneReportingStrategy.handle (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\strategies\SceneReportingStrategy.ts:53:18)
      at MatchesAnything.transformation (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\strategies\SingleSceneReportingStrategy.ts:26:36)
      at MatchesAnything.MatcherRule.execute (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\tiny-types\src\pattern-matching\rules\MatcherRule.ts:13:21)
      at ObjectMatcher.PatternMatcher.else (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\tiny-types\src\pattern-matching\PatternMatcher.ts:17:71)
      at SingleSceneReportingStrategy.handle (C:\Dev Room\Projects\ArcherAPIBDDTests\node_modules\@serenity-js\serenity-bdd\src\stage\crew\serenity-bdd-reporter\strategies\SingleSceneReportingStrategy.ts:26:18)

My Actors are implemented like below:
export class Actors implements Cast {
  prepare(actor: Actor): Actor {
    const mock: MockAdapter = new MockAdapter(axiosClient);

    mock.onPost('/api/login').reply(200);

    return actor.whoCan(CallAnApi.using(axiosClient));
  }
}

Can you guide me here?

Hey just analyzed that if I removed SerenityBDDReporter from the crew, everything works fine.