Only capture and re-raise ValidationErrors as ValidationErrors

Recently, we found that an action was broken as our code was feeding a stringified datetime in as an argument, instead of an actual datetime object.
We did in fact lack some unit-test coverage for this, which was easily amendable, but the bug wasn't really visible to the engineers. It manifested as a client-side error in that an error message appeared in the Django admin, where we were using the action. It was nothing that the end-user could do about, and the end-user had no idea really what to do about it.
I figured that perhaps DAF should not capture any Exception that happens and group+re-raise as ValidationError (and here I'm talking about any exception derived from django.core.exceptions.ValidationError, or that class itself), but that it should only capture other ValidationErrors.
We actually monkey-patched this change into DAF in our own project, by doing a few small changes:

daf.contrib.trap_errors: Make except clause only catch ValidationError exceptions.
daf.contrib.raise_trapped_errors: If any trapped error is a non-validation exception, raise it as is. Otherwise, continue to group the exceptions into one ValidationError and raise it.
daf.contrib.raise_contextualized_error: Make except clause only catch ValidationError exceptions.
daf.rest_framework.raise_drf_error: Inside the if-statement inside of the except-clause: If exception is not a ValidationError, raise it.

These changes may not actually be the right way to do this - the 3 functions mentioned are probably written, and named, with general exception handling in mind, and there might be legit cases for catching all exceptions.
After a fair amount of testing and prodding, these 3 seemed all sufficient, and necessary, to yield the effect we needed, which is to make non-validation exceptions be raised all the way out of DAF in both validator functions as well as the action callable itself.
I did the above changes in the DAF library locally, added some unit-tests and ran the test suite, and it seems to work pretty well.
But, I most definitely wanted to get @wesleykendall's thoughts on the problem, and the crudely suggested solution above before I ventured to produce a PR.

I feel like we did chat about this a long time ago (~1 year?), but that was when the core DAF code was still a part of our main repo, and not its own library :)
So - there might easily be stome legit reasons for keeping it as-is - but it does make unit-testing, IMHO, a bit odd. A unit-test testing an incorrect usage of the action could just assert that the status code is in the 400 range, but it would also have to check the error message itself. This did in fact happen in our main codebase, as we had some coverage, that seemed like it was doing the job - was getting a 422 status code, as we expected. But the reason wasn't because the input was invalid (in our case, the datetime string format was not proper ISO8601), but because the code didn't even try to parse the datetime string, but immediately was comparing the string to another datetime object, resulting in a type comparison error - something the end-user had no control over or knowledge of.
This reminds me of what Django did for the admin page until version 2.1: Apparently, any AttributeError raised in a custom function used in list_display is just gobbled up by Django and the admin will just show a "-".
This does make the admin a bit more resilient, but it also seems a bit arbitrary. If someone was accessing an array value, it would be raised up the call stack. They no doubt chose to capture AttributeError because most of the time, people are traversing some attributes in those custom list_display. But this can also easily mask problems away during the writing of the code or even QA phase, if people aren't focusing on the custom function. So I'd rather Django removed that blanked exception capture, and rather let the programmers make sure to unit-test their functions properly, or at least just let the errors bubble up and be reported by proper error reporting tools, instead of waiting for end-users to report odd behaviors.

@tomage before answering on what I think might be a possible configurable solution in the library, let me elaborate a bit on what's happening in case there might be any confusion.
Every Action object has two main properties - a callable and a wrapper. A wrapped callable is the func attribute of the action. These two properties allow one to make a variety of action classes that reference the same callable but have different behavior via the wrappers.
The most sophisticated wrapper is in the ObjectAction base class. It's wrapper does the following (from the top down):

Enters a context manager that will raise any trapped errors. The context manager yields the trapped_errors list that is then available as an argument to any other subsequent wrappers. After yielding, the context manager checks if there were any trapped errors and raises them as one error. See https://github.com/jyveapp/django-action-framework/blob/b3858f45c2608bc8a1ad8a03ab70012f82632ee4/daf/actions.py#L309

The objects parameter is then made available to all subsequent wrappers/calls. This parameter defaults to either a) an objects argument that has already been supplied to the function, b) a list that is created from a single object argument that is supplied to the function, or c) a list that is created from an argument passed to the function that is configured via the object_arg attribute of the action. See https://github.com/jyveapp/django-action-framework/blob/b3858f45c2608bc8a1ad8a03ab70012f82632ee4/daf/actions.py#L310

Now that the objects parameter is available, it is then converted to a queryset (if it wasn't already). It also might use a preconfigured queryset as a starting point or perform a select_for_update to lock the queryset. See https://github.com/jyveapp/django-action-framework/blob/b3858f45c2608bc8a1ad8a03ab70012f82632ee4/daf/actions.py#L317

Now that we have an objects queryset, the next part of the wrapper parametrizes this argument. It iterates over objects and exposes an argument to the wrapped function that is configured by the object_arg attribute of the action class. See https://github.com/jyveapp/django-action-framework/blob/b3858f45c2608bc8a1ad8a03ab70012f82632ee4/daf/actions.py#L324

Since we are now parametrizing things after entering a parametrization, we can now trap individual errors of an individual ObjectAction callable. The context manager at https://github.com/jyveapp/django-action-framework/blob/b3858f45c2608bc8a1ad8a03ab70012f82632ee4/daf/actions.py#L325 is what will ensure that we trap errors that happen in the callable. Errors are trapped and added to the list that is yielded from our first context manager in step 1

The super method of the base Object class then wraps the callable in daf.contrib.attach_error_metadata, which will provide more context around the error for other wrappers. See https://github.com/jyveapp/django-action-framework/blob/b3858f45c2608bc8a1ad8a03ab70012f82632ee4/daf/actions.py#L132

After all of this wrapping, we can now execute the callable of the ObjectAction class.

So, what does all of this mean? It means that the ObjectAction class just has to reference a function that takes in an individual object (the argument is called whatever object_arg is). When this is done, the ObjectAction can now be called with single or multiple objects. Along with that, calling the ObjectAction with multiple objects will still raise one aggregate exception, and it will not short circuit individual elements. It will try to process every element and trap errors from individual failures.
This is just the default wrapper configuration of ObjectAction. The wrapped can be changed to be whatever you want it to be. You technically don't need any of those wrappers, however, the interfaces that are built on top of the action may not behave well.
Which brings be to the next point of interfaces. When constructing an interface like a view or a DRF endpoint on an action, these also have a wrapper that wraps the already-wrapped action. For example, any view will automatically contextualize any raised error. See https://github.com/jyveapp/django-action-framework/blob/4550ffe9b759529707cd26245d3e3e9d87fbcc57/daf/views.py#L24  This context manager will inspect any errors that are raised and then re-interpret the error messages to provide more context. For example, if an ObjectAction is supplied multiple objects, a contextualized error will also tell you which object caused the exception. Without contextualized errors, a person using the UI would just see the error message from a failing object but not understand which object failed. Similarly, some of the UX that is implemented (such as dismissing failing objects) wouldn't work.
Wrappers provide the ability to orchestrate the underlying callables to make them compatible with a lot of interfaces. The DRF wrapper here https://github.com/jyveapp/django-action-framework/blob/4550ffe9b759529707cd26245d3e3e9d87fbcc57/daf/rest_framework.py#L94 tries to re-raise errors as APIExceptions. This makes it so that you can write one callable and not have to put a bunch of view or DRF logic in it.
With all of this being said, you will not have to modify daf.contrib.raise_trapped_errors since it is just raising errors trapped by daf.contrib.trap_errors.
Your modifications of  daf.contrib.trap_errors and daf.contrib.raise_contextualized_error seem good, and I think you actually can just catch ValidationError as well in daf.rest_framework.raise_drf_error instead of modifying the if statement.
I caught every exception by default since a lot of code that is called by actions does not raise ValidationError. Especially external libraries or even internal code that just raises ValueError or other exceptions. I figured the majority of cases would want the error to propagate all the way to the user instead of it resulting in a 500 page.
If this behavior isn't desired, I think there are some possible solutions:

Have a setting that dictates the base exception class that is trapped by default in DAF contrib exception handlers. To preserve backwards-compatibility, it could be Exception, but someone could set it to ValidationError. Doing this would mean that users would see 500 pages on forms though if a non validation error happened (I need to verify this, but I believe that this is the case).
Going off of 1), have the ability to also override this behavior for action classes. Some of the context managers already allow one to supply exception classes like https://github.com/jyveapp/django-action-framework/blob/4550ffe9b759529707cd26245d3e3e9d87fbcc57/daf/rest_framework.py#L59, so it would be straightforward to extend these to parametrize the base exception that's caught.
Create another wrapper and wrap your action with it that inspects the raised error. If it is a ValidationError, one could inspect it and see if it has any references to non validationerror classes. If so, it could raise the first non validation error. Again, doing this will likely result in a 500 for a person viewing a form.

With 1) or 2), you do raise the risk of accidentally letting legitimate errors go to a 500 page instead of being presented to a user. Along with that, if you don't trap every error, an ObjectAction that is supplied with multiple objects will short circuit. With 3), you have the ability to not short circuit and then try re-raise the exception again with the appropriate class, but it is a bit more involved.
It's a very complicated thing that was difficult to solve elegantly for most use cases. I hope that this sheds some light on it. Let me know if you favor any of these approaches. I would be hesitant to not catch every exception by default though because of how it affects the behavior of bulk actions

Phew! That was definitely very useful - thanks for the refresher on the core functionality. I more or less have it down.. but it helps to bring it together in the argument above a lot.

With all of this being said, you will not have to modify daf.contrib.raise_trapped_errors since it is just raising errors trapped by daf.contrib.trap_errors.

Yeah - I agree, as long as we're only catching django.core.exceptions.ValidationError in daf.contrib.trap_errors :) It threw us off a bit when it caught a TypeError which was result of bad code, not end-user input.

I caught every exception by default since a lot of code that is called by actions does not raise ValidationError. Especially external libraries or even internal code that just raises ValueError or other exceptions. I figured the majority of cases would want the error to propagate all the way to the user instead of it resulting in a 500 page.

Yeah - it is true that many actions that we have are very complicated and are doing a lot of things - but we had this case of a code error that we did fortunately catch in QA stages (we have a great QA team! This was missed in unit-tests ;) ), but we might have missed it and then it could have gone live for some time on prod, with end-users scratching their heads at the bug, whereas I think in that case I'd have preferred to get a (in our case) Rollbar alert right when this first happened, with stacktrace and local variables etc.
That said - yeah - I totally agree on both suggested solutions 1 and 2 you lay out. Exception as default is fine, but allowing to override the base exception in a Django setting would be great. As well as being able to override it per action.
Perhaps it could even be a list of exceptions..? Something like:
# settings.py
ACTION_FRAMEWORK_TRAP_EXCEPTIONS = [
    'django.core.exceptions.ValidationError',
    'ValueError',
]
# On some action
class MyAction(daf.actions.ObjectAction):
    trap_exceptions = [Exception]
    ...

With 1) or 2), you do raise the risk of accidentally letting legitimate errors go to a 500 page instead of being presented to a user

Yep - and vice versa - in current form, a user can be accidentally shown programming errors that they have no control over - and it'll be on the end-user to report it.

if you don't trap every error, an ObjectAction that is supplied with multiple objects will short circuit

Yeah - that's one angle I haven't thought too deeply about, to be honest.. Let's say we're going to send out reminder emails to users that haven't logged into Django for a month. The action callable could be something like this (yeah, it's kinda pointless and silly as an action perhaps)
def send_reminder(user):
    if user.last_login < datetime.now() - timedelta(days=30):
        email_service.send(user, 'Remember us?')

And then let's say you used this callable in a ObjectAction and called on Alice, Bob and Carol.
Let's say Alice and Carol have both logged in, but Bob has simply never logged in. Then we'll get a TypeError when we run the action on bob, since we're trying to compare None with a datetime.datetime.
I'm honestly not entirely sure what we'd want to happen in this case..
In this example, we might easily have sent an email to Alice, but then, if we serve a 500 error, the end-user might be tempted to refresh, or retry-again (depending on the interface), which might result in Alice getting the action run multiple times.
Then again, it's not very useful either to send this to the end-user: Cannot run "send_reminder" on "Bob": '<' not supported between instances of 'NoneType' and 'datetime.datetime'.
It's kinda hard to know which one is worse, as it might depend so heavily on the callable.
I could see myself wanting a complex action to send out errors to engineers if they fail on some objects, but allow it to finish processing the rest. Also, if I explicitly wrote the action to be idempotent, then the above example with Alice, Bob and Carol isn't that big of a deal, tho Carol will never get her email until Bob is removed from the loop, or the code is fixed.
Perhaps one could hook up an exception handler to actions, to take particular actions when any Exception happens? Or perhaps one can set up different exception handling behaviors depending on if it's single object, or multiple objects being called.. Dunno.
I agree that approach 3 might be somewhat more resilient here.. But might still be worth starting off with 1 and 2, and later see if 3 can fit in as well.
Well - I think I def. better sleep on this - it's getting late here. But perhaps we can chat on this later - there's no big rush really, so we've got time to think this over carefully.


Cannot click elements inside foreignObject in link labels

Cannot click elements inside foreignObject in link labels
<foreignObject class="label-wrapper" x="@((X-2).ToInvariantString())" y="@Y.ToInvariantString()" style="overflow:visible" pointer-events="all">

        ****

</foreignObject>

Hello, this is a limitation of Blazor, not the library.
https://github.com/dotnet/aspnetcore/issues/18271

You caught me.. I thought I could sneak it in.
Here is a work around I ended up with in case anyone is as desperate as I am for this.
Clicks on <g class="line" work ok
Create a custom label, id the foreignobject,
back it with some js,
invoke js
init passing custom label as dotNetObject,
traverse up from foreignobject,
attach a click handler to g class="link",
 handle click and invoke onclick on blazor side.

Ps: avoid dupe handlers on js side using link id.

That's how I do it too.
I'll close this since it's not an issue, thanks!


[Enhancement] Ingress support

Just throwing a suggestion out there that it would be good if the web portal was accessble using HA ingress.

I like the idea of ingress, too. BUT...
This addon is using the host network mode. This means that ports which are used by this addon are blocked for the host computer, too. No other addon or integration are able to use the web-port (and the matter ports).
That's why i made the web port configurable - to not block other addons.
When using ingress, the port cannot be changed. I need to tell ingress which port is used for the web ui. When changing the port in the configuration, ingress will not be able to proxy the addon web ui.
I am not really sure, how to solve that. Either:

use ingress, but remove the port configuration of the web ui
don't use ingress, but keep the port configurable

The official Matter add-on uses host networking AND allows the web UI port to be configured. See config here.
I'm not a developer but to me it looks like if you add the following to the config.yaml of the addon it might work;
ingress: true
ingress_port: 8482

and then to allow the port to be configured;
ports:
  8482/tcp: null

and remove the port config (which is now handled by the docker expose feature);
web_port: 8482

Not quite that simple it seems as web_port is required but perhaps that's because it's designed such it doesn't currently work with ingress - the point is other addons do work with host network and port configs so hopefully something that can be implemented.

closed by accident. i still need to test and configure the addon.

ingress is up and running. see #230 for some expected error.

Great work. Many thanks @t0bst4r.


Carousel: use buttons, not links, for prev/next controls (backport to v4)

Manual backport of #32627

as the JS tests in v4 are far more extensive, but none of them related to the prev/next controls, left them as they are


Make Rails/UnknownEnv cop aware of Rails.env == 'unknown_env'

Rails/UnknownEnv is not aware of Rails.env == 'unknown_env' style comparetion.
# It has a typo, but the cop does not detect any offense for the code!
if Rails.env == 'proudction'
end

This pull request adds the check to Rails/UnknownEnv cop.
Note
This pull request also change the offense message.
I removed ? from the environment name in the message.
- Unknown environment `proudction?`. Did you mean `production?`?
+ Unknown environment `proudction`. Did you mean `production`?

Because production? is not an environment name.

Before submitting the PR make sure the following are checked:

[x] Wrote good commit messages.
[ ] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Added an entry to the Changelog if the new code introduces user-observable changes. See changelog entry format.
[x] The PR relates to only one subject with a clear title
and description in grammatically correct, complete sentences.
[x] Run bundle exec rake default. It executes all tests and RuboCop for itself, and generates the documentation.

Thanks!


working jit code, but jax.disable_jit() produces an error

I'm running on 824ac86620572285b86dd09529f8869ef36883ad
import jax
from jax import vmap
from jax.experimental import ode

with jax.disable_jit():
  t = jax.numpy.array([0.0, 1.0])
  x0_eval = jax.numpy.zeros((5, 2))
  vmap(lambda x0: ode.odeint(lambda x, _t: x, x0, t))(x0_eval)

without the with jax.disable_jit(): works just fine but with it we get an error:
Traceback (most recent call last):
  File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/Users/skainswo/dev/research/research/odecontrol/jaxbug_disable_jit.py", line 9, in <module>
    vmap(lambda x0: ode.odeint(lambda x, _t: x, x0, t))(x0_eval)
  File "/Users/skainswo/dev/jax/jax/api.py", line 724, in batched_fun
    lambda: _flatten_axes(out_tree(), out_axes))
  File "/Users/skainswo/dev/jax/jax/interpreters/batching.py", line 34, in batch
    return batched_fun.call_wrapped(*in_vals)
  File "/Users/skainswo/dev/jax/jax/linear_util.py", line 150, in call_wrapped
    ans = self.f(*args, **dict(self.params, **kwargs))
  File "/Users/skainswo/dev/research/research/odecontrol/jaxbug_disable_jit.py", line 9, in <lambda>
    vmap(lambda x0: ode.odeint(lambda x, _t: x, x0, t))(x0_eval)
  File "/Users/skainswo/dev/jax/jax/experimental/ode.py", line 158, in odeint
    return _odeint_wrapper(func, rtol, atol, mxstep, y0, t, *args)
  File "/Users/skainswo/dev/jax/jax/api.py", line 135, in f_jitted
    return fun(*args, **kwargs)
  File "/Users/skainswo/dev/jax/jax/experimental/ode.py", line 164, in _odeint_wrapper
    out = _odeint(func, rtol, atol, mxstep, y0, ts, *args)
  File "/Users/skainswo/dev/jax/jax/custom_derivatives.py", line 456, in __call__
    *args_flat, out_trees=out_trees)
  File "/Users/skainswo/dev/jax/jax/custom_derivatives.py", line 504, in _custom_vjp_call_bind
    out_trees=out_trees)
  File "/Users/skainswo/dev/jax/jax/interpreters/batching.py", line 189, in process_custom_vjp_call
    out_vals = prim.bind(fun, fwd, bwd, *in_vals, out_trees=out_trees)
  File "/Users/skainswo/dev/jax/jax/custom_derivatives.py", line 500, in _custom_vjp_call_bind
    outs = prim.impl(fun, fwd, bwd, *args, out_trees=out_trees)
  File "/Users/skainswo/dev/jax/jax/custom_derivatives.py", line 510, in _custom_vjp_call_impl
    return fun.call_wrapped(*args)
  File "/Users/skainswo/dev/jax/jax/linear_util.py", line 150, in call_wrapped
    ans = self.f(*args, **dict(self.params, **kwargs))
  File "/Users/skainswo/dev/jax/jax/experimental/ode.py", line 199, in _odeint
    _, ys = lax.scan(scan_fun, init_carry, ts[1:])
  File "/Users/skainswo/dev/jax/jax/lax/lax_control_flow.py", line 838, in scan
    carry, y = f(carry, tree_unflatten(xs_tree, xs_slice))
  File "/Users/skainswo/dev/jax/jax/experimental/ode.py", line 189, in scan_fun
    _, *carry = lax.while_loop(cond_fun, body_fun, [0] + carry)
  File "/Users/skainswo/dev/jax/jax/lax/lax_control_flow.py", line 221, in while_loop
    while cond_fun(val):
  File "/Users/skainswo/dev/jax/jax/core.py", line 421, in __bool__
    def __bool__(self): return self.aval._bool(self)
  File "/Users/skainswo/dev/jax/jax/core.py", line 709, in error
    raise TypeError(concretization_err_msg(fun, context))
TypeError: Abstract value passed to `bool`, which requires a concrete value. The function to be transformed can't be traced at the required level of abstraction. If using `jit`, try using `static_argnums` or applying `jit` to smaller subfunctions instead.

Tricky... this is happening because when using disable_jit we use Python-based implementations of the control flow primitives (for better debuggability, since otherwise they effectively act like jit themselves), but we can't vmap a Python while loop like we can a lax.while_loop (as it leads to this abstraction error).
I think we should

raise a custom exception class due to these tracing errors rather than a TypeError,
catch that exception when we execute the Python version of control flow primitives, and in that case fall back to doing the non-Python vmap-transformable version.

Another option would be to stop making jit_is_disabled affect the control flow primitives this way, but it seems like a nice option to have for debugging... @jekbradbury let me know if you have thoughts.
In the meantime, a workaround would be to disable the logic in lax_control_flow.py that depends on jax.api._jit_is_disabled(), e.g. by just commenting out those lines. I verified that by commenting out these lines your test code runs.

I would be ok with vmap not actually doing a fully vectorized map in disable_jit contexts. Just doing map and then sewing together the results would be fine for debugging purposes.

The same issue comes up in the context of jax.eval_shape as well. For instance, this test fails with a type error:
def testCondEvalShapeNoJit(self):
def f(x):
return lax.cond(x < 2, x, lambda x: 3. * x, x, lambda x: np.sin(x))
with api.disable_jit():
self.assertEqual(api.eval_shape(f, 0.).shape, ())


wip: zapper spike

Description

Notice

[ ] Have you followed the guidelines in our Contributing guide?
[ ] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[ ] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)

closes #
Risk

Testing

Engineering

Operations

Screenshots (if applicable)

Current dependencies on/for this PR:

develop

PR #4110   👈

This comment was auto-generated by Graphite.

Closing in favor of https://github.com/shapeshift/web/issues/4143


Typescript error on latest build

Description
There appears to be a TS error on this line when building lit-element with latest Typescript version.
Expected Results
No TS error
Actual Results
TS Error (see attachment below)

Versions

typescript: 4.2.3
lit-element: v2.4.0
webcomponents: vX.X.X

Closing due to age; please reopen if issue persists on latest versions.


Let's update project to use recent commit of bevy's main branch

WebGL: INVALID_OPERATION is fixed for bevy's main branch. By updating project to use main branch we can remove special treatment for arrows introduced here: https://github.com/StaffEngineer/velo/pull/29
Note: we may need to update some plugins to use bevy's main branch if they don't updated for that.

This can be re-opened if someone wants to work on it.
We can wait a bit and just switch to 0.11 once it's released.


chore: add v3 checks to nightly + fix e2e naming in workflow yaml

What this PR does / why we need it:
This change adds v3 suites to nightly E2E execution.
Additionally, embedded-capi-disabled suite has been failing for a few days but the alert we receive in Slack is marking update-labels as root of the issue. This fixes the naming in the E2E workflow definition.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Checklist:

[x] squashed commits into logical changes
[ ] includes documentation
[ ] adds unit tests
[ ] adds or updates e2e tests

Is this PR dependent on #594?

Yes @Danil-Grigorev. This uses suites that are introduced in #594


update imported images using imagedeps

go run github.com/replicatedhq/kots/cmd/imagedeps

What type of PR is this?

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

Steps to reproduce

Does this PR introduce a user-facing change?

Does this PR require documentation?

this basically duplicates https://github.com/replicatedhq/kots/pull/2468, but has additional image locations changed


User can update task

User is able to update information of task such as:

name
description
due date
estimated time
reminder

acceptance criteria:

update button
update view exists
Confirm update button
task is actually updated in system

See Review in Pull Request for my comments


how do i test the example?

when i run ./multi .
[root@t multiprocess_c]# ./multi
Rules:
Phase: 0 (0 rules)
Phase: 1 (0 rules)
Phase: 2 (1 rules)
Rule ID: 1--0x253cc20
Phase: 3 (5 rules)
Rule ID: 0--0x253cf00
Rule ID: 2--0x253d510
Rule ID: 3--0x253db40
Rule ID: 4--0x253e0d0
Rule ID: 5--0x253e5d
what should i do next?

oh,,, I delete this
SecDebugLog /dev/stdout
SecDebugLogLevel 9

Hi @calistochen,
Let us know if you find any other issue ;)


error Command failed with exit code 140

micro-dev crashes when restarting.
To reproduce:

run the custom-server-micro next.js example with yarn dev
touch or re-save server.js (with or without changes)
crash

$ micro-dev --watch server.js
✔ success server compiled in 230ms
✔ success client compiled in 1s 288ms

 DONE  Compiled successfully in 1398ms

   ┌────────────────────────────────────────────────┐
   │                                                │
   │   Micro is running!                            │
   │                                                │
   │   • Local:            http://localhost:3000    │
   │   • On Your Network:  http://<IP_ADDRESS>:3000   │
   │                                                │
   │   Copied local address to clipboard!           │
   │                                                │
   └────────────────────────────────────────────────┘

File changed: server.js - Restarting server...
User defined signal 2
error Command failed with exit code 140.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

I traced the issue to lib/serve.js#L15.  It works fine if I disable that line that emits the SIGUSR1 signal when restarting.
Also, I was able to fix the restarting behavior in my application by placing this in my server/index.js file:
process.on('SIGUSR2', () => {});

However, I could not fix custom-server-micro in the same way.  With the "fix", rather than crashing on restart it restarts once and then is hung.  It's strange, considering I used that example as a reference for using micro/micro-dev with next.js in my app.  My app has more going on now, not sure why difference... I'm running these inside a docker container.
Some more info from running it with npm vs yarn:
File changed: server.js - Restarting server...
User defined signal 2
npm ERR! code ELIFECYCLE
npm ERR! errno 140
npm ERR! @ dev: `micro-dev --watch server.js`
npm ERR! Exit status 140
npm ERR!
npm ERR! Failed at the @ dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'dev' ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle @~predev: @
6 info lifecycle @~dev: @
7 verbose lifecycle @~dev: unsafe-perm in lifecycle true
8 verbose lifecycle @~dev: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/gizmoduck/src/TMP/NEXT/custom-server-micro/node_modules/.bin:/home/gizmoduck/bin:/home/gizmoduck/perl5/bin:/home/gizmoduck/bin:/home/gizmoduck/.yarn/bin:/home/gizmoduck/bin:/home/gizmoduck/perl5/bin:/home/gizmoduck/bin:/home/gizmoduck/.yarn/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle @~dev: CWD: /home/gizmoduck/src/TMP/NEXT/custom-server-micro
10 silly lifecycle @~dev: Args: [ '-c', 'micro-dev --watch server.js' ]
11 silly lifecycle @~dev: Returned: code: 140  signal: null
12 info lifecycle @~dev: Failed to exec dev script
13 verbose stack Error: @ dev: `micro-dev --watch server.js`
13 verbose stack Exit status 140
13 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:285:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid @
15 verbose cwd /home/gizmoduck/src/TMP/NEXT/custom-server-micro
16 verbose Linux 4.15.0-38-generic
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dev"
18 verbose node v8.11.4
19 verbose npm  v5.6.0
20 error code ELIFECYCLE
21 error errno 140
22 error @ dev: `micro-dev --watch server.js`
22 error Exit status 140
23 error Failed at the @ dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 140, true ]

From the log I notice I'm using node v8.11.4 which seems old... but that was by intention to match the version I have on target devices (Raspberry Pi).  I can look into options to upgrade that and see if it has something to do with this issue.


Cow and Cow<[u8]> should support implicit borrow

Currently Cow type automatically owns data, which is a silent performance trap, considering people may think that Cow<str> should borrow when possible (but only &str and &[u8] currently do). There is a workaround for this creating a newtype from Cow<str> that specifies #[serde(borrow)], but it's ugly.
#[macro_use]
extern crate serde_derive;
extern crate serde_json;

use std::borrow::Cow;

#[derive(Deserialize)]
struct CowStr<'a>(#[serde(borrow)]
                  Cow<'a, str>);

fn main() {
    let json = r#""Hello, world""#;
    let example: CowStr = serde_json::from_str(json).unwrap();
    println!("{}", match example.0 {
        Cow::Borrowed(_) => "borrowed",
        Cow::Owned(_) => "owned",
    });
}

This is hard to do, because there's no way to detect the Cow type in a deterministic manner. I could write a clippy lint which detects when you do derive(Deserialize) on a struct with a Cow in it, but without a #[serde(borrow)] attribute on said Cow.

@oli-obk we already have detection for Cow types here.
@xfix this is intentional because in my experience I more often want Cow to copy the data when deserializing. I believe this is a better default than making the following program fail to compile (try adding #[serde(borrow)]).
#[macro_use]
extern crate serde_derive;

extern crate serde;
extern crate serde_json;

use std::borrow::Cow;

#[derive(Serialize, Deserialize, Debug)]
struct Xfix<'a> {
    s: Cow<'a, str>,
}

fn run() -> Result<Xfix<'static>, serde_json::Error> {
    let xfix = Xfix { s: Cow::Borrowed("\n\n\n") };
    let s = serde_json::to_string(&xfix)?;
    println!("{}", s);

    let de: Xfix = serde_json::from_str(&s)?;
    println!("{:?}", de);
    Ok(de)
}

fn main() {
    run().unwrap();
}

It also means we have a single consistent way to opt into borrowing, rather than a way to opt into borrowing and a way to opt out of borrowing.

@oli-obk we already have detection for Cow types here.

I thought we did, but I didn't know about

more often want Cow to copy the data when deserializing


Implement UI for crash analytics opt-in/out

This depends on #237
Is your feature request related to a problem? Please describe.
In order to ensure a high quality experience for users, we need to collect crash data.
Describe the solution you'd like
Embed a crash analytics tool in the app.  This tool will need to be configurable, so that users can disable it.
We'll have a separate issue to consider the design of what this opt-in or opt-out looks like.

implemented on 0.0.1-39


Security Review VP Flow & STS implementation

A security review of the implementation of the VP flow and the Secure Token Service has to be organized and passed.
related to:
https://github.com/eclipse-tractusx/sig-release/issues/248

Implementation review not planned


Add Swift helpers

As suggested in my documentation here, when using OHHTTPStubs with Swift it's often convenient to build helper top-level Swift functions.
It would be nice if the pod would provide those Swift help functions directly, through a "Swift" subspec in the podspec file, so that people using OHHTTPStubs with Swift could add pod 'OHHTTPStubs/Swift' and have those for free.

Here are some helpers that could be nice to add and make the Swift API even more awesome:
// Some "matchers" to test requests scheme and host
func isScheme(scheme: String) -> (NSURLRequest -> Bool) {
  return { req in req.URL?.scheme == scheme }
}
func isHost(host: String) -> (NSURLRequest -> Bool) {
  return { req in req.URL?.host == host }
}
// we could also imagine a matcher to easily test path, query params, etc

// Combine matchers with OR and AND
func ||(lhs: NSURLRequest->Bool, rhs: NSURLRequest->Bool) {
  return { req in lhs(req) || rhs(req) }
}
func &&(lhs: NSURLRequest->Bool, rhs: NSURLRequest->Bool) {
  return { req in lhs(req) && rhs(req) }
}

// Helper to return a response given a fixture path and status code
// (idea: we could add a header parameter defaulting to nil as well)
func fixture(filename: String, status: Int32 = 200) -> (NSURLRequest -> OHHTTPStubsResponse) {
  let filePath = OHPathForFile(filename, self.dynamicType)
  return { _ in OHHTTPStubsResponse(fileAtPath: filePath!, statusCode: status, headers: nil) }
}

// Helper to call the stubbing function in a more concise way
func stub(condition: NSURLRequest -> Bool, response: NSURLRequest -> OHHTTPStubsResponse) {
  OHHTTPStubs.stubRequestsPassingTest(condition, withStubResponse: response)
}

Usage example:
stub(isHost("myWebService"), fixture("foo.json"))
stub(isScheme("foo") && isHost("badWebService"), fixture("error.json", 404))

This feature been implemented in branch swift-2.0 (which will be merged into master and included in a release once Xcode 7 is out of beta)


feat: Adding SubRule as a new feature

PR summary
Adding the feature to use the subrule operators all, all_ifexists, any, any_ifexists.
Closes #146
PR Checklist
Please make sure that your PR fulfills the following requirements:

[ ] The commit message follows the Angular Commit Message Guidelines.
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

Current vs new behavior

Does this PR introduce a breaking change?

[ ] Yes
[ ] No

Other information

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


full report attachment feature

The number of pages depends on metadata and sections count in the browser trace for a report when creating the subscription which can be different from the total number of pages the customer actually sees. Example customer has 17 pages but when doing a browser trace the metadata and sections total 22 pages. This is in the https://wabi......../exloration represented in the Json response. It will trigger an error because they are over 20 pages.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: e35489ab-e39e-b7be-588d-38f26ccf5442
Version Independent ID: f5145d5d-afbc-f3f0-7275-1186b60890d0
Content: Subscribe yourself to reports and dashboards - Power BI
Content Source: powerbi-docs/consumer/end-user-subscribe.md
Service: powerbi
Sub-service: pbi-explore
GitHub Login: @mihart
Microsoft Alias: mihart

Thanks for creating the issue for us, James.  It's very common to have hidden tabs in the report for various reasons, for example:

Newly added visuals that have not passed our internal gate review
Visuals are not working due to data issues that we would like to hide from the users temporarily.

When we call the following APIs to extract and download the report, these hidden tabs will not be extracted. I wonder why they will be counted when users subscribe via the UI?
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/ExportTo"
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}"
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}/file"

The subscription function is very critical to us because it allows users to self-service themselves on demand. Please keep us posted on the progress!
Last but not least, I would like to take this opportunity to request another feature - it would be great if we can subscribe/extract reports based on benchmarks. Without that function, we have to duplicate the same visual multiple times if users want to have different views in the extract.
Thank you!

Hi, @jagracemicrosoftsupport and @amd-yan -- thanks for your comments! Assigning to the author to investigate.

Hello Edwin

Just letting you know they will be getting the request to the Author Keep track of it using the link in the previously provided email.
From: Maggie Sparkman<EMAIL_ADDRESS>Sent: Friday, March 12, 2021 11:39 AM
To: MicrosoftDocs/powerbi-docs<EMAIL_ADDRESS>Cc: James Grace<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/powerbi-docs] full report attachment feature (#2888)

thanks for your comments! Assigning to the author to investigate.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fpowerbi-docs%2Fissues%2F2888%23issuecomment-797646760&data=04|01|James.Grace%40microsoft.com|4e7ef631bdec4a0e250108d8e57dc9d9|72f988bf86f141af91ab2d7cd011db47|1|0|637511675712390852|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=qtahYHPAKGpFadzX4Hc6MlRoNjy8mvDzXxeG2DcSMS4%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATGCTQU7D65S3DUDNMMLKODTDI7UDANCNFSM4ZBB6CBA&data=04|01|James.Grace%40microsoft.com|4e7ef631bdec4a0e250108d8e57dc9d9|72f988bf86f141af91ab2d7cd011db47|1|0|637511675712400806|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=OYrAqGmJxd37uipFL%2BGCa3Gb6oxsMwbJEwu3w9PZOu0%3D&reserved=0.
2.
Submit to the Ideas Page
You can send me the link so I can vote for it as well
The more votes the more likely you will get the software engineers attention.
Power BI Ideas
https://ideas.powerbi.com/ideas/
Best Regards,
James Grace
Support Engineer - Business Application Platforms,
Power BI
Office<EMAIL_ADDRESS>
9am – 6pm Mon. - Fri. Central Standard Time
Office: 1 +(469) 775-3527
Online Premier Support:  https://premier.microsoft.comhttps://premier.microsoft.com/
Contact Premier Support 1-800-936-3100
If you have any feedback about my work, please let either me or my manager Ed Walters know at<EMAIL_ADDRESS>
From: Edwin S Yan @.>
Sent: Friday, March 12, 2021 9:17 AM
To: MicrosoftDocs/powerbi-docs @.>
Cc: James Grace @.>; Author @.>
Subject: Re: [MicrosoftDocs/powerbi-docs] full report attachment feature (#2888)
Thanks for creating the issue for us, James. It's very common to have hidden tabs in the report for various reasons, for example:

Newly added visuals that have not passed our internal gate review
Visuals are not working due to data issues that we would like to hide from the users temporarily.

When we call the following APIs to extract and download the report, these hidden tabs will not be extracted. I wonder why they will be counted when users subscribe via the UI?
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/ExportTohttps://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/ExportTo"
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}"
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}/filehttps://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}/file"
The subscription function is very critical to us because it allows users to self-service themselves on demand. Please keep us posted on the progress!
Last but not least, I would like to take this opportunity to request another feature - it would be great if we can subscribe/extract reports based on benchmarks. Without that function, we have to duplicate the same visual multiple times if users want to have different views in the extract.
Thank you!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fpowerbi-docs%2Fissues%2F2888%23issuecomment-797554808&data=04|01|James.Grace%40microsoft.com|d802c4b52ef84e66a37e08d8e569d647|72f988bf86f141af91ab2d7cd011db47|1|0|637511590171450847|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=xeBQeJvGqd1sQeI5w153lijkxywnYXb0MLHbpwY5jlI%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATGCTQQVBQAD4PO4JCIVBNDTDIO4PANCNFSM4ZBB6CBA&data=04|01|James.Grace%40microsoft.com|d802c4b52ef84e66a37e08d8e569d647|72f988bf86f141af91ab2d7cd011db47|1|0|637511590171450847|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=qPM8Btnp%2Bf%2BJyO5YCwWD%2B748RlWfrpx5lycWzZCDSpI%3D&reserved=0.

Ignore this
From: James Grace @.>
Sent: Friday, March 12, 2021 5:04 PM
To: MicrosoftDocs/powerbi-docs @.>; MicrosoftDocs/powerbi-docs @.>
Cc: Author @.>
Subject: RE: [MicrosoftDocs/powerbi-docs] full report attachment feature (#2888)
Hello Edwin

Just letting you know they will be getting the request to the Author Keep track of it using the link in the previously provided email.
From: Maggie Sparkman<EMAIL_ADDRESS>Sent: Friday, March 12, 2021 11:39 AM
To: MicrosoftDocs/powerbi-docs<EMAIL_ADDRESS>Cc: James Grace<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/powerbi-docs] full report attachment feature (#2888)

thanks for your comments! Assigning to the author to investigate.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fpowerbi-docs%2Fissues%2F2888%23issuecomment-797646760&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654916542|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2F5Vgu0%2BRHy%2BDM4BX8OJcOLWBU2%2BNmnPeGM7HRoRS5Ms%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATGCTQU7D65S3DUDNMMLKODTDI7UDANCNFSM4ZBB6CBA&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654916542|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=8bGxt0JtHdOqiB7AS5FstjMPsEM7BtxptPX5TY7w330%3D&reserved=0.
2.
Submit to the Ideas Page
You can send me the link so I can vote for it as well
The more votes the more likely you will get the software engineers attention.
Power BI Ideas
https://ideas.powerbi.com/ideas/https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fideas.powerbi.com%2Fideas%2F&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654926500|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=2JFB0jF%2Bg9YMPIxu70ZHx%2FMI3AHHNcUjtqheKwU42L8%3D&reserved=0
Best Regards,
James Grace
Support Engineer - Business Application Platforms,
Power BI
Office<EMAIL_ADDRESS>
9am – 6pm Mon. - Fri. Central Standard Time
Office: 1 +(469) 775-3527
Online Premier Support:  https://premier.microsoft.comhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpremier.microsoft.com%2F&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654936453|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=x6Dt1rBccmG2Fw6MbxCAlbzC%2F3EU08Ih8NHmQrh06ys%3D&reserved=0
Contact Premier Support 1-800-936-3100
If you have any feedback about my work, please let either me or my manager Ed Walters know at<EMAIL_ADDRESS>
From: Edwin S Yan<EMAIL_ADDRESS>Sent: Friday, March 12, 2021 9:17 AM
To: MicrosoftDocs/powerbi-docs<EMAIL_ADDRESS>Cc: James Grace<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/powerbi-docs] full report attachment feature (#2888)
Thanks for creating the issue for us, James. It's very common to have hidden tabs in the report for various reasons, for example:

Newly added visuals that have not passed our internal gate review
Visuals are not working due to data issues that we would like to hide from the users temporarily.

When we call the following APIs to extract and download the report, these hidden tabs will not be extracted. I wonder why they will be counted when users subscribe via the UI?
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/ExportTohttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapi.powerbi.com%2Fv1.0%2Fmyorg%2Fgroups%2F%257bgroup_id%257d%2Freports%2F%257breport_id%257d%2FExportTo&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654936453|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=nvKU%2F6hErh9Ahk4ZxOQWPdWcv4EIU0Wr99SM%2F%2Fku3B0%3D&reserved=0"
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapi.powerbi.com%2Fv1.0%2Fmyorg%2Fgroups%2F%257bgroup_id%257d%2Freports%2F%257breport_id%257d%2Fexports%2F%257bexport_id%257d&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654936453|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=nxqjNNBTvfIoDGAilXVLOwAUQ34Y271wJfwpzwSqY3I%3D&reserved=0"
"https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/exports/{export_id}/filehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapi.powerbi.com%2Fv1.0%2Fmyorg%2Fgroups%2F%257bgroup_id%257d%2Freports%2F%257breport_id%257d%2Fexports%2F%257bexport_id%257d%2Ffile&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654946409|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=TLLPva7UAoH12CIhzTDF%2BzsZj3S0Wy0uzXu5vfYQbJ0%3D&reserved=0"
The subscription function is very critical to us because it allows users to self-service themselves on demand. Please keep us posted on the progress!
Last but not least, I would like to take this opportunity to request another feature - it would be great if we can subscribe/extract reports based on benchmarks. Without that function, we have to duplicate the same visual multiple times if users want to have different views in the extract.
Thank you!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fpowerbi-docs%2Fissues%2F2888%23issuecomment-797554808&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654946409|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=4wSTWL%2FMW505Qqvov9LU6rntwx8o4lWYfOuWnAOB0A8%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATGCTQQVBQAD4PO4JCIVBNDTDIO4PANCNFSM4ZBB6CBA&data=04|01|James.Grace%40microsoft.com|1751049f07fd483c43f008d8e5ab2e05|72f988bf86f141af91ab2d7cd011db47|1|0|637511870654956366|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=zDCvYbWu2z56Q%2B9FPoKy5Mu72DbqMkNZ3oDO3pqD5b0%3D&reserved=0.

Thank you, James & Maggie. Please keep me posted!

Hi @JayG68 ,
Thank you for your suggestion.  We've made the update and set the article to republish.
All the best,
The DOCS team


增加对BV号链接的支持

https://www.bilibili.com/read/cv5167957/
测试过应该是没问题了

Sorry! I was unavailable to github because of a network problem till now. Thanks for the PR.
(I did not see this PR when modifying code locally and push)
非常抱歉！我之前因为网络原因没上github主站。感谢PR。
(本地提交更新时并push时没看到这条PR)


OLS-584: e2e-test - user without RBAC roles are barred off

Description
Add a test cases that users without the required RBAC roles cannot access the respective OLS API endpoints.
Type of change

[x] Refactor
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library

Related Tickets & Documents

Related Issue #
Closes # OLS-584

Checklist before requesting a review

[x] I have performed a self-review of my code.
[ ] PR has passed all pre-merge test jobs.
[ ] If it is a core feature, I have added thorough tests.

Testing

Please provide detailed steps to perform tests related to this code change.
How were the fix/results from this change verified? Please provide relevant screenshots or results.

/lgtm

/approve

/approve
/override "Red Hat Konflux / ols-enterprise-contract / lightspeed-operator"


freeInput option not working?

in the example
autocomplete: {
            //manual data , it will work together with ajax set
            data<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
            freeInput: false,
            freeEdit: false,

            ajaxOpts: {
                url: '{{url("contacts/email-search")}}',
            },

            //ajax query param
            params: function (value) {

                return { q: value };
            },

            //proccess data after ajax is complete and send it back to plugin
            //the data must be an object in the form
            //{id:id ,text:text}
            proccessData: function (data) {

                //return the data
                return data.db_data_array;
            }//end proccess ajax data

        }//end auto complete
    });

i can still enter data to the list that i type...

It should work, can you provide your own example

So I guess you are okay now?


Making the chatbox responsive for smaller screens

Describe the bug
Chatbox is not responsive for small screen.
Screenshots

Additional context
Add any other context about the problem here.

@Priyaaa1 please assign this issue to me

@Priyaaa1 Also please add level label to the PR #379


Added support for filtering tweets from subscription groups

This fixes #24 by including two new options when viewing subscription group feeds - toggles for including or excluding replies and retweets. Due to a limitation in the Twitter API being used, not all tweets are returned (including most retweets, it looks like), so a warning note was also added noting this for users.

Some tweets are missing from feeds. This is mentioned in #53, and I think it's because the Search API doesn't return everything, by design.

I don't know if this is a way to go, but NewPipe scrapes HTML of the Youtube instead of using any kind of API to deliver same experience as you are just browsing Youtube.
I don't know if its possible to do such a think for Twitter or if its so hard to develop (and support!), but I like to share this idea to maybe consider in the future.

@peterflock that's already pretty much how Fritter works! Twitter doesn't return HTML anymore, and instead utilises a single-page application with API calls, so all that Fritter does it uses those same API calls. The problem I'm encountering with the missing tweets in subscription groups is happening because I opted to use the Twitter Search API, passing in all the followed profiles into one call, as it would be more efficient than making n number of calls to the "get tweets by username" endpoint, and having to keep track of all the paginations for each profile.
Newpipe is able to get away with it as YouTube channels post a lot less content than Twitter accounts, so they can simply fetch all the videos for a channel, keep track of the last time they loaded the list, and next time use that as the "download from here" marker. Fritter could also do that, but it would be a lot (lot) more complex, would take a lot more device storage space, and would be a lot slower (imagine following 100 people, all posting 10 tweets a day for the last 10 days - at a limit of 50 per page, it would need at least 200 calls to fetch just the last 10 days of content 😢).
I'm still thinking about how best to achieve decent feeds - it's being tracked in #68, so feel free to comment there!


fix: build:browser failed because of regression in<EMAIL_ADDRESS>

moved from https://gitlab.com/Rich-Harris/buble/merge_requests/120

This has been fixed by updating the Rollup config, so that node-resolve uses the module field rather than the deprecated jsnext:main.


FEATURE: Checking for port used before starting server session

#376

Resue the session if it already exists.
Will need to implement health check to attach to a running server.
Tested scenarios
if MOD.current_session is not None:
    MOD.current_session.disconnect()
print("Before launch_session")
print(f"MOD.current_session: {MOD.current_session}")

# If there is no active session and no server executable listening on the provided port, start the server executable and attach to it.
session = launch_session(EXE_DIR, 50051)
print(f"session: {session}")

# If a session already exists on the provided port, reuse it
session2 = launch_session(EXE_DIR, 50051)
print(f"session: {session2}")

# If a session already exists but it is on a different port than requested, throw an error
try:
    session3 = launch_session(EXE_DIR, 50052)
except Exception as e:
    print(e)

Results
Before launch_session
MOD.current_session: None
session: <ansys.edb.core.session._Session object at 0x000001888E41B940>
session: <ansys.edb.core.session._Session object at 0x000001888E41B940>
There can be only one session active at a time.


Add createToggle  operator

Hi! What do you think about new method createToggle? We often use the on/off state in our work. Can be used for popup or notify. Perhaps need a different name 🤔
Something like this:
const { $enabled, on, off, toggle, reset } = createToggle(false);

If everything is ok I can implement this 😃

Not sure it is for patronum. Because patronum is the library of operators, not typical model factories.
But need to ask @AlexandrHoroshih and @igorkamyshev

Not sure it is for patronum. Because patronum is the library of operators, not typical model factories.
But need to ask @AlexandrHoroshih and @igorkamyshev

timeout, debounce, and, or, equals, either, etc
So, almost all functions in patronum is factories. They creates some units and returns it.

Maybe we need to choose a new name for this method?

I actually think, it is a pretty good name 😄
It could be shortened to fit more of "patronum naming style", like const someToggle = toggle(false), but this way it is a bit less obvios, what this thing actually does

Actually, there is already a similiar proposal
https://github.com/effector/patronum/issues/286
Looks like toggler it is a pretty good name!


Update scalafmt-core to 3.1.1

Updates org.scalameta:scalafmt-core from 2.7.5 to 3.1.1.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Files still referring to the old version number
The following files still refer to the old version number (2.7.5).
You might want to review and update them manually.
.github/workflows/format.yml

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "scalafmt-core" } ]

labels: library-update, early-semver-major, semver-spec-major, old-version-remains

Coverage decreased (-2.7%) to 92.073% when pulling d9a8d6dd3b4ecd15a6d817e0e4b84018c1d72816 on scala-steward:update/scalafmt-core-3.1.1 into ca10c64b98af9973d1b830d6a180d8b2c8898d98 on iheartradio:master.

Superseded by #182.


French AZERTY keyboard layout: Fold/unfold defaut keymaps broken on OSX

VSCode Version:1.11.0
OS Version: OSX Sierra 10.12.4 (16E195

Steps to Reproduce:

Using a mac book pro with a french azerty keyboard (or at least using the French input source in osx keyboard settings I don't have a non french mac at hand to verify this)
open a file with foldable sections
try to fold a section with the default shortcuts.

On a French AZERTY mac keyboard, there is no [ key. Typing a [ requires one to press ⇧⌥(.
Since ⌥⌘[(alt+cmd+[) is impossible to type, I tried :

⌥⌘( doesn't do anything
⌥⇧⌘( doesn't do anything

I then tried to edit the keybindings to add these combinations to editor.fold (and the matching ones for editor.unfold) but these functions are not available in the keyboard shortcuts editor.
I had to define
    { "key": "alt+cmd+5",           "command": "editor.fold", "when": "editorTextFocus" },
    { "key": "alt+cmd+[Minus]",           "command": "editor.unfold", "when": "editorTextFocus" }

in keybindings.json to get folding to work.
I was able to find the right key combinations thanks to a combo of the blue information icon which tells me which keys I am supposed to press in my layout and the ⌘K ⌘Kfeature to reverse match various key presses to the corresponding codes.
Unfortunately it seems the "define keybinding" ( ⌘K ⌘K ) box is unable to find the right key combination to produce the default mapping's code.
According to the box ⌥⌘^ is equivalent to alt+cmd+[BracketLeft] which sounds like the right code for ⌥⌘[ but event after I removed my overrides I was unable to get the folding to work pressing ⌥⌘^ and ⌥⌘$
Since the editor is already capable of translating  keypresses into the corresponding keycodes, it would be very very useful if there was a way to get with all the existing shortcut expressed in the current user's layout.
It would also be great if the default keymap included a working shortcut for fold/unfold on non qwerty keyboards.

@jeantil
We do not ship with keyboard layout specific default keybindings. In other words, it is possible that some default actions lack a default keybinding on a certain keyboard layout or that the default keybinding is very poor/unfortunate. Pretty please upvote in #1240
I'm happy you were able to work it out eventually. Given what you've explained, I am not entirely convinced that we suffer from a bug at this time. Here is an in-depth explanation of what we do - https://github.com/Microsoft/vscode/wiki/Keybindings
I will analyze the two default bindings for fold/unfold as soon as I get back in front of the mini mac in the office and can double check what our defaults are. In any case, the F1 list should correctly show what the binding is (if any). If it doesn't, then there's a bug...

@alexandrudima

upvoting done
F1 doesn't list any key shortcut for fold by default (while https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf and other online sources mention ⌥⌘[)
so either a documentation bug or something doesn't work as it should

The PDF shows the default keybindings for the US standard keyboard layout. Perhaps it should have a fine-print somewhere. Even better, perhaps we should have a way to generate the PDF in product. Once I'm on a mac I will double check that the keybinding logic works as expected.

I believe everything is working as designed. Folding is bound to cmd+shift+[. The [ character can be produced only with shift+altgr (i.e. ctrl+alt+shift).  Since we cannot dispatch cmd+ctrl+alt+shift+shift+( (due to shift appearing twice), the command is unbound by default. The only way to improve this is to ship with a French AZERTY optimized set of default keybindings. #1240 is the right place to track that.


Resolve issue 27 by retaining generic base types

This should resolve issue #27 by retaining base types which initially match something, even if they are unpopulated. The idea is that ultimately we will end up with generic elemental base types which match nothing but are still retained as catch-alls.
I still separately have to deal with #26 to allow separate specification of base (generic) types and initial types, as these are now two different ideas.
@bannanc , can you review?

I don't think you want to equate the initial sampler state with basetypes, since this gives the initial sampler state some sort of privileged meaning. Part of our goal is to do experiments to see if starting from different sampler states can reach the same region, but that may be impossible if the rules of what can be accepted or rejected are different for different initial conditions.
I think we want to separate the initial sampler state definition from the basetypes definition, and only retain basetypes.
Even better would be to only retain atomtypes that have children, since this generalizes the concept of basetypes.

I don't think you want to equate the initial sampler state with basetypes, since this gives the initial sampler state some sort of privileged meaning. Part of our goal is to do experiments to see if starting from different sampler states can reach the same region, but that may be impossible if the rules of what can be accepted or rejected are different for different initial conditions.

@jchodera : Yes, exactly. We already discussed this, and that's issue #26 which I was going to do next. :) I just ended up with only very little time to work on this yesterday so I couldn't do both at once as it required me spending time wrangling file parsing which was part of the code I hadn't worked through yet.
The place where we want to end up is that we have "generic types" which we will always retain which will often be empty, deliberately, and we have separate "initial types" which are just the starting point.

@jchodera :

Even better would be to only retain atomtypes that have children, since this generalizes the concept of basetypes.

I'm quite confident this is NOT what we're after. For example, this would mean that (currently) in AlkEthOH we would have only one type of hydrogen, the generic type, since neither 'HO' nor 'HC' have children (yet - but they will once we get the SMARTS sampling working well enough). Also, our view (with Christopher) is that we want the generic/basetypes to normally go completely or nearly unused so that they can sort of serve as a flag for "we don't yet know much/anything about this chemistry". So we are actually trying to deliberately avoid generalizing the concept of basetypes and really treat the elemental basetypes in a special way.

OK, then let's at least split up the basetypes file and the initial types file into two separate entities, or else we will be preventing ourselves from being able to address one of the major experimental goals for this codebase (which is to examine the dependence of convergence on initial sampler state).

@jchodera - yup, handling that in #26 . :)

I just finished looking through the changes with this pull request, I think the code looks good. @davidlmobley


Move template registry to its own repository

Currently, the template registry is embedded in this repository. It should be its own repository for several reasons:

Make it easier to expose and publicize. As a top level repository, it will be easier to find and access.
Establish and maintain the focus of the registry by having no other kind of content in the repository.
Make it possible to have different maintainers. People who maintain content contributions should not have to be the same people who maintain code contributions and vice versa.

Initial thinking:

Title is Kubernetes Template Registry
Repository name is templates
Directory structure is category based (i.e., categories at top level, sub categories below them, etc.)
Initial categories include common and storage.

replicatedservice lives in common
redis lives in storage

Plans may be changing here, so we should not pull the trigger on this just yet.

Assigned this to @vaikas-google, since he's already signed up to create the top level repository.

Assigning this task back to me.

Preparing to implement this issue.
The implementation will follow the process for moving a folder described at Detach subdirectory into separate Git repository and the conventions for organizing a repository described in #25.
Files in the current location (https://github.com/kubernetes/deployment-manager/tree/master/templates) will move to the new location (https://github.com/kubernetes/application-dm-templates) as follows:

[ ] README.md at the top level of the current location will move to the top level of the new location.
[ ] The contents of nfs, redis and spark at the top level of the current location will move to a folder named storage in the new location.
[ ] The contents of replicatedservice in the current location will move to a folder named common in the new location.
[ ] README.md will be updated to describe the organization of the new repository.
[ ] The template registry documentation will be updated to capture the decisions recorded in #25.

/cc @vaikas-google, @bmelville, @zmerlynn


Any way to fix event.json cannot found issue when I run pnpm install in CodeBuild?

Hi guys, I got this error when I run pnpm install in CodeBuild. Seems that pnpm cannot found the GitHub event.json when install.
Is there any way to fix or ignore this?
Cheers!
113 | [Container] 2023/03/01 04:59:07 Running command pnpm install
114 | node:fs:585
115 | handleErrorFromBinding(ctx);
116 | ^
117 |
118 | Error: ENOENT: no such file or directory, open '/home/runner/work/_temp/_github_workflow/event.json'
119 | at Object.openSync (node:fs:585:3)
120 | at Object.readFileSync (node:fs:453:35)
121 | at NodeFS.readFileSync (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:84834:28)
122 | at NodeFS.readJsonSync (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:84171:30)
123 | at ../node_modules/.pnpm/@yarnpkg+core@4.0.0-rc.39_typanion<EMAIL_ADDRESS>(/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:160610:117)
124 | at __require (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:12:50)
125 | at ../node_modules/.pnpm/@yarnpkg+core@4.0.0-rc.39_typanion<EMAIL_ADDRESS>(/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:161970:27)
126 | at __require (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:12:50)
127 | at ../node_modules/.pnpm/@yarnpkg+core@4.0.0-rc.39_typanion<EMAIL_ADDRESS>(/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:174430:43)
128 | at __require (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:12:50) {
129 | errno: -2,
130 | syscall: 'open',
131 | code: 'ENOENT',
132 | path: '/home/runner/work/_temp/_github_workflow/event.json'
133 | }
134 |
135 | [Container] 2023/03/01 04:59:07 Command did not exit successfully pnpm install exit status 1
136 | [Container] 2023/03/01 04:59:07 Phase complete: BUILD State: FAILED
137 | [Container] 2023/03/01 04:59:07 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: pnpm install. Reason: exit status 1

I am not familiar with pnpm. could you check if this helps? https://github.com/pnpm/pnpm.github.io/issues/296

I am not familiar with pnpm. could you check if this helps? pnpm/pnpm.github.io#296

same issue.
I am converting the trigger from a Lambda function to a Github Action. Both are calling the exact same Codebuild project. But Lambda calling works, Github Action calling will result in this node:fs / event.json not found error.
The only difference seems to be Github Action > aws-codebuild-run-build@v1 is passing a lot of GITHUB_* variables. The particular file that is causing trouble seems to be GITHUB_EVENT_PATH=/home/runner/work/_temp/_github_workflow/event.json
Is there a way to NOT pass all the GITHUB_* variables?

Hi @yiyang-ampup, Thanks for the finding.
This is expected behavior today. According to the specs,
env-vars-for-codebuild (optional) : A comma-separated list of the names of environment variables that the action passes from GitHub Actions to CodeBuild.

The action passes these environment variables to CodeBuild along with any environment variables that have a github prefix.

This list is often the same or a subset of the list of environment variables that you define for GitHub actions in the env property.

Note: If you specify an environment variable with the same name as one defined in your CodeBuild project, the one defined here replaces the one in the CodeBuild project. For a list of CodeBuild environment variables, see

Is there a way to NOT pass all the GITHUB_* variables?

No. But we can introduce a new disable-github-env-vars option, and update this code block accordingly. We've made a change made for a similar requirement before.
Your contributions via a. pull request will be much appreciated https://github.com/aws-actions/aws-codebuild-run-build/blob/main/CONTRIBUTING.md

I am experiencing the same issue. When I run manually in the Codebuild console with the same sha, this error does not occur. I am not changing the buildspec or doing any manual changes. Commenting to follow this issue.


Port the neon element tests!

Part of https://github.com/dart-lang/polymer_elements/issues/1.

There is only one test I could find for the neon elements, it is for neon-animate-pages.  The test relies on Polymer behaviors, so this would appear to be blocked on dart-lang/polymer-dart#551.

I actually ported the test, but it currently fails.  Do you want to pull anyway?

Yes lets pull it in, just mark it as skip for now and link the message to a github issue.

closed by https://github.com/dart-lang/polymer_elements/pull/22


Property 'message' does not exist on type 'BaseEvent'

Describe the bug
An issue with the type defs.
I tried to show an error message from a 'BaseEvent'.
But TypeScript do not appreciate it  Property 'message' does not exist on type 'BaseEvent'. ts(2339)
To Reproduce
Steps to reproduce the behavior:
1.
Geolocation.on('error', (error) => {
      this.toastrService.error(error.message);
    });

Expected behavior
Type defs should allow for setting of code & message properties.

I don't think this is a problem with OpenLayers.  The GeolocationError extends BaseEvent and adds code and message properties.  It looks like the problem comes from the *.d.ts files that you are using.

Thanks, I'll have a look

@daboudii - seems like it makes sense to add @api annotations to the GeolocationError class and the code and message properties.
I think it could also make sense to add an example to the GeolocationError class description to make it clear that this type is passed to listeners of the 'error' event type.  This isn't clear from the @fires annotation.

If you look the screenshot in https://github.com/openlayers/openlayers/issues/10905#issue-596782073 the error code is 1 with message User denied location but in the doc : https://openlayers.org/en/latest/doc/errors/ it doesn't match.
Should I create another issue for that or can be done in the same PR ?

@daboudii the errors listed on https://openlayers.org/en/latest/doc/errors/ are messages for assertion errors thrown in the library.  The messages for those errors are links to that webpage (this was an effort to reduce build sizes).
The object passed to listeners for the error event from ol/Geolocation objects has a code property that relates to the error codes for the browser's GeolocationPositionError object.  See the docs for that object for a table explaining the various error codes.
The documentation for our GeolocationError object (which is confusingly not an Error itself) could include a link to the GeolocationPositionError docs where the code is explained.

@tschaub thanks for the explanation.
It's added to the PR..
About the error event, maybe it would be more clear to rename it geolocationerror like   imageloaderror
because right now there is to events call error in Geolocation.js

IMO, exporting the GeolocationError class is necessary, so it can be used outside the module


nicematrix package incompatible

The nicematrix package is incompatible with the tagging code. With math tagging loaded, the example
\begin{NiceTabular}{cc}
A & B \\
C & D
\end{NiceTabular}

errors with
! File ended while scanning use of \__math_grab_dollar:w.

Possibly related: #30
Without the math tagging code, that example produces parent-child warnings like
Package tagpdf Warning: Parent-Child 'StructTreeRoot/pdf' --> 'Table/pdf2'.
(tagpdf)                Relation is not allowed (struct 1, /StructTreeRoot -->
(tagpdf)                struct 5) on line 14

Full example:
\DocumentMetadata
  {
    lang=en-US,
    pdfversion=2.0,
    pdfstandard=ua-2,
    testphase={phase-III,math,title,table,firstaid}
  }
\documentclass{article}
\usepackage{nicematrix}

\title{nicematrix tagging test}

\begin{document}

\begin{NiceTabular}{cc}
A & B \\
C & D
\end{NiceTabular}

\end{document}

I don't understand what's going on but the package author has added some code related to tagging, e.g. https://github.com/fpantigny/nicematrix/blob/3f1b1147cc1c083135a918d79905bde5e9faaa2d/nicematrix-code.dtx#L3597

I think that, with the current version of nicematrix (6.29b 2024-11-12) it works when the math tagging code is not used.
I will investigate to search where is the interaction with the math tagging code.

With the latest version (7.0, 2024-11-18), nicematrix is compatible with tagging (at least for simple tabulars).

Math mode still has issues it seems.
\DocumentMetadata
  {
    lang=en-US,
    pdfversion=2.0,
    pdfstandard=ua-2,
    testphase={phase-III,math,title,table,firstaid}
  }
\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$\begin{pNiceMatrix}
\frac{1}{2} & -\frac{1}{2} \\
\frac{1}{3} & \frac{1}{4} \\
\end{pNiceMatrix}$

\end{document}

produces a parent-child warning.

For information.
The latest version of nicematrix in development on GitHub (b25c83b) no longer send a warning and create the following structure (screenshot from Adobe Acrobat):

It's not at all the same as provided by using {pmatrix} instead of {pNiceMatrix}. With {pmatrix}, I have:

What should I try to do?

@fpantigny I could very much be wrong, but I think arrays in math should not be tagged as tables but need to be interpreted by the luamml code to be converted to mathml. So at the pdf level it should just collapse into a single <Formula>

@mbertucci47 OK. I will do that.

@fpantigny Please check first with @FrankMittelbach or @u-fischer before spending time changing the code

or @davidcarlisle in that case

@fpantigny this need some thought and a number of tests, as the tagging beside other depends also the engine and on luamml settings (pmatrix is not yet tagged correctly either).

@u-fischer: Well. I will wait.

@fpantigny (and others)
I guess you meant a "mathematical array", rather than "every array" since a straightforward, non-mathematical, table could also appear within math.

I guess you meant a "mathematical array", rather than "every array" since a straightforward, non-mathematical, table could also appear within math.

but then not as a \begin{array} or a variant thereof, but as a tabular. I read "array" in the context of LaTeX as a mathematical array and not in any broader sense in which it may be used in the English language.


Make Sisimai::Lhost::Faster

#354
Divide a message body into message/delivery-status part and message/rfc822 part
About 30% faster than v4.25.4p6
Decrease about 15% at lines of code

Coverage increased (+0.3%) to 94.799% when pulling e1d29ead5f4f197f91d26d2da5581a3aaf65cc7b on 354-make-lhost-faster into 2300425e08e357cb39952fdefd17b6c48ebd5d5a on master.


[feature] typesafe configuration options

If I put Configuration or Options in ????, I get all sorts of warnings from the ts compiler because I'm not defining all the properties, just the ones I want to override from defaults. It would be nice to make that object more typesafe.
const config = {
    test: {
    } as ....????
}

orm = await MikroORM.init(config.test);

Well it is typesafe, that is the reason why it does not let you pass object with missing required properties.
Configuration is the wrapper class, not the options interface. That is MikroORMOptions, but there a lot of things are required, even those that has default values.
Options is what you should be using, as it removed those props that have default value from MikroORMOptions.
Obviously you can always do Partial<Options> so allow having just some keys of that. Maybe show concrete example of what you would like to do and an error of what is missing from Options interface.

Once again, Partial to the rescue. =)
I setup my config in cli-config.ts and since that file doesn't have anything else in it... I want defining the config object to auto complete. Partial fixes that.

Actually, Partial then causes issues with .init().

As I said, please add concrete example of what you try to put there, how you type that and what is the error.

https://github.com/lookfirst/mikro-example/blob/master/src/db/cli-config.ts
https://github.com/lookfirst/mikro-example/blob/master/test/dog.spec.ts#L13
added 'as any' to init.
Error:(13, 29) TS2345: Argument of type 'Partial<MikroORMOptions> | Partial<Pick<MikroORMOptions, "driver" | "namingStrategy" | "replicas" | "name" | "dbName" | "clientUrl" | "host" | "port" | "user" | "password" | "multipleStatements">>' is not assignable to parameter of type 'MikroORMOptions | Configuration | Pick<MikroORMOptions, "driver" | "namingStrategy" | "replicas" | "name" | "dbName" | "clientUrl" | "host" | "port" | "user" | "password" | "multipleStatements">'.
  Type 'Partial<MikroORMOptions>' is not assignable to type 'MikroORMOptions | Configuration | Pick<MikroORMOptions, "driver" | "namingStrategy" | "replicas" | "name" | "dbName" | "clientUrl" | "host" | "port" | "user" | "password" | "multipleStatements">'.
    Type 'Partial<MikroORMOptions>' is not assignable to type 'MikroORMOptions'.
      Types of property 'entities' are incompatible.
        Type '(EntityClass<IEntity<string | number>> | EntityClassGroup<IEntity<string | number>>)[] | undefined' is not assignable to type '(EntityClass<IEntity<string | number>> | EntityClassGroup<IEntity<string | number>>)[]'.
          Type 'undefined' is not assignable to type '(EntityClass<IEntity<string | number>> | EntityClassGroup<IEntity<string | number>>)[]'.

Ok, will take a loot into this later.

Well, I removed the Partial and that cast to any and it works as expected, no TS errors.

Is any cheating? I often wonder with laughter.

I guess this can be closed now?


Kotlin integracion needed

Hi,
I'm starting to migrate from java to kotlin, where I found a NPE generator,  here:
@Subscribe
    fun AsynchronousResponse(ResponseObject_AsynchronousResponse: ResponseObject) {
        Helper.processAsynchronousRequest(ResponseObject_AsynchronousResponse)
    }

Problem Fixed by doing this:
@Subscribe
    fun AsynchronousResponse(ResponseObject_AsynchronousResponse: ResponseObject) {
        val ResponseObject_AsynchronousResponse2: ResponseObject = GsonSingleton.getInstance().objectFromJson(GsonSingleton.getInstance().objectToJson(ResponseObject_AsynchronousResponse), ResponseObject::class.java) as ResponseObject
        Helper.processAsynchronousRequest(ResponseObject_AsynchronousResponse2)
    }

Just wanted to document that, and also to check whether we can start migrating to kotlin.
Thank you for your time

This is likely an issue with your own code. Do you have a stacktrace?
I tested EventBus using an all-Kotlin project and it works fine. However, to use the annotation processor you need to use kapt instead of annotationProcessor. Due to a bug this requires updating to the preview Android Gradle Plugin and Gradle 4 RC1.
-ut

thank you for answering @greenrobot-team , I just tried what you said.
I think the problem was on how Gson work, it doesn't serialize variables not sent by the server. which was creating a NPE.
Thanks.
Problem Solved.


znc makeconf: secure by default

Default bListenSSL to true when SSL is enabled.

Wow. I haven't seen so much red in a while. :-)
The tests need to be fixed. Right now things go with the default value for SSL during the --makeconf part of the tests, so after this change the tests try to connect plain-text to a SSL listener.

Yeah, Travis is just being incredibly slow and I'm waiting for the rest of them to complete to see if anything breaks.

It'll only scare all browsers away.
Probably need to offer creation of letsencrypt cert, instead of self-signed. Of course, this doesn't apply to tests, which should use self-signed cert.

if we're gonna go the route of having LE do this automatically in the future that's fine, but for now I'lll close the PR then.


Error in testsuite: RelatedObjectDoesNotExist: User has no queuemembership.

This is probably for @reduxionist.
Testing helpdesk via quicktest.py passes all tests.
However running the testsuite via
python manage.py test helpdesk
gives me a weird error (trace is below) probably related to the staff per queue membership feature.
This is raised in test_navigation around 82: queue__in=request.user.queuemembership.queues.all(). I tried fiddling with the test settings and enabling/disabling HELPDESK_ENABLE_PER_QUEUE_STAFF_MEMBERSHIP, to no avail.
Since this does NOT occur when testing via quicktest.py I am bit puzzled - has to do something with the test environments probably. Maybe somebody has some ideas.

Traceback (most recent call last):
  File "django-helpdesk/helpdesk/tests/test_navigation.py", line 31, in test_navigation
    response = self.client.get(reverse('helpdesk_dashboard'))
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/test/client.py", line 500, in get
    **extra)
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/test/client.py", line 303, in get
    return self.generic('GET', path, secure=secure, **r)
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/test/client.py", line 379, in generic
    return self.request(**r)
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/test/client.py", line 466, in request
    six.reraise(*exc_info)
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "django-helpdesk/helpdesk/views/staff.py", line 82, in dashboard
    queue__in=request.user.queuemembership.queues.all(),
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/utils/functional.py", line 226, in inner
    return func(self._wrapped, *args)
  File "/Users/username/.virtualenvs/test_dj18/lib/python2.7/site-packages/django/db/models/fields/related.py", line 470, in __get__
    self.related.get_accessor_name()
RelatedObjectDoesNotExist: User has no queuemembership.

@flinx Thanks for letting me know, I'm looking into it right now, and have a strong suspicion as to what the cause is, so there's no need for you to investigate any further.  :)


support for querying embedded objects

I was looking though the documentation at the filters section and saw that there wasn't a way to query an entity embedded within another entity.  Is this a feature that already exists and is poorly documented, or does it not exist at all and needs to be implemented ?

I took a quick look at the code and it seems that elem match MIGHT ve useable for non-array filtering , since it works on Iterable and the Document class is an Iterable.

Yes you can query for embedded object, but it is poorly documented. Functionality is much like mongo. Some examples are there in the tests, I am providing here one of them now to get you started.
@Indices({
        @Index(value = "joinDate", type = IndexType.NonUnique),
        @Index(value = "address", type = IndexType.Fulltext),
        @Index(value = "employeeNote.text", type = IndexType.Fulltext)
})
public class Employee implements Serializable {
    @Id
    @Getter
    @Setter
    private Long empId;

    @Getter
    @Setter
    private Date joinDate;

    @Getter
    @Setter
    private String address;

    @Getter
    @Setter
    private transient Company company;

    @Getter
    @Setter
    private byte[] blob;

    @Getter
    @Setter
    private Note employeeNote;

    public Employee() {}

    public Employee(Employee copy) {
        empId = copy.empId;
        joinDate = copy.joinDate;
        address = copy.address;
        company = copy.company;
        blob = copy.blob;
        employeeNote = copy.employeeNote;
    }
}

public class Note {
    @Id
    @Getter @Setter private Long noteId;

    @Getter @Setter private String text;
}

public void testRegexFilter() {
        RecordIterable<Employee> employees = employeeRepository.find();
        int count = employees.toList().size();

        List<Employee> employeeList = employeeRepository.find(regex("employeeNote.text", ".*"))
                .toList();

        assertEquals(employeeList.size(), count);
    }

elemMatch filter is for array or iterable fields in the object or document, same as that of mongo.


Drag-and-scroll doesn't work in reorganize, can't move pages long distances

It is impossible to move a page a long distance if the tree is taller than the window.

This seems to be because, while jqtree tries, it can't quite figure out the fairly wacky CSS sizing and positioning logic we're using. jqtree's examples handle this case just fine, even in the presence of an internal scrollbar, but they aren't relying on calc().


How do you handle builds with dependencies?

Is there any good methods for overcoming the Amazon Linux AMI's extremely old environment?  Right now I find that I can't really do too many meaningful things with awslambda in Nim because of it. A few examples of the pitfalls I've run into:
If i try to dynamically link everything, and upload the binary along with .so files, and overwrite the library path for lambda, I run into the issue of the AMZN Linux AMI's GLIBC version being from 2012.  Aspects of GLIBC keep one from tossing it around in compressed archives (hardcoded paths).
If I try to use something like nimcrypto, which has openssl as a dependency, I run into the fact that if I supply my own openssl binaries, they do not work with the AMI's version of GLIBC.  If I let it default to the system's openssl libraries, they're again way too old for nimcrypto to use.
If I want to package my own glibc, I have to go through the precarious steps of having two versions of glibc on my system, and I have to build it anticipating the paths it will reside with.
If I want to statically link my binary, I'd have to use something like musl, and i'd have to cross-compile openssl with musl.
I guess I could go with static linking with musl using my own build version of openssl but this feels like I'm losing the magic at this point.
Would be helpful if there were some examples of building a Nim lambda that packaged it's own dynamically linked libs, or some statically linked approach, etc.

The recommended approach now would be to use yumda to install any missing libraries you need and then publish them as a layer (or include them with your custom runtime)


initCommands has a default value of [], but requires declaration

Should the initCommands property within the ModuleOptions be optional?
The documentation doesn't allude to requiring it to be set, and it has a default value of an empty array.
https://github.com/johannschopplich/nuxt-gtag/blob/e7282b5f0c3dea1635122838ec2305bf77400102/src/module.ts#L51C1-L51C49

PR welcome!


Add numericGroupSeparator as a serializable property in inputmask plugin

Currently, there is no way to customize the numericGroupSeparator options in the inputmask plugin. Therefore when using a decimal or currency mask, we are forced to use , as separator (e.g. 123,456.00).
The changes in this PR allows users to override the separator in their survey config JSON, by adding numericGroupSeparator as a serializable property like it is already the case for other properties such as suffix or numericDigits

Hi @dmitrykurmanov, I hope you are doing well ! Did you have time to look at this small PR, it would be useful for us if this fix was merged !
Thanks in advance


Support Keyboard Shortcuts

Supporting common keyboard shortcuts could greatly improve usability.
Examples

Pressing "enter" in the Defects or Requirements tab could open the details for the selected item in the "ALI Detail" pane.
Allowing dialogs to be confirmed or dismissed via keyboard (e.g., when selecting a user to assign defect to)

This is a good point. Unfortunately I'm not used to keyboard shortcuts in IDE and so I neglected this aspect. Fixing this over the while plugin looks like a rather big endeavour, however, if you provide me with list of bindings (+their location) you miss the most, I'll look into it...


[edn] parse error with escaped quotes in string

Found when attempting to import music data:
conn.transact(&mut sqlite, r#"[
        {:db/id<PHONE_NUMBER>9155, :artist/name "\"Quoted\""}
]"#).unwrap();

Leads to:
---- test_big stdout ----
	thread 'test_big' panicked at 'called `Result::unwrap()` on an `Err` value: Error(EdnParseError(ParseError { line: 2, column: 55, offset: 56, expected: {"[a-z]", "0", "\"", "/", "[A-Z]", "[12]", "\n", "(", ",", "[3]", "\t", "...", " ", "true", "[2-9]", "[0-9]", "0x", "#f", "\r", "[", "#{", "{", "[*!_?$%&=<>]", ";", "+", "[-*!_?$%&=<>]", "false", "nil", ".", ":", "-"} }), State { next_error: None, backtrace: None })', src/libcore/result.rs:859
note: Run with `RUST_BACKTRACE=1` for a backtrace.

This is also a known issue: there's a comment about quoting in the code, but I don't see a ticket.

OK, we can use this as the ticket for that work then

Fixed in #589.


Cant seem to get it to work with Electron

Describe your system

odbc Package Version: 2.4.4
Node.js Version: 16.9.1
Node.js OS: Windows
Electron Version: 16.0.5 (node.js ver 16.9.1)

Describe the bug
Can't get electron app to recognise the odbc.node file.
Error: Cannot find module '\node_modules\odbc\lib\bindings\napi-v6\odbc.node'
at webpackEmptyContext (webpack:///./node_modules/odbc/lib_sync?:2:10)
at Module.eval (webpack:///./node_modules/odbc/lib/odbc.js?:23:79)
at eval (webpack:///./node_modules/odbc/lib/odbc.js?:101:30)
To Reproduce
Steps to reproduce the behavior:
Create electron app.
add odbc.
import odbc.
Additional context
Any help would be great. Not sure exactly why its not able to understand the odbc.node file even though it exists and node-gyp compiles odbc fine.

Hey!
I got it working with Electron.
It will however always depend on the user having the neccessary ODBC drivers installed on their system.
Are you sure that you are importing the ODBC package in a Node process, and not the browser process?

I was using a templated vuejs/electron which was causing this issue.
Non templated Electron works fine.