Did y'all just ruin this?

Required Information
Class: BSM
Level: 33
Craftsmanship: 173
Control: 177
CP: 275
Recipe Name: Bas-relief Steel Saw
Recipe Level: 30
Solver Seed: (Look at the top of the Execution Log on the Solver page)
Expected Behaviour
Solver shows up
Actual Behaviour
No button to solve this recipe.
Steps To Reproduce
no buffs, food or anything.  Just plug in parameters and solver is missing.  Was working an hour ago.

I'm not the dev, but it works fine for me
/ac "Inner Quiet" <wait.2>
/ac "Basic Touch" <wait.3>
/ac "Innovation" <wait.2>
/ac "Standard Touch" <wait.3>
/ac "Standard Touch" <wait.3>
/ac "Great Strides" <wait.2>
/ac "Standard Touch" <wait.3>
/ac "Innovation" <wait.2>
/ac "Great Strides" <wait.2>
/ac "Basic Synthesis" <wait.3>
/ac "Standard Touch" <wait.3>
/ac "Basic Synthesis" <wait.3>
/echo Macro #1 complete <se.14>


[docs] Using in nodejs without Polymer CLI / server

Hello,
i have desktop App project in NWjs (Chromium + Nodejs, like Electron). Is some best practise use lit-element in my project?
My probles are:

relative path to node_modules: https://github.com/Polymer/polymer/issues/5238
i don't need Polymer-CLI/any other "server" #37

Solve is relative paths, because project context is chrome-extension://, example chrome-extension://node_modules/lit-element/lit-element.js

@katejeffreys I came across this issue via the Try LitElement page at https://lit-element.polymer-project.org/try.
The StackBlitz embed does not render, nor does it render on the StackBlitz website. I multiple console errors:

Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ...

So I tried to take the example code to CodePen:

<my-element></my-element>

// js
import 'https://unpkg.com/<EMAIL_ADDRESS>import 'https://unpkg.com/<EMAIL_ADDRESS>import {
  LitElement,
  html
} from<EMAIL_ADDRESS>
class MyElement extends LitElement {
  render() {
    return html`

Hello world! From my-element

    `;
  }
}

customElements.define('my-element', MyElement);

document.body.appendChild(
  document.createElement('my-element')
);

But then I get this error in the console:

Uncaught TypeError: Failed to resolve module specifier "lit-html". Relative references must start with either "/", "./", or "../".

How can I try this in the browser? Is there a hosted version of LitElement that allows for native ES module importing? I'm using Chrome stable (73.0.3683.103) on macOS.

lit-element needs to be implicitly imported as a module, correct? As in:
https://unpkg.com/lit-element@2.1.0/lit-element.js?module

@hyperpress Thanks for responding. If I add ?module to that path in the import statement, I no longer get the error I pasted before.
Now I get the following error:

Uncaught TypeError: Cannot read property 'Object' of undefined
at wrapper.js:15
at webcomponents-bundle-index.js:52

@jsejcksn Info on the first error and a related issue on the StackBlitz repo. Just need to add an exception in Chrome content settings to permit cookies for [*.]stackblitz.com and all will be well :)
CodePen also needs to do cookies, so if you can't control them because enterprise settings, maybe try one of the other browser options listed in the examples section of the README? The JS Bin one should work.

For the second error, this is to do with import-ing the polyfills vs including them via


[EventHubs] Failed auth on mgmt request crashes on OSX

If the response status code in a management request (eg. get_properties) is a 401 (i.e. auth failure), then the client crashes with a seg fault.
This only appears to happen on MacOS.
It is likely an issue in the underlying uamqp, and will be tracked there as well.

Turned out to be a known issue in logging on OSX


kernel: sem: Remove constant expression

limit is unsigned int and K_SEM_MAX_LIMIT is defined as UINT_MAX this means that limit will never be greater K_SEM_MAX_LIMIT.

Believe it or not, I wrestled a bit with this one

Same - unsigned int should be 32-bit everywhere, right?


Fix CI Builds

This PR refactors the CI config script to only use pip and to use the Travis deployment process rather than doctr. It also simplifies the build script substantially and adds tests for Python 3.7 and 3.8.
I've also removed the conda environment file in favor of a more simple requirements.txt.

Pull Request Test Coverage Report for Build 135

0 of 0   changed or added relevant lines in 0 files are covered.
206 unchanged lines in 5 files lost coverage.
Overall coverage decreased (-40.8%) to 2.178%

Files with Coverage Reduction
New Missed Lines
%

pydrad/configure/util.py
2
0%

pydrad/configure/tests/init.py
5
0%

pydrad/configure/filters.py
24
0%

pydrad/configure/configure.py
76
6.76%

pydrad/configure/tests/test_configure.py
99
0%

Totals

Change from base Build 133:
-40.8%

Covered Lines:
11

Relevant Lines:
505

💛  - Coveralls


[AMBARI-22614] Fix some unit tests

What changes were proposed in this pull request?

How was this patch tested?

Unit tests.
Installed cluster via blueprint as smoke test.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/403/
Test FAILed.
Test FAILured.

Before:
[ERROR] Tests run: 5122, Failures: 39, Errors: 231, Skipped: 37

After:
[ERROR] Tests run: 5124, Failures: 16, Errors: 49, Skipped: 37


Wrong sorting of numerical columns (natural sorting)

Release number or git hash: v4.0.0-beta.1
Web browser version and OS: any

Steps to reproduce

Open categories.html
Remove the c in the category name    const cats = (new Array(numCats)).fill(0).map((_, i) => `${i + 1}`);

Open demo
Group by categorical column

Observed behavior

Category order
1, 10, 11, 12, 13, ..., 2, 20, 21, ..

Expected behavior
Categories should be sorted naturally:
1, 2, 3, ..., 9, 10, 11, 12, 13, ..., 19, 20, 21, ...

A use case would be the chromosome number.
In case the category contains words the order should be sorted by alphabet (which is already works).

do you have an sort the groups the by the categorical attribute?

Valid point! I forgot that. Now this works, but I found another bug. 😉

Group categorical column
Sort groups by...
Select ascending -> groups are resorted
Cancel dialog -> the groups remain sorted

Expected behavior
The group sorting should be reset when the user cancels the sort group by dialog.

In the following there is another broken example for the group sorting. In this case LineUp v4.0.0-beta.1 is integrated in tdp_core.

The group sorting does not make sense at all.

The group sorting does not make sense at all.

it does, it is exactly the order of the defined categories, i.e., the colors order matches the color order within the histogram.

Yes, that might be. But as a user I would expect that the categories are ordered (naturally) by numbers. Could you change this please?

Yes, that might be. But as a user I would expect that the categories are ordered (naturally) by numbers. Could you change this please?

as a developer of the lineup instance you intentionally set the order of the categories to this value. Why can't tdp_core just sort the categories to the desired ordering before handing it to LineUp?. Changing the LineUp logic will break the original problem of this issue, since it then will sort 1,10,2,... cause they are all strings and the natural order of strings is alphabetically.

Thanks for the explanation. I get your point now and found some code in Ordino (which I was not aware of) that sorts, e.g., the chromosome beforehand. Since the code is open source, I post the links here. Maybe that helps somebody later.
The database returns a sorted, but not naturally sorted array of chromosomes:
{
  "type": "categorical",
  "label": "chromosome",
  "column": "chromosome",
  "categories": [
    "1",
    "10",
    "11",
    "12",
    "13",
    "14",
    "15",
    "16",
    "17",
    "18",
    "19",
    "2",
    "20",
    "21",
    "22",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "MT",
    "X",
    "Y"
  ]
}

When getting the categories (i.e., chromosomes) we are sorting them manually again:
categoricalCol('chromosome', toChromosomes(find('chromosome').categories), {label: 'Chromosome'}),

The custom sort function toChromosomes() looks like this:
function toChromosomes(categories: string[]) {
  const order = new Map<string, number>();
  for (let i = 1; i <= 22; ++i) {
    order.set(String(i), i);
  }
  order.set('x', 23);
  order.set('y', 24);
  order.set('mt', 25);

  categories.sort((a, b) => {
    const an = a.toLowerCase();
    const bn = b.toLowerCase();
    const ai = order.get(an);
    const bi = order.get(bn);
    if (ai === bi) {
      return an.localeCompare(bn);
    }
    if (ai == null) {
      return 1;
    }
    if (bi == null) {
      return -1;
    }
    return ai - bi;
  });

  return categories.map((d, i) => ({name: d, label: d, value: i}));
}

I will test your PR for the bug I posted above. Then we can close this issue.


Add server-bridge support in conf

Description
[Describe what this change achieves]
Issues Resolved
[List any existing issues this PR resolves]
Check List

[ ] All tests pass. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/TESTING.MD
[ ] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable

Thanks!
LGTM 👍
@flaccid over to you :)

@damacus looks potentially fine, but can someone fix the failed travis stuff related to chef delivery (who ever added that in)?

Don't mind doing that if I get a chance this week
@paulpalamarchuk do you want to give it a go? Drop me a line on sous-chefs slack if you need a hand!

Working on the Travis errors.

Merging and creating issues for the foodcritic failures.


expr doesn't have any help

https://uutils.github.io/coreutils-docs/user/utils/expr.html is empty

Do you want to just copy the description from GNU for these?

no, please use the BSD's wording :)

I have used the same wording from this section expr.rs of code for consistency.
Please let know if any changes need to made the wordings.


Implement GriddedField.from_xarray()

This PR would implement the GriddedField.from_xarray() method. In order for this to work, I had to touch the existing code (see commits):

Because GriddedField.from_xarray() (as does from_nc()) returns a GriddedField instead of GriddedField[1234...], I had to adjust the __eq__ operator to make comparisons work.
Because GriddedField.name corresponds to DataArray.name, I added a data_name attribute in to_xarray() to keep the dataname.

Regarding 1, there might be better solutions (for example not using the base class GriddedField at all) but I didn't want to mess with the code too much.
I'm happy to rework the commits if required.

Thanks for the PR, @jonas-hagen! I will have a look at it tomorrow

Thanks for the comments! I implemented the requested changes (removed .copy() and broke long line).
I think isinstance(other, (self.__class__, other.__class__)) would always be True, so I stick with two comparisons.

Of course you are right about the two comparisons, I missed that the first argument is changed.
I will merge your PR to the master branch, thanks for your contribution! 👍


Allow throwing away all changes instead of uploading them

Description
Vespucci allows throwing away all changes instead of uploading them. iD should too. Yes, after a "are you sure?" screen.
You might say

Just undo undo undo. Voila, no more changes to upload.

But as we see in #10029, there might be no full undo list.
So the user is stuck with changes they can't get rid of unless they upload them, or make a new OSM account.

Wait until #10031 is implemented.

But that is hard to implement, whereas throwing away all changes at once is easy to implement.
So at the Save > Upload / Cancel screen, a third choice "Throw away all these edits" etc. should appear.

as a workaround I usually just press the browser's refresh button

Yes, refreshing will give the You have unsaved changes dialog.
If you pick the big red X you are off the hook.
If you choose instead to "Restore my changes" then you are stuck with them for the rest of your life until you upload them.

Heyy
I have been working on a functionality like you suggested, eventually decided on a discard button next to the save button.
You can see it in action here:
Screencast from 12-12-23 10:52:08 PM IST.webm
Features:
If a user wants to discard all the changes without saving them, they may do so without having to reload the page.
The user if they want can also undo the discard action(which is not possible by reloading).
Also if you have any suggestions feel free to tell me.
Regards

Thanks @Asif-Sheriff !
However:

I think discard is too dangerous an action to have sitting there. Like having a gun in one's house. I think it should only appear when the final save dialog is running...
Wait. You're right. He doesn't want to push Save in the first place. OK, make sure it has a lot of "are you sure?" double confirmations.

The discard button here does not have a confirmation screen so I thought the user might want to undo changes if they discarded them accidentally.
In any case thanks for your input I will wait for admins to take a look at this before I make a PR.


Test using 2 Windows Server 2016 docker containers

I don't think this is done yet, not sure if we can interact with the containers.

CLA signed by all contributors.


About header is missing in the navbar

Description
About header is missing in the navbar
Screenshots

Additional information
No response

@Vanshiii203 Remove Services and shift Testimonials in that place and then add About in place of Testimonials.

@Vanshiii203 Remove Services and shift Testimonials in that place and then add About in place of Testimonials.

Okay!


Load

Hi Madan, this script will upload the files into s3. Please review and let me know what you think.

LGTM. Thanks!


Open up for other providers (e.g., Tibber)

Is your feature request related to a problem? Please describe.
Sort of. Tibber for example offers a list of future prices for the next day by means of a GraphQL API. As far as I understand, this information could be used for this integration too to control charging of an EV.
Describe the solution you'd like
I propose a way to integrate arbitrary energy providers by using an entity as a source for current and future prices. That way any other extension, Node-RED flow, Python script could provide the price data.
Describe alternatives you've considered
Well, the alternative would be to integrate each and every energy provider individually
Additional context
Here's a link to the Tibber API reference docs: https://developer.tibber.com/docs/reference#price

Thanks for the suggestion. Currently, the integration supports two electricty price provider integrations, Nordpool and Energi Data Service.  This covers many countries in northern Europe. Next planned step is to add support of the Entso-e integration (#64), which should extend the coverage to a large part of Europe.
The support of these price integration is done by connecting to entities in these integrations. If I understand your suggestion, you suggest to add entities in this integration that others from the outside could update with price information, right?
One way to do this would be to add

Number entiry : current_price
Text entity: prices_today
Text entity: prices_tomorrow

where the information for the two Text entities could be on the format [{"start": datetime, "value": float},...]
Note that to provide the input to these entties will not be trivial. There will be some effort needed from those who would like to use this way. So I wonder how many will use this, compared to how many will use existing price integrations?

Ah, I see. Thank you very much. I'll try and set it up. I'm seeing a small issue with the EV SOC that I'll need support with. I'll open another issue for this as it is not exactly a feature request or bug report.

It works like a charm, by the way. Thank you!


Add package retry

On occasion the package install fails due to the yum mirror being unavailable:
Aug 20 03:21:38 host-007e8a9e6e94d4737 host-configure[345]: Error executing action `install` on resource 'yum_package[td-agent]'
Aug 20 03:21:38 host-007e8a9e6e94d4737 host-configure[345]: yum-deprecated -d0 -e0 -y install td-agent-2.3.2-0.el7 returned 1:
Aug 20 03:21:38 host-007e8a9e6e94d4737 host-configure[345]:   td-agent-2.3.2-0.el7.x86_64: [Errno 256] No more mirrors to try.

so this PR adds a retry that tries up to 3 times with a 10 second delay.

Sorry for the messy commit log. I merged into my master branch on my fork by mistake. Not enough  :coffee: this morning.


Insecure use of Form Action

Stratos Version

4.4.0
Frontend Deployment type

[ ] Cloud Foundry Application (cf push)
[ ] Kubernetes, using a helm chart
[ ] Docker, single container deploying all components
[ ] npm run start
[X] Other (please specify below)

Backend (Jet Stream) Deployment type

[ ] Cloud Foundry Application (cf push)
[ ] Kubernetes, using a helm chart
[ ] Docker, single container deploying all components
[ ] Other (please specify below)

Expected behaviour
Fully encode all dynamic data from an untrusted source that is inserted into the webpage, to ensure it is treated as literal text and not as a script that could be executed or markup that could be rendered.
Consider the context in which your data will be used, and contextually encode the data as close as possible to the actual output: e.g. HTML encoding for HTML content; HTML Attribute encoding for data output to attribute values; JavaScript encoding for dynamically generated JavaScript. For example, when HTML encoding non-alphanumeric characters into HTML entities, < and > would become < and >.
As an extra defensive measure, validate all external input on the server, regardless of source. Carefully check each input parameter against a rigorous positive specification (allowlist) defining data type; size; range; format; and acceptable values. Regular expressions or framework controls may be useful in some cases, though this is not a replacement for output encoding.
Output encoding and data validation must be done on all untrusted data, wherever it comes from: e.g. form fields, URL parameters, web service arguments, cookies, any data from the network, environment variables, reverse DNS lookups, query results, request headers, URL components, e-mail, files and filenames, databases, and any external systems that provide data to the application. Remember that such inputs may be obtained indirectly through API calls.
For every web page that is returned by the server, explicitly set the Content-Type HTTP response header. This header value should define a specific character encoding (charset), such as ISO-8859-1 or UTF-8. When an encoding is not specified, the web browser may choose a different encoding by guessing which encoding is actually being used by the web page, which would allow a potential attacker to bypass XSS protections.
Additionally, set the httpOnly flag on the session cookie, to prevent any XSS exploits from stealing a user's cookie.
Prefer using a framework or standard library that prevents this vulnerability by automatically encoding all dynamic output based on context, or at least that provides constructs that make it easier to avoid.
For every web page that is returned by the server, explicitly set the Content-Security-Policy HTTP response header, In order to make it significantly more difficult for the attacker to actually exploit the XSS attack.
Actual behaviour
Cross-site scripting (XSS) vulnerabilities arise when an attacker sends malicious code to the victim's browser, mostly using JavaScript. When a web application uses input from a user, it generates it in the output without filtering it. This way an attacker can insert a malicious script to the input, the script will return in the response and will run on the victim's browser.
In particular, sanitization of hazardous characters was not performed correctly on user input.
In reflected attacks, an attacker tricks an end user into sending request containing malicious code to a vulnerable Web server, which then reflects the attack back to the end user's browser.
The server receives the malicious data directly from the HTTP request and reflects it back in the HTTP response. The most common method of sending malicious content is adding it as a parameter in a URL that is posted publicly or e-mailed directly to the victim. URLs that contain the malicious script constitute the core of many phishing schemes, whereby the convinced victim visits a URL that refers to a vulnerable site. The site then reflects the malicious content back to the victim, and then the content is executed by the victim's browser.
Steps to reproduce the behavior
same issue found in few file paths
cfmr-ui\src\frontend\packages\kubernetes\src\kubernetes\services\kubernetes.analysis.service.ts:103
cfmr-ui\src\frontend\packages\store\src\entity-service.ts:64
cfmr-ui\src\frontend\packages\cf-autoscaler\src\features\edit-autoscaler-policy\edit-autoscaler-policy-step4\edit-autoscaler-policy-step4.component.ts:73
cfmr-ui\src\frontend\packages\cloud-foundry\src\shared\components\list\list-types\app\cf-apps-data-source.ts:84
cfmr-ui\src\frontend\packages\core\src\shared\components\list\data-sources-controllers\list-data-source.ts:224-
cfmr-ui\src\frontend\packages\core\src\shared\components\list\data-sources-controllers\list-data-source.ts:253
cfmr-ui\src\frontend\packages\core\src\shared\components\list\data-sources-controllers\list-data-source.ts:256
cfmr-ui\src\frontend\packages\core\src\shared\components\list\data-sources-controllers\list-data-source.ts:271
Log output covering before error and any error statements
Insert log hereCopy

Detailed Description

Insecure use of Form.Action menthod
Context

Possible Implementation

There's no use of forms on the files & lines provided


Add a new Prisma Data Platform section

Even though we're early in the creation of the Prisma Data Platform, we are starting to have some needs for a permanent place in our docs for some of our current functionality.
I went for a concept page, right below our current Prisma Studio section, but please let me know if I messed the taxonomy up. Also I'd love some wording feedback.
Thank you!
This is what it looks like:

Yeah, I think that using the mission statement as a description of the Data Platform tends to make it sound too salesy and abstract, indeed. I'll give it another go.

Made a few small changes, otherwise 👍 look good to me. I just want to check if we should put this in its own section rather than under 'Components'.

I don't mind moving it, I just don't know what the taxonomy is like. I'll leave the decision to you.

I used Niko's nice one-paragraph description of the PDP and it is much simpler now :).
I though that maybe we can leave it in concepts for now. Once we start having more functionality, we can then decide to move it to a separate thing.

I'm merging this now in order to deploy it as I need to the public URL.
Thank you for the help!


LoweringError: Failed in nopython mode pipeline (raise/assert related, caching issue?)

Numba: 0.43.1
Python: 3.7.0
Numpy: 1.16.3
I have run into a strange issue, unfortunately I cannot produce a minimal reproducing example, because the bug appears somehow related to a caching/transient effect.
Namely, I have a somewhat long user function
@jit(nopython=True)
def user_function(many_args):
    # lots

which produces such an error as shown below, but works fine if I turn off the JIT.
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~/.local/lib/python3.7/site-packages/numba/errors.py in new_error_context(fmt_, *args, **kwargs)
    626     try:
--> 627         yield
    628     except NumbaError as e:

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_block(self, block)
    257                                    loc=self.loc, errcls_=defaulterrcls):
--> 258                 self.lower_inst(inst)
    259

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_inst(self, inst)
    399         elif isinstance(inst, ir.StaticRaise):
--> 400             self.lower_static_raise(inst)
    401

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_static_raise(self, inst)
    441         else:
--> 442             self.return_exception(inst.exc_class, inst.exc_args, loc=self.loc)
    443

~/.local/lib/python3.7/site-packages/numba/lowering.py in return_exception(self, exc_class, exc_args, loc)
    162                                        loc=loc,
--> 163                                        func_name=self.func_ir.func_id.func_name)
    164

~/.local/lib/python3.7/site-packages/numba/targets/callconv.py in return_user_exc(self, builder, exc, exc_args, loc, func_name)
    364         if loc is not None:
--> 365             fname = loc._raw_function_name()
    366             if fname is None:

~/.local/lib/python3.7/site-packages/numba/ir.py in _raw_function_name(self)
     62         if defn:
---> 63             return self._defmatcher.match(defn.strip()).groups()[0]
     64         else:

AttributeError: 'NoneType' object has no attribute 'groups'

During handling of the above exception, another exception occurred:

LoweringError                             Traceback (most recent call last)
<ipython-input-1-647b0e2d4c3b> in <module>
----> 1 userland stops at function call

~/.local/lib/python3.7/site-packages/numba/dispatcher.py in _compile_for_args(self, *args, **kws)
    367                     e.patch_message(''.join(e.args) + help_msg)
    368             # ignore the FULL_TRACEBACKS config, this needs reporting!
--> 369             raise e
    370
    371     def inspect_llvm(self, signature=None):

~/.local/lib/python3.7/site-packages/numba/dispatcher.py in _compile_for_args(self, *args, **kws)
    324                 argtypes.append(self.typeof_pyval(a))
    325         try:
--> 326             return self.compile(tuple(argtypes))
    327         except errors.TypingError as e:
    328             # Intercept typing error that may be due to an argument

~/.local/lib/python3.7/site-packages/numba/compiler_lock.py in _acquire_compile_lock(*args, **kwargs)
     30         def _acquire_compile_lock(*args, **kwargs):
     31             with self:
---> 32                 return func(*args, **kwargs)
     33         return _acquire_compile_lock
     34

~/.local/lib/python3.7/site-packages/numba/dispatcher.py in compile(self, sig)
    656
    657             self._cache_misses[sig] += 1
--> 658             cres = self._compiler.compile(args, return_type)
    659             self.add_overload(cres)
    660             self._cache.save_overload(sig, cres)

~/.local/lib/python3.7/site-packages/numba/dispatcher.py in compile(self, args, return_type)
     80                                       args=args, return_type=return_type,
     81                                       flags=flags, locals=self.locals,
---> 82                                       pipeline_class=self.pipeline_class)
     83         # Check typing error if object mode is used
     84         if cres.typing_error is not None and not flags.enable_pyobject:

~/.local/lib/python3.7/site-packages/numba/compiler.py in compile_extra(typingctx, targetctx, func, args, return_type, flags, locals, library, pipeline_class)
    939     pipeline = pipeline_class(typingctx, targetctx, library,
    940                               args, return_type, flags, locals)
--> 941     return pipeline.compile_extra(func)
    942
    943

~/.local/lib/python3.7/site-packages/numba/compiler.py in compile_extra(self, func)
    370         self.lifted = ()
    371         self.lifted_from = None
--> 372         return self._compile_bytecode()
    373
    374     def compile_ir(self, func_ir, lifted=(), lifted_from=None):

~/.local/lib/python3.7/site-packages/numba/compiler.py in _compile_bytecode(self)
    870         """
    871         assert self.func_ir is None
--> 872         return self._compile_core()
    873
    874     def _compile_ir(self):

~/.local/lib/python3.7/site-packages/numba/compiler.py in _compile_core(self)
    857         self.define_pipelines(pm)
    858         pm.finalize()
--> 859         res = pm.run(self.status)
    860         if res is not None:
    861             # Early pipeline completion

~/.local/lib/python3.7/site-packages/numba/compiler_lock.py in _acquire_compile_lock(*args, **kwargs)
     30         def _acquire_compile_lock(*args, **kwargs):
     31             with self:
---> 32                 return func(*args, **kwargs)
     33         return _acquire_compile_lock
     34

~/.local/lib/python3.7/site-packages/numba/compiler.py in run(self, status)
    251                     # No more fallback pipelines?
    252                     if is_final_pipeline:
--> 253                         raise patched_exception
    254                     # Go to next fallback pipeline
    255                     else:

~/.local/lib/python3.7/site-packages/numba/compiler.py in run(self, status)
    242                 try:
    243                     event(stage_name)
--> 244                     stage()
    245                 except _EarlyPipelineCompletion as e:
    246                     return e.result

~/.local/lib/python3.7/site-packages/numba/compiler.py in stage_nopython_backend(self)
    729         """
    730         lowerfn = self.backend_nopython_mode
--> 731         self._backend(lowerfn, objectmode=False)
    732
    733     def stage_compile_interp_mode(self):

~/.local/lib/python3.7/site-packages/numba/compiler.py in _backend(self, lowerfn, objectmode)
    679             self.library.enable_object_caching()
    680
--> 681         lowered = lowerfn()
    682         signature = typing.signature(self.return_type, *self.args)
    683         self.cr = compile_result(

~/.local/lib/python3.7/site-packages/numba/compiler.py in backend_nopython_mode(self)
    666                 self.calltypes,
    667                 self.flags,
--> 668                 self.metadata)
    669
    670     def _backend(self, lowerfn, objectmode):

~/.local/lib/python3.7/site-packages/numba/compiler.py in native_lowering_stage(targetctx, library, interp, typemap, restype, calltypes, flags, metadata)
   1061         lower = lowering.Lower(targetctx, library, fndesc, interp,
   1062                                metadata=metadata)
-> 1063         lower.lower()
   1064         if not flags.no_cpython_wrapper:
   1065             lower.create_cpython_wrapper(flags.release_gil)

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower(self)
    175         if self.generator_info is None:
    176             self.genlower = None
--> 177             self.lower_normal_function(self.fndesc)
    178         else:
    179             self.genlower = self.GeneratorLower(self)

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_normal_function(self, fndesc)
    216         # Init argument values
    217         self.extract_function_arguments()
--> 218         entry_block_tail = self.lower_function_body()
    219
    220         # Close tail of entry block

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_function_body(self)
    241             bb = self.blkmap[offset]
    242             self.builder.position_at_end(bb)
--> 243             self.lower_block(block)
    244
    245         self.post_lower()

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_block(self, block)
    256             with new_error_context('lowering "{inst}" at {loc}', inst=inst,
    257                                    loc=self.loc, errcls_=defaulterrcls):
--> 258                 self.lower_inst(inst)
    259
    260     def create_cpython_wrapper(self, release_gil=False):

~/.local/envs/dylan3/lib/python3.7/contextlib.py in __exit__(self, type, value, traceback)
    128                 value = type()
    129             try:
--> 130                 self.gen.throw(type, value, traceback)
    131             except StopIteration as exc:
    132                 # Suppress StopIteration *unless* it's the same exception that

~/.local/lib/python3.7/site-packages/numba/errors.py in new_error_context(fmt_, *args, **kwargs)
    633         from numba import config
    634         tb = sys.exc_info()[2] if config.FULL_TRACEBACKS else None
--> 635         six.reraise(type(newerr), newerr, tb)
    636
    637

~/.local/lib/python3.7/site-packages/numba/six.py in reraise(tp, value, tb)
    657         if value.__traceback__ is not tb:
    658             raise value.with_traceback(tb)
--> 659         raise value
    660
    661 else:

LoweringError: Failed in nopython mode pipeline (step: nopython mode backend)
'NoneType' object has no attribute 'groups'

File "../../../u/dnelson/python/util/sub.py", line 2566:
    #def get_random_number():
        <source elided>
        if count != num:
            raise Exception('Mismatch.')
            ^

[1] During: lowering "raise <class 'Exception'>('Mismatch.')" at /u/dnelson/python/util/subfind.py (2566)
-------------------------------------------------------------------------------
This should not have happened, a problem has occurred in Numba's internals.

What I cannot understand is this:
If I copy the entire function, paste it just below, and rename, then numba compiles it fine, its runs successfully, and also subsequent calls run ok. However, if I then exit python and restart the interpreter, the original error reappears (with the renamed function, or the original function). Furthermore, the original trick (copying and renaming the function) then no longer works.
The line it throws the error on is valid of course (the raise Exception works fine in JITed code). If I remove this, the error moves to other parts of the function, always assert or raise related. I realize now, if I remove every single such statement from the function, then the error goes away.
It is possible this behavior was introduced between 0.41 and 0.43, as it seems to come about when I did this upgrade, but I am not positive.

Thanks for the report. Without a reproducer this may be difficult to diagnose, however I can speculate... it looks like the problem is here:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~/.local/lib/python3.7/site-packages/numba/errors.py in new_error_context(fmt_, *args, **kwargs)
    626     try:
--> 627         yield
    628     except NumbaError as e:

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_block(self, block)
    257                                    loc=self.loc, errcls_=defaulterrcls):
--> 258                 self.lower_inst(inst)
    259

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_inst(self, inst)
    399         elif isinstance(inst, ir.StaticRaise):
--> 400             self.lower_static_raise(inst)
    401

~/.local/lib/python3.7/site-packages/numba/lowering.py in lower_static_raise(self, inst)
    441         else:
--> 442             self.return_exception(inst.exc_class, inst.exc_args, loc=self.loc)
    443

~/.local/lib/python3.7/site-packages/numba/lowering.py in return_exception(self, exc_class, exc_args, loc)
    162                                        loc=loc,
--> 163                                        func_name=self.func_ir.func_id.func_name)
    164

~/.local/lib/python3.7/site-packages/numba/targets/callconv.py in return_user_exc(self, builder, exc, exc_args, loc, func_name)
    364         if loc is not None:
--> 365             fname = loc._raw_function_name()
    366             if fname is None:

~/.local/lib/python3.7/site-packages/numba/ir.py in _raw_function_name(self)
     62         if defn:
---> 63             return self._defmatcher.match(defn.strip()).groups()[0]
     64         else:

AttributeError: 'NoneType' object has no attribute 'groups'

Since 0.41, Numba has had support for exception locations in exceptions raised from compiled code, these are baked in at compile time. What is happening is that lower_static_raise is being invoked to create a representation of an exception in the compiled code and linecache is producing lines that do contain a def: but for some reason they aren't being matched.
This has puzzled me for some 20 minutes now but I now think I understand what might be causing this looking into the backtrace given, this is present...
    #def get_random_number():
        <source elided>
        if count != num:
            raise Exception('Mismatch.')

when the linecache source is walked looking for a function name to use in the synthesized backtrace, first a cheap match is done for "is there a 'def ' present in a given source line", the commented out line matches this and is returned as the candidate for the function name, this then doesn't match the more expensive regex pattern which tries to extract the function name from the source line because there's a # commenting out the line. I'm not sure that this is the sole cause of the problems you are seeing, but just for now please could you try removing that commented 'def' line and seeing if the code behaves again, if so I'll go fix it :)
Reproducer:
from numba import njit

def foo():
    #def commented_definition()
    raise Exception('aaa')

z = njit(foo)
z()

gives:
    return self._defmatcher.match(defn.strip()).groups()[0]
numba.errors.LoweringError: Failed in nopython mode pipeline (step: nopython mode backend)
'NoneType' object has no attribute 'groups'

File "issue4056.py", line 5:
    #def commented_definition()
    raise Exception('aaa')
    ^

[1] During: lowering "raise <class 'Exception'>('aaa')" at issue4056.py (5)

You are correct, the user function has a commented out, nested function, from an earlier development phase #def get_random_number(): and removing this solves the issue. Thanks!

@dnelson86 thanks for confirming, we'll fix this!

Reminder to fix for 0.44.


Validate CPU and Memory Hot-Plug settings in reconfigure

This validates a number of cases related to reconfigure on powered-on VMs that would lead to sometimes cryptic VMware error messages.
The cases covered are:

Adding CPUs to a running VM that doesn't have CPU hot-add enabled

Removing CPUs from a running VM

Changing the number of cores per sockets on a running VM

Adding memory to a running VM that doesn't have memory hot-add enabled

Removing memory from a running VM

Adding more than the memory hot-add limit to a running VM

https://bugzilla.redhat.com/show_bug.cgi?id=1386843

@gmcculloug is this a good place to do this type of validation?

Yes, I think this makes sense.  @lfu Please review.

Thanks @gmcculloug , added some spec tests and taking out of WIP

Linking another BZ to this PR https://bugzilla.redhat.com/show_bug.cgi?id=1396631

LGTM other than the minor question

This depends on https://github.com/ManageIQ/manageiq/pull/12145 which had a sql migration so setting this to euwe/no

@gmcculloug can this be merged?

It can!  Thanks.


How do I do this

Please how do I know which row is clicked or can I somehow access the values in a row that was clicked.

hey @Yezuz05 sorry, the documentation is a bit incomplete here, the onClick property lets you add an on click handler on your row. You can do :onClick="myMethod" where myMethod is defined as one of the methods in your component:
myMethod(row, index) {
  console.log(row) // this is the row that was clicked
  console.log(index) // this is the index of the row that was clicked.
}

closing. Please re-open if you have more questions.


chore (ci): adopt astral-sh actions

add https://github.com/astral-sh/ruff-action for the style check
update the python setup to use https://github.com/astral-sh/setup-uv

@adamjstewart i removed the --system from uv pip installs -- this are required for the old versions of UV on gh, i think within their action we didn't need it -- could you retrigger the CI?


Separate how signals work for stop vs. restart actions

I have never written Go before, so what I've done may not be very idiomatic (pretty much copied the stop-signal related code), but hopefully it's still useful.
I'm curious what the thought would be on having a general overmind signal {process_name} [signal] command might be (rather than having to track PIDs down)?

Hi,
Could you describe a case where this would be useful?

In my case because I’m using Puma and want to send USR2 for restart and INT to stop (https://github.com/puma/puma/blob/master/docs/signals.md)

In this case, the signal command would be more applicable. The restart command expects a process to exit, but USR2 doesn't stop Puma, so it will break restart behavior.

Hi @DarthSim, thanks, I guess that is what I’m looking for.  A potential request, then, for the ability to add custom signal handlers - such as “overmind reload” - which you can customize the signals for (because Sidekiq takes a different signal than Puma does for a code reload).  That being said, I could probably achieve that via clever use of shell aliases or functions rather than adding more code to Overmind :)

Ok, since we agree here, I'll close this PR. Feel free to open a new one with overmind signal command, this would be a great feature.


Update ERC-4337: typos in documentation files

This pull request contains changes to improve clarity, correctness and structure.
Description correction:
Corrected bunder to bundler
Corrected can then use use to can then use
Corrected get they key to get the key
Please review the changes and let me know if any additional changes are needed.

@drortirosh @remarks Hi! I’ve just submitted a pull request. Could you please review it when you have a chance? I’d appreciate your feedback and any comments. Thank you!

Hi Leo, thanks for the reminder, will approve
On Mon, Dec 9, 2024, 3:30 AM leopardracer @.***> wrote:

@drortirosh https://github.com/drortirosh @forshtat
https://github.com/forshtat Hi! Just wanted to remind you about this
PR. If you have some time, please take a look. Thank you!
—
Reply to this email directly, view it on GitHub
https://github.com/ethereum/ERCs/pull/756#issuecomment-2527663060, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/BGW26BVD6XDMND2QYTXSICL2EV5OTAVCNFSM6AAAAABTEYYP2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMRXGY3DGMBWGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

@leopardracer , we need an approval from : Requires 1 more reviewers from @drortirosh, @forshtat, @kristofgazso, @shahafn, @tjade273, @vbuterin, @yoavw I believe


[Bug]: async engine failure when placing multi lora adapter under load

my current environment:
0.4.2

my bug:

i deployed hermes-2-pro-mistral-7b model with multi lora adapters. after applying a large multi adapter load on it, i started receiving an error stating it couldnt find the location of the stored adapters. any idea why?

important note - the interval in which this error occurs is inconsistent. meaning it sometimes occurs under load of 30RPS (requests per second) applied for 30 minutes, and sometimes can occur under load of 3RPS for 10 seconds

Vllm error code
Error in create_completion
traceback: Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/vllm/lora/worker_manager.py", line 174, in _load_lora
lora = self._lora_model_cls.from_local_checkpoint(
File "/usr/local/lib/python3.10/dist-packages/vllm/lora/models.py", line 303, in from_local_checkpoint
with open(lora_config_path) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/data/adapters/2024-03-28-00-04-12--lgy/adapter_config.json'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/vllm/entrypoints/openai/api_server.py", line 155, in create_completion
generator = await openai_serving_completion.create_completion(
File "/usr/local/lib/python3.10/dist-packages/vllm/entrypoints/openai/serving_completion.py", line 155, in create_completion
async for i, res in result_generator:
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 241, in consumer
raise e
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 234, in consumer
raise item
File "/usr/local/lib/python3.10/dist-packages/vllm/entrypoints/openai/api_server.py", line 155, in create_completion
generator = await openai_serving_completion.create_completion(
File "/usr/local/lib/python3.10/dist-packages/vllm/entrypoints/openai/serving_completion.py", line 155, in create_completion
async for i, res in result_generator:
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 241, in consumer
raise e
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 234, in consumer
raise item
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 218, in producer
async for item in iterator:
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 662, in generate
async for output in self.process_request(
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 780, in process_request
raise e
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 776, in process_request
async for request_output in stream:
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 79, in anext
raise result
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 218, in producer
async for item in iterator:
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 662, in generate
async for output in self.process_request(
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 780, in process_request
raise e
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 776, in process_request
async for request_output in stream:
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 79, in anext
raise result
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 39, in _raise_exception_on_finish
task.result()
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 517, in run_engine_loop
has_requests_in_progress = await asyncio.wait_for(
File "/usr/lib/python3.10/asyncio/tasks.py", line 445, in wait_for
return fut.result()
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 491, in engine_step
request_outputs = await self.engine.step_async()
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 225, in step_async
output = await self.model_executor.execute_model_async(
File "/usr/local/lib/python3.10/dist-packages/vllm/executor/gpu_executor.py", line 117, in execute_model_async
output = await make_async(self.driver_worker.execute_model
File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/vllm/worker/worker.py", line 272, in execute_model
output = self.model_runner.execute_model(seq_group_metadata_list,
File "/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/vllm/worker/model_runner.py", line 713, in execute_model
self.set_active_loras(lora_requests, lora_mapping)
File "/usr/local/lib/python3.10/dist-packages/vllm/worker/model_runner.py", line 825, in set_active_loras
self.lora_manager.set_active_loras(lora_requests, lora_mapping)
File "/usr/local/lib/python3.10/dist-packages/vllm/lora/worker_manager.py", line 137, in set_active_loras
self._apply_loras(lora_requests)
File "/usr/local/lib/python3.10/dist-packages/vllm/lora/worker_manager.py", line 266, in _apply_loras
self.add_lora(lora)
File "/usr/local/lib/python3.10/dist-packages/vllm/lora/worker_manager.py", line 274, in add_lora
lora = self._load_lora(lora_request)
File "/usr/local/lib/python3.10/dist-packages/vllm/lora/worker_manager.py", line 187, in _load_lora
raise RuntimeError(
RuntimeError: Loading lora /data/adapters/2024-03-28-00-04-12--lgy failed
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/vllm/entrypoints/openai/api_server.py", line 155, in create_completion
generator = await openai_serving_completion.create_completion(
File "/usr/local/lib/python3.10/dist-packages/vllm/entrypoints/openai/serving_completion.py", line 155, in create_completion
async for i, res in result_generator:
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 241, in consumer
raise e
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 234, in consumer
raise item
File "/usr/local/lib/python3.10/dist-packages/vllm/utils.py", line 218, in producer
async for item in iterator:
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 662, in generate
async for output in self.process_request(
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 765, in process_request
stream = await self.add_request(
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 553, in add_request
self.start_background_loop()
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 427, in start_background_loop
raise AsyncEngineDeadError(
vllm.engine.async_llm_engine.AsyncEngineDeadError: Background loop has errored already.

Perhaps you should address this issue first:
with open(lora_config_path) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/data/adapters/2024-03-28-00-04-12--lgy/adapter_config.json'

Perhaps you should address this issue first:
with open(lora_config_path) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/data/adapters/2024-03-28-00-04-12--lgy/adapter_config.json'

that is the odd part:

the same deployment has no problem finding the file before stressing it
i manually log in after the issue starts, and the file is indeed there

I think im lacking understanding there, but in the multi lora support i saw multi level cache mentioned. can it be an error where it expelled the adapter from cache and then throws an error before checking the next cache level?


watermark.py list index out of range

When writing a PDF file, I get the following error:
Traceback (most recent call last):
  File "/home/brooksvb/Projects/SpreadsheetCombiner/FormFiller.py", line 33, in <module>
    form.fill({
  File "/home/brooksvb/.local/lib/python3.9/site-packages/PyPDFForm/middleware/wrapper.py", line 361, in fill
    FillerCore().fill_v2(self.stream, self.elements)
  File "/home/brooksvb/.local/lib/python3.9/site-packages/PyPDFForm/core/filler.py", line 283, in fill_v2
    return WatermarkCore().merge_watermarks_with_pdf(
  File "/home/brooksvb/.local/lib/python3.9/site-packages/PyPDFForm/core/watermark.py", line 155, in merge_watermarks_with_pdf
    if watermarks[i]:
IndexError: list index out of range

My code looks like
	form = PyPDFForm2(pdfPath)
	print(form.elements.keys)

	with open(outputPath, 'wb+') as output:
		output.write(
			form.fill({
				'QCredit': '5000.63'
			}).read()
		)
		output.close()

I printed the value of watermarks before the problematic loop in watermarks.py, and it's an empty list [ ].
I changed https://github.com/chinapandaman/PyPDFForm/blob/b3684204bc469ba87547ca90c27ebd41571d1fa1/PyPDFForm/core/watermark.py#L155
to             if i < len(watermarks):, but after this change I get a new error:
Traceback (most recent call last):
  File "/home/brooksvb/Projects/SpreadsheetCombiner/FormFiller.py", line 33, in <module>
    form.fill({
  File "/home/brooksvb/.local/lib/python3.9/site-packages/PyPDFForm/middleware/wrapper.py", line 360, in fill
    self.stream = TemplateCore().remove_all_elements(
  File "/home/brooksvb/.local/lib/python3.9/site-packages/PyPDFForm/core/template.py", line 27, in remove_all_elements
    for j in reversed(range(len(elements))):
TypeError: object of type 'NoneType' has no len()

I did some digging into this and I see that the last page in pdf.pages simply doesn't have an /Annot key.
Any guidance on this issue? I've resorted to trying multiple other PDF libraries for filling forms and have not had luck. The odd thing is I was using this exact form last night to test writing out fields with this library and it worked just fine.

`	form = PyPDFForm2(pdfPath)
print(form.elements.keys)
with open(outputPath, 'wb+') as output:
	output.write(
		form.fill({
			'QCredit': '5000.63'
		}).read()
	)
	output.close()

`
Could you post the PDF form you used for this snippet? Also, what version are you running on?

pip show pypdfform returns
Name: PyPDFForm
Version: 1.0.0
Summary: The Python library for PDF forms.
Home-page: https://github.com/chinapandaman/PyPDFForm
Author: Jinge Li
Author-email: None
License: UNKNOWN
Location: /home/brooksvb/.local/lib/python3.9/site-packages
Requires: pillow, pdfrw, reportlab
Required-by:

This is the pdf
formreformatted.pdf

Thanks for unveiling a major bug in the library. The root cause of your issue is that this PDF form's last page doesn't have any element, which was an edge case the library didn't catch before.
Anyway, I did a fix for it and made a release. If you upgrade the package to the newest version it should work now.

Thank you for the quick response! It seems the new version of the code is not causing any issues for me as of this moment.


Improve TestBlockchainInfo in full_client_test.go

Description
The current TestBlockchainInfo function in full_client_test.go only checks the correctness of  LastHeight and that it contains  BlockMetas but not the contents of it returned BlockchainInfo. To ensure full compliance with the CometBFT RPC specification, we should extend this test to verify all fields in the returned BlockchainInfo.
Steps to Improve

Update the TestBlockchainInfo function to check all fields in the returned BlockchainInfo against the expected values. This includes fields like block_id, block, header, data, evidence, and last_commit.

For each field, add assertions to check if the returned value matches the expected value. Use the assert.Equal function for this.

Run the test to ensure it passes with the new assertions.

Expected Outcome
The TestBlockchainInfo function should now fully validate the BlockchainInfo returned by the RPC call, ensuring it matches the CometBFT RPC specification. https://docs.cometbft.com/v0.38/spec/rpc/

@nashqueue i would like to work on this issue


Question about tackling different layers of thresholds inside an agency

How can we incorporate the fact that there are different types of procurement thresholds.  For example in City of Palo Alto, Public Works contracts can be approved up to $65,000 with an informal bid.  On the other hand any employee can enter into a contract if it's less than $5,000.  And only purchasing managers can sign off contracts informally up to $25,000.
Something to think about.  Maybe we stick to the basics and close this issue.  Totally open for suggestions.

(It's kind of besides the point but both links to Palo Alto are broken.)

That American Legal Publishing website is not set up for the World Wide Web

I think that down the line, we're going to need to look for patterns in purchasing regulations for different governments, and this in turn is going to affect how the database schema.
In the meantime, my suggestion is to add both of these thresholds for record keeping purposes, and then describe them in the "notes" section, if we have them.

identified in issue#21 and added to idea list in feature roadmap wiki page: https://github.com/munirent/openprocure/wiki/Feature-Roadmap#ideas


fix: change return type of isIterable

very minor change
change return type of isIterable util function for better type inference.

Thank you for your contribution 👍
I left a comment
If this part is applied, how about changing other function files as well?
ex) some.ts
 if (isIterable<IterableInfer<A>>(iterable)) {
    return pipe(
      map(f, iterable),
      takeUntil(identity),
      reduce((a, b) => a || b),
      Boolean,
    );
  }

  if (isAsyncIterable<IterableInfer<A>>(iterable)) {
    return pipe(
      map(f, iterable),
      takeUntil(identity),
      reduce((a, b) => a || b),
      Boolean,
    );
  }

I think it is a great idea. :)
I will change other files.

I think it is a great idea. :)
I will change other files.


add multiple weapons to weapon inventory

Sort out what happens when picking up multiple weapons into inventory.

Just measure difference and add more if needed. Good enough for now.


Debugger: list line's source code in addition to its number.

I know I can enter the command list every time I want to see the source code, but it would be much easier if it showed the next line's source code every time I hit n. This behaviour would be similar to pdb debugger in Python. In addition to that, it would also be nice to rerun your last command when hitting <return>.
Is it possible to add this two features?

the single letter l will also show the source code.

agreed that  to run the last command would be useful. Could look into it after mid-november.

I have intentionally not added the "re-run last command" feature when I wrote the debugger because of how many times that had tripped me in gdb :)

I know about the shortcut l, but I still think the first feature would be useful as every time I press n I want to know where in the source code I am. In the current state, I have to press four keys for every new line: n+<return>+l+<return>. In addition to that l prints a lot of context around the current line, so it is not a nice substitute for the first feature.
Thank you for your prompt reply


maint: Add some extra logging to pubsub systems

Which problem is this PR solving?

Add a bit more logging to redis stuff to make it easier to diagnose
Closes #1277

Short description of the changes

Add some logging in pubsub
Delete an unused function

We have the ability to query the config through an endpoint if you specify the debug flag.
What you ask for is possible, but how/why is it different than reading the config files directly? Those are also specified on the command line.

In a chat with @irvingpop he mentioned that it's often a struggle to get the actual config/rules used in a given refinery run, and there's more hopping back and forth with "wait, this doesn't match what you're saying, are you sure this is right?" than they'd like. @irvingpop is that a fair assessment?


Is this repository works with windows 7? windows 10?

Is this repository works with windows 7? windows 10?

Yes.


Add registry mirror env var and import-images bug to 0.6 patch release

Issue #, if available:
Description of changes:
Pull the following changes for to the release branch to cut a patch release:
#639
#641
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: vivek-koppuru
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [vivek-koppuru]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: abhinavmpandey08, vivek-koppuru
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [abhinavmpandey08,vivek-koppuru]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/lgtm


TSC/Intellisense - Cannot use Static method as argument for Decorated method on same class

🔎 Search Terms
static, decorator, method, declaration
🕗 Version & Regression Information

This changed between versions - 5.4.5 and 5.5.4

⏯ Playground Link
https://www.typescriptlang.org/play/?target=9&ts=5.6.2#code/PTAEEkDNQVwZwJYDsDmoAqBlAwgeyZAmugIYBOKApgC6gCimATAAyMCMouZoANrgO6UyAGk4xqAB3GgEcAHQKAUCFABtOgCUNAXQBcoAER0AHpQDG4ygBNQAKRIA3EpjNkEE2gDESCHtd0GoMpg6lp6oGYkSADktCRmZpRwcLyUxgiRPKBW5jzkJNQI+KDRJiQAthJ+0aAARpSQXJQySAiFJDwIAF4FRUhBwRDQ8MjEOPiExORUtAwsjIyc3AAWRMtComa4OaBkMEgpcDAJSXCQMDw8AJ4KcoOqADIA8gDi4QYAsjTL26DTMOVKEhqIdjolkudLldQE5OlYCtZAvdnm99AYABKUS64UAAdS4PCsSMG4H6tVw1GWoEQ1BgvXwcFEyGoWM6cCB7OpP34KSEZC4g2weWSJTKlWqsHZNnqjTIzTaKRyZjyZHpSDuii2B1wfjkyso5AAFABKRSKahXCTNABqHQQ8OoXFAAF5QIbpnB9FErqptMaXQA+Oq4HUGpBm85IMyFYq2uEIw3IKTUfRx+0FLj+gDeilAed2NBgZH6kejfTd1GmNH0nn2Zfwm3wLOMKdAQpIyS+lO2ABFzFwM2Q8MC0tRjTn85OZJBDVrm9Q5ABrZA2Z2u6KA7tWaLj3NT-dy2nF0ClmP9Q2U2RepBXUS3D3Xn1+rP71+vvdv-cgWHpx3cfgdqAEj8g49rWB+n6TggM5JuIu6QZB352g6ToSB27JwBBCFTtBiZIMm7oUHAxrwdhCFanAoZyHwKCGtEXY-DY-yAsCoInBCFzXDCyEItuppkQhh5Fv0lYUDQcgkBIVRXBeqyMn8RH8QJU4AL5YcpWKchOylvhRVE0XRDG-MxQIggpzRIBSERcHK0YAIQ7upAlqTpLkaTwnKUvy-D0GQ-JkHRAByOI-ih3DAbgoE5FYDlKZBbn7ipoCac0XkCL5-l0X2Wyqn+oDlCQ0L4Fx9SStYnD9JujFwLFEFqWpmrCikYpVM02l5gAAmmDqUIaLW6uAcCYti+JkIScWgA8uC0bBrZwNQbioKR+56bqBmzRNDWTvNvRmBAQ2srgo2EnhyaPr6xr6OSoZRKA7U4TB+HiKozDaC667DXweIEnxBZHiJeyUE5yUec0QnHpAHTsnVigNRRtAfFc-XNK6SCUD5yMmmaiPI3IU20dEn04sdfFAA
💻 Code
type Validator = (args: any[]) => boolean

function Validate(input: Validator) {
    return function (target: Function, context: ClassMethodDecoratorContext){
        if(context.kind == 'method'){
            return function (this: any, ...args: any[]){
                //validator was provided
                if(input){
                    //validator passes
                    if(input(args)){
                        console.log('Method arguments successfully validated')
                        return target.apply(this, args)
                    }
                    else {
                        console.log('Method arguments are not correct!')
                    }
                }
                else throw Error('No validator provided!')
            }
        } else throw Error('Decorator may only be used on methods!')
    }
}

class Example {
    @Validate(Example.IsHelloWorld) //intellisense - Class 'Example' used before its declaration.
    Log(input: string){
        console.log(input)
    }

    static IsHelloWorld(input: any[]): boolean {
        if(input[0] == 'Hello World') return true
        else return false
    }
}

const MyExample = new Example()

MyExample.Log('Hello World')

🙁 Actual behavior
When running TS 5.5.4 or higher...
If using TSConfig Target ES2021 or lower, output is...
// [ERR]: "Executed JavaScript Failed:"
// [ERR]: can't access lexical declaration 'Example' before initialization

If using TSConfig Target ES2022 or higher, code runs successfully...
// [LOG]: "Method arguments successfully validated"
// [LOG]: "Hello World"

In both situations, intellisense shows error
// Class 'Example' used before its declaration.

🙂 Expected behavior
If the code generated can run successfully, I would expect TSC to not report an error and compile successfully. Currently need to leverage //@ts-ignore to compile
Additional information about the issue
No response

This is the expected behavior. The fact Example is available is a side-effect of our downleveling and does not represent the actual runtime semantics of native ECMAScript Decorators. Per the specification text, decorators are evaluated in steps 27-37, but the binding for the class name is not initialized until step 38. If we were to allow this, then eventually switching to a --target with actual native decorator support would break.

I would suggest, instead that you use @Validate(x => Example.IsHelloWorld(x)) to close over Example instead of taking a direct reference.


Added support for remembering n words

Added support for remembering n words
Added dockerfile for better dev experience on windows
Added scripts for docker build, run and start
Updated readme with docker

N.b. I've also added a dev dependency on cross-env to facilitate the work with docker and mantain a resemblance of cross platformity (to get the working dir on windows you would need %INIT_CWD% instead of $INIT_CWD. We can totally remove that dependency +  the dockerscripts if you don't feel like doing it this way.
Also also right now the dockerfile still has the problem of not actually reloading after a detected changes: i had to restart the docker image every time. I don't know if i'm doing something wrong, if it's like this by design or if there's something wrong in the build process.
Also also also (that's the last one i promise) as you can see i've developed the user experience how i've imagined it would've been better (for example if you have 3 words saved and for some reason one day you guess at the second word the third one is not deleted, it just update the first two). Let me know if you like this kind of UX or if we want to change it.
EDIT: woa i don't know what happened with package-lock.json. I clearly remembered removing it from the changes before the commit. Let me know if i have to rever the commit.
EDIT-EDIT: Ok finally i was able to remove the package-lock.json commit. Sorry for the multiple commits.

Mmm i just realized: the reason i've used cross-env was to setup a volume for docker in the current directory to get hot reload. But it doesn't actually work so either we need to fix hot reload or we can remove that dependency.

Update, it seems it's a limitation of Docker for windows. 🤦♂


Invisibility API unforeseen consequences

Pre-existing entities (including drops and tile entities like the ender crystal) become invisible at time of player.offer(Keys.INVISIBLE, true);. Entities that come into being while invisible remain visible until set back to visible.
Entities that update (moving mobs, at the least) while in this invisible state will magically reappear as they move about.
Players, however, do not reappear. The player with the INVISIBLE state cannot see other players even if these other players move, crouch, jump, or break blocks from my testing.
I should have warned you to prepare for unforeseen consequences, meddling with visibility like this.

Started with: forge-1.8-<IP_ADDRESS>7-universal.jar and only the test plugin.
Sponge output:
> sponge version
SpongeMod: 1.8-1577-3.0.0-BETA-1000
SpongeAPI: 3.0.0

Complete code from my tested command:
/*
 * * Copyright (C) 2016 Matt Baxter http://kitteh.org
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package org.kitteh.vanish;

import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.command.args.CommandContext;
import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.data.key.Keys;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.format.TextColors;

import javax.annotation.Nonnull;
import java.util.Optional;

/**
 * Vanish!
 */
class VanishCommand implements CommandExecutor {
    @Nonnull
    @Override
    public CommandResult execute(@Nonnull CommandSource commandSource, @Nonnull CommandContext commandContext) throws CommandException {
        if (!(commandSource instanceof Player)) {
            return CommandResult.empty();
        }
        Player player = (Player) commandSource;
        Optional<Boolean> invisible = player.get(Keys.INVISIBLE);
        boolean wasVisible = invisible.orElse(false);
        player.offer(Keys.INVISIBLE, !wasVisible);
        player.sendMessage(Text.of(TextColors.AQUA, "You are now " + (wasVisible ? "" : "in") + "visible"));
        return CommandResult.success();
    }
}

Fixed in the latest changes to invisibility.


What will we do about it?

What will we do about it?

Short answer: Build a knowledge base on github.com that ...

supports versioning and collaboration
is searchable and browseable
has public and internal-only articles
reports contribution per user and usage per document
automates content workflow and lifecycle
supports role-based publishing permission

A bunch of extra words :
"Where do I host my KB?" can be a hard question to answer. There are many good options.
Anyone looking to set up a new knowledge base will want one that meets current and anticipated needs.
Anyone looking to improve or replace their existing knowledge base is weighing customization against migration and replacement.
Either way we want to integrate with some other tools (team directory, customer relationship management, support/service portal, etc).
If teams that are already using GitHub could meet this need on GitHub, that would increase the value of their current investment and eliminate the complexity of adding another platform.


google_sign_in: readme "register your application" link under android section goes to unhelpful page

https://developers.google.com/mobile/add?platform=android redirects to https://firebase.google.com/?platform=android
...which isn't helpful.
Should fix this!

Hey, I Would Like to work on this issue, Could you provide me some tips on how to Proceed???

Looks like a duplicate of https://github.com/flutter/flutter/issues/68039

@2002Bishwajeet
Please read through the Contributors guide


ICA results depend on numerical library?

We've discussed this in #3049 already, but I think we haven't really solved the problem. We found out that Infomax is less stable than Extended Infomax, but the problem also occurs in the latter.
Recently I've had a discussion with @dengemann, where he mentioned that he gets different ICA results across different machines, even though the initial conditions (random seeds) are identical.
I have done a very preliminary test where I decomposed EEG data with Extended Infomax ICA using the following three BLAS implementations on Arch Linux:

Standard BLAS
OpenBLAS
MKL (from Anaconda)

Not surprisingly, standard BLAS is slow because it is single-threaded. OpenBLAS was 3.1x faster, and MKL was 3.2x faster.
Then I compared the resulting unmixing matrices. Surprisingly, they are identical for BLAS and OpenBLAS (np.allclose returns True), but MKL differs. Not only can the sign of each component change (which we could solve by enforcing e.g. a positive sign for the first element of the largest component), but in general elements of the matrix differ in the third place after the decimal point. Here are the first 8 elements of the BLAS/OpenBLAS result:
array([ 0.12361416, -0.00420886,  0.12972655, -0.00492072,  0.01694731,
        0.16542082, -0.055074  , -0.05557361])

And here are the elements from the MKL result:
array([-0.12356685,  0.00327656, -0.13013124,  0.00669525, -0.01721278,
       -0.16554963,  0.05511959,  0.05629636])

What do you think? Should we accept that different numerical libraries compute things differently and therefore numerical errors blow up? I'm not entirely happy with this situation, to the point where using ICA could be a problem (e.g. if people say ICA is too unreliable so don't use it). Why are the results of BLAS and OpenBLAS identical? These are two independent libraries. And why is MKL different? Couldn't this be an MKL issue?

Should we accept that different numerical libraries compute things differently

This is a fact of life in floating point computations across libraries, architectures, etc., so we have to accept it :) Software needs to be designed to robustly mitigate rather than exacerbate this issue.

therefore numerical errors blow up

This depends on the algorithm being used. By way of example, FIR filtering in general does not suffer from these numerical imprecision issues because it's robust to small errors (they do not accumulate or get amplified) -- it's why we can use FFTs instead of direct computation for speed, despite the two being identical only to numerical precision. Something like high-order IIR filtering on the other hand can suffer, as having lots of poles (high order) can lead to an unstable filter -- their proximity to the unit circle can "break" filtering -- so appropriate mitigation strategies must be used, such as second-order sections representations that reduce rather than amplify numerical precision problems.
As far as why BLAS / OpenBLAS are equivalent, it might be a matter of luck (they are probably not always numerically identical), or it might be that they happen to do the same set of operations (e.g., summation order, use of accumulators, use of SIMD instructions in OpenBLAS in ways that don't affect the output). I doubt that MKL is doing something incorrect with their computations, though it's always possible.
I think in general we should be wary of using algorithms that give appreciably different results using different libraries. We should improve them or find strategies to mitigate these effects. I'm not sure if we're there with ICA or not.

yes ICA is sensitive to blas implementation. There is not much to do about
it
as @larsoner said.

This is a fact of life in floating point computations across libraries, architectures, etc., so we have to accept it :) Software needs to be designed to robustly mitigate rather than exacerbate this issue.

Yes, this is clear, I was referring to the (Extended) Infomax ICA implementation. We're definitely not there with ICA (at least the MNE Infomax implementation is affected by numerical issues, I haven't tested other implementations). I will try to see if this is also an issue with FastICA, and then it will be interesting to see if other Infomax implementations suffer from the same problem.

yes ICA is sensitive to blas implementation. There is not much to do about it

I'm not sure if ICA is in general sensitive to BLAS implementations, right now I only know this is the case for the MNE implementation. Or do you know of studies that looked at this issue for ICA in general? If this is really the case for ICA in general, then I couldn't recommend using it if results are determined by chance.

The results computed on a Mac using Accelerate are identical to the BLAS/OpenBLAS results. I don't know, I'll do some more tests, but if only MKL produces different results this could be a problem.

MKL on Mac also yields results identical to BLAS/OpenBLAS/Accelerate. So currently only MKL on Linux produces different results. I'm starting to think this is not an ICA issue at all.

I don't think this should be a big issue - after all you get slightly different ICA results with different initializations and the sign arbitrariness of components is a fact of life too. If I want to reproduce the exact same components I just save them to disk. But I admit that its a bit weird that MKL gives different results only on Linux.

honestly do tiny tests but don't spend too much time on this.
it's not a bug.
my 2c

@agramfort yeah, I can't spend much more time on it anyway, but ask @dengemann, this is a big issue for him. If we find out that it's just a particular MKL implementation that misbehaves, then why not investigate further. With identical initial conditions, I expect to get identical results. This seems to be the case everywhere except for MKL on Linux (I'll do a Windows test soon).

you won't be able to guarantee the MKL version people will use. So you have
to live with it.

If all results are identical (even MKL results) except for Linux MKL, I would consider this a bug.

event matlab would ship with this MKL version and does not guarantee
numerical matches between systems.
see https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3365894/
Freesurfer has this pb too and there is not much to do about it.

Thanks for the article link. I'll still try and see how MKL results on Windows compare. If nothing else, maybe we could at least consistently deal with the sign - do you think this is possible/useful (e.g. sort ICs according to explained variance, set the first weight of the largest component to be positive)?

The ICs are already sorted by explained variance, I would prefer to make a function / method available (ica.invert_signs(picks=None)?) rather then to enforce the sign by default.

MKL on Windows also gives exactly the same results as all other OS/BLAS combination. So the only different results is Linux/MKL. I'm sure there's an explanation, but I wouldn't dismiss it as that's how numeric floating point life is given the circumstances. This might well be a serious problem @dengemann has encountered that lead to non-reproducible results when using Linux/MKL. Not sure how to proceed though.

The experience we've had with @jasmainak @larsoner and @agramfort while working on the latest MNE group analysis demo paper was a bit traumatizing to me. I am starting to think that we may want to have alternatives to ICA in our pockets when strong reproducibility is a concern.

@dengemann yes, but this is something I would want to triple-check before declaring ICA as too unreliable. I still don't think that this is the case, because I get numerically identical (and therefore reproducible) results everywhere except for one platform/BLAS combination.

@cbrnr if you figure out what is different for the Linux MKL version, do not hesitate to post it. I have a feeling it might simply be a matter of setting some environment variables (like number of threads = 1).
See: https://software.intel.com/en-us/articles/getting-reproducible-results-with-intel-mkl/
That said, I do agree that ICA seems like a sensitive algorithm. Even if we do manage to find out what makes it reproducible, I fear this would be only a monkey patch hiding the real problem.

Yes, maybe it's the number of threads. Small variations in the output are OK, but if they are really that large ICA would be a nightmare for reproducibility. I'm not aware that anyone has ever studied this, but it would be very useful. So far we are only speculating, and I couldn't say whether this problem is inherent in ICA or if it is due to a particular implementation.

I'm still not convinced that this can be blamed on ICA being a sensitive algorithm. I did some more tests with Linux MKL changing MKL_MAX_THREADS. The results are weird. With 1 and 3 threads, I get numerically identical results to all other results I mentioned before. I only get different results with 2 and 4 threads, and the differences are too large to be ignored.
If I got different results on other platforms using MKL, or different results using other libraries, I wouldn't bother any further. But it is really weird that results are reproducible for all libs and all platforms except for  MKL Linux 2 and 4 threads...

There is a long-standing MKL bug on Linux having to do with an interaction between number of threads and LAPACK GESDD at least:
https://software.intel.com/en-us/comment/1869912
This for me has manifested usually as a LinAlgError but it's possible this is spurious and results can also be wrong without raising an error (which is actually much worse!).
@cbrnr can you try the sample files on that Intel thread and see which pass/fail on your Linux system?

Interesting. Unfortunately, all three .npy files work on my Linux system with any number of threads (=1, 2, 3, and 4).

Actually there are 6 files (I added more as I found new failures with CPU updates):
https://staff.washington.edu/larsoner/bad.npy
https://staff.washington.edu/larsoner/bad_avx.npy
https://staff.washington.edu/larsoner/bad_sse42_2.npy
https://staff.washington.edu/larsoner/bad_sse42_3.npy
https://staff.washington.edu/larsoner/fail.npy
https://staff.washington.edu/larsoner/bad_kabylake.npy
BTW what is your CPU model (cat /proc/cpuinfo | grep "model name")?
If you are interested in pursuing this a bit, I'd recommend trying to isolate the problem to a specific failing NumPy or SciPy function. But this is quite time consuming...
In the meantime maybe we should do some speed tests for OpenBLAS vs MKL. My understanding is that they are pretty close with the exception of a few isolated LAPACK functions that we don't use extensively here (as opposed to e.g. OpenMEEG which does use them). We might actually consider recommending nomkl and putting this in our environment, but we'll have to do benchmarking legwork.

... and by "pursuing this", I mean "figuring out why MKL breaks ICA on Linux" (not my SVD problem)

Indeed, bad_kabylake.npy results in LinAlgError: SVD did not converge only for MKL_NUM_THREADS >= 4 (that is, I do not get this error for 1, 2 or 3 threads). My CPU model name is "Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz" (4 cores).
What does this mean for the ICA issue? Do you think this could be related? How could I pursue this given that I neither get an error nor a warning?
Regarding OpenBLAS vs. MKL, I think Anaconda's decision to ship MKL by default is rather controversial because MKL is not open source. To be clear, this is not about the quality of MKL, but a general concern about licensing. In my very limited speed comparisons, OpenBLAS was almost as fast as MKL. Does MNE have any tests dedicated to benchmarking?

What does this mean for the ICA issue? Do you think this could be related?

It's possibly related. The LinAlgError might just be the most visible manifestation of an incorrect computation. I suspect that even when it's not raised, some computations could still be wrong (just silently so).

How could I pursue this given that I neither get an error nor a warning?

The tedious but perhaps necessary approach would be to drill down to some command (e.g., np.dot, linalg.svd, etc.) that actually wraps to an MKL call (likely LAPACK) that gives different results depending on the number of threads.
I would do it by working backward. Let's say you know the output with N_THREADS=1 is correct, i.e., matches all other implementations / systems (if it's not then swap in "using OpenBLAS" for all "N_THREADS=1" in what follows). We know that the input data to ICA when running with N_THREADS=1 and N_THREADS=4 is np.allclose (right?), but that the output is np.allclose with N_THREADS=1 but not N_THREADS=4. I would work to pinch this down, probably from the back end (though you could go from the front if you want):

Set the number of iterations of the algorithm to 1 (if possible) to see if the output still differs. This will simplify things if possible. If not, things can still proceed it's just perhaps more annoying.
Run with N_THREADS=1, put in a np.save-like call to save any intermediate arrays in the second-to-last step.
Add in assert_allclose(...) statements for that step. These should pass for N_THREADS=1 but fail for N_THREADS=4.
Repeat steps 2 and 3 (moving backward in algorithm processing steps) n times until both N_THREADS=1 and N_THREADS=4 pass. This tells you that the problem is at step -n (negative indexing :) ).
To verify that it really is step n (which I now think might be a linalg.svd call), *swap in the outputs for N_THREADS=1rather than computing this step. If allassertstatements now pass withN_THREADS=1andN_THREADS=4`, then it's definitely that step causing the problem, and we now have the data files necessary to make a minimal failing example for Intel.

Does MNE have any tests dedicated to benchmarking?

No not officially. I would run make test a few times locally on MKL, noting the slowest times and total time, then do the same thing on OpenBLAS. This would be a good start.

Thanks, this sounds like a good plan and a like a lot of work :smile:. Now the main problem is to find the time to work on it.
FWIW, I found that bad_kabylake.py also results in an error on macOS using Anaconda/MKL with MKL_NUM_THREADS=4. On Windows (in a VM), I don't get this error.

@cbrnr any time to look into this? I suspect that finding such a "silent bug" might be something that would get Intel to look into things, as it could be quite important.

Or @cbrnr alternatively, if you can write or point me to the code (hopefully minimal) that you have seen be different on two platforms, I can see if I can get my different machines to also give me different results, and pursue it myself.
Is it just the top comment from https://github.com/mne-tools/mne-python/issues/3049#issue-142660958 ?

Unfortunately, the little toy example was related to a different issue.
I will try to prepare a minimal code example to demonstrate the different behavior - this will likely take some time, since currently I'm using a full fledged EEG analysis pipeline with a large data set. I'll see what I can do.

@larsoner I've created a toy example that could expose the problem with the MNE sample data:
import os
import time
from itertools import combinations
import numpy as np
import mne
from mne.preprocessing import ICA
from mne.datasets import sample

data_path = sample.data_path()
raw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif'
raw = mne.io.read_raw_fif(raw_fname, preload=True)
raw.pick_types(meg=False, eeg=True)
raw.filter(1, None, fir_design='firwin')

icas = []
for threads in range(1, 5):
    os.environ["MKL_NUM_THREADS"] = str(threads)
    t0 = time.time()
    ica = ICA(method='extended-infomax', random_state=1).fit(raw)
    dur = time.time() - t0
    print("### ICA using MKL_NUM_THREADS={} took {}s ###".format(threads, dur))
    ica.save('mkl-{}-ica.fif.gz'.format(threads))
    icas.append(ica.unmixing_matrix_)

for pair in combinations(icas, 2):
    assert np.allclose(*pair)

Unfortunately, I don't have access to my Linux machine until mid next week, so I'm not sure if we are going to see this problem with this particular data set. If you want, you could go ahead and run this on your Linux machine to see if it works (I hope that setting the environment variable via os.environ is doing the right thing). Otherwise, I'll try that next week.

IIRC setting threads only works at the beginning before anything is called. But I can still try this with np.save etc. to see if I can find differences.

Sure, we'd need to go the private way though, because I can't share the data publicly. How can I contact you?

Closing since whatever is left to do here is an upstream numerical lib bug (and I think we updated docs at some point?)


Improve relationship declaration

What type of PR is this? (check all applicable)

[ ] ♻ Refactor
[x] ✨ Feature
[ ] 🐛 Bug Fix
[ ] 👷 Optimization
[ ] 📝 Documentation Update
[ ] 🚩 Other

Description
See

https://github.com/MaterializeInc/datagen/issues/53

Related Tickets & Documents
closes https://github.com/MaterializeInc/datagen/issues/53
Added to documentation?

[ ] 📜 readme
[ ] 🙅 no documentation needed

[optional] What gif best describes this PR or how it makes you feel?

I’m thinking for multiple child elements, you would have multiple entries in the relationships list


[#5621] RELENG_2_2: dhcp6c multi-launch and PPP IPv6 interface ID fixes

This is the RELENG_2_2 version of the patch committed to master in https://github.com/pfsense/pfsense/commit/0c9b98c0731f6486ee0734f58a099cd6023077d8 by @cbuechler .

Merged, thanks @davidjwood !


Attach failed with error - Interpreter doesn't handle one of the expression's opcodes

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
I am trying to profile a Python application and it fails with the below error.
Executable module set to "/usr/local/bin/python3.9".
Architecture set to: x86_64-pc-linux-gnu.
(lldb) expr char $libpath[]="/home/airflow/.local/lib/python3.9/site-packages/memray/_inject.abi3.so"
error: Can't evaluate the expression without a running target due to: Interpreter doesn't handle one of the expression's opcodes

Failed to execute our lldb script.

Complete stack trace
root@90000861716b:/opt/airflow# memray attach 4644 --verbose
Debugger command line: lldb --batch -p 4644 --no-lldbinit -o 'expr char $libpath[]="/home/airflow/.local/lib/python3.9/site-packages/memray/_inject.abi3.so"' -o 'expr int $port=51813' -o 'expr void* $rtld_default=(void*)0' -o 'expr int $rtld_now=2' --source /home/airflow/.local/lib/python3.9/site-packages/memray/commands/_attach.lldb
debugger return code: 1
debugger output:
(lldb) process attach --pid 4644
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/numpy.libs/libgfortran-040039e1.so.5.0.0 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/Pillow.libs/libXau-154567c4.so.6.0.0 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libssl-cd1d6220.so.1.0.2k No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libcrypto-d3570994.so.1.0.2k No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libgssapi_krb5-497db0c6.so.2.2 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libkrb5-fcafa220.so.3.3 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libcom_err-2abe824b.so.2.1 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libk5crypto-b1f99d5c.so.3.1 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libkrb5support-d0bcff84.so.0.1 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libkeyutils-dfe70bd6.so.1.5 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libselinux-0922c95c.so.1 No LZMA support found for reading .gnu_debugdata section
warning: (x86_64) /home/airflow/.local/lib/python3.9/site-packages/tokenizers.libs/libpcre-9513aab5.so.1.2.0 No LZMA support found for reading .gnu_debugdata section
Process 4644 stopped
* thread #1, name = 'airflow task ru', stop reason = signal SIGSTOP
    frame #0: 0x00007fac9d52c70e libpython3.9.so.1.0`PyDict_SetItem + 110
libpython3.9.so.1.0`PyDict_SetItem:
->  0x7fac9d52c70e <+110>: leaq   0x18b10b(%rip), %rcx
    0x7fac9d52c715 <+117>: cmpq   %rcx, 0x20(%rbp)
    0x7fac9d52c719 <+121>: movq   (%rsp), %rsi
    0x7fac9d52c71d <+125>: movq   0x8(%rsp), %rcx
  thread #2, name = 'airflow task ru', stop reason = signal SIGSTOP
    frame #0: 0x00007fac9d2c6d2f libc.so.6
->  0x7fac9d2c6d2f:       cmpq   $-0x1000, %rax            ; imm = 0xF000
libc.so.6`__ulimit:
    0x7fac9d2c6d35 <+5>:  ja     0x7fac9d2c6d68            ; <+56> at ulimit.c:44:3
    0x7fac9d2c6d37 <+7>:  movl   %r8d, %edi
    0x7fac9d2c6d3a <+10>: movl   %eax, 0x8(%rsp)
  thread #3, name = 'airflow task ru', stop reason = signal SIGSTOP
    frame #0: 0x00007fac9d2c6d2f libc.so.6
->  0x7fac9d2c6d2f:       cmpq   $-0x1000, %rax            ; imm = 0xF000
libc.so.6`__ulimit:
    0x7fac9d2c6d35 <+5>:  ja     0x7fac9d2c6d68            ; <+56> at ulimit.c:44:3
    0x7fac9d2c6d37 <+7>:  movl   %r8d, %edi
    0x7fac9d2c6d3a <+10>: movl   %eax, 0x8(%rsp)
  thread #4, name = 'airflow task ru', stop reason = signal SIGSTOP
    frame #0: 0x00007fac9d2c2564 libc.so.6`__GI___getcwd(buf=<unavailable>, size=<unavailable>) at getcwd.c:111:7
  thread #5, name = 'airflow task ru', stop reason = signal SIGSTOP
    frame #0: 0x00007fac9d0647b2 libpthread.so.0`__pthread_cond_wait at futex-internal.h:186:13
  thread #6, name = '.NET Finalizer', stop reason = signal SIGSTOP
    frame #0: 0x00007fac9d064ad8 libpthread.so.0`__pthread_cond_timedwait at futex-internal.h:323:13

Executable module set to "/usr/local/bin/python3.9".
Architecture set to: x86_64-pc-linux-gnu.
(lldb) expr char $libpath[]="/home/airflow/.local/lib/python3.9/site-packages/memray/_inject.abi3.so"
error: Can't evaluate the expression without a running target due to: Interpreter doesn't handle one of the expression's opcodes

Failed to execute our lldb script.
Run with --verbose to debug the failure.

Expected Behavior
No response
Steps To Reproduce

Run memray attach as below.

Memray Version
1.8.1
Python Version
3.9
Operating System
Linux
Anything else?
No response

There isn't enough information here for us to be able to investigate this. It looks like it happened in a Docker container - are you able to share a Dockerfile that reproduces the issue? Or a set of steps that can be performed in order for us to reproduce the issue?
What version of lldb was in use? What version of Linux? Do things work properly if you install gdb?

It does sound like there's some issue here, but there's not enough information here for us to be able to track down what it might be. If you're able to reproduce this problem, we can use your help debugging this. Better yet, if you can give us a Dockerfile that reproduces the issue, we could debug this without any further help from you. But without either of those, there's just no way for us to track this down.


Remove adyen-cse-js

Remove dependency https://github.com/Adyen/adyen-cse-web from package.json as now it's deprecated.
In order to be able to remove it, tests needs to be rewritten as this module has been used to generate credit card numbers without the need for UI.

Currently, the library is removed from packages.


Remove inlines from vec3d

similar to what was done in vec2d here https://github.com/MarkOates/allegro_flare/commit/feac48f79e7fbbd80ac0e78fc07b2e918fec5787

fixed in https://github.com/MarkOates/allegro_flare/commit/28c9b35d5e799ee0e9cb372b0739b9d5d13ea456


API or documentation missing for removal of routes

I can't find any way to remove routes cleanly. The closest thing I can find is a stackoverflow answer that proposes digging into private members and ripping out routes. Is this legitimate? It doesn't seem so.
Isn't there an API to cleanly remove a route, such as something added with .get('/myendpoint', function...)?

Hi! There is no API to remove routes, because the way the router is designed is not done in such a way to allow for the removal of routes. The closest you can get is using a middleware to route to a router where you swap out a router for a new one when you want to rebuild the entire app.
There has been a lot of conversation, and even a full PRs that attempted to add this API, but they all had serious race condition issues.

That SO answer also has a serious race condition, and I would not recommend using it in any production application. The main race condition is set off by attempting to call .splice() on our routes array. All in-flight requests have a marker to the index in which they are processing in that array, and the .splice() call will mean that all in-flight requests that are currently below the spliced index will be off-by-one for the rest of the cycle, which can cause weird glitches or crashes.

Thanks for the reply! I knew digging into the internal properties was a bad idea.


chore(pageserver): shrink aux keyspace to 0x40

Problem
extracted from https://github.com/neondatabase/neon/pull/7468, part of https://github.com/neondatabase/neon/issues/7462.
In the page server, we use i128 (instead of u128) to do the integer representation of the key, which indicates that the highest bit of the key should not be 1. This constraints our keyspace to <= 0x7F.
Also fix the bug of to_i128 that dropped the highest 4b. Now we keep 3b of them, dropping the sign bit.
Summary of changes
Checklist before requesting a review

[x] I have performed a self-review of my code.
[ ] If it is a core feature, I have added thorough tests.
[ ] Do we need to implement analytics? if so did you add the relevant metrics to the dashboard?
[ ] If this PR requires public announcement, mark it with /release-notes label and add several sentences in this section.

Checklist before merging

[ ] Do not forget to reformat commit message to not include the above checklist

comments from @arpad-m -- if we can use the full u128 space in the future, metadata key now takes 75% of all prefixes, which does not seem reasonable.
Well, then let's split metadata keys at 0x60 in this pull request, so that if we refactor everything to u128, metadata keys will only take ~60% prefixes? Or let's see if I can finish the u128 refactor before next month so that we can revert the keyspace back to 0x80 before rolling out to the users.


Allow DOM props to pass through Link to the actual a tag

Not sure why I didn't do this before, but now all DOM props (including ARIA attributes) work on <Link>, not just className and style.
/cc @divmain @baer

Coverage remained the same at 98.305% when pulling d91b7930f546bb013948258c35543e2341fa4d50 on feature/pass-through-dom-props into ee1ef3549eb1cd189ab6d2c96ed1512ea1e99a01 on master.

Coverage remained the same at 98.305% when pulling d91b7930f546bb013948258c35543e2341fa4d50 on feature/pass-through-dom-props into ee1ef3549eb1cd189ab6d2c96ed1512ea1e99a01 on master.

@tptee you should invite others to see little-router progress. I'm sure christopher would love to see this.

👏

See this PR for more info:
https://github.com/FormidableLabs/redux-little-router/pull/33

:+1:

Nice!


added UserAgent

Just added a checkbox for the Useragent in the cradle generator. If not set it will be .Net CLR, which might get blocked on networks.
Useragent is hardcoded, to not get too much settings in the UI.

Just a heads up, I think this is a good and idea and I will definitely incorporate it. It will be part of a larger rewrite so that's why it's taking a bit of time.