tests: kernel/interrupt skip on ITE

After discussion in #63114 we should skip this test on ITE board. Excluding ITE board only from one failing testcase, which is  arch.shared_interrupt. As Dino-Li said "this test needs to trigger a software interrupt after calling trigger_irq. On it8xxx2_evb, current trigger_irq implementation of RISC-V architecture does not trigger interrupts."

I may be missing something, but this is skipping only the shared interrupt test - maybe it just need a more detailed commit message?

The "arch.shared_interrupt" section in the yaml is a whole test binary, with every tests/kernel/interrupt test case included, but with CONFIG_SHARED_INTERRUPTS=y.  Are there no test cases in arch.shared_interrupt that pass?  Seems like the specifics in the bug are about one case.  If it's one case, let's skip that one case on that one platform.
Coverage is valuable, don't throw it out. :)

Shouldn't there be a fix for the issue - @fkokosinski @ycsin - any thoughts here?

@andyross There isn't problem with a particular testcase. There is a problem with shared interrupts. According to https://github.com/zephyrproject-rtos/zephyr/issues/63114#issuecomment-1807647339 I verified this. After separating the testcases in yml file.
tests:
  arch.interrupt:
    # nios2 excluded, see #22956
    arch_exclude: nios2
    platform_exclude: qemu_cortex_m0
    tags:
      - kernel
      - interrupt
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.interrupt.qemu_cortex_m0:
    platform_allow: qemu_cortex_m0
    tags:
      - kernel
      - interrupt
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
    extra_configs:
      - CONFIG_QEMU_ICOUNT=y
  arch.interrupt.minimallibc:
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE and CONFIG_MINIMAL_LIBC_SUPPORTED
    # nios2 excluded, see #22956
    arch_exclude: nios2
    platform_exclude: qemu_cortex_m0
    tags:
      - kernel
      - interrupt
      - libc
    extra_configs:
      - CONFIG_MINIMAL_LIBC=y
  arch.interrupt.qemu_cortex_m0.minimallibc:
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE and CONFIG_MINIMAL_LIBC_SUPPORTED
    platform_allow: qemu_cortex_m0
    tags:
      - kernel
      - interrupt
      - libc
    extra_configs:
      - CONFIG_QEMU_ICOUNT=y
      - CONFIG_MINIMAL_LIBC=y
  arch.shared_interrupt.static_shared_irq_write:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.nested_isr:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.isr_regular:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.isr_offload_job_identi:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.isr_offload_job:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.dynamic_shared_irq_write:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.isr_dynamic:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.sw_isr_irq_parent_table:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.prevent_interruption:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE
  arch.shared_interrupt.isr_offload_job_multiple:
    # excluded because of failures during test_prevent_interruption
    platform_exclude:
      - qemu_cortex_m0
    arch_exclude:
      # same as above, #22956
      - nios2
      # test needs 2 working interrupt lines
      - xtensa
      # TODO: make test work on this arch
      - mips
    tags:
      - kernel
      - interrupt
    extra_configs:
      - CONFIG_SHARED_INTERRUPTS=y
    filter: not CONFIG_TRUSTED_EXECUTION_NONSECURE

The execution fails with this results.
The following issues were found (showing the top 10 items):
INFO    - 1) tests/kernel/interrupt/arch.shared_interrupt.static_shared_irq_write on it8xxx2_evb failed (Timeout)
INFO    - 2) tests/kernel/interrupt/arch.shared_interrupt.nested_isr on it8xxx2_evb failed (Timeout)
INFO    - 3) tests/kernel/interrupt/arch.shared_interrupt.isr_regular on it8xxx2_evb failed (Timeout)
INFO    - 4) tests/kernel/interrupt/arch.shared_interrupt.isr_offload_job_identi on it8xxx2_evb failed (Timeout)
INFO    - 5) tests/kernel/interrupt/arch.shared_interrupt.isr_offload_job on it8xxx2_evb failed (Timeout)
INFO    - 6) tests/kernel/interrupt/arch.shared_interrupt.dynamic_shared_irq_write on it8xxx2_evb failed (Timeout)
INFO    - 7) tests/kernel/interrupt/arch.shared_interrupt.isr_dynamic on it8xxx2_evb failed (Timeout)
INFO    - 8) tests/kernel/interrupt/arch.shared_interrupt.sw_isr_irq_parent_table on it8xxx2_evb failed (Timeout)
INFO    - 9) tests/kernel/interrupt/arch.shared_interrupt.prevent_interruption on it8xxx2_evb failed (Timeout)
INFO    - 10) tests/kernel/interrupt/arch.shared_interrupt.isr_offload_job_multiple on it8xxx2_evb failed (Timeout)

It confirms that, @pkunieck approach (to exclude platform for all shared_interrupt testcases) was proper.

So after the consultation with @gbarkadiusz, it may be better to exclude the whole riscv32 arch from that, as it was proved in #63114. @Dino-Li , can you confirm that?

Can we have an update on this? Can this be merged, or maybe it requires more discussion?

@andyross hey could you take another look?


Remove unused declared cargo features, rename feature 'agecy_v2' to 'agency_tests'

Signed-off-by: Patrik Stas<EMAIL_ADDRESS>

Codecov Report

Merging #303 (7131238) into master (ec23a53) will decrease coverage by 4.17%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #303      +/-   ##
==========================================
- Coverage   49.73%   45.55%   -4.18%
==========================================
  Files         154      152       -2
  Lines       19502    18646     -856
  Branches     6142     5828     -314
==========================================
- Hits         9699     8494    -1205
- Misses       5044     6081    +1037
+ Partials     4759     4071     -688

Flag
Coverage Δ

integration
?

unittests
45.55% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

libvcx/src/api/vcx.rs
44.81% <ø> (-6.24%)
:arrow_down:

libvcx/src/aries/handlers/connection/connection.rs
39.91% <ø> (-3.61%)
:arrow_down:

libvcx/src/connection.rs
49.85% <ø> (-4.47%)
:arrow_down:

libvcx/src/libindy/utils/pool.rs
14.58% <0.00%> (-52.42%)
:arrow_down:

libvcx/src/libindy/utils/anoncreds.rs
18.04% <0.00%> (-46.61%)
:arrow_down:

libvcx/src/utils/plugins.rs
0.00% <0.00%> (-33.34%)
:arrow_down:

libvcx/src/libindy/utils/ledger.rs
12.00% <0.00%> (-27.24%)
:arrow_down:

libvcx/src/utils/random.rs
75.00% <0.00%> (-25.00%)
:arrow_down:

libvcx/src/utils/devsetup.rs
41.63% <0.00%> (-21.04%)
:arrow_down:

libvcx/src/init.rs
25.80% <0.00%> (-20.97%)
:arrow_down:

... and 29 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ec23a53...7131238. Read the comment docs.


Filtering 2.0

Current Situation
We are currently working on the new extension API of filtering. The filter conventions will allow the user to extend the filters to their custom needs. This can either be a customer database provider or an extension to the existing API like spatial filtering.
While working on the extensions for spatial types, several issues came up. We realized that the current implementation of filtering has severe limitations in extensibility and also has an impact on the user experience of a consumer.
Issues 1: Inconsistent API design
The API  released with 10.X.X does not contain an object or array filters. The API works great for scalar filters.

A filter is always a bundle between filter kind (aka. what you want to filter) and a filter operation (aka. how to evaluate).
In the 11 previews we introduced object and array filters. Object filters look like this:

Array filters basically look like the object filters if they filter objects. If foo in the example above is a list, the filter looks like this:

So far so good. Everything looks consistent. The issue actually already came with the scalar filter: foo_contains. How would the API look like when we want to filter by the length of the string?

Inconsistency: This does not feel natural. We now have a field that represents two operations (or two properties, depending on how you want to put it)

alternatively we could also do something like this:

Inconsistency: With this approach we need a helper. “is” is not a property of length. We should just write “gt”. But this does not follow the pattern “kind_operation”. Look at Issue 2

Foo is a scalar but also an object. Length is a property of the string. So it should really be an object filter. If we treat foo like an object we suddenly have other issues.

Inconsistency: this would be the most natural approach. We want to filter by the operation gt of the property length of the filter foo. This obviously does not work. How would we express equality in this case? foo: “bar” does not longer exist.  Look at Issue 3

Conclusion:
With the current approach, it is not possible to write consistent APIs. The user has to learn the different syntax for different cases. What seems natural for one, might not feel natural for others. The developer or consumer should only really need to learn one style of filtering.
Issue 2: The need for helper properties
The inconsistency continues with scalar array filters. In the first place, this did not look like a hack. But we more and more realize that this was a mistake. In the example above we had a helper property for the distance filter: where: {foo_distance:{is_gt}}.
If foos is a list of strings the filter would look like this:

Conclusion:
Helper properties seem to occur too often. These helper properties seem only to exist because of bad API design in the first place.
Issue 3: Limitation in extensibility
The current implementation pretty much seals up property filters for an extension. We have already seen this issue with the scalar filters. We do face the same issue with the object and array filters as well.  How would the API design look like when we want to implement comparable on our object filters?
Spatial as an example:
The current API is not expressive enough. We have different valid API designs for spatial types but all of them have their very own issues:
The “shapes are scalars” approach:
{
  mapItems(
    where: {
      shape_area: { is_gt: 100 }
      shape_distance: { is_gt: 10, shape: { type: POINT, coordinates: [1, 1] } }
      shape_intersects: { shape: { type: POINT, coordinates: [1, 1] } }
      shape_length: { is_gt: 1000 }
      shape_within: { shape: { type: POINT, coordinates: [1, 1] } }
    }
  ) {
    shape {
      coordinates
    }
  }
}

Problems: Helper properties & shape is definitely more an object rather than a scalar
The “shapes are objects” approach:
{
  mapItems(
    where: {
       shape {
         area_gt: 100,
         distance: { is_gt: 10, shape: { type: POINT, coordinates: [1, 1] } }
         intersects: { shape: { type: POINT, coordinates: [1, 1] } }
         length_gt: 1000,
         within: { shape: { type: POINT, coordinates: [1, 1] } }
    }
  ) {
    shape {
      coordinates
    }
  }
}

Problems: Helper properties & how would you express shape equality?
The “lets mix both to see if the result is better” approach:
{
  mapItems(
    where: {
       shape_area_gt: 100,
       shape_distance: { is_gt: 10, shape: { type: POINT, coordinates: [1, 1] } }
       shape_intersects: { shape: { type: POINT, coordinates: [1, 1] } }
       shape_length_gt: 1000,
       shape_within: { shape: { type: POINT, coordinates: [1, 1] } }
    }
  ) {
    shape {
      coordinates
    }
  }
}

Problems: Helper properties & we got this weird kind_kind_operation / kind_operation_operation issue (e.g. shape_area_gt)

Proposed Solution
All of these issues could be solved with one additional layer of nesting.

This is also the solution that Hasura, PostGraphile, and Gatsby chose (we decided for the wrong one 🙃 )
With this approach object and array, filters can look the same to the end-user. A user does not have to consider anymore if it is kind_operation:1 or kind {helper_operation:1}. There is a nested object for each kind and each operation.

With this approach, there is also no need for helper fields.

With this approach, it is natural to have operation inside operations.
And last but not least, it is extendable.

Limitation: You can not have properties that are named like an operation

Spatial as an example:
The power of this design really becomes clear when you design an API. There are no longer different ways to design an API. There is only one:
{
  mapItems(
    where: {
       shape {
         area: {gt: 100}
         distance: { gt: 10, shape: { type: POINT, coordinates: [1, 1] } }
         intersects: { shape: { type: POINT, coordinates: [1, 1] }, buffer: 20 }
         length: {gt:1000}
         within: { shape: { type: POINT, coordinates: [1, 1] } }
    }
  ) {
    shape {
      coordinates
    }
  }
}

you could also let intersects and within directly consume a shape. But then you could not buffer. but this would impact extensibility ✨

Why we consider this change
We are working with filtering for over a year now. Filtering is one of the big features and we would like to push this feature further. We want to provide a seamless extension API for the user. At the moment different developers are working on extensions for spatial types, elastic search, MongoDB, and neo4j. There should be room for consideration about the initial API design because this is really the last time we can change something.
There are clear benefits to a different design. Apart from the ones listed above, there are also following to consider:
Understanding the Abstraction
One of the biggest benefits is the understanding of the abstraction. Looking at a combination of kind and operation (“kind_operation”, “foo_gt”) is mentally more challenging than having the operation separate from the kind. The additional complexity of “foo_gt” compared to “foo: {gt:12}” might not be clear when writing queries. But it really becomes challenging when writing extensions.
Visitation & Handlers
The visitor will become easier and the handlers make more sense. We already have filter kinds that do not follow the initial pattern. apart from “Array” there is also “ArrayAll”, “ArraySome” and “ArrayNone”. This really is bad and is already a hack that we use in v11.
A operation also needs a way to “enter” and “leave”.

Drawbacks

There will be significantly more types. (Field count stays more or less the same though.)
This cannot be released under HotChocolate.Types.Filters because this would break everything

How this could be released.
The title of this issue is filtering 2.0. As this would change the structure of all filters (including scalars deployed with 10.X.X), this would be a major breaking change. Furthermore, this would not break the backend, but it would also break all the consumers of filtering.
Just to make one thing clear:
Breaking the current implementation of filtering IS NOT AN OPTION and will not be considered
The only possible way to release a change like this is to copy the old implementation of filtering, deprecate it, and release a new package as an alternative.
This way people are not forced to upgrade to a new API with 11. Unfortunately, there is no “soft” migration path. These two filtering approaches cannot coexist on the same “where” argument.

Possible Next Steps:

We continue with the current implementation and work around all the issues listed above
We deprecate filtering and release a new package. The deprecated package would NOT include array and object filters. These have only been available in 11 previews
We deprecate filtering and release a new package. We release array and object filters with the old API as the last change

This is a very detailed description, thank you for putting it together.
I agree that v2 filters should not replace v1 in 11 as that would be far too disruptive for existing api clients. It would be great to see a lot of adoption of 11 since it is such a great improvement and doing that would be counter productive.
It will benefit everyone to make the API more consistent and while doing so more simple and extensible even if it takes more time and effort.
I vote for 2 as the next step. This would not cause code changes to filtering while upgrading to 11 and it would allow us to spend time on the required changes for v2.
We could punt object and array filters to the community for v1 filtering? Unless the finish line for those is close enough in the previews, then option 3 would not be out of the question.

I think I would prefer to freeze the V1 filters on the state of version 10.
Meaning we would have the V1 API with the feature set of V10. People have time to migrate or even use them in parallel. If people want more advanced filters, they have to move to version 2.
Why freeze them on the features of version 10?
I want to focus on our new approach and not waste any time fixing new issues that we might have introduced. The filters in version 10 are simple; this ultimately means they are simple to maintain.
Nevertheless, I would leave the code that we have in version 11 for filters in until we have the new API so that we give even people that are using the current preview bits time to migrate to the newer bits.
Good with the rehaul is that we can move all the APIs under one new package HotChocolate.Filters which will have all the code to integrate data sources like selections, filters, and sorting. On top of this base package, we can build extensions like the Mongo native integration or neo4j integration.

Also, with this change, we should fix our naming conventions. In GraphQL snail case is a good style for enums but not for field names. order_by should now, by default, become orderBy.

The only point I have (which might be moot) is how do you deal with OR? As far as I understand from this image:

this is foo: contains 'bar' AND .length gt 29, which I think is a fine default, but I also think being able to write OR filters somehow is worth considering (if it hasn't already).

@Alxandr
The OR support would be similar to what we already have in V10
There are two possible solutions I think
Solution 1
where : {
      or: [
         {
            foo: { lt: 2}
         },
         {
            foo: { lt: 3 }
         }]
}

Solution 2
where : {
      foo: {
        or: [
          {lt: 2 },
          {gt: 3 }
        ]
      }
}

What do you think?

I don't think you actually need or as a "property", given that GraphQL support type unions. You could do something like union Where = Filter | Filter[]

@Alxandr GraphQL does not. The union you posted is invalid. First GraphQL only supports output unions. second, you cannot create a union only on a set of object types.... so you cannot switch between single item an list of items. The or field is actually the only viable option.
Also even with the upcoming input union, this would not work.

@PascalSenn I would go for the first solution not the second ... the second adds complexity on implementation and user.

@PascalSenn, @michaelstaib, the new filtering approach looks solid and extensible enough. As long as it doesn't break existing filtering I do not foresee any problems with its adoption. Moreover, it seems that the filter generation on the client side will be much easier this way.

Personally, I'm not a big fan of such auto filters, because the idea of exposing dynamic filter engine to world via API is unsafe. But such a mechanism has the right to life for administration purposes (admin panel for example).
As for the proposed solution, it reminds me ElasticSearch filtering language. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html. You can look at the documentation and get ideas from there.

@anadale  It would not break 10.4, it might break 11-previews. Adoption would be hard because they API changes when you decide to switch over :)
So yes it does not break the existing one, but to use new features (conventions and maybe list and object filters) , a switch is necessary

I like the proposed approach. However with regards to the OR, what I don't like is that both solution 1 and solution 2 (described above) are actually allowed by the syntax. So you get no errors if you do it like in the solution 2 but it will just have no effect. Do you guys plan to change this in scope of the new API design?

@vitmsrk
Do you mean?:
where : {
      foo: {
        or: {lt: 2 or: {gt: 3 }}
      }
}

@vitmsrk
Do you mean:
where : {
      foo: {
        or: {lt: 2 or: {gt: 3 }}
      }
}

@PascalSenn Yes. Maybe this also refers to AND. So it would be nice (if possible) to restrict such possibilities on syntax level. Although I understand this is easier to say than to do. It looks like in this case the OR/AND fields should be of different type than their parent.

And also, what does this mean:
where: {
  foo: { lt: 2 },
  or: [
    { foo: { lt: 1 } },
    { foo: { gt: 5 } }
  ]
}

@Alxandr How do you distinguish AND and OR then?

where: [
  // either
  { foo: 5, bar: true },
  // or
  { foo: { gt: 10 } }
]

@Alxandr  things get increasingly complicated with deeper filters
This:
where: {
  foo: { lt: 2 },
  or: [
    { foo: { lt: 1 } },
    { foo: { gt: 5 } }
  ]
}

would be .Where(x => (x.Foo  < 2) && (x.Foo <  || x.Foo > 5 ))
The good thing about this approach is that it's expressive and the API does not change when we go deep

API does not change when we go deep

Not sure what you mean here.
I would honestly expect the snipped above to result in an error, cause when using an "or" key, I would expect it to be completely exclusive. To me, it seems like a footgun.
Also, the point about making where an array is that you can't do or at any level of nesting. Only at the top. This makes things more verbose, sure, but it should also make things easier I would imagine.

I'm working on a similar filtering/conditional syntax for a thing.
I've been wondering if it's worth doing the actual filter statement in JSON... it has the benefit of being enforced by the JSON parser, but it quickly becomes very verbose and unwieldy to write complex statements.
Couldn't you do something like  JSONPath/XPath expressions, perhaps with extended syntax?
where:   "(x [Bar = true  and  Foo = 5]  or  x [Foo > 10]) or (x [someFunction()]"
Downside is that you have to make a separate expression parser for the filtering expressions, but it's much easier to author. I've seen standards, like XACML, where they go the route of having the expressions as actual XML/JSON tree's... and it's always seems to become a nightmare

@mhomde the issue with that is, that no GraphQL tooling wouldn't help you. The syntax would be parsable by our server and maybe our tooling, but any other tooling would just see it as a string. Also, it is not JSON :) there are distinct differences between JSON and GraphQL.
So, for us, we will use GraphQL and won't introduce any new syntax.

@mhomde the issue with that is, that no GraphQL tooling wouldn't help you. The syntax would be parsable by our server and maybe our tooling, but any other tooling would just see it as a string. Also, it is not JSON :) there are distinct differences between JSON and GraphQL.
So, for us, we will use GraphQL and won't introduce any new syntax.

Ah, that's a fair point  :)  Guess one could do some kind of expression tool anyway that converted between the two if one really wanted to

I think we can adopt the new approach which Hasura and postrGraphile has. I would go with number 3 as the possible next step

Kudos to you guys for taking the time to consider more advanced filtering scenarios out of the box.
I think the approach of introducing this a separate package would enable people to transition more easily and in an opt in fashion.
Now regarding the syntax, I propose we put this to a vote.
There are many alternatives to consider each with their pros and cons.
If anything we could consider prefixing operations like mongo does so it would be clear to the person writing the query what is what. ex.
{
  $and: [
        { $gte: [ count, 10 ] },
        { $lte: [ total, 100 ] }
      ]
 }

@fiakkasa that would not be valid GraphQL. http://spec.graphql.org/draft/#sec-Names
But with the filter-conventions, you can configure your name. You could, for instance, use an underscore as prefix _ which would be Hasura style. We will add two or three preconfigured conventions.

@michaelstaib prefixing operations with an underscore sounds like a great idea, plus it would make it easier for people coming from other GraphQL frameworks to use HotChocolate.
Now about the multiple preconfigured prefixes, we might be better off doing something similar to angular, where they offer a default set of tags, '{{' '}}', ex. {{ 'Interpolated Content' }}, and then it's up to the developer to configure whatever they want ex. StartTag  'Interpolated Content' EndTag (https://angular.io/api/core/Component#interpolation).
Wdyt?

Using some sort of convention like @fiakkasa is suggesting means we could remove the need to create any preconfigured conventions other than the one we planned to use. If it was as simple as the following adding a _ or $ before the field would be trivial.
ReadOnlySpan<char> FieldPrefix {}
ReadOnlySpan<char> FieldSuffix {}

You could combine the values to create the output field name. You would need a reverse lookup to get the real field name at projection time and you'd have to deal with computed properties or whatever they are called.
That is a neat idea and super flexible.


issue trying to flash tuya version 1.3.20

im trying to flash a bulb that has v1.3.20 but I am lost I am told it is the same chip as a nous gu10  but all I get no matter what I choose is on the second Ap scan that it resulted in no exploid so before I start trying to reflash via soldering I thought I would ask here

When an exact profile match doesn't exist, you should use by firmware version / name option, but there was not a 1.3.20 option.  1.3.19 and 1.3.21 were common for lights.
I was able to locate a patch and created a profile for 1.3.20, so you should now be able to select that via by firmware version / name.

Thank you i will try that and pist back if it works.
On Tue, Dec 17, 2024, 10:12 PM Cossid @.***> wrote:

When an exact profile match doesn't exist, you should use by firmware
version / name option, but there was not a 1.3.20 option. 1.3.19 and 1.3.21
were common for lights.
I was able to locate a patch and created a profile for 1.3.20, so you
should now be able to select that via by firmware version / name.
—
Reply to this email directly, view it on GitHub
https://github.com/tuya-cloudcutter/tuya-cloudcutter/issues/755#issuecomment-2550217471,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANVKYJPPM47MJIRFXI52LD2GDRZXAVCNFSM6AAAAABTZWAMVCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJQGIYTONBXGE
.
You are receiving this because you authored the thread.Message ID:
@.***>


[ServiceBus] don't yield empty page when listing rules in RuleManager

We should stop when there's no more returned rules. I did this previously
probably to support continuationToken as we have to make the last request to
known that there are no more results, and we then set continuationToken to
undefined on this empty page.  Now that the continuationToken is removed, we can
stop yielding empty page.
Packages impacted by this PR
@azure/service-bus

API change check
API changes are not detected in this pull request.


backport: bitcoin#16551, #20288, #20329, #20451, #20491, #20512, #20587, #20588, #20611, #21112

Issue being fixed or feature implemented
Just regular backports from v19 and v22
What was done?

bitcoin/bitcoin#20288
bitcoin/bitcoin#20329
bitcoin/bitcoin#20491
bitcoin/bitcoin#20512
bitcoin/bitcoin#20587
bitcoin/bitcoin#20588
bitcoin/bitcoin#20611
bitcoin/bitcoin#16551
bitcoin/bitcoin#20451
bitcoin/bitcoin#21112

How Has This Been Tested?
Run unit/functional tests
Breaking Changes
N/A
Checklist:

[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have added or updated relevant unit/integration/functional/e2e tests
[ ] I have made corresponding changes to the documentation
[x] I have assigned this pull request to a milestone

Looks good but needs rebase


two small changes to support native hardware features in embedded (for example hardware DMA and CRC in STM32)

In order not to send data from one buffer to another, but to immediately receive data where it is needed (for example, in DMA mode), the buf_rec index is needed in structure nmbs_t.msg, it is used in the nmbs_platform_conf.read function
and nmbs_crc_calc requires the __weak attribute so that this function can be replaced with hardware calculation of the modbas CRC, a polynomial for which is also available in some embedded systems, including STM32
code examples for stm32 using HAL are attached

in HAL STM functions configurations are declared as __Weak  to make  override possible  in case of other  implementations in user file
and in headers files difined as
#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 /
#ifndef __weak
#define __weak  attribute((weak))
#endif
#ifndef __packed
#define __packed  attribute((packed))
#endif
#elif defined ( GNUC ) && !defined (__CC_ARM) / GNU Compiler /
#ifndef __weak
#define __weak   attribute((weak))
#endif / __weak /
#ifndef __packed
#define __packed attribute((packed))
#endif / __packed /
#endif / GNUC */

or do we need any other way to use our crc16 function
to use the hardware capabilities of calculating the СRC as described in thisa pplication note an4187
https://www.st.com/resource/en/application_note/an4187-using-the-crc-peripheral-on-stm32-microcontrollers-stmicroelectronics.pdf

this helps to reduce the cost of the product. you can take a cheaper processor that can handle processing, for example, six streams (ports) at once at high speed. I will make a ready-made example with a makefile a little later.

Implemented in https://github.com/debevv/nanoMODBUS/pull/64

Just for other people's reference, here's how I implemented hardware CRC calculation on my STM32H723ZG:
CRC_HandleTypeDef hcrc;
hcrc.Instance = CRC;
hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_DISABLE;
hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_DISABLE;
hcrc.Init.GeneratingPolynomial = 0x8005;
hcrc.Init.CRCLength = CRC_POLYLENGTH_16B;
hcrc.Init.InitValue = 0xFFFF;
hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_BYTE;
hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_ENABLE;
hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES;
if (HAL_CRC_Init(&hcrc) != HAL_OK) {
    Error_Handler();
}

uint16_t modbusHardwareCRC(const uint8_t* data, uint32_t length, void* arg) {
    const uint16_t crc = HAL_CRC_Calculate(&hcrc, (uint32_t*) data, length);
    return ((uint16_t) (crc << 8)) | ((uint16_t) (crc >> 8));
}

In my testing, hardware CRC was ~10 times faster than software CRC. The only drawback of hardware CRC is that it needs to be protected by a mutex if multiple tasks need it, which slows things down significantly. Here's my workaround, which is still, on average, ~5 times faster than software CRC:
uint16_t modbusHardwareCRC(const uint8_t* data, uint32_t length, void* arg) {
    if (osMutexAcquire(crcMutex, 0UL) == osOK) {
        if (HAL_CRC_GetState(&hcrc) == HAL_CRC_STATE_READY) {
            const uint16_t crc = HAL_CRC_Calculate(&hcrc, (uint32_t*) data, length);
            osMutexRelease(crcMutex);
            return ((uint16_t) (crc << 8)) | ((uint16_t) (crc >> 8));
        }
        osMutexRelease(crcMutex);
        return nmbs_crc_calc(data, length, arg);
    }
    return nmbs_crc_calc(data, length, arg);
}

I got Modbus over TCP working with the lwIP network stack of the STM32. I'll be testing UART with DMA soon. I'll see what I can share. So far, the library has been rock solid during testing.

@marcocipriani01 yes, an STM32 example with lwIP and a custom CRC function would be very useful

@kpvnnov can you make a separate pull request with only the STM32 example? And maybe add a script/Makefile so user can build it easily? Thank you

ready in #77

hardcore version with all files included


404 Not Found

Hi, go through all the steps but when I want to see the localhost:8080 I get nginx 404 error

The problem was solved a git clone is solved the problem that was with the permissions that did not allow nginx to obtain the information

The problem was solved a git clone is solved the problem that was with the permissions that did not allow nginx to obtain the information


macOS app: UserWarning: Distutils was imported before Setuptools

Description

The Spyder macOS app shows the following warning in the Internal console for all builds at least after 5.2.2 (I haven't checked earlier versions or builds). This does not manifest for bootstrap from a conda environment for the same Spyder version.
_distutils_hack/__init__.pyc:17: UserWarning: Distutils was imported before Setuptools, but importing Setuptools also replaces the `distutils` module in `sys.modules`. This may lead to undesirable behaviors or errors. To avoid these issues, avoid using distutils directly, ensure that setuptools is installed in the traditional way (e.g. not an editable install), and/or make sure that setuptools is always imported before distutils.
_distutils_hack/__init__.pyc:30: UserWarning: Setuptools is replacing distutils.

Since that package still supports Python 2 and I wouldn't want to change that in the Spyder 5 series, this would have to wait until Spyder 6 to be fixed. Is that for you?

I think this warning comes from spyder-kernels because we're still using distutils there to check for package versions.

Hmm. I'm curious why it doesn't show up for bootstrap...

Since that package still supports Python 2 and I wouldn't want to change that in the Spyder 5 series, this would have to wait until Spyder 6 to be fixed.

No problem. It is, after all, just a warning message and as far as I know there is nothing serious to worry about.

Is that for you?

Do you mean if I want it assigned to me? That's fine. Did you mean something else?

Do you mean if I want it assigned to me? That's fine. Did you mean something else?

Sorry, I meant if that's ok for you, I mean leaving this for Spyder 6.

Closing because no further work is going to be done in the old Mac app.


Library now requires requests >= 2.18.0

Hi - this recent change uses the requests.models.Response object as a context manager, which is only added in recent versions (>= 2.18.0) of the requests library
While this is a year old version of requests, it would be good to have this requirement made explicit.  Notably conda still packages requests 2.14.2 only.

@nkeriks Thanks for bringing this up, we've had similar issues in google-cloud-python. Note that this library does not have requests as an explicit requirement.
@jonparrott WDYT is the right move here?

Add an optional with requests >= 2.18.0?

@jonparrott Will that enforce the lower bound when users just pip install google-resumable-media without the extras.
It's probably worth asking @nkeriks how he came about this realization.

I had an initialization script that was pip installing various packages (including google cloud python libraries) into a conda python environment. Not the greatest idea in general, but this usually handles dependencies fine.

No
On Fri, Aug 11, 2017, 4:31 PM Danny Hermes<EMAIL_ADDRESS>wrote:

@jonparrott https://github.com/jonparrott Will that enforce the lower
bound when users just pip install google-resumable-media without the
extras.
It's probably worth asking @nkeriks https://github.com/nkeriks how he
came about this realization.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-resumable-media-python/issues/29#issuecomment-321940058,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUc2XGbSjJXoOmrLUPD3svyJhcjLLLks5sXORlgaJpZM4O1N8p
.

The optional as well as the fix in google-cloud-python should be sufficient.


genWord is a special algorithm?

Just like the title, maybe there is a website I can figure it out. Thx

genWord() is an algorithm to generate "pronounce-able" random words.
That's to say, if we just randomly pick characters from a-z, we would get something like "jjvw", "zyabqx" which obviously don't look like words, genWIord can produce better results.

:)


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_bcukkbsaef/clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_bcukkbsaef/clone/recipe/meta.yaml:31: missing_pip_check: For pypi packages, pip check should be present in the test commands
ERROR: /tmp/abs_bcukkbsaef/clone/recipe/meta.yaml:44: http_url: http://pyexcel-xlsx.readthedocs.io/en/latest/ is not https
Errors were found

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_c8um9ay16q/clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_c8um9ay16q/clone/recipe/meta.yaml:31: missing_pip_check: For pypi packages, pip check should be present in the test commands
ERROR: /tmp/abs_c8um9ay16q/clone/recipe/meta.yaml:44: http_url: http://pyexcel-xlsx.readthedocs.io/en/latest/ is not https
Errors were found


Cannot use font with space in the name in fontFamily attribute

Get this error: undefined is not an object (evaluating 'n[1].substr')
<body fontFamily="Arimo Bold">This</body>

That same font works fine if I define a style using it. Also tried it with other fonts with the same result. Works as a style, but not in an attribute.

Good catch. Should be a quick fix.

fixed in 3.7.5


[PUPIL-805] Refactoring some areas of the pupil journey

Description
Music year: 1966
This branch refactors a few areas of the pupil browse journey.
I'll add comments throughout the PR for code review.
How to test

Go to https://deploy-preview-2541--oak-web-application.netlify.thenational.academy/pupils/years
Check that the browse journey is working as expected

Checklist

[x] Added or updated tests where appropriate
[x] Manually tested across browsers / devices
[x] Considered impact on accessibility
[ ] Design sign-off
[ ] Approved by product owner
[x] Does this PR update a package with a breaking change

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


Fix Mac Memory leak issue

https://github.com/microsoft/cpp_client_telemetry_modules/issues/176
Multiple users are reporting high memory usage, especially on M1 Macs. We've made some significant gains in the last few months, but we are still running into users seeing 12+GB of usage. I've been in a thread with one such user who has provided leak traces
The "with aria" traces were collected first, in OneDrive's default configuration. The user enabled malloc_history and let the product run until it reached around 1GB usage, at which point it is my understanding that we crashed (this has to do with malloc tracing and not another bug). After that, I had the user disable Aria, and run the same trace again (the "without aria" trace). No crash this time.
From a comparison of the traces, it is obvious that Aria is responsible for significant memory consumption.  What seems to be happening here (and this is consistent with when Apple looked at it) is that Aria is allocating objects inside an autoreleasepool that is never released.
What changes:
Just added autorelease pool to functions that were not releasing memory.

@sid-dahiya  @lalitb  for reference, this is the fix for memory leak issue on Mac that we saw in OneDrive. This fix worked for OneDrive so merging it to the common code.

Getting error. Why is
/Users/runner/work/cpp_client_telemetry/cpp_client_telemetry/lib/pal/WorkerThread.cpp:186:17: error: expected expression
@autoreleasepool

@lalitb what compiler do we use? GCC or Clang compiler

Clang is used for both mac and iOS compilation. But looking into the PR now, it doesn't make sense to add @autoreleasepool in the C++ code. It is not a C++ construct and will fail with any C++ compiler. Why do we need to add it in the worker thread?

@lalitb what compiler do we use? GCC or Clang compiler

Clang is used for both mac and iOS compilation. But looking into the PR now, it doesn't make sense to add @autoreleasepool in the C++ code. It is not a C++ construct and will fail with any C++ compiler. Why do we need to add it in the worker thread?

Agree with your statement, this block do not contain Obj-C object references, hence @autoreleasepool doesn't apply here

Thanks removed the autorelease pool from WorkerThread.cpp

On lighter front, @autoreleasepool user can ignore all these discussions, he is unknowingly getting added here. :)


pack fails for f# projects using ReflectedDefinition attributes

This issue is related to a problem in FSharp.Data, where our pull request is in review (seealso: https://github.com/fsharp/FSharp.Data/pull/919)
However, since the problem occurs in paket and testing is difficult i created this issue, serving as solid test case as well as documentation for the problem.
Description
pack fails internall in AssemblyReader.fs when parsing assembly metadata.
Repro steps
#1596 in my fork https://github.com/haraldsteinlechner/Paket/commit/7b0680aeda453951669e1a064d1fae6e0e5baf59 shows the problem.
Expected behavior
packing simply works
Actual behavior
System.Exception : Paket failed with:
decodeILCustomAttribData: error parsing type in custom attribute blob: The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
Known workarounds
my FSharp.Data fork fixes the problem: https://github.com/haraldsteinlechner/FSharp.Data/commit/d4a30757dc5e5ef7096fffafc1ed377b6174771b

we could point https://github.com/fsprojects/Paket/blob/master/paket.dependencies#L9 to your fork if you need a quick fix

i did this here: https://github.com/haraldsteinlechner/Paket/tree/assemblyMetadataFix
but still waiting for integration tests to complete. Although the involved code is tricky, we could give it a try and use my fix.
(pull request after test completion)

this is released. Please set it back to FSharp.Data when they merged your PR

and thanks!


perf: Performance optimisations + metrics

preallocates backing arrays for slices (where we know the max size)
switches to adding graph edges individually, saving on memory and some redundant checks
removes some unnecessary allocations
swaps out a map+mutex combination to use sync.Map instead
replaces a .AttributesAsMap()[attrName] with .GetAttribute(attrName)
defines and uses a lightweight TopologicalWalk function which walks the graph in a more efficent way
adds performance metrics (must be set in config to do this) which are written to a file for - analysis in the runner/api
fixes a small bug with content of events we're recording
fixed a bug with conflicting module downloads causing git process to hang/fail

looks good, my main concern is around the change of the graph walk func, we need to verify on a few other customers that this doesn't cause disrepancies in price match/resources before releasing.

Yep, doing some comparisons with some of the bigger customers to ensure matches before release 👍


Added a bunch of VDPSprite useful functions

I have these functions defined in my game, and I think they may be useful to more people:

void VDP_setSpritePriority(u16 index, bool priority);
bool VDP_getSpritePriority(u16 index);
void VDP_setSpritePalette(u16 index, u16 palette);
u16 VDP_getSpritePalette(u16 index);
void VDP_setSpriteFlip(u16 index, bool flipH, bool flipV);
void VDP_setSpriteFlipH(u16 index, bool flipH);
void VDP_setSpriteFlipV(u16 index, bool flipV);
bool VDP_getSpriteFlipH(u16 index);
bool VDP_getSpriteFlipV(u16 index);
void VDP_setSpriteTile(u16 index, u16 tile);
u16 VDP_getSpriteTile(u16 index);

I have some doubts about using u16 (instead of u8) for the palette functions. What do you think is better?

Thanks for the new VDPSprite tools functions :)
To be honest as this is low level sprite methods we generally directly set the fields of VDPSprite but it can still be useful for people who are not sure about how setting them (the function make that clear).
On a side note I generally put getters before setters but that is just aesthetic ;)

Change it if you want. No problem


Separate tab size and indent size

Visual Studio Code have not appear to have the ability to do the Tools->Options Tab settings of Visual Studio Professional where you can specify that tabs are 8 spaces but the indent size if 4? All our code uses that style and many other editors let you do this, but Visual Studio Code doesn't seem to support this. I've tried lots of things in Visual Studio Code but not found any combination of settings that work.
Using Visual Studio Code 1.19.3 (and also Visual Studio 2015 (and Professional 2012)).
In Visual Studio, setting tabs at 8 and spaces at 4 means (for a blank line):

Press tab key once, indent of 4 spaces.
Press tab again, indent of tab (removes 4 spaces, adds tab)
Press tab third time, indent is tab + 4 spaces.

This is similar to GNU coding style (except it's two columns per indent instead of four), so enabling this would make it possible to use vscode for editing code of all GNU projects.

Ditto for standard Java style, but all of this is already discussed in #5394, this (almost exactly) a duplicate issue.

Any updates on this? This is the only reason I can not use vscode in many projects since it will mess up existing coding styles.

I really wish a feature for separate tab size and indent size existed. As it is now, I cannot use vscode because it doesn't support tabsize = 8, indentsize=4. I find this odd because Visual Studio does support it.

Here is an example of why this needs to be implemented. This is beyond frustrating.

Another ping in support of this feature.  For anyone curious, the rationale was recently discussed for the Atom editor as it similarly lacks this concept from Visual Studio, Emacs, Vim: https://github.com/atom/atom/issues/21371

Without this functionality, editing Makefiles is hard, since tab is used as a special character in make recipes, which you'd want to have clearly standing out by using a tab width of 8. But this does not conflict with the fact that you'd want a smaller indentation (e.g. 2 or 4), using spaces, in the rest of the makefile.

Just dropping in to ping this issue. I've been following it for years now hoping it would get implemented at some point. I currently get by using vs code by formatting the document using a formatter that converts all tabs to spaces. This is not an ideal solution and it'd be great to see this feature implemented to work in a similar way to visual studio. I'm actually at a bit of a loss as to why it's lower on the priority list than some of the other issues that have been tackled. Please address this!

I would very much need this too, in my current project.
Hope it gets implemented soon

I am quite surprised that VScode lacks this feature. I think among the universe of editors only KDE's Kate handles this correctly, even Vim sucks at mixed tab and space indents. However to add the original comment of @bevolz this feature should have three options / levels:

Indent with spaces
Indent with tabs
Indent tabs + spaces

In those options the action for pressing TAB key with a 4 space indent size and 8 space tab size should do these respectively:

Insert 12 space (' ') characters
Insert 3 tab ('\t') characters
Insert 1 tab and 1 space character

Otherwise the implementation with mixed tabs and spaces will be a great way to ruin the day of Python programmers.

+1
We have a lot of legacy code that mixes tabs with spaces, and tabs are considered 8 spaces, while a single indent is 4 spaces (TAB = two indents).
In Atom editor I had a CSS hack to draw TAB as 8 characters while the editor was still thinking it is 4-char long:
atom-text-editor .invisible-character.hard-tab {
    margin-right: 4ch;
}

Since Atom has been discontinued, I want to migrate to VS Code fully. Unfortunately, I have to return to Atom whenever I access the legacy code.

It seems this feature was already implemented 3 years ago, but was partly reverted simply because people couldn't agree on the name of the property.
See https://github.com/microsoft/vscode/issues/10339.
Perhaps somebody could just revert this commit https://github.com/microsoft/vscode/commit/e2049cdca315d4e0a5ffa4d7ec41200e42297640 and then we can finally use it?
There's plenty of duplicate tickets for this, such as https://github.com/microsoft/vscode/issues/5394 and https://github.com/microsoft/vscode/issues/135058 so I think there's gotta be enough support to prioritize this feature.

Awesome to see progress on this, thanks @zeroimpl. Do you also plan to include that every 8 spaces convert to 1 tab automatically?

@timll At this point, I think the most important part is getting the distinction between tab size and indent size into the code base.
Things like converting spaces to tabs can be extended later on; in fact, how to properly convert between spaces and tabs can be contested and language-specific; for instance, should you convert only leading spaces, or also spaces e.g. in front of a trailing line comment? So better keep that discussion separate.

From the discussion in PR #155450 this issue should not have been closed.  That PR doesn't satisfy the second bullet, which is critical to the proper behavior of mixed tabs+spaces.  Having tab always inject spaces regardless of the tabsize setting is incorrect behavior.

@brlcad That is not necessarily incorrect behavior, though I acknowledge that it might be incorrect behavior for your use case. For me, editing huge makefiles, where space and tab are semantically different, and the long-standing convention has been that tabs expand to 8 spaces, but code is logically indented by two spaces, it really is the correct behavior.
(Not trying to diminish your situation; just pointing out that this change was not worthless)

From the discussion in PR #155450 this issue should not have been closed. That PR doesn't satisfy the second bullet, which is critical to the proper behavior of mixed tabs+spaces. Having tab always inject spaces regardless of the tabsize setting is incorrect behavior.

Oh no!  Correct -- this is still very incomplete, then.
In a file where "indent with Tabs" is enabled and indent is 4 and tabwidth is 8, then one press of Tab should insert 4 spaces, and a second insert of Tab should end up recognizing that 8 spaces will be equal to 1 tab, and should replace the 4 spaces with a tab character.

@brlcad That is not necessarily incorrect behavior, though I acknowledge that it might be incorrect behavior for your use case. For me, editing huge makefiles, where space and tab are semantically different, and the long-standing convention has been that tabs expand to 8 spaces, but code is logically indented by two spaces, it really is the correct behavior.
(Not trying to diminish your situation; just pointing out that this change was not worthless)

@magicus, @brlcad didn't say it was "worthless".  The statement was that the behavior is not yet correct.  Which is an accurate assessment.
It's great that at least display works now.
But it's frustrating if editing still doesn't work properly.

@magicus I'd argue that it's inconsistent and thus incorrect in comparison with existing editors that support mixed indentation+tab width settings.  Emacs and Vim, for example, handle Makefile indentation with separate mode and settings respectively as tab is baked into the file format.  To make that behavior default will likely result in awkward settings for the lionshare of C/C++ code wanting support as described by this issue's bulleted points.
Not satisfying this issue's criteria was also the primary point.  I'm not arguing whether the PR has value for other cases.  The PR that was used as justification to close this issue does not satisfy this issue's second itemized bullet which described specific expected behavior.

From the discussion in PR #155450 this issue should not have been closed. That PR doesn't satisfy the second bullet, which is critical to the proper behavior of mixed tabs+spaces. Having tab always inject spaces regardless of the tabsize setting is incorrect behavior.

At least as a short-term fix, you could run the unix unexpand command on the edited files (possibly with a task that triggers on save).

From the discussion in PR #155450 this issue should not have been closed. That PR doesn't satisfy the second bullet, which is critical to the proper behavior of mixed tabs+spaces. Having tab always inject spaces regardless of the tabsize setting is incorrect behavior.

At least as a short-term fix, you could run the unix unexpand command on the edited files (possibly with a task that triggers on save).

I have several ways I can manually compensate.  It's frustrating and time consuming to take the compensating actions (or to write an extension to do it).
What I would be most likely to do is one of these:

Write an extension which upon saving a file automatically fixes overly-long runs of 2+ spaces but only in modified lines so that they use proper mix of tabs/spaces.  However, that's only a heuristic and is susceptible to both false positives and negatives -- converting typed spaces into tabs (wrong), and not converting single spaces into tabs when the tab key had actually been pressed.
Write an extension command that can be bound to Tab and does the proper optimized mixed tabs+spaces representation to replace the run of whitespace preceding the insertion point.  But it needs to play well with multiple selections and cursors, and various contextual situations where Tab may be pressed.  Ideally VSCode should have that built in.

Reopening since the replacing as many spaces as possible with tabs part is not implemented via #155450

Haven't touched an IDE for about 5+ years, so thought it might be a good idea to give VScode a try: completely wrong, what a big disappointment. Formatting is really a nightmare especially wrt. tab handling and lang specific settings do not exist or do not work at all. 10+ years ago eclipse was even better than this. So I'll ditch this stone age thingy and recommend our students to use Eclipse or IntellJ.

Haven't touched an IDE for about 5+ years, so thought it might be a good idea to give VScode a try: completely wrong, what a big disappointment. Formatting is really a nightmare especially wrt. tab handling and lang specific settings do not exist or do not work at all. 10+ years ago eclipse was even better than this. So I'll ditch this stone age thingy and recommend our students to use Eclipse or IntellJ.

This has now been fixed.

@astrelsky It is not fixed. I am on the latest version and cannot find a way to configure VS Code to work as described in the original issue description:

Press tab key once, indent of 4 spaces.
Press tab again, indent of tab (removes 4 spaces, adds tab)
Press tab third time, indent is tab + 4 spaces.

If there is a way to achieve this, please let me know, because it seems to be either too obscure, or something that is implemented by some extension that I'm missing?
I've set the "editor.indentSize": 4 everywhere I possibly could (in each of the user, workspace and folder settings.json files), yet when I press TAB on an empty line, it still inserts a tab instead of a 4-space indent.
I've just updated to v1.76, and I've been looking into whether this is fixed for a long time now. It still doesn't work as described.

I wouldn't say that is the expected behavior unless it is documented to do so. As far as I know there is no feature to do so but I think it would be possible to do with something like the trim trailing whitespace on file save feature.


git-gui fails to execute due to missing resources

I've installed git-2.1.3-1 via pacman. Running git gui yields the following error:

FWIW, commenting out that iconbitmap command, triggers another similar error referencing other missing files in /usr/share/git-gui/lib.

I've found two ways of making git gui work with Msys Git.
One is changing set oguirel {} to set oguirel {1} so the script looks for path itself.
Another is setting and exporting $GIT_GUI_LIB_DIR, like
export GIT_GUI_LIB_DIR=$(cygpath -w /usr/share/git-gui/lib)


Handling token based auth

Operating system : Mac OS
Laravel version : 5.6.20
Package version : 1.8.4
Steps to reproduce your issue :

Create a token based auth system using the Illuminate\Auth\TokenGuard.
Create a middleware that checks for an api_token in the URL

I have added the middleware to the lfm.php config file. When I instantiate the editor (tinymce) i add that api_token to the url. But this is not forwarded to the other AJAX calls that are made to retrieve the folders and the items and so on.
So, all the request that are made from the laravel file manager fail to pass that middleware that checks the api_token parameter.
Any way I can use this with a token based auth? Or am i missing something?
Thanks a lot!

@catalinbuletin please check 3ae9cc6. You can pass a token to file manager, and it will remeber that token in every requests after.


Md5sum check gdc downloads

Seeing too many failures with gdc downloads -- partially downloaded bams that are somehow not failing the download step

It looks like they check md5s inherently but return 0 even on failure

Interesting. It also appears that some files never pass the checksum (case-in-point the one in the example above)

Files download properly with 1.1.0. rolling back to 1.1.0 and blacklisting 1.2.0


Adds sample for a SPIRE quickstart

Please provide a description of this PR:
Adds a sample for Spire integration quick-start under samples/security/spire
To help us figure out who should review this PR, please put an X in all the areas that this PR affects.

[ ] Configuration Infrastructure
[X] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure

Please check any characteristics that apply to this pull request.

[ ] Does not have any user-facing changes.

Just remembered this, but  shouldn't we be signing every commit? I think this is a requirement for merging with upstream (I also need to sign my own commits as I forgot 😛 )

Just remembered this, but shouldn't we be signing every commit? I think this is a requirement for merging with upstream (I also need to sign my own commits as I forgot 😛 )

Yes, the commits should be signed, a commit can be amended this way:
git commit --amend --no-edit -S


Example on how to pass rowData to Editable component

Hi again,
I love the functional style of the component by the way. I'm not sure whether this doesn't break something else since I'm a bit green with React but I find that replacing this section in react-edit/src/edit.js and adding extraParameters
        children: React.createElement(
          editorComponent,
          {
            ...props,
            extraParameters,
            [editingProps.value || 'value']: getEditedValue(value),
            [editingProps.onValue || 'onValue']: v => onValue(
              { value: v, ...extraParameters }
            )
          }
        )

allows me to then access rowData in the following way for editable components that depend on value in another column:
const myInput = ({ props } = {}) => {
  const Input = ({ value, onValue, extraParameters }) => {

Is there a better way to do this? (I got a bit lost without types to guide me with transforms, editable and a custom react-edit component :) )
Cheers,
Jun

That seems like a worthwhile addition. Backwards compatible as well. Do you want to PR?

Great! Let me know if the PR works!


do_abs for fixed pt

Currently you have
def do_abs(implicit sourceInfo: SourceInfo): UInt = {
    Mux(this < FixedPoint.fromBigInt(0), (FixedPoint.fromBigInt(0)-this).asUInt, this.asUInt)
  }

I really think do_abs should return type T. It's confusing when the absolute value of a potentially non-integer fixed point # returns a UInt as opposed to a UFix (or just Fixed).
Or call it abs_int for clarity...

@shunshou seems like it's return type should be a FixedPoint.  Not doing so loses information.  I don't see any reason to make it a T.

Sorry I mean in general for Sint too. Just make it the same type as the input.

@ducky64 @ucbjrl I think @shunshou is right, this is a minor API issue but it seems like the current implementation is incorrect.  There seem to be very few uses of these methods, I am happy to do it if you agree

I concur.

It's only incorrect for fixed, but it would make sense to be consistent across the different data types.


Throw exceptions

If this is correct and merged I will go back and update the tests to use the new exceptions


remix - vm integration

merge after https://github.com/ethereum/remix/pull/63

I think the "debug" button that is part of the transaction should be a bit smaller. Perhaps a small button with a bug-symbol not larger than a text line is better.

Could you move the debug button next to the close button, and not on its own line?

@axic is your comment blocking the merge?

@yann300 @chriseth I've reviewed now how this works in Remix.  I think the best would be having the trace interface defined in Remix (and not part of the Web3 providers).  And we could implement that trace interface in udapp.
My reasoning is that the VM interface is a superset of Web3, while the current situation makes us to take Web3 as a superset.
Actually, part of the udapp interface is already doing that - moving web3 and vm under a single interface.

yes I see your concern about the fact the vm has much more advanced features than web3.
Generally remix need to be compliant with the web3 interface. This is why web3vmprovider wraps the vm into the web3 interface.
about implementing the trace interface in udapp, I thought about that and it was actually working like that before I created the PR. But having the vm trace implemented in remix will allow us to use the combination remix/vm outside of browser solidity.

Some glue-layer would make sense, but perhaps we could do this as a subsequent refactoring (to be done as immediate next stop)? I am not a fan of long-standing PRs.

I think moving the vm creation out of udapp is the correct decision. What still needs to be done is some proper interface for accessing it. Merging this so that we can do a subsequent refactor of both udapp and the debugger interface.


MddBootstrapInitialize needs samples/tests for non-default minVersion

All of the tests/samples for MddBootstrapInitialize are using the default-initialized value for minVersion. We should add tests and samples that exercise this API parameter with non-default values too.

The samples show how to use the Bootstrap API with the version information of the WindowsAppSDK you built with. There are reasons you may want other values, but those are uncommon or advanced scenarios. The API allows you to specify other values and how to do so is straightforward, so the value of samples showing a different minVersion is low.
It's also problematic. You could, say, build using 1.1.0 and specify minVersion = <whatever-the-msix-version-is-for-1.1.3> but to run you'd need 1.1.3+ installed. That wouldn't "just work" for everyone, posing its own complications.
The C# Bootstrap API in 1.0 and the new C++ equivalent in 1.1 fewer simplify matter with their rich overloads. The samples are being updated to use these and docs are coming soon.
Samples aren't meant to exhaustively exercise every value for every parameter of every API.  For example, we don't plan to have a sample calling Microsoft::Windows::ApplicationModel::DynamicDependency::Bootstrap::InitializeFailFast(). We do plan to have full documentation.


ITI-65 associate minimal metadata w/ Doc Source, Doc Recip w/ no options

Section Number https://profiles.ihe.net/ITI/MHD/ITI-65.html#bundle-resources
Issue If a reader is determining rqmts for ITI-65 for the Doc Source or Doc Recipient, and s/he starts in Vol 1 and then gets to this section, I believe this is the first time the reader encounters the term "Minimal Metadata"
Proposed Change Associate the Minimal Metadata Requirements here with the Doc Source / Recip w/o any options.
Fix this sentence to refer to options for the Source actor since we are in semantics for the submission request... "The FHIR Bundle.meta.profile shall have the following value depending on the use of Comprehensive metadata, Minimal metadata, or UnContained metadata:"
Priority:

Medium: Significant issue or clarification. Requires discussion, but should not lead to long debate.

The term "Minimal Metadata" does not really have a strong meaning in MHD. This because the default is minimal metadata. I simply did not want to call it "default", and there is a weak link to XDR Minimal Metadata. Thus I am not sure how best to resolve this concern.


misc: get_wwn_id_map: use any device name, not just wwn-*

I'm not sure what changed in the environment, but most of the smithi do not
have wwn-* items for the LVs we use for scratch.  They do have lots of other
names, though, and for our purposes let's just say they're all equally
usable!
This was just changed (41a13eca480e38cfeeba7a180b4516b90598c39b), but I
don't see it actually is responsible for this breakage...
In any case, I think this PR will fix things up!

Hi @liewegas, thank you for submitting this. I don't understand what is broken, and why changing win-* mask to something else could fix it.
Could you please point to the teuthology job where you can see this failure. Is it reproducible If you use the the sha1  before this change merged?
Thanks.

Ha-ha, @liewegas, you will laugh, but the behavior of the code is really changed with this commit, and know what?
Before this commit the code of get_wwn_id_map has been working incorrectly and didn't do what it should, but after the commit it fixed, check it out:
This is a log from the commit before (prior to 41a13ec)
>>> from teuthology.orchestra.remote import Remote as r
>>> from teuthology.misc import get_wwn_id_map as wwn
>>> wwn(r('smithi006'), ['/dev/sda'])
2019-10-12 21:22:57,454.454 INFO:teuthology.orchestra.remote:Trying to reconnect to host
2019-10-12 21:22:57,557.557 INFO:teuthology.orchestra.run.smithi006:Running:
2019-10-12 21:22:57,557.557 INFO:teuthology.orchestra.run.smithi006:> true
2019-10-12 21:22:57,982.982 INFO:teuthology.orchestra.run.smithi006:Running:
2019-10-12 21:22:57,982.982 INFO:teuthology.orchestra.run.smithi006:> ls -l '/dev/disk/by-id/wwn-*'
2019-10-12 21:22:58,064.064 INFO:teuthology.orchestra.run.smithi006.stderr:ls: cannot access /dev/disk/by-id/wwn-*: No such file or directory
2019-10-12 21:22:58,064.064 INFO:teuthology.misc:Failed to get wwn devices! Using /dev/sd* devices...
{'/dev/sda': '/dev/sda'}

and this one is with 41a13ec.
>>> from teuthology.orchestra.remote import Remote as r
>>> from teuthology.misc import get_wwn_id_map as wwn
>>> wwn(r('smithi006'), ['/dev/sda'])
2019-10-12 21:33:41,220.220 INFO:teuthology.orchestra.remote:Trying to reconnect to host
2019-10-12 21:33:41,355.355 INFO:teuthology.orchestra.run.smithi006:Running:
2019-10-12 21:33:41,356.356 INFO:teuthology.orchestra.run.smithi006:> true
2019-10-12 21:33:41,747.747 INFO:teuthology.orchestra.run.smithi006:Running:
2019-10-12 21:33:41,747.747 INFO:teuthology.orchestra.run.smithi006:> ls -l /dev/disk/by-id/wwn-*
2019-10-12 21:33:41,836.836 INFO:teuthology.orchestra.run.smithi006.stdout:lrwxrwxrwx. 1 root root  9 Oct 12 20:59 /dev/disk/by-id/wwn-0x5000c500871b60ff -> ../../sda
2019-10-12 21:33:41,837.837 INFO:teuthology.orchestra.run.smithi006.stdout:lrwxrwxrwx. 1 root root 10 Oct 12 20:59 /dev/disk/by-id/wwn-0x5000c500871b60ff-part1 -> ../../sda1
{'/dev/sda': '/dev/disk/by-id/wwn-0x5000c500871b60ff'}

@liewegas could you please give a link to the log to see what exactly is broken? Thanks in advance.

just for the info:
[ubuntu@smithi006 ~]$ cat /scratch_devs
/dev/vg_nvme/lv_4
/dev/vg_nvme/lv_3
/dev/vg_nvme/lv_2
/dev/vg_nvme/lv_1

Is the problem this PR fixes resulting in smithi LVs not being used?  I'm just curious if the "no space left on device" failures are related.

In the log on the tracker, I see:
2019-10-09T20:53:45.750 INFO:tasks.ceph:fs option selected, checking for scratch devs
2019-10-09T20:53:45.750 INFO:tasks.ceph:found devs: ['/dev/vg_nvme/lv_4', '/dev/vg_nvme/lv_3', '/dev/vg_nvme/lv_2', '/dev/vg_nvme/lv_1']
2019-10-09T20:53:45.750 INFO:teuthology.orchestra.run.smithi136:Running:
2019-10-09T20:53:45.750 INFO:teuthology.orchestra.run.smithi136:> ls -l '/dev/disk/by-id/wwn-*'
2019-10-09T20:53:45.821 INFO:teuthology.orchestra.run.smithi136.stderr:ls: cannot access '/dev/disk/by-id/wwn-*': No such file or directory
2019-10-09T20:53:45.821 DEBUG:teuthology.orchestra.run:got remote process result: 2
2019-10-09T20:53:45.822 INFO:teuthology.misc:Failed to get wwn devices! Using /dev/sd* devices...
2019-10-09T20:53:45.822 INFO:tasks.ceph:dev map: {'osd.1': '/dev/vg_nvme/lv_1', 'osd.0': '/dev/vg_nvme/lv_4', 'osd.3': '/dev/vg_nvme/lv_3', 'osd.2': '/dev/vg_nvme/lv_2'}
2019-10-09T20:53:45.831 DEBUG:teuthology.orchestra.remote:smithi058:/scratch_devs is 72B
2019-10-09T20:53:45.843 DEBUG:teuthology.misc:devs=['/dev/vg_nvme/lv_4', '/dev/vg_nvme/lv_3', '/dev/vg_nvme/lv_2', '/dev/vg_nvme/lv_1']

The problem is here:
> ls -l '/dev/disk/by-id/wwn-*'
ls: cannot access '/dev/disk/by-id/wwn-*': No such file or directory

Before the problem appeared, the log said:
> ls -l /dev/disk/by-id/wwn-*
lrwxrwxrwx 1 root root  9 Oct 11 12:22 /dev/disk/by-id/wwn-0x5000c50091e316b4 -> ../../sda
lrwxrwxrwx 1 root root 10 Oct 11 12:22 /dev/disk/by-id/wwn-0x5000c50091e316b4-part1 -> ../../sda1

On my machine, if I put an * in single quotes (like remote.sh does), I get "No such file or directory":
$ ls -l '*'
ls: cannot access '*': No such file or directory

But if I drop the single quotes, it works as expected.

In the log on the tracker, I see:
2019-10-09T20:53:45.750 INFO:tasks.ceph:fs option selected, checking for scratch devs
2019-10-09T20:53:45.750 INFO:tasks.ceph:found devs: ['/dev/vg_nvme/lv_4', '/dev/vg_nvme/lv_3', '/dev/vg_nvme/lv_2', '/dev/vg_nvme/lv_1']
2019-10-09T20:53:45.750 INFO:teuthology.orchestra.run.smithi136:Running:
2019-10-09T20:53:45.750 INFO:teuthology.orchestra.run.smithi136:> ls -l '/dev/disk/by-id/wwn-*'
2019-10-09T20:53:45.821 INFO:teuthology.orchestra.run.smithi136.stderr:ls: cannot access '/dev/disk/by-id/wwn-*': No such file or directory
2019-10-09T20:53:45.821 DEBUG:teuthology.orchestra.run:got remote process result: 2
2019-10-09T20:53:45.822 INFO:teuthology.misc:Failed to get wwn devices! Using /dev/sd* devices...
2019-10-09T20:53:45.822 INFO:tasks.ceph:dev map: {'osd.1': '/dev/vg_nvme/lv_1', 'osd.0': '/dev/vg_nvme/lv_4', 'osd.3': '/dev/vg_nvme/lv_3', 'osd.2': '/dev/vg_nvme/lv_2'}
2019-10-09T20:53:45.831 DEBUG:teuthology.orchestra.remote:smithi058:/scratch_devs is 72B
2019-10-09T20:53:45.843 DEBUG:teuthology.misc:devs=['/dev/vg_nvme/lv_4', '/dev/vg_nvme/lv_3', '/dev/vg_nvme/lv_2', '/dev/vg_nvme/lv_1']

It looks like it is not related to 41a13ec because of this ls -l '/dev/disk/by-id/wwn-*'

On my machine, if I put an * in single quotes (like remote.sh does), I get "No such file or directory":
$ ls -l '*'
ls: cannot access '*': No such file or directory

But if I drop the single quotes, it works as expected.

right, but what a relation to the issue? I don't see. The quoted variant had been used for a long time, it was failing always.

The quoted variant had been used for a long time, it was failing always.

That's not true, though. It's easy to find unquoted variant in older teuthology.log files at http://pulpito.ceph.com

The quoted variant had been used for a long time, it was failing always.

That's not true, though. It's easy to find unquoted and non-failing variant in older teuthology.log files at http://pulpito.ceph.com

Please link to a job

Please link to a job

I already did - see https://github.com/ceph/teuthology/pull/1332#issuecomment-542203171
Here is another one: http://qa-proxy.ceph.com/teuthology/smithfarm-2019-10-15_14:05:10-rbd:mirror-thrash-mimic-distro-basic-smithi/4414904/teuthology.log
(Note: this is run from a teuthology clone that does not have 41a13eca480e38cfeeba7a180b4516b90598c39b - next I will add 41a13eca480e38cfeeba7a180b4516b90598c39b and re-run the job.)

@kshtsk See also https://tracker.ceph.com/issues/42313 - would it make sense to move this discussion there?

Please link to a job

I already did - see #1332 (comment)
Here is another one: http://qa-proxy.ceph.com/teuthology/smithfarm-2019-10-15_14:05:10-rbd:mirror-thrash-mimic-distro-basic-smithi/4414904/teuthology.log
(Note: this is run from a teuthology clone that does not have 41a13ec - next I will add 41a13ec and re-run the job.)

The http://qa-proxy.ceph.com/teuthology/smithfarm-2019-10-15_14:05:10-rbd:mirror-thrash-mimic-distro-basic-smithi/4414904/teuthology.log has 41a13ec.
2019-10-15T14:08:09.373 INFO:root:teuthology version: 1.0.0-f40fd3f
> git log --oneline f40fd3f  | grep 41a13ec
41a13eca misc: use remote.sh instead of remote.run

@kshtsk On the worker, maybe. But in my personal clone on teuthology.front I do not have this commit.

@kshtsk On the worker, maybe. But in my personal clone on teuthology.front I do not have this commit.
I'm not sure what you have, I only look at the log you've pointed, see my comments above, when I was testing it on smithi006.

@smithfarm so, I don't undertand your point, failing ticket https://tracker.ceph.com/issues/42313 points to the log where:
2019-10-09T20:24:23.144 INFO:root:teuthology version: 1.0.0-139780c
and you can see numerous of quoted wwn-*:
2019-10-09T20:53:45.750 INFO:teuthology.orchestra.run.smithi136:> ls -l '/dev/disk/by-id/wwn-*'

This version does not include this commit yet.
> git log --oneline 139780c | grep 41a13ec || echo NOT FOUND
NOT FOUND

This is why I'm saying it is not related.

@kshtsk See also https://tracker.ceph.com/issues/42313 - would it make sense to move this discussion there?

I don't see why it is related to this PR? Sage created this PR and never posted a reference to any logs here.

So we either close this PR, or do a refactoring of get_wwn_id_map -> get_link_abspath_dict, but qa/task/ceph.py should be fixed too in ceph repo. I find it strange to have function get_wwn_id_map not doing anything with wwn.

Sorry, @kshtsk - I had it backwards. Before, for a long time, the code in get_wwn_id_map was buggy:
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  834)     try:
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  835)         r = remote.run(
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  836)             args=[
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  837)                 'ls',
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  838)                 '-l',
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  839)                 '/dev/disk/by-id/wwn-*',
9c9cf9bce (Andrew Schoen   2014-11-24 12:16:51 -0600  840)             ],
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  841)             stdout=StringIO(),
9c9cf9bce (Andrew Schoen   2014-11-24 12:16:51 -0600  842)         )
8f720454c (Sam Lang        2013-01-22 20:27:41 -0600  843)         stdout = r.stdout.getvalue()
3981a8f1a (Zack Cerza      2013-08-30 10:58:10 -0500  844)     except Exception:
4bfbd77c4 (Dan Mick        2016-03-09 11:27:34 -0800  845)         log.info('Failed to get wwn devices! Using /dev/sd* devices...')
427bf93c8 (Zack Cerza      2014-01-27 13:02:30 -0600  846)         return dict((d, d) for d in devs)

Since the string /dev/disk/by-id/wwn-* was not enclosed in a Raw(...), this code was causing teuthology to emit ls -l '/dev/disk/by-id/wwn-*' (wrongly quoted). And, as @kshtsk noted, it did this for a long time. A very long time (since 2013-01-22).
Then came 41a13ec which fixed the command, and it started working!
As @liewegas notes in the PR description, "most of the smithi do not have wwn-* items for the LVs we use for scratch." In other words, some of the smithi do have these wwn-*, and I'm guessing that it's on these smithi that we are now seeing this buggy behavior?
(It's kind of ironic that Sepia was saved for 7 years by broken code, and it was the act of fixing that code that broke Sepia...)
I agree with @kshtsk that this fix is not pretty and we should clean it up in a follow-up PR (or PRs), but if the fix in 41a13ec broke the lab and this PR fixes it, we should merge this PR ASAP.

I agree with @kshtsk that this fix is not pretty and we should clean it up in a follow-up PR (or PRs), but if the fix in 41a13ec broke the lab and this PR fixes it, we should merge this PR ASAP.

Thank you for this command.
I would like look what exactly does this code will fix, because from the above logs, there where no right log reference.
What we need to fix is the consumer code of this method. I only can find it is used in the qa/tasks/ceph.py do I understand we need to fix it for all master, luminous, mimic, nautilus, etc.
My complain is if we merge it and it will not resolve the issue. This is why we need a reproducer log for the issue.

@smithfarm
As I said, the referenced tracker issue is not related to this PR, because it has been run on the teuthology which does not include the fix. So I'm confused and as Sage said, this PR does not fix anything. However we can easily check if it is fixing just running the same test case against this branch in Sepia.

@smithfarm and if you think that this patch will return to the previous behavior then it is not true, because before it was just always failing, correspondingly it was returning the mapping to itself of the contents of the devs list. With this patch it will not always return those values, it will just return empty list, because dm-name-* are links to to /dev/dm-* devices and devs include /dev/vg_nvme/lv_*, so they just will not match anything, because they are not dereferencing links. So why merge it?

@smithfarm please stop investigating this case until @liewegas put more details which exact issue he is referring, like "tracker reference" and teuthology run link.

@kshtsk Once #1334 merges, this one can be closed.

closing in favor of #1335


fix(handleDisconnect): use RESET_STATE wallet action to handle disconnect

Description

Switched to using RESET_STATE to take user back to connect wallet screen instead of existing flipping between SET_WALLET_MODAL payload.
My previous PR changes to the onClose handler for the modal from last week may have also helped with the behavior for taking the user back to connect wallet screen. And the removal of the back button from this modal will also help with reducing the risk of putting user into the undesired state.
Notice

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

Pull Request Type

[x] :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 #1610
Risk

UI related, no connected wallet, minor risk imo.
Testing

Engineering

Connect a KeepKey device that has been factory reset/wiped
Pair the KeepKey device
The "Get Started with Keepkey" Modal should appear.
Either close the modal or disconnect Keepkey device and you should be led back to the initial connect wallet flow.

Operations

Same steps as in Engineering apply.
Screenshots (if applicable)
https://user-images.githubusercontent.com/14836056/207625932-1aa0369d-594f-467c-a5bd-11034f39d667.mov

@brymut I've converted this to draft until it's ready for another review 🙏

Hi again @0xApotheosis , I can't seem to be able to recreate this issue when I disconnect, recording 👇
https://user-images.githubusercontent.com/14836056/210400448-1c8e7846-3c2e-4ea4-be58-eeb77bb23f34.mov

Hi @0xApotheosis could you please have another look?

as discussed w/ @pastaghost kicking this to draft until necessary changes are made in hdwallet for this

closing as stale, plz reopen if required


Walking Speed increased in OP3 Soccer Demo

Hi guys,
I have noticed that when the ROBOTIS OP3 is in the "Autonomous Soccer Mode", when walking he seems to walk at a faster rate when a particular range from the ball, then proceeds to slow down when it is in close proximity to the ball. I have had a search but can not seem to find where in the code this process is created? Could you please highlight what section this is in as I would like to edit the speed the OP3 walks when it is heading towards the tracked soccer ball.
Thank you!

Hi,
The walking motion is controlled by the op3_walking_module package.
In order to modify the walking behavior, you can tune parameters.
Please refer to below emanual for detailed instructions.
https://emanual.robotis.com/docs/en/platform/op3/robotis_ros_packages/#op3_walking_module
The source code of following the ball can be found from op3_demo/src/soccer/ball_follower.cpp in the ROBOTIS-OP3-DEMO package.
Thank you.


[GH Permissions] Need permission for a aarch64 PR

I am part of Imec and currently enabling a Wormhole n300s on a Ampere Altra server
In closed contact with your support team (Mohamed, Martin + Frank and Thaddeus as sponsor)
Patches are ready to be reviewed - need access to create a PR

What you are trying to do...
Push a PR on aarch64 enablement
Who needs permissions...
me: https://github.com/plecluse
Optional screenshot etc...

@tt-rkim

Do you have a PR ready to show on a fork? While we try to figure out the best way forward on write permissions, you can keep development online by pushing a branch to a fork of the repo that you own.

sure, we can go that road too - please have a look here https://github.com/plecluse/tt-metal/pull/1 - did share details via email to your team.

@mbahnasTT Can your team please forward any such communications you have with Imec to our team?
Please include me, Bryan Keith, Bryan Lozano, and Michael Chiou


Token_Id

How to send authorization token in header using fetch plugin?

maybe i'm late
but:

And how get token


Use  in Flex documentation

Closes #3696
Description
Fixed the repetition part in the Flex documentation to use the For component.
Is this a breaking change (Yes/No):
No

Fixed! Please rereview. @108yen  @hirotomoyamada


join on x between y and z

Is there a way to take advantage of between inside an on clause to produce a query like
SELECT a.*, b.* FROM a JOIN b ON a.x BETWEEN b.y AND b.z?

Hello! Yes, it is possible with the following syntax
>>> from pypika import Tables, Query
>>> a, b = Tables('a', 'b')
>>> Query.from_(a).join(b).on(a.x.between(b.y, b.z)).select(a.star, b.star)
SELECT "a".*,"b".* FROM "a" JOIN "b" ON "a"."x" BETWEEN "b"."y" AND "b"."z"


Remove invalid candidates

We recently removed the IPv4 of two dual-stack servers (let's call them A and B) connected to innernet. Most peers continue to connect to the server just fine (via IPv6), but one (C in this example) still tries to connect to both of them via IPv4.
The innernet server itself is IPv6 only. C is dual-stack.
We tried numerous things: restarting the affected servers and also updating the candidates column in the network's database on the innernet server via UPDATE peers SET candidates='[]' where name='A';. All efforts only work for a few seconds, then it revert back to the unavailable IPv4 addresses.
Is there some way to remove a candidate altogether from the server and all its peers, especially when it's unavailable?

A peer's candidates are overwritten with each run of innernet up from the peer (so every 60 seconds if using the provided systemd unit).
If you run innernet with the -v flag:
sudo innernet -v up [mynetwork]

you'll see more detailed information about the endpoints that the clients are trying when doing NAT traversal. Perhaps that output will help you debug. Also, double-check that you didn't use innernet override-endpoint to force an endpoint for peers A and B.

Thanks for the command, I forgot about using -v (or -vv) but it helped me to better understand the candidate reporting method.
 Pehraps this helps people who run into similar issues:

One host still showed the IPv4 (e.g. in ip a) although it was removed from the config. When I fixed that, innernet indeed removed the candidate immediately.
The other host had a mistake in the firewall configuration. It was not able to make outgoing requests via HTTP to the innernet server, but pings and plain wireguard worked. When I fixed that, the problem also was gone.

Thanks for reporting back @mxmehl, glad your issue was resolved :).


Sync course subject names from ttapi [3/3]

Context
Removes subject_codes field from courses table
Link to Trello card
https://trello.com/c/81C0pJrz/3583-sync-course-subject-names-from-ttapi-3
Things to check

[x] This code does not rely on migrations in the same Pull Request
[x] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[x] API release notes have been updated if necessary
[x] This code does not rely on the addition/removal of Azure config environment variables in the same Pull Request
[x] New environment variables have been added to the Azure config

@mnacos As syncs happen hourly I expect one to have been done prior to this being merged (given it has already worked in QA and Staging, and part 2 still needs to be merged), so I don't think we need any manual intervention!
I'm waiting for part 2 to be approved, merged and deployed though before opening the PR for review just to avoid any confusion or accidental merge!

Should we do the migration in a separate PR?

@SamJamCul every other dependency has already been satisfied through PRs #4489 and #4490

Would somewhere like this also need to have the subject_codes removed?

@SamJamCul No as I have introduced a method as part of https://github.com/DFE-Digital/apply-for-teacher-training/pull/4490 that maps subject.code to subject_codes for simplicity.


On MacOS, Ctrl+Tab doesn't trigger key callback

Hello! Thank you for a fantastic library!
On my and my friend's mac (I'm on Monterey), with a key callback like this:
static void key_callback(GLFWwindow *window, int key, int scancode, int action, int mods)
{
    printf("key: %d\n", key);
}

Nothing is printed if I press Ctrl+Tab, only for Tab. Other Ctrl+buttons works.
This issue might hold some clue: https://bugreports.qt.io/browse/QTBUG-8596

Ctrl+Tab and Ctrl+Shift+Tab is eaten by  [NSWindow _processKeyboardUIKey] because the [NSWindow _keyboardUIActionForEvent] is selectNextKeyView: and selectPreviousKeyView: respectively.

Is there a way for me to work around this? :) Happy for any help.

I noticed this too (on macOS Ventura and Sonoma).
I was wondering why I couldn't detect the ctrl-tab combo in my application, and some time later I tried the ImGui example using GLFW and saw the ctrl-tab didn't work there either, although it did work for the SDL ImGui example (giving the conclusion that the error is with GLFW).
Strangely, tab-ctrl (pressing tab first and holding it, and then holding ctrl without letting go of tab) did work in the ImGui GLFW examlpe.
It would make me happy to see this fixed, but I'm still grateful for the hard work that's been put into this library.


VOT2018 TEST

e = ExperimentVOT(root_dir,version=2018,experiments='unsupervised')
File "G:\practice\TripleFC\tools\test.py", line 37, in
e.report([tracker.name])
File "E:\anaconda\1\envs\siamfc\lib\site-packages\got10k\experiments\vot.py", line 361, in report
ious[seq_name][:len(seq_ious), :] = seq_ious
ValueError: could not broadcast input array from shape (0) into shape (0,325)

I have the same problem. Have u solved the puzzle?