Remove docs that are on the developer.bentley.com site

This information is covered on developer.bentley.com and we should avoid duplicating and confusing the content of both.
breakdown of larger PR: #4277

@Mergifyio backport release/3.6.x release/3.7.x

Nothing is needed in replace of these docs or links?

Nothing is needed in replace of these docs or links?

I don't think so. If anything we need to re-write almost this entire section of the docs to be more clear and helpful. I'll create an issue to put something together.

Right, we may have it actually


_02_munge_chains.py crashes due to "date" keyError.

Only crashes for PAH.  I inspected the _ts.csv file and parameter file and didn't notice any issues.
Output directory: output/2020_04_24_16_51_24_PAH/
Traceback (most recent call last):
  File "/home/datascience/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2646, in get_loc
    return self._engine.get_loc(key)
  File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1618, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'date'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "_02_munge_chains.py", line 428, in <module>
    main()
  File "_02_munge_chains.py", line 306, in main
    first_day = census_ts["date"].values[0]
  File "/home/datascience/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py", line 2800, in __getitem__
    indexer = self.columns.get_loc(key)
  File "/home/datascience/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2648, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1618, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'date'

@Mdraugelis Might be crashing due to zero vents.

crashed due to type.  on the date column.  I've fixed, tested and loaded to master.


[earlgrey_es] cheery-pick closed source regression fix

#19625

Thanks @jdonjdon. Can you please update eargley_es branch also with https://github.com/lowRISC/opentitan/pull/19615 ? And maybe instruct @eshapira how to do it so we won't have to bother you:)


Missing compiler "swift32"

On the live site:
 swift:  error: Unable to get version for compiler 'swift32' - non-zero result 127

Did you mean to add another compiler @RabsRincon ? Change ad0f53bf introduced this swift32 without a corresponding compiler


HLD Reconcile: Use service-ring as k8s service for ingress routes and for helm configuration

As a:
SPK User
I want:
My generated HLD to automatically scaffold a service name and ring name to my HLD
So that:
A unique service name and ring configuration be consumed further downstream by helm charts that wish to expose a k8s service
Describe the solution you'd like:
For a bedrock.yaml with the following contents:
rings:
  master:
    isDefault: true
services:
  ./services/fabrikam:
    displayName: 'fabrikam'
    k8sBackendPort: 80
    k8sBackend: 'fabrikam-k8s-svc' (used for the configuration of a serviceName in config below)
    pathPrefix: 'fabrikam-service'
    pathPrefixMajorVersion: 'v1'
    helm:
      chart:
        branch: master
        git: 'https://dev.azure.com/foo/bar/_git'
        path: stable/wordpress
    middlewares:
      - ''
variableGroups:
  - fabrikam-vg

The following HLD is produced:
├── component.yaml
└── fabrikam *repository*
    ├── access.yaml
    ├── component.yaml
    ├── config
    │   └── common.yaml
    └── fabrikam *service*
        ├── component.yaml
        ├── config
        │   └── common.yaml
        └── master *ring*
            ├── component.yaml
            ├── config
            │   └── common.yaml <- ring configuration
            └── static
                ├── ingress-route.yaml <- route configuration
                └── middlewares.yaml

I expect the marked configuration file common.yaml available at the ring level (marked above) to have the following contents:
subcomponents:
  chart:
    config:
      serviceName: "fabrikam-k8s-svc-master"

This should configure a service name downstream within the helm chart to use this as a  canonical unique name for the service.
I also expect the route configuration (ingress-route.yaml, marked above) to have the following contents. Note the service name:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: fabrikam-master
spec:
  routes:
    - kind: Rule
      match: 'PathPrefix(`/v1/fabrikam-service`) && Headers(`Ring`, `master`)'
      middlewares:
        - name: fabrikam-master
      services:
        - name: fabrikam-k8s-svc-master (a proper service name)
          port: 80

Acceptance Criteria:

[ ] Generated ingress route should route to a service named $serviceName-$ring (variables pulled from bedrock.yaml)
[ ] Generated config/common.yaml at the ring level (see annotated tree structure above) should have $serviceName-$ring emitted as a configuration injected into the helm chart component. See above config/common.yaml file as a sample ideal config
[ ] Docs and guidance on how to build a helm chart that can consume the configuration such that spk and fabrikate properly generates unique yaml for each service

Describe alternatives you've considered:
None - we need to be able to map a single 1 ingress route to 1 k8s service
Additional context:
We presently have many ingress routes generated (1 for every ring in the service), but as we do not generate unique service names, it is very likely that many ingress routes can map to a single k8s service.
Does this require updates to documentation?:
Yes

For Helm chart documentation, some information to be included:

Helm Chart:

Hopefully you’re familiar with what it is. If not _____.
This is how spk uses helm charts with some assumptions. If you want to use them with spk then you need to include as helm variables: serviceName, image.name, image.tag
Some example helm charts
If you would like to store your helm charts in the same repositories as your applications, then you can do so. Make sure to configure it as such when running spk service create   --helm-config-branch master --helm-config-git  --helm-config-path . All repositories (application, hld, manifests) must be within the same Azure DevOps Organization AND Project.

@mtarng @bnookala what if we did this first in a separate task?

Docs and guidance on how to build a helm chart that can consume the configuration such that spk and fabrikate properly generates unique yaml for each service

@andrebriggs we presently don't have any guidance at all on helm charts but do make the presumption that every chart has an image.tag value (not a guarantee). if i broke out the task to add helm docs entirely, i  would still prioritize the feature work first as it is necessary to have an end to end

@bnookala users and the team will probably want use to describe how to use a feature. If we are confident enough to put an effort tag next to an implementation task we are most likely confident enough to describe how to interact with the feature


Fix incorrect info in CA2009 docs

See https://github.com/dotnet/roslyn/pull/53140#discussion_r625747738
FYI @sharwell

@sharwell Would you be able to confirm the correctness of the change here? Thanks!

ping @sharwell for review


docs: Order sidenav items to match user flow

Fixes the order of entries in the side navigation bar to be more closely aligned with the user flow.

Thanks @karthik2804 @vdice


iTorch kernel crashes.

Having trouble with 'lzmq' I think. Tried a lot of reinstalling a such. (Mac OSX Yosemite V10.10.3)
[I 14:41:38.538 NotebookApp] Kernel started: 8d658bc6-e9bc-4db2-beb0-db3335488f4c
Torch 7.0  Copyright (C) 2001-2011 Idiap, NEC Labs, NYU
/Users/jmcdonald/torch/install/bin/luajit: error loading module 'lzmq' from file '/usr/local/lib/lua/5.1/lzmq.so':
dlopen(/usr/local/lib/lua/5.1/lzmq.so, 6): Symbol not found: _luaL_setfuncs
Referenced from: /usr/local/lib/lua/5.1/lzmq.so
Expected in: dynamic lookup
stack traceback:
[C]: at 0x010225ae80
[C]: in function 'require'
/usr/local/share/lua/5.1/itorch/IOHandler.lua:12: in main chunk
[C]: in function 'require'
(command line):1: in main chunk
[C]: at 0x0102229320

this is always problematic if you have two torch installs. you are never sure what library you linked against.
I strongly suggest that you remove the lua/torch version that seems to be installed in /usr/local/

I can remove the the /usr/local/lib/lua but when I run the torch install it just puts it right back.

hmmm, that makes no sense. How are you installing torch? Are you using instructions from the website? torch.ch/docs/getting-started.html#_

essentially I think, https://github.com/torch/ezinstall

if I run the install script suggested on torch.ch after removing /usr/local/lib/lua it just installs a ~/torch/install/lib/lua and gives the same error just in the new directory

once you've done a global install (because you used instructions from  https://github.com/torch/ezinstall ), lots of additional files get installed that might just conflict with the local install.
Use this script to clean your global install, then reinstall it with instructions from torch.ch:
https://github.com/torch/ezinstall/blob/master/clean-old.sh

Same story:
[I 17:18:10.580 NotebookApp] Using MathJax from CDN: https://cdn.mathjax.org/mathjax/latest/MathJax.js
[I 17:18:10.627 NotebookApp] Serving notebooks from local directory: /Users/jmcdonald/work
[I 17:18:10.627 NotebookApp] 0 active kernels
[I 17:18:10.627 NotebookApp] The IPython Notebook is running at: http://localhost:8888/
[I 17:18:10.627 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[I 17:18:16.219 NotebookApp] Creating new notebook in
[I 17:18:17.024 NotebookApp] Kernel started: 376c5d6b-03e5-4c14-bd05-1c5e5386fbbf
Torch 7.0  Copyright (C) 2001-2011 Idiap, NEC Labs, NYU
qlua: error loading module 'lzmq' from file '/Users/jmcdonald/torch/install/lib/lua/5.1/lzmq.so':
dlopen(/Users/jmcdonald/torch/install/lib/lua/5.1/lzmq.so, 6): Symbol not found: _zmq_has
Referenced from: /Users/jmcdonald/torch/install/lib/lua/5.1/lzmq.so
Expected in: dynamic lookup
stack traceback:
[C]: at 0x010bef11d0
[C]: at 0x010bf4c4b0
[C]: in function 'require'
...cdonald/torch/install/share/lua/5.1/itorch/IOHandler.lua:12: in main chunk
[C]: in function 'require'
[string "arg={'/Users/jmcdonald/.ipython/profile_defau..."]:1: in main chunk

now you seem to have two versions of ZeroMQ installed on your machine....

it's a different error message if you notice.

I see. I now have a working install
I did a bunch of stuff and at this point Im too bonked to figure out how to explain or abbreviate the steps I took so here is a bash history vomit:
'brew uninstall zmq'
'cd ~/torch; ./install.sh'
'curl -s https://raw.githubusercontent.com/torch/ezinstall/master/clean-old.sh | bash'
'curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash'
'rm /usr/local/include/zmq.h'
'curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash'
'rm -rf ~/torch/'
'git clone https://github.com/torch/distro.git ~/torch --recursive'
'cd ~/torch; ./install.sh'
'source ~/.profile'
'brew link --overwrite --dry-run zeromq'
'brew link --overwrite zeromq'
'luarocks install lzmq'
'rm -rf ~/torch/'
'curl -s https://raw.githubusercontent.com/torch/ezinstall/master/clean-old.sh | bash'
'curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash'
'git clone https://github.com/torch/distro.git ~/torch --recursive'
'cd ~/torch; ./install.sh'
'source ~/.profile'

Sorry about this whole mess. I added a big warning to the readme of ezinstall so that one does not install torch using install-all by mistake and instead goes to the website.
https://github.com/torch/ezinstall/commit/7b8ab167f7c2650ce438d64a088c7df80dfa13a9

I think I might have messed it up by installing dependancies with 'brew'

Thanks for sticking around to help!


Illegal reflective access by org.apache.ivy.util.url.IvyAuthenticator (file:sbt-launch.jar) to field java.net.Authenticator.theAuthenticator

(See the guidelines for contributing, linked above)
steps
Run sbt
problem
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.ivy.util.url.IvyAuthenticator (file:/usr/local/sbt/bin/sbt-launch.jar) to field java.net.Authenticator.theAuthenticator
WARNING: Please consider reporting this to the maintainers of org.apache.ivy.util.url.IvyAuthenticator
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
expectation
No WARNING
notes
sbt version: 1.0.3

Duplicate of https://github.com/sbt/sbt/issues/3676.
This will be fixed in 1.0.4.


SettingsService

Sponge could use a "Settings Service", where all of the (non-permission) settings for a player are stored.
Example 1
Essentials for Bukkit's /sethome permissions are very ugly:
/addperm Notch essentials.sethome.multiple.20
Sponge can do better with a "SettingService":
/setting Notch someplugin.sethome.amount 150
Example 2
Currently plugins manage their prefixes in their own code.
config/someplugin/permissions.conf:
users {
  Notch {
    prefix: "[God]"
    permissions: ...
  }

  ...
}

It would be nice to have this:
/setting Notch sponge.chat.prefix = "[SettingsServiceYay]"
A settings service would greatly improve plugin interoperability.

Sponge already supports this to a certain extent with option subject data, essentially key-value option pairs like you are suggesting.

Could you give usage examples for the two cases above please?

It looks like Player is a SubjectData, and not OptionSubjectData.

Yeah, player is only a Subject, not an OptionSubject. @zml2008 any thoughts?

@CrystalMageX If you have an OptionSubject, you could use it as follows:
OptionSubjectData data = subject.getSubjectData();
subject.getOption(SubjectData.GLOBAL_CONTEXT, "my.chat.prefix")
data.setOption(SubjectData.GLOBAL_CONTEXT, "my.chat.prefix", "hello")

@gratimax I am not familiar with OptionSubject, but it seems like it is restricted to the class String.
This restriction is a problem, becuase although simpler objects like Vector3ds can be serialized into a string, more complex objects such as entire chests full of items will make this impractical, if not impossible. (don't ask me why I would put my backpack plugin's data there, eventually it will be necessary, like in the next case)
It's nice to have Settings inside a Service so plugin developers could change them to their liking. Let's say I have a plugin named "Payout" that gives all players the kit of items defined in io.github.crystalmagex.examples.payout.loot.amount. Suppose there is another plugin on my server called "RegionSettings" which is like the actual plugin WorldGuard, that "flags" settings in regions instead of protecting them. Now I have regions for two cities "London," and "New York."
It would be convenient to use this SettingsService to configure my "Payout" plugin to give players, say, diamond blocks in New York, and stacks of gold ingots in London, according to a custom variable that cannot be hardcoded in SpongeAPI, once some crazy server owner decides to give out things, instead of in a certain city, give things out on a certain weekday, like Iron on Monday, and Redstone on Friday.

@CrystalMageX IMO those plugin should either register a Service themselves or use their events or APIs to exchange those information. Because otherwise you have no type safety and are always check for a region a player is in an push it to the SettingsService and no other plugin cares at all. And in the end the settings service should even persist all those data causing constant IO.
No thank you.
Use your own specialized Service, listen to the other plugins events or just ask the plugin directly for that value only when you need it.
Sorry for maybe sounding a bit harsh.
PS: If your region plugin contributes to the Context calculation of the perm plugin you can just fetch the current active contexts from the subject and use them to do your stuff. Subject#getActiveContexts() : Set<Context>

@CrystalMageX I agree with you that there needs to be some way of configuring arbitrary key/value settings on permission subjects, since it is so useful. My thinking is something along these lines:
SubjectOption<Text> myChatPrefix = SubjectOptions.of(Text.class, "my.chat.prefix");
subject.get(myChatPrefix); // Optional<Text>
subject.set(myChatPrefix, Texts.of(...));

Depending on how to resolve conflicts with specific subject keys, it's possible that APIs like Vault aren't even needed -- there would be some agreed-upon standard for options that plugins could use. Hopefully this also resolves @ST-DDT's type safety concerns.
Maybe @gabizou has some input here, this sort of use case might fit better for custom data? The only problem is that there's a difference between Subject and ValueContainer, and it bothers me that there's a big intersection  between the Data API and permissions APIs for this use case.

@gratimax:
Why not just:
subject.get(Text.class, "some.key")
Signature:
<T> Optional<T> get(Class<T> clazz, String key)

@gratimax @ST-DDT It turns out that subject.get(Class<T> clazz, String key) is not necessarily required, but the workaround is quite ugly and hacky.
The workaround is as follows:

Create a configuration, but set the source, and sink to some memory buffer.
Register some type loaders with Configurate.
Get a node, named "data", and set the Object into that node.
Get a node, named "type", and set it to the Object's class.
Save the configuration into the buffer.
Extract the characters of that buffer, and construct a String with them.
Put the String into an OptionSubjectData, and set it into something.

Limitations
Even with the above workaround, we still need somewhere to put the OptionSubjectData, and the resulting code will be very ugly.

@ST-DDT That's a good question. I'm fine with the API you suggested as well and considered it. I mainly wanted a special class because it would allow registration like so:
registry.register(mySettingKey);
// might return false or something if there's a conflict with an existing key

And also some constant classes for commonly used options:
public class SpongeSubjectOptions {

  public static final SubjectOption<Text> PREFIX =
    SubjectOption.of(Text.class, "sponge.prefix");
  public static final SubjectOption<Text> SUFFIX =
    SubjectOption.of(Text.class, "sponge.suffix");

}

I'm not saying that PREFIX and SUFFIX should be defined as options, but I hope my point is clear. Because subject options are shared between plugins, it might be useful to hold on to an instance that represents the option. This is also more useful than just defining string constants because we expect options to be of a certain type.
@CrystalMageX I agree that the workaround is really ugly. I think that forcing plugins to implement the pattern you described again and again is sort of wasteful. In addition, there don't seem to be many useful alternatives to that pattern, so I don't think it would make the API any more opinionated.
My only concern is that this might already be solved with the data API if your plugin creates a custom manipulator, however that would force plugins to include that manipulator in the classpath. I can't really specify the line between the permissions and data APIs, so I don't really know where it should fall. For now, I'm leaning more toward reworking OptionSubject in the permission API. Here are some thoughts on the steps forward:

Make User an OptionSubject, or remove OptionSubject and OptionSubjectData and their methods to Subject and SubjectData
Add a SubjectOption api or simple string/type API.

If we ever make User an OptionSubject, should we link the permissions with it, making getting the value of permission "someauthor.someplugin.admin" a layer on top of setting "permissions.someauthor.someplugin.admin = true" ?

API 5 will have OptionSubject and Subject as one so the initial thoughts is easily settable and acheivable.


The conversation may disappear under multiple models.

Bug Report
Important Notes

Before submitting a bug report: Please check the Issues or Discussions section to see if a similar issue or feature request has already been posted. It's likely we're already tracking it! If you’re unsure, start a discussion post first. This will help us efficiently focus on improving the project.

Collaborate respectfully: We value a constructive attitude, so please be mindful of your communication. If negativity is part of your approach, our capacity to engage may be limited. We’re here to help if you’re open to learning and communicating positively.  We appreciate your time and ask that you respect ours.

Contributing: If you encounter an issue, we highly encourage you to submit a pull request or fork the project. We actively work to prevent contributor burnout to maintain the quality and continuity of Open WebUI.

Bug reproducibility: If a bug cannot be reproduced with a :main or :dev Docker setup, or a pip install with Python 3.11, it may require additional help from the community. In such cases, we will move it to the "issues" Discussions section due to our limited resources. We encourage the community to assist with these issues. Remember, it’s not that the issue doesn’t exist; we need your help!

Note: Please remove the notes above when submitting your post. Thank you for your understanding and support!

Installation Method
I install it by Docker Compose, my docker-compose.yaml is
version: '3.8'  # 或者您选择的其他版本

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "<IP_ADDRESS>:3000:8080"
    volumes:
      - open-webui:/app/backend/data
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      OPENAI_API_BASE_URLS: xxx
      OPENAI_API_KEYS: xxx
volumes:
  open-webui:

Environment

Open WebUI Version: v0.4.4

Ollama (if applicable): 0.4.4

Operating System: Windows11

Browser (if applicable): Chrome 130.0.6723.117

Confirmation:

[x] I have read and followed all the instructions provided in the README.md.
[x] I am on the latest version of both Open WebUI and Ollama.
[ ] I have included the browser console logs.
[ ] I have included the Docker container logs.
[x] I have provided the exact steps to reproduce the bug in the "Steps to Reproduce" section below.

Expected Behavior:
I am currently trying to evaluate the output results of multiple models. However, after engaging in several rounds of conversation (more than three), when I double-click on one of the conversations, the others disappear. Then, when I click on other areas (such as conversations, blank spaces, or like buttons), the previously disappeared conversations reappear.
Actual Behavior:
same obove
Description
Bug Summary:
[Provide a brief but clear summary of the bug]
Reproduction Details
Steps to Reproduce:

Add multiple models, at least two.
Engage in at least three rounds of conversation.
Double-click on one of the conversations in the second round.
Now, you will notice that the last round of conversation has disappeared.
Then, if you double-click on other areas, such as conversations or buttons, the previously disappeared conversations will reappear.

https://github.com/user-attachments/assets/ae6afc8d-1ec6-4a5c-8c7d-a0e816ec5f84
Logs and Screenshots
Browser Console Logs:
Docker Container Logs:
[Include relevant Docker container logs, if applicable]
Screenshots/Screen Recordings (if applicable):
Video in Reproduction Details section.
Additional Information
[Include any additional details that may help in understanding and reproducing the issue. This could include specific configurations, error messages, or anything else relevant to the bug.]
Note
If the bug report is incomplete or does not follow the provided instructions, it may not be addressed. Please ensure that you have followed the steps outlined in the README.md and troubleshooting.md documents, and provide all necessary information for us to reproduce and address the issue. Thank you!

The situation shown in the video exists with my own configuration. I just tested it under a new volume without any custom configurations, only configuring the OpenAI proxy and key, and the same issue occurs.

Intended behaviour here.

Can I disable this feature? Sometimes, I just want to like a specific conversation, but whenever I click on a conversation, it removes the others. I find this behavior a bit unfriendly.


Message Bay Area leaders about HackingEDU

I have messaged everyone about the Hacking EDU hackathon!
The next task is hackedu/hackedu#364

Accidently re-opened, closed it again.


DeterministicGymDomain not consistently comparing Discrete space elements

🐛 Bug
IMO DeterministicGymDomain comparison of Discrete spaces elements is not consistent:
if isinstance(space, gym.spaces.box.Box):
return (e1 == e2).all()
elif isinstance(space, gym.spaces.discrete.Discrete):
return e1 == e2
There could be more than 1 elements in Discrete so why don't we use .all() as well? I get errors with Discrete(2), but not with Discrete(1) or Box of 2 elements
To Reproduce
Steps to reproduce the behavior:

Try to solve a DeterministicGymDomain  that implements observation space as Discrete(2)
Solve the same DeterministicGymDomain  implementing observation_space as Discrete(1)
Solve the same DeterministicGymDomain  implementing observation_space as Box of 2 elements

Only with Discrete(2) the following error is raised:
lib\site-packages\skdecide\hub\domain\gym\gym.py", line 1019, in _get_next_state
if self._are_same(
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Expected behavior
Should work with Discrete spaces of more than 1 elements.
Environment
PyTorch version: 1.13.1+cpu
Is debug build: False
CUDA used to build PyTorch: None
ROCM used to build PyTorch: N/A
OS: Microsoft Windows 10 Enterprise
GCC version: Could not collect
Clang version: Could not collect
CMake version: Could not collect
Libc version: N/A
Python version: 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] (64-bit runtime)
Python platform: Windows-10-10.0.19041-SP0
Is CUDA available: False
CUDA runtime version: No CUDA
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA
HIP runtime version: N/A
MIOpen runtime version: N/A
Versions of relevant libraries:
[pip3] numpy==1.23.5
[pip3] scikit-decide==0.9.6
[pip3] stable-baselines3==0.11.1
[pip3] torch==1.13.1
[conda] Could not collect
Skdecide version: 0.9.6

Closing this, I misunderstood how Discrete spaces work...


add d.ts to package.json

might be whats missing to make the d.ts-files be included in the npm package?

Oups sorry, I didn't see this and already published a version with the missing files.

But thanks anyways :)


Conform doc comments to TSDoc spec (experiment)

This is just an experiment to see what it'd be like to conform to the TSDoc spec. The main change is the requirement of a dash after the parameter name, which the plugin complains about (however, their parser is lenient and doesn't need it; I wish the lint didn't complain, see https://github.com/microsoft/tsdoc/issues/220).
Their ESLint plugin is thankfully not too slow to add:
tsdoc/syntax                                     |   267.625 |     1.8%

The generated TS lib files would also need to be updated, but we don't lint those as they come from the DOM generator.

Thanks bot for pinging everyone... 😠


Define a base-uri Content Security Policy meta tag

We received a security report highlighting that a malicious user could potentially perform a Host header cache poisoning to cache a malicious value in the  <base> tag. After analysis, we concluded that this behaviour would be a variation on a Request Hostname Forgery which we have historically considered to be server misconfiguration.
While discussing the issue with the reporter, it was suggested that we should consider adding "base-uri" Content-Security-Policy to further mitigate this attack vector.
Read CSP: base-uri on Mozilla Dev Docs for more details.
The TLDR is:
<meta http-equiv="Content-Security-Policy" content="base-uri 'self'" />
<--
   Because of the above meta tag, browsers will not want to honour the
   base tag if the page was not serve from "https://evil-hacker.net/"
-->
<base href="https://evil-hacker.net/" />

In theory, we could add that meta tag by default and it should work in the vast majority of cases. Otherwise, we could encourage devs to enable it for themselves as a security best practice.

What would happen if you had defined CSP via this meta tag and e.g. via .htaccess or vhost config? Which takes precedence?

I think it definitely has to be configurable if we do include it by default. I also think it's a good thing to have, though would probably have to be disabled by default if not introduced in a major release.
In the meantime adding documentation about it to our security best practices doc would be a good step.

Labelling as enhancement for now until/unless we rule out adding some code implementation.


Untested Workflow mockup.

I have created some files interfaces to implement a workflow functionality.
I am really new to Angular so I didn't try to make any changes to the backend..
I did create a PluginController, with a method GetAllAvalableWorkflows. That returns a list of WorkflowInfo.
I did add a workflow executer in the Collect.. methos.
So if you have time check it out.. it may be a good thing to implement.
Regards!
PS Auto merge is laying. :)

Hi @eriksimonic,
Interesting. And thank you. I'll give it a closer look when I find the time. From the looks of it, I do fear it gets a little complex for devs in terms of extending the back office. But I'll give it some thought for sure.
You do know about the Form Editor events, right? Otherwise you can read about them here. For the time being those are used for custom workflow extensions. You could configure your workflows on the content item that contains the form using standard Umbraco functionality. Hava a look at this code sample:
using System.Web;
using FormEditor;
using FormEditor.Events;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Web;

namespace Site.FormEditor
{
	public class FormEditorEvents : ApplicationEventHandler
	{
		protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
		{
			FormModel.BeforeAddToIndex += FormModelOnBeforeAddToIndex;
			FormModel.AfterAddToIndex += FormModelOnAfterAddToIndex;
		}

		private void FormModelOnBeforeAddToIndex(FormModel sender, FormEditorCancelEventArgs formEditorCancelEventArgs)
		{
			var requestedContent = GetRequestedContent();
			if(requestedContent == null)
			{
				return;
			}

			if(requestedContent.GetPropertyValue<bool>("FormEditor_Workflow_DoThisThing"))
			{
				// do this thing before the form submission is added to the index
			}
		}

		private void FormModelOnAfterAddToIndex(FormModel sender, FormEditorEventArgs formEditorEventArgs)
		{
			var requestedContent = GetRequestedContent();
			if(requestedContent == null)
			{
				return;
			}

			if(requestedContent.GetPropertyValue<bool>("FormEditor_Workflow_DoThatThing"))
			{
				// do that thing after the form submission is added to the index
			}
		}

		private IPublishedContent GetRequestedContent()
		{
			if(UmbracoContext.Current.IsFrontEndUmbracoRequest)
			{
				return UmbracoContext.Current.PublishedContentRequest.PublishedContent;
			}
			var id = HttpContext.Current.Request.Form["_id"];
			int contentId;
			if(id != null && int.TryParse(id, out contentId))
			{
				return UmbracoContext.Current.ContentCache.GetById(contentId);
			}
			return null;
		}
	}
}

Yes I checked the event, and I thought of this approach to..
but it would make sense to have this integrated in the property editor.
I don't think that the implementation is much complicated, as you need to create an class that extends FromWorkflow... nad implement the action you would like to accomplish.. that's all. Very similar haw you implement an workflow in a MS CRM
basically not much more complicated as creating custom validation or something else :)
For the time being, I will implement the functionality as suggested.
Thank you for a great FormEditor.

@kjac
I did implement the change, but the approach is unusable when used in a Macro. AsFormModel does not expose IPuclishedContent

Hmmm I actually had a feeling you might encounter that issue. I'll see what I can do about it, probably add the content ID or the content itself to the event args.
I'm releasing a new version tomorrow (probably) so it'll get to this shortly thereafter.

I did create a patch to address this issue. Just check and if it is ok marge and release :)
EventArgs wont do it as all other methods will fail .. basically the FromModel is unusable as only the collectdata is using a predefined IPucshedContent, my fix I think fixes this.

Closing this for now. Maybe there will be time to pick this up in the future, if more people request it.


Add multi_asset output names to metadata

multi_assets require you to specify the outputs in the mutli_asset decorators. We have some multi_assets that output dozens of assets so we'll need a way to look up table names by multi_asset name.
We could add a "multi_asset" field to our resource metadata so we can construct multi_asset outputs. Something like this:
eia_assets = load_assets_from_modules([eia860, eia923])

@multi_asset(
    ins={
        asset_key.to_python_identifier(): AssetIn()
        for eia_asset in eia_assets
        for asset_key in eia_asset.asset_keys
    }
    outs={resource.name: AssetOut() for resource in Package.from_multi_asset("eia_transform").resources}
)
def eia_transform(**eia_transformed_dfs):
    ...

The raw EIA
I implemented thePackage.get_etl_group_tables() method which returns the table names for a given etl group. ETL groups mostly align with multi assets. The EIA raw tables have not been added to the metadata so the table names are list manually in the pudl.extract.eia module. Also, the raw and intermediate EIA assets are using the fs_io_manager. We'll need to add these tables to the metadata before using the SQLiteIOManager so we can preserve  dtypes.


Saved Models, tf.train.Saver

Firstly, let me just say that I love this project, the code is so easy to read and understand, and it blends two things I really wanted to experiment with!
I'm getting to the stage where I want to save/restore model variables after training. I notice that you have a saved_model folder with a .ckpt file for the karpathy game, but I do not see any way to load it using the current notebook.
I've read up on tf.train.Saver, and have tried to use its save and restore functions with partial success (my q_network's weights seem to get restored fine, but the target_q_network's weights do not). Do you have a version of the karpathy_game notebook that was used to create/restore your saved model? If not, could you please advise on what I should keep in mind when setting up tf.train.Saver() and using the save/restore methods?
(EDIT: As is pretty typical for me, I asked this prematurely - I figured out my mistake after a little more fiddling with the code. I had initialised the Saver before the controller was set up, so of course it couldn't save all the variables used by the controller... Sorry!)

Glad to hear that you figured it out! What is your project about?

For now I've just been making my own simulation (a simplified kind of 'asteroids' game, built off of the karpathy game simulation), which has been pretty fun. The plan is to get some practice tweaking neural network hyper-parameters to allow agents to learn to deal with more and more complex environments.
Eventually I also want to modify the deep Q controller in other ways in order to understand it better and see what effects certain changes have on the rate of learning and on how complex the agent's strategies can get. I'm still pretty inexperienced when it comes to neural networks (and this is my first project experimenting with tensorflow), so mostly I'm just trying to get my head around how tensorflow works and how DQN is implemented. I'm also watching the continuous branch with interest, will probably be experimenting with that once I'm satisfied with my discrete deep Q experiments.

Sounds awesome, do you have a demo/video I could run? I am curious to see what your simulation looks like.
btw. be aware that continuous branch is not yet functional! ;-)

My fork of the project has a functional notebook for the asteroids game (albeit with some bugs I need to sort out before I can say that simulation's finished). I wanted to have a directional agent (like in Karpathy's javascript DQN example) and no walls, so the camera is always focused on the hero (I've also got an option to have a fixed camera, but the hero's sight lines can't see across a wall to the other side right now). Here's a gif: http://imgur.com/4NsgRyQ
Yeah, I remember you mentioning in another issue that the continuous branch wasn't functional yet. It'd be really cool to have an implementation of that though, I'd love to help if I can (once I'm more familiar with tensorflow and I've experimented a bunch with the discrete version...)


chore(ci): move starknet_mempool_node dep to root toml

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#274
#273
#272  👈
#271
#270
#269
#268
#267
#266
#265
#264
#263
#262
#261
#260
#259
#258
#257
#256
#255
main-v0.13.2

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @dorimedini-starkware and the rest of your teammates on  Graphite


test

this seems dubious

I'm learning. So some things may not seem right.


docs: delete docs folder

docs folder is out of date/inconsistent with the current version of RxUI, deleting it to avoid confusion and misconceptions.
https://github.com/reactiveui/documentation/issues/5
What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
docs
What is the current behavior? (You can also link to an open issue here)
docs/ in main repo are out of date
https://github.com/reactiveui/documentation/issues/5
What is the new behavior (if this is a feature change)?
no more docs/
Does this PR introduce a breaking change?
no
Please check if the PR fulfills these requirements

[x] The commit follows our guidelines: https://github.com/reactiveui/reactiveui#contribute
[ ] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

Other information:

We are :fire: the documentation in the main repo as the majority (if not all) content has already been migrated and some concepts have changed since these were written/the documentation has the correct information.
If you are a consumer goto https://docs.reactiveui.net/en/
If you are a producer; we intend to migrate docs away from a seperate repo and back in this repo as a source of truth once they migrate out of the chatoic development phase.


python3-pyqt5: Update to 5.15.1.dev2007111314

Resolves missing source tarball for me.

Signed-off-by: Philip Balister<EMAIL_ADDRESS>

Merged thanks


Block indent large closures and field/method chains

Closes #690
Closes #439
cc #566 (not fixed, but an improvement).
This probably needs some polishing, but I'd like to land it and then weed out the bugs. I'm sure there are edge cases for chains that are now worse. We can probably apply the 'big closure' in other places, though I'm not sure where.
r? @marcusklaas

I can't say that I'm a big fan of this new strategy. In my mind, we shouldn't do block indenting when aligned indentation fits on just as many lines. When it doesn't, why don't we put the entire expression on the next line? We'll get close to the amount of space as with block indentation and the chain will still be easy to follow..

Ok, so with a little more nuance: I'd definitely reconsider the chain formatting heuristics. I think the strategy above would more adequately solve the issues for assignments, but it won't when the chain is part of another expressions, e.g. an argument in a function call. In that case, I think we should

try to format everything on 1 line
compare the number of lines in aligned formatting and tabbed formatting and pick the one with the lowest count, with ties going to alignment
when we do tabbed formatting all links should go on a new line

This would be a compromise between the current strategy and the one you've implemented.
I also see this addresses the alignment of closure bodies. I'm not terribly excited about this either, but from the discussions in the issue tracker it has become clear that this addresses a much encountered issue. I could live with these closure changes.

So, my reasoning for going with block indenting for chains is as follows:

all things being equal I still prefer visual indenting. But,
if we block indent closures, then visual indentation of chains looks awful, and I don't see a way to solve that. I think this is common enough that we can't ignore it.
there are a few other situations where visual indenting leads to bad rightwards drift
therefore we must use block indenting some of the time
I'd rather use it all of the time, since I don't feel it looks a lot worse, I think the consistency is worth some detriment to the aesthetics.

As for not putting a new line before the first child in the chain, it just seemed to look OK and save us some space. See examples here, I think no option is great, so we may as well choose the most compact.
I think tabbed will always be more compact then visual, no? So there doesn't seem to be any point to step 2. Step 1 falls out in the wash (From my understanding of the chain code, we always try to do one line if we can). So the only change left is 3, put the newline in. I'm amenable to that if you like - I think no newline is marginally better, but don't feel strongly.

Good points. Some thoughts:

I agree that block indented closures look terrible in visually indented parents. However, I would rather move the entire expression to block level than just the second argument. This to me looks jarring:

let looooooooooooooooooooooooooooooong_name = some_function_call(yada, yada).foo()
    .bar;

if we're being consistent: will we opt out of visual indentation of function call arguments later? When large closures are placed in them, the same issue arises.
what exactly is the issue with rightward drift? Is it aesthetically unsatisfying to have code be indented deeply, or is compactness (number of lines) an issue? I've always understood it to be the latter, but from the discussion I'm not sure any more.

I guess my focus is not so much on visual vs block indentation, but more about aligning the links (the dots, if you will). Block indentation is okay in my book if we can make sure that it's easy to keep track of all the seperate links.

How would you solve the example?
let looooooooooooooooooooooooooooooong_name = some_function_call(yada, yada)
    .foo()
    .bar;
// or
let looooooooooooooooooooooooooooooong_name =
    some_function_call(yada, yada)
        .foo()
        .bar;

(assuming some tight framing)
I don't think function args have the same problem. Partly because by convention, closures are nearly always passed last. Partly because the problem with chains is that a closure appears as an arg to a chain item (2 levels deep) vs with functions where they are one level deep
The problem with rightward drift for me is that we get into situations where we have really bunched up code because our budget gets down to 20 or 30 chars. The compactness is secondary (for me) and aesthetics are pretty subjective, I don't mind the aesthetics of rightward drift, but some do.

100% (provided it wouldn't fit one line)
let looooooooooooooooooooooooooooooong_name =
    some_function_call(yada, yada)
        .foo()
        .bar;

I fully share your concern with rightward drift. The reason I've been pushing for these compactness tests is that they're good indicators of bunched up code. If something fits in as many lines visually indented as it does with block indentation, its inner code is almost surely formatted properly.

@marcusklaas I removed the last commit, so we no longer move the first child in the chain on to the first line. This gives us
let looooooooooooooooooooooooooooooong_name = some_function_call(yada, yada)
    .foo()
    .bar;

I'd be happy to leave the rest for a follow-up, i.e., getting to:
let looooooooooooooooooooooooooooooong_name =
    some_function_call(yada, yada)
        .foo()
        .bar;

In particular, since this will add an extra line, which I'm not sure if it is really necessary.

I'm still not convinced this is ideal, but I guess it's an improvement overall. I may do a pull request with tweaks at some point.
Last request for this PR: could we reuse the old chain tests with a visual indent option?
r+ with the extra tests


x/net/http2: test interaction of Server concurrent read/write with 100-continue

I had this in an old local dev branch, never completed:
 func (sc *serverConn) writeFrame(wm frameWriteMsg) {
        sc.serveG.check()
+
+       // http2 handlers can conccurently read and write.
+       // If they already wrote headers, ignore a 100-continue
+       // header generated by the reader part.
+       println(fmt.Sprintf("Frame write for %v of type %T", wm.stream, wm.write))
+       switch wm.write.(type) {
+       case *writeResHeaders:
+               wm.stream.wroteHeaders = true
+       case write100ContinueHeadersFrame:
+               if wm.stream.wroteHeaders {
+                       sc.scheduleFrameWrite()
+                       return
+               }
+       }
+

The http2 Server supports an http.Handler concurrently reading the request body while the response body is also being streamed.
But because the Go http servers have always automatically sent 100-continue headers in response to "Expect: 100-continue" in requests, there's a potential bug in Go's http2 server where the automatic HEADERS frame (with header field :status=100) gets sent AFTER the handler has already started writing, if separate goroutines are reading & writing.
Or not. But I don't think there's a test or precautions in the code about it. We might be getting lucky from some other layer.
Investigate. Low priority, though, since handlers don't typically do this, and people don't really use 100-continue.

@bradfitz Punt to Go 1.8?

I will either finish everything or punt everything in the next two days before I disappear for a month. This one I'm still curious about and is easier to test now that https://go-review.googlesource.com/#/c/23235/ for #13851 is ready.

Confirmed that this is a bug.
I wrote this test:
// golang.org/issue/14030
func TestExpect100ContinueAfterHandlerWrites(t *testing.T) {
        const msg = "Hello"
        const msg2 = "World"

        doRead := make(chan bool, 1)
        defer close(doRead) // fallback cleanup

        st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
                io.WriteString(w, msg)
                w.(http.Flusher).Flush()

                // Do a read, which might force a 100-continue status to be sent.
                <-doRead
                r.Body.Read(make([]byte, 10))

                io.WriteString(w, msg2)

        }, optOnlyServer)
        defer st.Close()

        tr := &Transport{TLSClientConfig: tlsConfigInsecure}
        defer tr.CloseIdleConnections()

        req, _ := http.NewRequest("POST", st.ts.URL, io.LimitReader(neverEnding('A'), 2<<20))
        req.Header.Set("Expect", "100-continue")

        res, err := tr.RoundTrip(req)
        if err != nil {
                t.Fatal(err)
        }
        defer res.Body.Close()

        buf := make([]byte, len(msg))
        if _, err := io.ReadFull(res.Body, buf); err != nil {
                t.Fatal(err)
        }
        if string(buf) != msg {
                t.Fatalf("msg = %q; want %q", buf, msg)
        }

        doRead <- true

        if _, err := io.ReadFull(res.Body, buf); err != nil {
                t.Fatal(err)
        }
        if string(buf) != msg2 {
                t.Fatalf("second msg = %q; want %q", buf, msg2)
        }
}

And it results in:
=== RUN   TestExpect100ContinueAfterHandlerWrites
--- FAIL: TestExpect100ContinueAfterHandlerWrites (0.03s)
        transport_test.go:1963: connection error: PROTOCOL_ERROR
FAIL
exit status 1

(where line 1963 is the second read....)
So we are sending a bogus 100 continue mid-data.

/cc @mholt

:+1: Enjoy your vacation!


Implement node add command

          While `solo node refresh` is useful, but we need to allow adding a new node (e.g. support `solo node add`).

solo state should maintain a list of all members so that we can generate config.txt when provisioning a new node or refreshing a node.
solo node add flow:

Use helm chart to deploy a new pod
Setup the new node (with correct config.txt)
Send config.txt and public keys to all nodes
Send freeze transaction to all nodes across all clusters
Wait for 2/3 majority of nodes to FREEZE.
Restart/Recycle all node (systemctl restart network-node, for deterministic image it would be to kill the pod).

Originally posted by @leninmehedy in https://github.com/hashgraph/solo/issues/96#issuecomment-1970199272

:tada: This issue has been resolved in version 0.25.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Physical Properties: Magnetic permeability units

I think this statement is potentially quite confusing:
The correct SI units for magnetic susceptibility are (A/m)/(A/m). However, it is commonly expressed as a unitless quantity.
http://em.geosci.xyz/content/physical_properties/magnetic_permeability/magnetic_permeability_units.html
(A/m) / (A/m) is unitless. Is there another point trying to be made here? Otherwise, I think this should be revised to simply state that Magnetic susceptibility is unitless
thoughts @fourndo, @dccowan ?

SI units for susceptibility are (A/m)/(A/m). This is another way of re-enforcing the fact that it is the magnetization/field. We write it as unitless out of convenience. This was something Randy was adamant about when I was writing up my thesis.


lua commands remain undefined on Windows

nvim --version:

NVIM v0.5.0-418-g87d892afa
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3

nvim-lsp version(commit hash): Not sure, latest from vim-plug as per today

:checkhealth result

health#nvim_lsp#check
========================================================================
  - ERROR: Failed to run healthcheck for "nvim_lsp" plugin. Exception:
    function health#check[21]..health#nvim_lsp#check, line 2
    Vim(lua):E5108: Error executing lua ...pData\Roaming\nvim\plug\nvim-lsp\lua\nvim_lsp/health.lua:7: attempt to call field 'make_config' (a nil value)

(snipped the rest, python 2 and 3 providers present and working)

What language server(If the problem is related to a specific language server): I tried only  pyls_ms as the others require npm/mkdir
Operating system/version: Windows 10 build 1809
Terminal name/version: I'm using nvim-qt
$TERM: n/a

How to reproduce the problem from neovim startup

Install nvim-lsp through vim-plug
Install dotnet core runtime
:LspInstall pyls_ms
:LspInstallInfo

Actual behaviour
See screenshot, it tries to find/install the DLL in a temorary location. This directory remains empty.

I can pass settings and call nvim_lsp#setup() but it seems it remains undefined:
E117: Unknown function nvim_lsp#setup().
scriptnames shows that the plugin is loaded:

Expected behaviour
Installs the pyls_ms language server

So I did some extra tests.
Apparently the :LspInstall is not completely working for windows.
Also, I cannot call nvim_lsp#setup() from init.vim, which seems to be normal (as the docs recommend using the lua configuration).
Added this to init.vim:
lua<<
    require'nvim_lsp'.pyls_ms.setup{}
.

When I now open a python file I get the same error message as in #136 .

I added the microsoft python language server, as I mainly develop on linux/mac we agreed at the time to merge without windows support. I can help debug this a bit; essentially all LspInstall does is fetch the nupkg with curl and extract it. If you check in the cache directory you listed, do you see the files propely extracted? The other thing to check is if dotnet exec MicrosoftPythonLanguageServer.dll works in that directory.

Hi,
The install dir remains empty. I tried to run some of the commands in the script by hand and it seems like the curl call is failing because windows' curl command is a wrapper for Invoke-Webrequest that takes very different (non-unix) arguments,
In this order:

get_latest_pyls() returns nil as the plain curl call returns a status rather than data.
(curl %s).Content seems to give the right output in powershell, but somehow when I pass this to io.popen in the script, it doesn't return any content. I guess my lua isn't good enough to find out why.
The curl command to get the nupkg fails as -fLo is unrecognized and should be curl %s -Outfile %s
Expand-Archive fails because it will only take files with .zip extension and uses -DestinationPath instead of -d. Renaming to a zip file works.

I can make it work like this if I supply the version by hand:
curl https://pvsc.azureedge.net/python-language-server-stable/Python-Language-Server-win-x<IP_ADDRESS>.nupkg -Outfile C:\Users\***\AppData\Local\Temp\nvim\nvim_lsp\pyls_ms/pyls_ms.zip
Expand-Archive -Force C:\Users\***\AppData\Local\Temp\nvim\nvim_lsp\pyls_ms\pyls_ms.zip -DestionationPath C:\Users\***\AppData\Local\Temp\nvim\nvim_lsp\pyls_ms\
dotnet exec C:\Users\***\AppData\Local\Temp\nvim\nvim_lsp\pyls_ms\Microsoft.Python.LanguageServer.dll

It would all be much easier and probably succeed at once if the 'unix' curl command, but it seems that in PowerShell, there isn't a convenient way to override this.

Thanks for the detailed writeup, I just added get_latest_pyls() recently but didn't test it on Windows. For now, I can manually add separate download/extracting logic under the windows option. Once you've added manually downloaded and extracted it, is everything else working?

Yes it works fine with the following config:
lua<<
    require'nvim_lsp'.pyls_ms.setup{
    cmd = {"dotnet", "exec", "C:/Users/jwy/AppData/Local/Temp/nvim/nvim_lsp/pyls_ms/Microsoft.Python.LanguageServer.dll"}
}
.


feat: Implement MySQL functions and procedures.

Fixes https://github.com/DanCardin/sqlalchemy-declarative-extensions/issues/85#issuecomment-2311372645

Pull Request Test Coverage Report for Build<PHONE_NUMBER>5
Details

170 of 180 (94.44%)  changed or added relevant lines in 17 files are covered.
No unchanged relevant lines lost coverage.
Overall first build on dc/mysql-routines at 90.854%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/sqlalchemy_declarative_extensions/dialects/mysql/procedure.py
31
35
88.57%

src/sqlalchemy_declarative_extensions/dialects/mysql/function.py
50
56
89.29%

Totals

Change from base Build<PHONE_NUMBER>2:
90.9%

Covered Lines:
3351

Relevant Lines:
3644

💛  - Coveralls

Follow up question: Because MySQL doesn't have the same conceptual model for "schema" as postgres, would it be prudent to automagically make schema inferred from metadata?


Lock grunt-contrib-connect to the last version that supports npm 0.10

Version 1.0.1 has a breaking change for npm 0.10, but 1.0.0 works.

lgtm


[Bug] Entities are named after the hexadecimal configuration ID

Detailed description
Hello, all of the entities created by this integration have entity_ids with the hexadecimal configuration ID, for example the create voucher button, it's entity_id will be something like button.abcd1234_create. This makes it quite difficult to determine what this button belongs to and it's more typical to have the entity ids be something more like button.device_name_entity_name, so with that create button, something like button.site_name_create_voucher.
I think (but haven't tested to verify) that this is happening because of things like this: https://github.com/ufozone/ha-unifi-voucher/blob/main/custom_components/unifi_voucher/entity.py#L46 where you are providing the device name using the title of the config entry, which IIRC is the hexadecimal ID of the config entry. It would probably be better to have this name be some descriptive text.  I would recommend something like ${SITE_ID}_${WLAN_NAME} if a wlan name has been provided or ${SITE_ID} if no wlan name has been provided.
What version of the integration has the issue?
v1.4
What was the last working version of the integration?
No response
What version of Home Assistant Core has the issue?
core-2024.12.1
What was the last working version of Home Assistant Core?
No response
Which version of UniFi Network Application is running?
8.6.9
Has UniFi Network Application been recently updated?
No
What type of installation of UniFi Controller are you running?
Dream Machine
Diagnostics information
config_entry-unifi_voucher-01JERWTT6164Y5ZDCVZE9X37XW.json
Logs
No response
Screenshots
No response
Additional information
No response

Looking into the code a bit, the issue is actually here https://github.com/ufozone/ha-unifi-voucher/blob/main/custom_components/unifi_voucher/entity.py#L41
You don't need to set the entity_id value like that, Home Assistant will auto generate an entity_id based on the entity type, device name and entity name for you. Using the auto-generated entity_ids will align better with what Home Assistant users expect, and it will allow the functionality to have the entities renamed when the device is renamed to work.
I tested removing that one line and I now get entity_ids like the following button.${SITE_ID}_create_voucher, which is much easier to understand what it is when reading it, for example, in an automation, as opposed to something like button.abcde123_create (what's it creating, what does it belong to, lots of questions arise when I read that entity_id outside of the context of the integration panel).

Thank you for your detailed analysis.
You have correctly recognized where the entity_id is set. This was necessary because the auto-generated entity_id was causing problems.
Unfortunately I can't reconstruct it anymore, because I came across it before version 0.1. Anyway, for the HA Config Enrty we need a unique ID in the UniFi universe to be able to identify the Config Entry again for updates and co. The string that seems cryptic to you is the Site ID returned by your UniFi Controller. Not pretty, but functional and more unique than the site or WiFi name.
There were problems with auto-generated entity_id, but not with a fixed one. Interestingly, you can now simply rename the entities according to your own wishes without getting problems. Is that perhaps a solution for you?
Due to the continuous awesome enhancements of Home Assistant, everything becomes more configurable via UI. Most users already no longer come into contact with the classic entity ids. Your suggestion - which I understand 100% from an IT nerd and Monk point of view - would bring any side effects or impacts into the project. Deal?


CGDataProvider is, but should not be, an NS/CFData.

CGDataProviderCopyData returns another CGDataProvider masquerading as a CFData.
CGDataProvider is an Objective-C class in an otherwise C framework.
CGDataProvider confounds teh debugger, which knows it is an NSData (but not really, so it shows 0 bytes)
CGDataProvider cannot hash like a normal NSCFData, making it useless for operations requiring hashing.
CGDataProvider does not support streams.
CGDataProvider doesn't have a CFTypeID since it's not a CFType.

Adding TODO in the merge from develop into CGD2D; UIPasteboard.mm:397.
No SHA1 to reference right now.


Fixes glTF loading bug, adds verifyRender specs for ModelExperimental

This PR fixes a bug that was introduced in https://github.com/CesiumGS/cesium/pull/9763 that broke loading of glTF models with external buffers when loaded from a path.
Additionally, this PR adds a show property to ModelExperimental - this is required to add verifyRender specs.
Here is a local Sandcastle to test. The Instancing models have external buffers.

Thanks for the pull request @sanjeetsuhag!

:heavy_check_mark: Signed CLA found.
:grey_question: CHANGES.md was not updated.

If this change updates the public API in any way, please add a bullet point to CHANGES.md.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.
[ ] Works (or fails gracefully) in IE11.

Thanks @sanjeetsuhag for the quick fix and better tests!


Upload the README File

Hey @TheStoic42 I created the repo, but I could really use help with crafting a better READt4E. Notice is that I created #


chore(deps): CVE-2024-37890 force ws resolution to 8.17.1 [1.3]

Description
Corresponding PR: https://github.com/janus-idp/backstage-showcase/pull/1728
Which issue(s) does this PR fix

Fixes #?  https://issues.redhat.com/browse/RHIDP-2733

PR acceptance criteria
Please make sure that the following steps are complete:

[ ] GitHub Actions are completed and successful
[ ] Unit Tests are updated and passing
[ ] E2E Tests are updated and passing
[ ] Documentation is updated if necessary (requirement for new features)
[ ] Add a screenshot if the change is UX/UI related

How to test changes / Special notes to the reviewer

/test e2e-tests


Feature/SWEHY-15

Resolves the following issues:

#1
#2
#3

Changelog
Added

SWEHY-15: New setting to disable/enable create account checkbox.
SWEHY-15: New setting to toggle password mail sender.
SWEHY-15: New setting to configure email template for password mail sender.

@Zaahed after testing i'm getting the following error:
TypeError: Vendic\HyvaCheckoutCreateAccount\Model\Config::getNewPasswordTemplate(): Return value must be of type string, null returned

Could you set a default value for the new password template?

Done

@glevhen  could you do the final testing?


Improve response to loose of sync

If an user changes an attribute of the configuration that does not send an event to the server and then it updates the config file their first action (if done via the web) will disappear.
To reproduce:

Create the .dothub.repo.yml file
Update the repository description
Change anything in the .dothub.repo.yml file
You will see that the change you made in step 2 will be erased

Sync from current config removed


Graphic

🦙 MegaLinter status: ❌ ERROR

Descriptor
Linter
Files
Fixed
Errors
Elapsed time

✅ CPP
clang-format
53
24
0
0.23s

❌ CPP
cpplint
53

116
1.41s

See detailed report in MegaLinter reports
MegaLinter is graciously provided by


Fixed small syntax bug with BrowserConsoleHandler preventing console …

…output
Replaced commas in send() method when calling generateScript() - this was
preventing any javascript from being output

Done in a bit of a rush as I now have family commitments, you get the idea anyway.

Thanks, I'll pull it in 1.x no worries :)


Bug: Cannot find module @typescript-eslint/parser with @typescript-eslint/parser 6.4.0 and npm workspaces

After upgrading @typescript-eslint/eslint-plugin and @typescript-eslint/parser from 5.60.0 to 6.4.0, I am unable to use eslint-plugin-import anymore due to a hoisting issue (I am using the workspaces feature with npm 9.8.0). This upgrade is the only change.
The error is:
/my-repo/js/packages/pkg-1/src/lib/helpers/my-helper.ts
  1:37  error  Parse errors in imported module 'react': Cannot find module '@typescript-eslint/parser'
Require stack:
- /my-repo/js/node_modules/eslint-module-utils/module-require.js
- /my-repo/js/node_modules/eslint-module-utils/parse.js
- /my-repo/js/node_modules/eslint-plugin-import/lib/ExportMap.js
- /my-repo/js/node_modules/eslint-plugin-import/lib/rules/named.js
- /my-repo/js/node_modules/eslint-plugin-import/lib/index.js
-<EMAIL_ADDRESS>(undefined:undefined)  import/namespace

I am pretty sure it is a similar to what is described at https://github.com/npm/cli/issues/5840. Here are the directory structures:

5.60.0

> find . -type d -name 'parser' -or -name 'eslint-plugin-import' | grep '@typescript-eslint/parser\|eslint-plugin-import'
./node_modules/eslint-plugin-import
./node_modules/@typescript-eslint/parser

6.4.0

> find . -type d -name 'parser' -or -name 'eslint-plugin-import' | grep '@typescript-eslint/parser\|eslint-plugin-import'
./node_modules/eslint-plugin-import
./packages/pkg-1/node_modules/@typescript-eslint/parser

As you can see @typescript-eslint/parser at version 6.4.0 is no longer hoisted in the root node_modules directory, which is preventing eslint-plugin-import from requiring it. From my understanding, the correct way to fix it would be do declare @typescript-eslint/parser as an optional peer dependency of eslint-plugin-import, with something like (as explained here: https://github.com/npm/cli/issues/5840#issuecomment-1310983504):
"peerDependencies": {
  "@typescript-eslint/parser": "*"
},
"peerDependenciesMeta": {
  "@typescript-eslint/parser": {
    "optional": true
  }
}

Does this bug report sound valid to you?

Somewhat - the closing comment you linked to says

This is a bug with a package requiring a dependency not declared in its own package.json.

but that's not actually a bug - it's a thing that this plugin, and other packages, occasionally rely on to function properly, that's always worked.
In other words, the real problem is that the workspaces feature (not just npm's; all of them) incorrectly rely on hoisting modules to share dependencies, and this just isn't intrinsically compatible with the way people need monorepos to interact with node's module algorithm.
Adding a peer dep, even an optional one, is a breaking change, so that's not a change I'm going to make.

I also hit this error while upgrade typescript eslint. In my monorepo, I (also) installed @typescript-eslint/parser at the root to force the hoisting and (I think) that fixed it.
Just wanted to share a possible workaround for others that find their way here.
npm i -D @typescript-eslint/parser # at the root

Thank you @connorjs that sounds like a great workaround!


Elo Rating

Would it be possible to add a feature which make it possible to use the elo rating system?
Seems duable with UCI_LimitStrenght and UCI_Elo
https://github.com/official-stockfish/Stockfish

Added in https://github.com/zhelyabuzhsky/stockfish/pull/58
Thank you )


blueprint 'sensor.other.rss' not found

File "manual_control_rss.py", line 733,
bp = world.get_blueprint_library().find('sensor.other.rss')
IndexError: blueprint 'sensor.other.rss' not found
Platform(s): Ubuntu,
Python version(s): 3.5
Unreal Engine version: 4.22

Hi,
Have you done
make LibCarla.client.rss

and then
make PythonAPI.rss

?

I got the same problem.
@jackbart94
I downloaded the binary (CARALA_0.9.7).  At which folder should I run make?

@kbu9299 all make have to be executed from the folder where you cloned/download the CARLA project.

I got the same problem.
@jackbart94
I downloaded the binary (CARALA_0.9.7). At which folder should I run make?

hello,have you solved this problem?

@sheepwxy
Yes, I could manage to run make from where I cloned Carla as follows:
make LibCarla
make PythonAPI

@kbu9299  Thanks for your reply!  It means.. I should use the source version but no complied version?

@sheepwxy Yes, you need to clone Carla source (not compiled version). For the full compilation, you may also need to download Unreal Engine. In my case, I only tested the compilation for LibCarla and PythonAPI.

@jackbart94   thanks! I will have a try.

@kbu9299  It does help， thanks !

I am also receiving this error.

Hi,
I also still have this problem, even though both make [...].rss were said to have been successful

Same problem here. Can someone please look into this


[DONT MERGE] Cutting branch for release - 0.9.3

This is not needed anymore since we now have 0.10.0.
Closing.


Found markup element with unexpected name 'Routes'

When creating a new Blazor project with Identity and interactivity, the following error is shown in App.razor:
Found markup element with unexpected name 'Routes'. If this is intended to be a component, add a @using directive for its namespace.
Steps to reproduce:

Using dotnet CLI run dotnet new blazor -au Individual -ai true
Open project in VSCode
View App.razor

The project builds and runs just fine, but the error is annoying and confusing to new users.
Adding using command to App.razor does not resolve the issue.
@using Microsoft.AspNetCore.Components.Routing

We're sorry you are running into this.  We likely have a change in the works that should help to resolve this; you can follow the status on https://github.com/dotnet/razor/issues/10547 and we will update it with a VS Code build number when we know what the specific version is.


refactor(modeler): hexagonal architecture

Issue
The code is hard to maintain.
Description
Checklist

Code is easy to understand
No obvious errors or bugs
CI/CD Pipelines did run successfully
Tests were implemented
Documentation was created

Hi @lmoesle
I finished the refactoring of the Miranum Modeler.
I am especially interested what you think of the new structure of the code.
Like, is it clear what it does and easy to follow?
Here is a rough overview of the application:


fix: hotfix update-ocp-tag

this commit fixes the update-ocp-tag task to skip validating empty targetIndex.
PR only necessary in case of prod rollback.

not required to use.


Drawing Improvements

I increased the drawing performance for my own use, I want to share so that others might be able to reap the benefits.
I made these changes because I am using Isometric to dynamically draw moving objects on screen rather than still images. My approach to increase performance was to remove unnecessary items from measuring calculations and drawing. An item is unnecessary if it is out of view of the user.
I deemed an item out of view using 2 methods:

Back-Face culling using the Shoelace formula
Standards bounds detection

A simple example of Back-Face culling can be found in drawing a cube. A cube has 6 sides, but only 3 sides are visible at any given time. Back-Face culling is the process of determining those faces that don't need to be drawn because they would be obscured from view. I implemented this with the Shoelace formula because I find this algorithm elegant, and a simple computation (fast for drawing).
I eliminated unnecessary measure calculations by tracking the current view bounds and if there were any new items to be calculated. The measure calculations will now only be performed if the bounds change, or some change has been made to the item collection being drawn.

Thanks. Will take a look today.

Looks good to me. Would merge it, are you done?

Yes, I am done. If i find any additional ways to improve i can pull request later. Would it be possible you count mention me on the readme as a contributor?
Also, do you have a road-map for features you are thinking of adding for the 1.0 release? I could take a look into helping develop. I really like this library!


[Question]How to integrate swarm with mesos

Hi, I have several questions on integration between swarm and mesos:
First one. how to configure the swarm and mesos to implement the integration? I have a mesos cluster with three master nodes,  and I installed swarm on all master nodes using go get. then I tried to run command:
./swarm manage --cluster mesos zk://<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>/mesos
it responses:
INFO[0000] Listening for HTTP                            addr=<IP_ADDRESS>:2375 proto=tcp
FATA[0000] missing port in address info_0000000025
how can I fix this problem?
Second one, as you know, it also can manage the docker cluster using mesos integrated with marathon/chronos, so what are the advantages of integration swarm with mesos, why do I need to do like this?
hope can get answers quickly, thanks very much >_<

The mesos and swarm integration is in process, it is not merged so ./swarm manage --cluster mesos zk://<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>/mesos won't work as --cluster doesn't exists in swarm yet.
Regarding the "why?" Swarm uses the same API as docker, this means if you are used to the docker cli and if you have tools that works today on top of docker (like fig) they will work on your mesos cluster thanks to swarm.

It's in master


Scrape prices for Australia region in GCE compute driver

Scrape prices for Australia region in GCE compute driver
Description
Update contrib/update_google_prices.py to scrape the price of GCE sizes in the Australia (Sydney) region.
Status

done, ready for review

Checklist (tick everything that applies)

[ ] Code linting (required, can be done after the PR checks)
[ ] Documentation
[ ] Tests
[x] ICLA (required for bigger changes)

Coverage remained the same at 88.861% when pulling 8bfd0a78d68546679ad5bce672507a6f88c8ee07 on fjros:scrape-gce-australia-prices into 605821335f15ee9eeefee826ada55b97c4fd0065 on apache:trunk.

Thanks @pquentin! I wondered the same... Ideally that should be part of either the build pipeline or the release process, but have no idea if that's the case in practice. If not, just let me know and I'll be happy to update pricing.json :-)

👍  thanks @fjros


nixos/mautrix-telegram: fix crash on postgresql database usage

Description of changes
This fixes a crash when using postgres instead of the default sqlite. See diff for the backtrace
Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[X] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[X] Fits CONTRIBUTING.md.

@winterqt for review as you last worked on this module.


Heap use-after-free in fiber_switch

The following input demonstrates a crash:
f = Fiber.new do
  f = Fiber.new do
  end
end

f.resume
GC.start

f.resume

ASAN report:
==53995==ERROR: AddressSanitizer: heap-use-after-free on address 0x61900000f080 at pc 0x0001092862f8 bp 0x7fff57562d10 sp 0x7fff575624c0
READ of size 16 at 0x61900000f080 thread T0
    #0 0x1092862f7 in __asan_memcpy (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x4d2f7)
    #1 0x10889ba5a in fiber_switch fiber.c:198
    #2 0x10889e715 in fiber_resume fiber.c:244
    #3 0x108804f65 in mrb_vm_exec vm.c:1304
    #4 0x1087fa07f in mrb_vm_run vm.c:854
    #5 0x10882d649 in mrb_top_run vm.c:2705
    #6 0x1088fea85 in mrb_load_exec parse.y:5780
    #7 0x1088ff3d5 in mrb_load_file_cxt parse.y:5789
    #8 0x1086954c6 in main mruby.c:227
    #9 0x7fffbbbba234 in start (libdyld.dylib:x86_64+0x5234)

0x61900000f080 is located 0 bytes inside of 1024-byte region [0x61900000f080,0x61900000f480)
freed by thread T0 here:
    #0 0x10928f356 in wrap_free (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x56356)
    #1 0x10878dfeb in mrb_default_allocf state.c:56
    #2 0x108710499 in mrb_free gc.c:269
    #3 0x10878fe5c in mrb_free_context state.c:226
    #4 0x108711332 in obj_free gc.c:777
    #5 0x10871a59b in incremental_sweep_phase gc.c:1038
    #6 0x108718e3c in incremental_gc gc.c:1104
    #7 0x108714e06 in incremental_gc_until gc.c:1120
    #8 0x108715207 in clear_all_old gc.c:1146
    #9 0x10870f3d1 in mrb_full_gc gc.c:1212
    #10 0x1087167b3 in gc_start gc.c:1324
    #11 0x108804f65 in mrb_vm_exec vm.c:1304
    #12 0x1087fa07f in mrb_vm_run vm.c:854
    #13 0x10882d649 in mrb_top_run vm.c:2705
    #14 0x1088fea85 in mrb_load_exec parse.y:5780
    #15 0x1088ff3d5 in mrb_load_file_cxt parse.y:5789
    #16 0x1086954c6 in main mruby.c:227
    #17 0x7fffbbbba234 in start (libdyld.dylib:x86_64+0x5234)

previously allocated by thread T0 here:
    #0 0x10928f520 in wrap_realloc (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x56520)
    #1 0x10878e005 in mrb_default_allocf state.c:60
    #2 0x10870f1b8 in mrb_realloc_simple gc.c:202
    #3 0x10870f89e in mrb_realloc gc.c:216
    #4 0x108710323 in mrb_malloc gc.c:237
    #5 0x10889d7d1 in fiber_init fiber.c:94
    #6 0x1087ef552 in mrb_funcall_with_block vm.c:445
    #7 0x1086d2769 in mrb_instance_new class.c:1430
    #8 0x108804f65 in mrb_vm_exec vm.c:1304
    #9 0x1087fa07f in mrb_vm_run vm.c:854
    #10 0x10882d649 in mrb_top_run vm.c:2705
    #11 0x1088fea85 in mrb_load_exec parse.y:5780
    #12 0x1088ff3d5 in mrb_load_file_cxt parse.y:5789
    #13 0x1086954c6 in main mruby.c:227
    #14 0x7fffbbbba234 in start (libdyld.dylib:x86_64+0x5234)

SUMMARY: AddressSanitizer: heap-use-after-free (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x4d2f7) in __asan_memcpy
Shadow bytes around the buggy address:
  0x1c3200001dc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1c3200001dd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1c3200001de0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1c3200001df0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x1c3200001e00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x1c3200001e10:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c3200001e20: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c3200001e30: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c3200001e40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c3200001e50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c3200001e60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==53995==ABORTING
Abort trap: 6

This issue was reported by https://hackerone.com/ssarong

Sorry, I hit the submit button too soon. The description is updated with the full details now.

Dinko Galetic & Denis Kasak (https://hackerone.com/dgaletic) reported a similar case. Given the similar input, it's possible that the root cause is the same:
Fiber.new {
  Fiber.new {
    Fiber.new {}.resume
  }.resume while 1
}.resume


Integrating variables and ad hoc filters

Hi! First thank you, this is a great plugin. I'm using grafana for some admin tasks and this is very useful.
For my needs I forked and modified your code.
In the editor I allow to add other kind of parameters: "variable parameters" that will be resolved before the request. Also I allow to use the variable notation in the label of the button. "This is the label for $variable"
In the panel I'm resolving the variables configured in the editor: first I look for ad hoc filters (I use them in elasticsearch) then for regular variables like text box variables.
The use case form me is the ability to invoke an endpoint with current dashboard filters and variables.
What do you think? would you be interested in a pull request?

I can totally see the use case for Grafana variables.
I'm more than happy to accept PRs - I created this plugin for my very simple use case but happy to extend it

Variables in the Button text should work now

Awesome, I was just wondering if this was in the works. Any ETA on when this would make it into a release?

It is in the current release if you install it manually as described on the home page.
Installing via the Grafana web site itself is waiting for this: https://github.com/grafana/grafana-plugin-repository/pull/756

Using templateSrv should address the use case - have to re-check the PR if I missed something

From your release notes, this adds support for variables in the following ways:

Variable support via $variableName in

URL
parameter name & value
Button label

Any chance of adding support in the payload as well? Should I open a different enhancement request?

That shouldn't be too hard actually. I will give it a shot

Hey sorry to reopen this, I'm trying to get the email address of the current user, and send it as a header using the button Webhook plugin, but when I send the header with a value of ${__user.email} I get a numeric ID, same as ${__user}, expected behaviour?
This is on Grafana cloud.


Filter ignored container files in file provider

What does this PR do?
Before this change - the agent would collect all possible files to tail and check if it was above the open files limit. However later on, the file launcher would follow symlinks to verify container files were indeed valid and ignore them if they were not. The problem with this is that not all collect files were actually tailed. If the open file limit is reached, that means that files that will be ignored are counting against the open file limit and thus preventing valid files from being tailed. This can commonly happen when a node restarts.
This happens because the pod id stays the same, but the container ID changes on restart. So when the agent looks for pod logs, the old (stale) log file should be ignored because it's symlink doesn't resolve to an active container.
This change moves the container shouldIgnore check into the file provider so invalid files are never provided to the launcher.

Motivation
Bug fix
Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Use minikube to start a local K8s cluster
Deploy the agent from the helm chart (container collect all disabled)
deploy a container that produces logs with logs annotations such that the agent can detect the container and collect logs.

k run bash --image=bash \
    --annotations ad.datadoghq.com/bash.logs='[{"source":"TESTSRC", "service":"TESTSVC"}]' \
    --command -- bash -c 'i=0; while true; do echo "HELLO $i at" $(date); i=$((i+1)); sleep 1; done'

check the agent status page. The agent should show something like this:

    - Type: file
      Identifier: 2a543994e7163e2abf41e3d88fd08fc7e0ce816fb078f3e46cbb3522a1982b6d
      Path: /var/log/pods/default_bash_530ca8c6-9ab6-4b47-8a16-b10de9ce8ece/bash/*.log
      Service: TESTSVC
      Source: TESTSRC
      Status: OK
        1 files tailed out of 1 files matching
      Inputs:
        /var/log/pods/default_bash_530ca8c6-9ab6-4b47-8a16-b10de9ce8ece/bash/0.log

NOTE:   1 files tailed out of 1 files matching and 0.log

restart minikube minikube stop && minikube start - wait for the pods to come back up.
check agent status again. you should see something like:

    - Type: file
      Identifier: 0a334f4322d72aae829aaca8105b5f47d1627f4a4d36f70d97d47e79d95353a9
      Path: /var/log/pods/default_bash_530ca8c6-9ab6-4b47-8a16-b10de9ce8ece/bash/*.log
      Service: TESTSVC
      Source: TESTSRC
      Status: OK
        1 files tailed out of 2 files matching
      Inputs:
        /var/log/pods/default_bash_530ca8c6-9ab6-4b47-8a16-b10de9ce8ece/bash/1.log

NOTE: 1 files tailed out of 2 files matching and 1.log. The agent should only be tailing the new file.
Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

The CI failures are unrelated.