Simplified TableProvider::Insert API

Is your feature request related to a problem or challenge?
Recent INSERT work  https://github.com/apache/arrow-datafusion/pull/6049  is a good example of a useful datafusion feature that has an extensibility story (a new function on a trait)
However, it takes a non trivial effort to add such support (requires an new physical operator).
Describe the solution you'd like
Thus I would like to propose the following API to support writing to sources
DataSink trait
A new trait that exposes just the information needed writing. Something like:
/// The DataSink implements writing streams of [`RecordBatch`]es to
/// partitioned destinations
pub trait DataSink: std::fmt::Debug + std::fmt::Display + Send + Sync {

    /// How does this sink want its input distributed?
    fn required_input_distribution(&self) -> Distribution;

    /// return a future which writes a RecordBatchStream to a particular partition
    /// and return the number of rows written
    fn write_stream(&self, partition: usize, input: SendableRecordBatchStream) -> BoxFuture<Result<u64>>;
}

Change signature of TableProvider
Then if we change the signature of TableProvider from
    /// Insert into this table
    async fn insert_into(
        &self,
        _state: &SessionState,
        _input: Arc<dyn ExecutionPlan>,
    ) -> Result<Arc<dyn ExecutionPlan>> {
        let msg = "Insertion not implemented for this table".to_owned();
        Err(DataFusionError::NotImplemented(msg))
    }

To something like
    /// Get a sink to use to write to this table, if supported
    async fn sink(
        &self,
    ) -> Result<Arc<dyn DataSink>> {
        let msg = "Insertion not implemented for this table".to_owned();
        Err(DataFusionError::NotImplemented(msg))
    }

I think almost all of the inert plans can share a common ExecutionPlan
Describe alternatives you've considered
do nothing
Additional context
No response

This sounds like a great approach. Thank you for bringing it up.
I'm trying to implement the insert operation for Apache Iceberg Tables and I have one point which I would like to make:
Apache Iceberg supports transactions in which datafiles(parquetfiles) can be added to the table. For that the DataSink trait provides a great way to write the files to an external storage. However, after the datafiles are written, the metadata of the iceberg table has to be updated. For that it would be necessary to have some kind of flush method in the DataSink trait that allows to update the state of the table.

And should the methods be async? If the data is written to an object_store, it has to be async to know if the write was successful.

And should the methods be async

The return type is BoxFuture which would allow for asychronous completion

For that it would be necessary to have some kind of flush method in the DataSink trait that allows to update the state of the table

As the returned type is BoxFuture the implementation could update the state once the stream has been exhausted? i.e. something like
impl DataSink for MyTable {
    fn write_stream(&self, partition: usize, input: SendableRecordBatchStream) -> BoxFuture<Result<u64>> {
        async move {
            while let Some(next) = input.next().await.transpose()? {
                // Process batch
            }
            // Commit transaction
        }.boxed()
    }
}

return the number of rows written

I personally would return () and leave metrics accounting as a TableProvider detail

Thanks for your explanation. There is just one small detail that would be great for Iceberg/Deltalake.
Apache Iceberg and Deltalake use MVCC to guarantee atomic transactions on tables. Therefore they optimistically write the data of a transaction to some kind of storage. Once the data is written, the metadata of the table is updated if no other process has updated the metadata in the meantime.
With the approach that you are suggesting, the atomicity of a write transaction can only be guaranteed on a partition basis. This could lead to the scenario where one partition is written successfully, then another process updates the metadata and writing the following partitions could fail. Moreover, one would need to be really careful that the different asynchronous tasks don't invalidate the write operation from the other tasks even in the same logical write transaction.
The current porposal for the DataSink trait definitely simplifies the implementation of insert operations for Iceberg and Deltalake tables. It just doesn't allow the implementation of the full functionality for Iceberg and Deltalake. I just wanted to mention that.
Forget my comment on the asynchronous method, I somehow missed the BoxFuture.

@JanKaul I think we could add a finish() or commit() for DataSink without too much difficulty. I'll see what I can do

(BTW I'll plan to use async_trait so the fact the trait returns Futures is more obvious

the atomicity of a write transaction can only be guaranteed on a partition basis

I think you could do something where the last write_stream to complete flushes, but it is a bit odd for sure
This does lead to one question though, what actually is the meaning of partitioning in this context? The formulation of Distribution I don't believe is sufficient to express the partitioning that something like an object_store would require.
What does exposing the partitioning yield over something simple like
impl TableProvider {
    async fn insert(&self, plan: Arc<dyn ExecutionPlan>) -> Result<()>;
}

I think you could do something where the last write_stream to complete flushes, but it is a bit odd for sure

I think it would be a common pattern (where you either want to commit all the partitions or none, rather than have some of them possibly complete and some fail). 🤔

This does lead to one question though, what actually is the meaning of partitioning in this context?

It allows the Sink to request data be split according to one of the following options:
https://docs.rs/datafusion/latest/datafusion/physical_plan/enum.Partitioning.html
And let the DataFusion optimizer do its thing to optimize its calculation.

The formulation of Distribution I don't believe is sufficient to express the partitioning that something like a Iceberg or Deltalake would require.

Can you please be more specific about what type of partitioning would be required? Are you thinking of "partition by value in a column (like the date)"?

What does exposing the partitioning yield over something simple like

It makes it easier to implement DataSink as you don't have to worry about the details of ExecutionPlans and connecting things up. Also, if we use partitioning then the calculation can be exposed to the rest of datafusion over time (e.g. take advantage of partitioned grouping)

I think it would be a common pattern

I'd wager almost 100% of workloads would want atomicity at the ExecutionPlan level

Are you thinking of "partition by value in a column (like the date)"

Partitioning or bucketing by value would be the most common use-case, which is distinct from the sort of partitioning currently implemented by DataFusion.

It makes it easier to implement DataSink as you don't have to worry about the details of ExecutionPlans and connecting things up

Unless I'm missing something, its the difference between calling ExecutionPlan::execute and being given the result? Is that really a meaningful complexity?
I guess I'm just trying to play devils advocate for Keep-It-Simple :smile:

Iceberg allows partitioning by hash, truncating a value, date. I was thinking of expressing the partitioning as a DISTRIBUTE BY (https://docs.rs/datafusion/24.0.0/datafusion/prelude/enum.Partitioning.html#variant.DistributeBy) and then use RepartitionExec on the input to apply it to the query. But that is just an initial idea I didn't get to it yet.

partitioning as a DISTRIBUTE BY

Yes, that is the construction you would definitely want. I don't believe a corresponding notion exists in the physical layer, which has pretty hard-coded assumptions about partition cardinality

Yes, that is the construction you would definitely want. I don't believe a corresponding notion exists in the physical layer, which has pretty hard-coded assumptions about partition enumerability

I think @JanKaul 's idea in https://github.com/apache/arrow-datafusion/issues/6339#issuecomment-1545964425 would work well

Unless I'm missing something, its the difference between calling ExecutionPlan::execute and being given the result? Is that really a meaningful complexity?

I am trying to avoid having to write a new ExecutionPlan for each table provider (aka avoid all boiler plate here): https://github.com/apache/arrow-datafusion/blob/main/datafusion/core/src/physical_plan/memory.rs
If the API is like this:
impl TableProvider {
    async fn insert(&self, ctx: Arc<TaskContext>, plan: Arc<dyn ExecutionPlan>) -> Result<()>;
}

I think the DataFusion implementation would be simpler, but now each sink would be potentially more complicated as it would have to deal with running multiple streams concurrently. But maybe that is ok 🤔
I am also trying to keep Execution and datasource separate (so I can eventually break them into different crates) -- maybe I can just make another trait to abstract away the execution plan detail
I am about to get ion to a plane -- I'll play around with it

So we have the "one-exec-for-every-provider" on the read side, but we have a "single-exec-across-all-providers" pattern on the write side? Am I misunderstanding this? If this is indeed the case, what is the motivation and/or justification behind this asymmetry?

For the read side you can often make use of existing Execs. In my use case for Apache Iceberg I can implement the TableProvider and return a ParquetExec with the necessary files in the scan method. So I don't actually have to implement an Exec myself.

So we have the "one-exec-for-each-provider" pattern on the read side, but we have a "single-exec-across-all-providers" pattern on the write side? Am I misunderstanding this? If this is indeed the case, what is the motivation and/or justification behind this asymmetry?

The asymmetry is a good question @ozankabak
My thinking is

The amount of common, replicated code, between inserts is substantial  (when prototyping https://github.com/apache/arrow-datafusion/pull/6313 I had to make an execution plan that was 90% the same as MemoryWriteExec)
The semantics of COPY or Insert are typically to return the number of rows written, not something that depends on the type of table being written into.
I think long term splitting out the physical plans and datasources (e.g. #1754 ) will make the codebase easier to work with and keep separation cleaner, so connecting datasource to physical plan more tightly worked in opposite directions

I think we could achieve most of the above by keeping the same insert_into that returns ExecutionPlan in TableProvider and refactoring the implementation.
However, it seemed like most of the flexibility gained by using an ExecutionPlan would only server to be more confusing

TableProvider and return a ParquetExec with the necessary files in the scan method. So I don't actually have to implement an Exec myself.

IOx follows this strategy as well

Aren't these arguments mostly applicable to the read side as well?

Aren't these arguments mostly applicable to the read side as well?

Yes, basically, and if I could change it now I would change it not to return an ExecutionPlan somehow.

I am worried that we may prematurely commit to a design without enough clarity in all possible implications and usage patterns.

I think this kind of a design question should be decided after we have some more concrete cases (i.e. more write execs like we have read execs now) and thus have enough data points to analyze various use cases. Only then we can perform a more serious pros/cons analysis. In this case, maybe the decision will be to refactor the read side as well, or maybe we'll see that doing this is not the right thing to do even for the write side.

I think this is a good point (and there is some evidence for us not really knowing what the API should be in the discussions above with @tustvold  like https://github.com/apache/arrow-datafusion/issues/6339#issuecomment-1545962773) . I think we can leave the TableProvider API in terms of ExecutionPlan and simply refactor the implementations to require less boiler plate code.
Let me see spend some more time with https://github.com/apache/arrow-datafusion/pull/6347 refining the idea

I think this is done for now. Closing


Confirmation page uses incorrect base template

Expected behaviour
All pages in a user journey through a questionnaire should use a consistent theme (eg. Census).
Actual behaviour
Confirmation page is not using theme'd template and subsequently appears malformed.
Steps to reproduce the behaviour

Complete census_individual questionnaire.
Verify "confirmation" page has a malformed header as per screenshot.

Screenshot

This appears to be resolved in pre-prod, closing.


Could we get this in 0.9.x? Added the offending line to the error output, when otherwise skipping a ...

this is from 00422a1e6b24a73c99ad20adfe4166c8f709c12a
Could we get it in 0.9.x?
...mangled Metric line.
Conflicts:
lib/carbon/protocols.py

ping

Thanks!


featurese-4-autocomplete-error-qualifier-is-null

Phases
MM
MB
MR
JM
Total

ETA
0
0
0
0
0

Developing
0
0
0
0
0

Review
0
0
0
0
0

Total
-
-
-
-
0

ETA est.

0

ETA cust.
-
-
-
-
0

Problem description
Reported issues
Not-reported issues
Analysis
(Write here, if there is needed describe some specific problem. Erase it, when it is not needed.)
Problems
(Write here, if some unexpected problems occur during solving issues. Erase it, when it is not needed.)

ignore this PR


how to find color within the designated screen area?

You can use robotgo.FindColor().

Hi there, I want to write the func but robotgo.FindColor() param type error?
So how to solve that?
package main

import (
    "fmt"
    "github.com/go-vgo/robotgo"
    "strconv"
    "reflect"
)

func main() {
    x, y := findColor(388, 179, 300, 300, "AADCDC")
    fmt.Println("Res..", x, y)
}

// Find color within the designated screen area
func findColor(x, y, w, h int, color string) (int, int) {
    bitmap := robotgo.CaptureScreen(x, y, w, h)
    int64Color, _ := strconv.ParseInt(color, 16, 0)
    var intColor = int(int64Color)
    fmt.Println("...", reflect.TypeOf(intColor), intColor)
    fmt.Println("...", reflect.TypeOf(0xAADCDC), 0xAADCDC)
    // resx, rexy := robotgo.FindColor(bitmap, 0xAADCDC)    // ok
    resx, rexy := robotgo.FindColor(bitmap, intColor)    // cannot use intColor (type int) as type robotgo._Ctype_MMRGBHex in argument to robotgo.FindColor
    return resx, rexy
}

FindColor(bitmap C.MMBitmapRef, color C.MMRGBHex, args ...float32){}, the type of color is C.MMRGBHex.

Sorry to bother you.
How can I transfer string "AADCDC" to a C.MMRGBHex value?
Or how to complete the func  x, y := findColor(388, 179, 300, 300, "AADCDC")?

Now, you can pass the parameters 0xAADCDC directly or use FindColorCS(388, 179, 300, 300, 0xAADCDC)

Thanks a lot!

But how can I find accurate color ?

You can use robotgo.GetPixelColor(), robotgo.GetColor or use the color picker.

Get the color can use these, if you can not find the color accurately, I will test it. If you solve it, please give me a pr, thanks.

I mean use FindColorCS find the color accurately.
And the func FindColor param tolerance has bug.
See my pr

I see, at first glance, thanks.


fix(attach-focus): restore behavior prior to #346

make it work as boolean attribute
set the default binding mode to oneTime
update tests

@bigopon can you check? As we discussed, I hope so 😅


Use isGreaterThanOrEqualTo when checking committee index

PR Description
Noticed what I believe to be two minor accidents.

A duplicate statement which had no effect.
An incorrect committeeIndex check.

For the second one, since it's an index, the max value is committeeCountPerSlot - 1, right?
Documentation

[x] I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

[x] I thought about adding a changelog entry, and added one if I deemed necessary.

omg thanks @jtraglia


Factor class VariableName out of SortedVariable

After: #1537
This long-awaited refactoring of the SortedVariable class is necessary to (safely) state certain injectivity properties of toVariable. That allows us to change SideCondition.Representation in turn, yielding a 46% speed-up of the sum-to-n proof.
See also: #1399
Fixes: #1472

Reviewer checklist

[ ] Test coverage: stack test --coverage
[ ] Public API documentation: stack haddock

There are a lot fewer changes after #1537 is merged.


Using JAX instead of AutoGrad.

AutoGrad is currently not developed anymore and it is recommended to use JAX instead. It seems like a drop-in replacement and I'm curious to know if it's worth considering a shift? Moreover, the comparisions between JAX and AutoGrad seem very promising as JAX superseeds AutoGrad in terms of performance. What say?

Yes, very good comment. I have not really found the time yet to look into JAX, but I am aware that autograd is deprecated. If you are working on a method with gradients and would like to integrate JAX let me know. I can help you to get started, and I would be happy to integrate it as a standard into pymoo.

@julesy89 JAX does seem to be a drop-in replacement. However, I have noticed that pymoo tends to have specific APIs that uses the heart of autograd. I might have to study some of the translational APIs for the same. I am keen to help out with using JAX under the hood but let it be known - JAX isn't necessarily faster than native numpy at all times.
Hence, do we intend to attempt to support all three - numpy, jax and autograd or do we just stick to one?


fix: filename in data url should generate agnostic value

Attempts to fix #16415

What kind of change does this PR introduce?

bugfix
Did you add tests for your changes?

No
Does this PR introduce a breaking change?
Maybe?

What needs to be documented once your changes are merged?

Sorry, duplicate of https://github.com/webpack/webpack/pull/16435/ anyway thank you


Implement OptionManager + tests

This task is about implementing the OptionManager class. Please take a look at the UML diagram in the meta repository.
This task contains a list of TODOs, each representing a logical sub exercise that can be tackled one at a time. They stand in the chronological order in which they should be worked on. In parentheses you can find the estimated net work amount required. This is a rough estimate and can be quite a bit off (in either direction). When you work on the issue, please update the text with the actual net work time you needed. This can then be used for improvements in upcoming estimations.

[ ] define public API of class (estimated 0.5 hours amount of work)
[ ] write test class (estimated 1 hour amount of work)
[ ] implement class including test iterations (estimated 1 hour amount of work)
[ ] write documentation in docs repository (estimated 1 hour amount of work)

No longer has to be done, as the design for the option system changed.


[Telink] Add retention target & Update builds to docker version 25

Change overview

Update builds to docker version 25 https://github.com/project-chip/connectedhomeip/pull/30265
Add tlsr9528a retention board
Extended common heap size
Add script for update Telink Zephyr to specific revision (for developers purpose)
Fix crash/hang during factory reset

Blocked by creation of new docker images: https://github.com/project-chip/connectedhomeip/pull/30265


Fixed request data format to get a valid response from Netflix again

Fixed list fetch from Netflix

changed http request data format

Fixed issue "Plug-in no longer functioning." #640
Types of changes

[ x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ x] I have read the CONTRIBUTING document.

All Submissions:

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

Changes to Core Features:

[ x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ x] Have you successfully ran tests with your changes locally?

Screenshots (if appropriate):
[You can erase any parts of this template not applicable to your Pull Request.]

Great work! Thank you!

Very cool, thx! Will merge and bump a version

this commit changes the format of the request but you forgot to correct the header, this way you make wrong requests the server may one day refuse them

thank you works great. what about 0.14? gonna be fixed?

This is not working for me. trying to log in after update gives me lolomo error
tried the last 3 updates
1.0.0
1.1.0
1.1.1
0.14 was the last one that worked for me since last week that i updated to 1.0.0.
i cant see how it was fixed here... or understand how you did it


Validating CSIP15

There are 2 issues with validating the CSIP15 requirement:

The validator does not check number of note instances, when there should be 1 per agent.
The validator does not check if note is empty

This can be seen when testing rule 2, package "mets-xml_metsHdr_agent_note_2_instances" and rule 3, package "mets-xml_metsHdr_agent_note_empty" from testCase.xml

Issue solved - https://github.com/E-ARK-Software/eark-validator/pull/48


Fix bug on the migration script of multi-version lsm documentation

Description
Related to https://github.com/inmanta/lsm/pull/807
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[ ] Attached issue to pull request
[ ] Changelog entry
[ ] Type annotations are present
[ ] Code is clear and sufficiently documented
[ ] No (preventable) type errors (check using make mypy or make mypy-diff)
[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )
[ ] If this PR fixes a race condition in the test suite, also push the fix to the relevant stable branche(s) (see test-fixes for more info)

Processing this pull request

Merged into branches master in 375e8398d762951306f3705041ecf5436aadbb83

Processing #8108.


Rename Registry trait

AFIAK, the terminology we want is:

a source is a play to find packages (specifically their source code)
a registry is a type of source which contains multiple released packages (not WIP packages -> it's not a vcs)

But right the Registry trait is a super-trait of Source. At the very least Registry should get a new name, but perhaps both traits should be renamed like RemoteSource: Source or CachedSource: Source.

I had a look at this one, and looking at the code to try and drive inferences I came up with the following notes:
// Desired:
// * a source is a place to find packages (specifically their source code)
// * a registry is a type of source which contains multiple released packages (not WIP packages)
//
// "perhaps both traits should be renamed to `RemoteSource: Source` or `CachedSource: Source`"

/// The source of information about a group of packages
trait Registry

/// A Source finds and downloads remote packages based on names and versions.
trait Source: Registry

// The following have both Registry and Source impls:
struct DirectorySource
struct       GitSource
struct      PathSource
struct  RegistrySource
struct  ReplacedSource

/// A registry of known packages.
/// Contains a collection of `Source`s, which are used to load a `Package` from.
struct PackageRegistry
impl Registry for PackageRegistry

Note PackageRegistry is the only struct that is just a Registry but not a Source.
I think the "registry" referred to above only applies to RegistrySource; for the other Registry+Source structs that description I don't doesn't matches.
Is the parallel of Registry vs Source: apt-cache vs apt-get, maybe?
I've been thinking of names like "QuerySource", given "query" is effectively the defining method of Registry.
Thoughts?

Note PackageRegistry is the only struct that is just a Registry but not a Source.

Excellent! I think this is a core observation here! Note that we are not really using PackageRegistry generically: that is, everything would almost work, if PacakgeRegistry did not implement Registry, and instead had the query inherent method. "almost" because we do substitute it with another implementation for some tests.
And that probably means that Source and Registry should not inherit from each other at all. Let's try to remove the inheritance before any renames?
I think the path would be

move supports_checksums and requires_precise methods from Registry directly to Source. I am pretty sure that this would work
add query method to Source, and remove : Registry bound. I think this would work, and, despite the seeming duplication, it should reduce the net amount of code.

With https://github.com/rust-lang/cargo/pull/5476 is renaming still of interest? Or can it be said this issue is "resolved" with #5476?

Err so now neither is a supertrait of the other?

Err so now neither is a supertrait of the other? That gives 2^2 = 4 combinations, are all 4 needed?

They are disjoint now: each type is either only a source, or only a registry.
I still think that rename is needed, because the term Registry is overloaded.
First of all, we have sources. a Source is a thing with identity (SourceId), which holds a bunch of packages. One package for path sources, several for git source, and lots for registry source. In this sense, registry is kind of source, which holds a lot of packages, as well as a database of available pacakges, in crates.io index format.
During resolution, Cargo works with packages from different sources, Registry the trait just bundles all those sources in a single struct, it does not have an identity. So a possible name for Registry trait would be SourceSet. However, I don't have a nice suggestion for PackageRegistry (which is the single non-test-mock implementation of SourceSet).
Also, we have a thing called RegistryQuerier, which wraps PackageRegistry, and looks like they do more or less similar stuff: wrapping a bunch of Sources and adding stuff like overrides and replacements.

From https://github.com/rust-lang/cargo/pull/5432, I'm going to assume @alexcrichton might have an opinion about "naming things". 😉

@matklad

I still think that rename is needed, because the term Registry is overloaded.

Yes at the very least let's do that. Otherwise it's hard to even discuss the issues.

They are disjoint now

Err a type can implement both or neither in principle.

In this sense, registry is kind of source, which holds a lot of packages, as well as a database of available pacakges, in crates.io index format.

This would be the registry type, right?

Registry the trait just bundles all those sources in a single struct, it does not have an identity.

I'd make a trait with all the methods, and a sub trait with just the identity part. A set of sources is also a source, but a set of "identified sources" doesn't itself have an identity.

Wouldn't it be better to just remove the indirection of Registry and use PackageRegistry directly?
I tried to go about that, but ran into lifetime issues (see https://github.com/rust-lang/cargo/pull/5476#issue-185910611).

@dwijnand I saw you tried to do that, and it seems reasonable, but what about the test that mocks it up? Also, I like the idea that sources (sans identification) compose. To me, composition like that is just a canary for a good design, and should be pursued even absent a concrete use-case.

but what about the test that mocks it up?

No idea, I didn't get to it as I got stuck trying to check the borrowing in the main code. 🙂
But (hand wavey) if PackageRegistry is a set of sources my hope was the tests could use real PackageRegistry with a singleton set of a replacement source.

I'm not that fussed, either way. If a consensus is reached and the work hasn't been done, I'm happy to (attempt to) do the grunt work.

Sounds good. Thanks for getting the ball rolling :).

I tried to go about that, but ran into lifetime issues

The "lifetime issues" are so interesting, that I've even blogged about them! :) The TL;DR is that using a trait object here indeed simplifies lifetime management. This, and the presence of the mock suggests that we probably shouldn't try to replace registry trait object with a concrete struct.

Right now we have identical methods in both traits which seems funny :).

@Ericson2314 the fact that methods have the same signature and name does not mean that their semantics is also identical :) It is wrong to pass bare sources to various resolve-related method. This has an interesting practical implication as well. Previously, one could see that resolve operates on &Registry trait object, use "navigate to implementation" IDE shortcut to find out what that Registry could be, and find a dosen of  different impls. Now, there are only two impls, one of which is a test double, so it becomes immediately clear, statically, which code is executed when resolve calls registry methods.
So, my opinion here:

Source and RegistrySource names are good.
trait Registry, struct PackageRegistry and struct RegistryQueryer names are confusing, because they are not registries, but a collection of arbitrary sources, some of which might be registries.
we probably should not get rid of trait Registry, b/c it simplifies lifetimes and testing.

So, we should just rename the three "Registry"s. I personally can't think of a good name for them though :( Something along the lines of SourceSet or MetaRegistry might work, but we need three of them :fearful:

the fact that methods have the same signature and name does not mean that their semantics is also identical :)

I'm...glad you have the ":)".

It is wrong to pass bare sources to various resolve-related method.

Why? Does it need to be wrong?
:)


update For-loop

Please fill in this pull request template before submitting
1. This pull request resolves #17
2. Description
Created the content for the topic for loop in C
3. Fill in checklist by marking [x]

[x ] I've read the CONTRIBUTING.md
[ x] I was assigned to this issue
[x] My code is formatted using required linting
[x ] I've run my code locally and checked it works

Can you please tell me how I change it to two different PRs?


AppRegistry Error

I am trying to integrate Facebook into my app
I have followed all the steps in this link "https://github.com/magus/react-native-facebook-login"
But shows Application is not registered either due to require() error during initialization or failure due to
call AppRegistry.registerComponent
I alo provide the screenshot of my error below

Thanks in advance

@Hari70a  http://stackoverflow.com/questions/29287987/invariant-violation-application-awesomeproject-has-not-been-registered-when-b  had an good answers. Chances are your index files had syntax errors or other type of exception. So "AppRegistry.registerComponent" never get invoked.


Rethink division of work between consensus layer and ledger layer

At the moment, the division of work is a bit ad-hoc and moreover not uniform across Permissive BFT and Praos:

For Permissive BFT the consensus validation is specified in the chain spec, and the implementation in the consensus layer merely calls the executable spec.
For Praos the protocol validation is implemented entirely in the consensus layer and the specification does not mention it at all.

/cc @nc6

Closing this; responsibilities are now clear for PermBFT. For Praos the exact details can be figured out, but it will follow the same structure. @nc6 may have a bit more to say here.

Now both permissive BFT and Praos are defined in the consensus layer. The specifications for Byron and Shelley eras do define the chain extension rules for PBFT and Praos respectively, but not chain selection.
The executable specs for Byron and Shelley may additionally implement the chain extension rules for PBFT and Praos for testing purposes, but this is not high priority (and we would need to work out how to do equivalence testing)


"Internal" not useful

Ditto #7. This doesn't provide useful information in my opinion, and seems condescending to reporters. What are enforcers supposed to do about this statement?

Agreed!


Add GitHub issue templates

This will help users and us to save time when filing issues.

I kind of liked the "impact" and separated "implementation options" parts of the old templates we were using...

Old PR template: https://github.com/kinvolk/.github/blob/master/.github/pull_request_template.md
old bug report: https://github.com/kinvolk/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md
old enhancement request https://github.com/kinvolk/.github/blob/master/.github/ISSUE_TEMPLATE/enhancement-or-feature-request.md

I think no one was really filing implementation options. These features also look very similar to what Github has by default, which is what I had initially used. I like your comments on the templates and have hopefully addressed them.

The impact draws out how important it is to them, and why it's important. The implementation options separated help people realize that implementation should be separate... but also let people know that we are interested in implementation options.

I have mixed the impact into the feature request description now.

How do we move an issue report from a user into one that is ready to work on? I feel we often need to edit the issues to add context. For example: Add a backend label, add context for a developer (files to edit, maybe there's some extra tests/docs for this, how to run build/test commands). I wonder if the template could help issue editors with this stage as well?
Some projects have automation. I'm not sure if we can or should use any.

I am hoping Dosu (AI) will help with this soon.

What about encouraging a PR / more engagement? Any further call to action?

"Do you want to help fix this issue? Please drop into [our slack channel] to discuss more."

I have added something like that now. PTAL.

end to end tests failing are unrelated


bump: outdated java version

our CI started failing because of
Error: LinkageError occurred while loading main class com.android.sdklib.tool.sdkmanager.SdkManagerCli
java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
which might be because of an outdated java version

Built worked: https://github.com/get10101/10101/actions/runs/8842946026/job/24282407080


Add tooltip to SwitchMixin.

Yeah I was playing with that and I noticed a small pixel difference for the vertical placement of the tooltip in the test page.  Very strange.

:tada: This PR is included in version 1.55.0 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Inline authorization handler

Is your feature request related to a problem?
You may use ASP NET Core's authorization handlers to restrict access to an object type.
class CarType: ObjectType<Car> {
    Configure(IObjectTypeDescriptor<Car> descriptor) {
          descriptor.Authorize("CanDrive").Authorize("AtLeast18");
    }
}
class BoozeType: ObjectType<Booze> {
    Configure(IObjectTypeDescriptor<Booze> descriptor) {
          descriptor.Authorize("AtLeast18");
    }
}
class BikeType: ObjectType<Bike> {
    Configure(IObjectTypeDescriptor<Bike> descriptor) {
          descriptor.Authorize("CanDrive");
    }
}

This allows you to create reusable policies as long as they do not work with the underlying object (policies above may assert against instance of User but cannot assert against instance of Car otherwise cannot be reused).
When your security depends mostly on entity related data to authorize the access you may end up with dozens and hundreds of different policies.
options.AddPolicy("ReadContract", ...);
options.AddPolicy("ReadClient", ...);
options.AddPolicy("ReadTrade", ...);
...

services.AddSingleton<IAuthorizationHandler, ReadContractHandler>();
services.AddSingleton<IAuthorizationHandler, ReadClientHandler>();
services.AddSingleton<IAuthorizationHandler, ReadTradeHandler>();
...

public class ReadContractHandler: AuthorizationHandler<Requirement, IResolverContext> {
    Task HandleRequirementAsync(AuthorizationHandlerContext context, Requirement requirement,  IResolverContext resource)
    {
         Contract contract = resource.Parent<Contract>();
         var accessibleContracts = resource.DataLoader<Loader>().LoadAsync(userId /*ignore dec. err.*/);
        if (accessibleContracts.Contains(contract.Id))
            context.Succeed(requirement);
        else
            context.Fail();
    }
}

Each of these handlers has to query database because readability is based through DB relations and column values, rather than static roles or traits of current user.
Basically every ObjectType has own policy which 1 requirement, 1 handler, 1 policy name.
The solution you'd like
Ability to specify additional rules through delegates can remove this overhead for single use rules:
class CarType: ObjectType<Car> {
    Configure(IObjectTypeDescriptor<Car> descriptor) {
          descriptor.Authorize(ctx => {
              Car car = ctx.Parent<Car>();
              bool carRegistered = ctx.DataLoader<StuffLoader>().LoadAsync(/*...*/).Contains(car.VIN);
              if (!carRegistered) ctx.Fail();
          });
    }
}

This does not have to replace use of ASP.NET Core AuthorizationHandlers rather work as additional set of rules.
Product
Hot Chocolate

This issue is also addressed by solution proposed in #5273 using IAuthorizationService;

A very similar issue has been started discussing more than one year ago: #3456 . The authorization mechanisms of Hotchocolate are really not quite powerful.

I encountered exactly the same pain points. For me the biggest one was at the time I was still learning learning .net auth itself so I always assumed I am doing something wrong and ended up with a lot of ugly code having to do multiple additional requests on top of regular queries I could describe like 2 - 3 auth scenarios which I think are impossible to solve now feel free to ping me if that would be useful to you.
If there is going to be rework of authorization it would be nice if it would focus on resource based authorization from the start.

Below is example of authorization I think would be hard to do now its different from what I had to solve but I think it includes requirements/restrictions which might help to uncover rough edges of current implementation.
@michaelstaib It would really help me if you could take a look and point me to direction of some existing functionality which would make such auth possible even in yet to be release code just keywords to search for are more than enough, thank you.
Rules

author is meant as who created the entity
owner as in relationship with other types
not having access means there is no way for you do know if entity exists or not

Issue

PRIVATE

Accessible only if you are the author

PUBLIC

No rules can be part of other queries

ARCHIVED

Only if you know the Id

Comment

Owner is PRIVATE

Accessible only by the author

Owner is PUBLIC

No rules
Can be part of other queries where its not being owned by Issue

Owner is ARCHIVED

Accessible to anyone but if you are not the author
CreatedAt will have just a year part with everything else being 0

Schema
The schema is bit weird so don't look into it that much :)

Assume the schema is 1:1 to database schema
You cannot edit db schema
You can edit gql schema

enum State { PRIVATE, PUBLIC, ARCHIVED }

type Issue { id: ID!, State: State!, Comments: [Comment]!, CreatedBy: User! }
type Comment { id: ID!, CreatedAt: Date! }

# NOTE: There is no query accepting just an `Id`!
type Query {
  getIssue(input: IssueFilterInput!): Issue
  getIssues(input: IssueFilterInput!): [Issue]!
  getComment(input: CommentFilterInput!): Comment
  getComments(input: CommentFilterInput!): [Comment]!
}

Might contain syntax errors or typos

For rule PRIVATE i'd suggest using object type policies as they are called anytime given type appears in the query (no matter where in the schecma). More: https://chillicream.com/docs/hotchocolate/security/authorization
// Policy
class IssueRequirement: IAuthorizationRequirement { }
class IssueHandler: AuthorizationHandler<IssueRequirement, IOperationContext> {
    protected override HandleRequirementAsync(AuthorizationHandlerContext ctx1, IssueRequirement req, IResolverContext ctx2)
    {
        Issue issue = ctx2.Parent<Issue>();
        int userId = ctx2.Service<IHttpContextAccessor>().HttpContext.User.Id();

        // If u need load something from DB use dataloader to merge concurent requests into one
        // var relatedData = ctx2.DataLoader<SomeLoader>().LoadAsync(...);

        if (issue.State == States.Private && userId != issue.CreatedById)
            return ctx1.Fail();
        return ctx1.Succeed(req);
    }
}
// Startup
services.AddAuthorizationHandler<IssueRequirement>();
services.AddAuthorization(opts => {
    opts.AddPolicy("ReadIssue", o => o.AddRequirement<IssueRequirement>());
});
// Object type (or use attribute on entity class [Authorize("ReadIssue")])
class IssueObjectType: ObjectType<Issue> {
    protected override Configure(IObjectTypeDescriptor<Issue> descriptor) {
        descriptor.Authorize("ReadIssue");
    }
}

For ARCHIEVED it would make sense to create another policy but place it on the resolver method instead of object type as it asserts against resolver's parameter input rather than entity itself. However, you cannot access result even if you setup the policy to be applied after the method is run using ApplyPolicy.AfterResolver. So I'd suggest creating custom field middleware. More: https://chillicream.com/docs/hotchocolate/execution-engine/field-middleware
class CheckIssueFilterAttribute: ObjectFieldDescriptorAttribute {
    public override void OnConfigure(IDescriptorContext context, IObjectFieldDescriptor descriptor, MemberInfo member)
    {
        descriptor.Use(next => async ctx => {

            // Run next middleware (ctx.Result is accessible only after)
            await next(ctx);

            // name can be passed in ctor of the attribute
            IssueFilterInput filter = ctx.Argument<IssueFilterInput>("input");
            object result = ctx.Result;

            // use data loader to query additional data
            // var related = ctx.DataLoader<FooLoader>().LoadAsync(...);

            if (result is Issue issue)
                return Inspect(issue, filter);
            if (result is IEnumerable<Issue> issues) {
                foreach(Issue issue in issues)
                    Inspect(issue, filter);
            }
            throw new Exception("Result was not Issue or enumerable of Issue");
        });
    }

    private void Inspect(Issue issue, IssueFilterInput filter) {
        if (issue.State == States.Archived && filter.Id is null)
            throw new InvalidOperationException("Archived issue can be queried only by id.");
    }
}

// If you declare Queries as object type, do not create an attirbute but use .Use() method in Configure method directly
class Queries {
    [CheckIssueFilterAttribute]
    public Task<Issue> GetIssue(IssueFilterInput input) {
        /*...*/
    }
    [CheckIssueFilterAttribute]
    public Task<IEnumerable<Issue>> GetIssues(IssueFilterInput input) {
        /*...*/
    }
}

For ARCHIVED as it's not a policy but rather a transformation, I'd suggest creating custom resolver method (and override the resolver infered from the propety). You can theoreticly change value of the property inside the middleware, but it would take affect only where the attribute/middleware is placed and not globally as trait of the object type. More: https://chillicream.com/docs/hotchocolate/defining-a-schema/extending-types
// If u define ObjectType class, you can use .Field(_ => _.CreatedAt).Resolver(ctx => ...);
// Attributed parameters are accessible by ctx.Parent<Comment>(), ctx.DataLoader<Loader>() etc...
// Watchout CancellationToken is in ctx.RequestAborted
[ExtendObjectType(typeof(Comment))]
class CommentExtension {
    // Set explicitly Date, otherwise DateTime will be inferred
    [GraphQLType(typeof(NonNullType<DateType>))]
    public Task<DateTime> GetCreatedAt([Parent] Comment comment, [DataLoader] EntityByIdLoader<Issue> loader,
        [Service] IHttpContextAccessor accessor, CancellationToken token) {
        Issue issue = await loader.LoadAsync(comment.IssueId);
        int userId = ctx2.Service<IHttpContextAccessor>().HttpContext.User.Id();

        if (issue.State != States.Archived) return comment.CreatedAt;
        if (issue.CreatedById == userId) return comment.CreatedAt;

        // Can't recall how to do this, so just google it
        return MakeAllMinButYear(comment.CreateAt);
    }
}

For Version 13 we have abstracted authorization ... you can now implement a custom 'IAuthorizationHandler' and implement your own thing in there.
From our perspective we do not want to implement such a thing on our own.
Instead we support out of the box OPA and the ASP.NET core auth model. Additional as mentioned you can now build your own.


Preview not working on XAMPP on Windows

I tried to create space with IdeaSpaceVR and on preview got:

I think the issue lies here:

but unfortunately I don't know how to fix this issue.

On the first screenshot there is an unknown character in the path, after /themes. Please verify that the path and directory name /themes/vr-view-360-image is correct in your IdeaSpaceVR installation.
The second screenshot just says that some themes are active and others are not, depending if you activated them on the Themes page in the web interface.

I know it's unknown character in the path, but I think that is because of the backslash character in the isvr_themes table:

If I change 'themes\vr-view-360-image' to 'themes/vr-view-360-image' by hand in the database the preview starts working, but after that application stops working when I wanted to edit the space.

I see. I fixed it in master. This line should fix your issue:
https://github.com/IdeaSpaceVR/IdeaSpace/blob/master/app/Http/Controllers/Admin/ThemesController.php#L49
Please let me know.

You also have to delete the contents of the table isvr_themes, then go to the Themes admin page in the web interface again and the tables will be filled with themes/.


VIP-534: create 6.0 pipeline as 5.x clone

Adds support for processing XML files that have
the 6.0 spec version. Currently just a clone
of the 5.X XML pipeline, but can add new
validations easily.

Are you literally thinking just start with the pipeline clone, and add the other setup commits to the second PR?

yup!

add the other setup commits to the second PR?

with the important caveat that the second PR is opened only after the first is merged

Is that first commit actually a squashed commit?

(if it matters: squashed via cherry-pick, not by rebasing)

It's confusing that it has the same commit message as one of the original commits, though.
I do think that keeping your second commit here separate will make it easier to add that code back.

It's confusing that it has the same commit message as one of the original commits, though.

good point! i was kinda rushing and forgot to update the message

I do think that keeping your second commit here separate will make it easier to add that code back.

aggreed!

Otherwise, looks fine to me. I'm in the habit of manually running a file just to make sure we haven't introduced some pipeline-breaking step that isn't covered in the tests.

yeah absolutely. i also didnt run any tests, this was mostly an exercise in commit wrangling

should I/you go ahead and merge this?

it's a friday so let's not! lets touch base on monday monring to talk about this merge

Couple of stray references to a now-missing namespace to get rid of!

nice catch!

How do we set this up so that the commits don't squash?

ready to merge?

like i said it's friday so let's not merge this and touch base on monday morning

How do we set this up so that the commits don't squash?

i say we squash it anyway! i think we can checkout to that commit (or cherry-pick it) even the squash, and if i'm wrong about that it's a small change to reimplement anyway which makes it a good learning opportunity for me (or anyone really) to do "from scratch"

ready to merge?

like i said it's friday so let's not merge this and touch base on monday morning

How do we set this up so that the commits don't squash?

i say we squash it anyway! i think we can checkout to that commit (or cherry-pick it) even after the squash, and if i'm wrong about that it's a small change to reimplement anyway which makes it a good learning opportunity for me (or anyone really) to do "from scratch"

In that case I may also be about to have a learning experience.


[l10n][fr-FR] Unlocalized strings on Failed to Publish dialog

Description
There are unlocalized string on Failed to Publish dialog for singular and plural version of dialog.
Issue affect French, but not reproducible on German.
To Reproduce
Steps to reproduce the behavior:

Change Browser preferred language to French (France)
Go to Google Drive
Add project via extension
Create Word and/or Excel document with name that contain localized characters
Select file
Click on Publish on extension panel

Expected behavior
Dialog is fully localized and all string are translated.
Actual behavior
Follow string are not localized on build:
Failed to publish $1 files:
Failed to publish 1 file:
File must be previewed first
Additional context
String are presented and localized in Aladdin
Screenshots
Singular

Plural

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

GitHub release
v6.22.0

Your semantic-release bot :package::rocket:


Cannot check balance

cast balance 0x02E4b884Df5bB66B13bf7B04a957F45acF39025F
Error:
error sending request for url (http://localhost:8545/): error trying to connect: tcp connect error: Connection refused (os error 111)
Context:

Error #0: error trying to connect: tcp connect error: Connection refused (os error 111)
Error #1: tcp connect error: Connection refused (os error 111)
Error #2: Connection refused (os error 111)

You need to specify an RPC URL, i.e. a URL to an Ethereum node. You can either specify it like this:
cast balance 0x02E4b884Df5bB66B13bf7B04a957F45acF39025F --rpc-url <url here>

Or by setting the ETH_RPC_URL environment variable :)


An information retrieval approach for regression test prioritization based on program changes

http://dl.acm.org/citation.cfm?id=2818789&CFID=550839757&CFTOKEN=78411605

Tool: https://utexas.app.box.com/repir


update api/hooks-common/iff|else with array syntax

see https://github.com/feathersjs/feathers-hooks-common/pull/176

Thanks.


Add swordsman school options

null

Build Artifacts

2ship-linux.zip
2ship-windows.zip
2ship-mac.zip

Mind including a description for this? Trying to understand why there are two different options in this PR. What does "finish early" mean?

Mind including a description for this? Trying to understand why there are two different options in this PR. What does "finish early" mean?

So the score is pretty self explanatory, you have to cut every log with a jump slash to get the perfect score of 30, you can dial that down to like 20 to give yourself some wiggle room for misses, but the minigame has a static amount of logs that come up, and if you reach the target score, you still have to wait till the rest of the logs come till it ends. This is especially bad when you set the score to like 1, you then have to wait for a while for the rest of the logs to go up then down. These could be combined to simplify the user experience I suppose

Oh, it looks like I did add descriptions in the modern menu entries, just not on the legacy menu

I think it might be better to combine the two options into one. I don't really see a situation where I'd want to lower the winning score and not finish early.
That said, if you think there are users who would want a lower score requirement and still want all the logs to come out, I'd understand keeping the two options.

Combined the options into one 👍


Extended horizontal bar chart not working

Expected Behavior
Extended horizontal bar chart with no changes displays bars.
Current Behavior
Extended horizontal bar chart with no changes doesn't display bars.
Steps to Reproduce

https://jsfiddle.net/vq9rsdu8

Context
I'm attempting to extend the horizontal bar class to create a chart similar in functionality to this: https://bl.ocks.org/vasturiano/ded69192b8269a78d2d97e24211e64e0
More specifically, I'd like to extend the dataset reading portion of the horizontal bar chart so that an individual stack can be passed in as an array, rather than the current state where an array's elements are adjacent pieces of all stacks.
Environment

Chart.js version: 2.9.3
Browser name and version: Google Chrome 85.0.4183.102
Link to your project: https://jsfiddle.net/vq9rsdu8

If you'd like to take advantage of the upcoming v3: https://jsfiddle.net/Ldg4eaub/
Docs: https://www.chartjs.org/docs/master/developers/charts

ah, looks like i should be using v3 going forward--thanks! 👍🙏


Not working with non secure TFS server

Hi Team,
As I have tried migrating work Items with WIMigrator from TFS to VSTS, but getting error regarding permission, but I am having administrator access on TFS server, my TFS sever is having Non secure site,
Please suggest if we can use the tool for non secure TFS server.
log file & configuration file attached below.
WiMigrator_Migrate_2018-09-27_08-47-28.log

Didn't "use-integrated-auth": true worked for you ?

Thanks @nikpelgr this worked for me & proceed further,
But getting "unable to read the migration query"
Tried with Shared as well as My Query with no luck.

"My Queries/All" worked for me.

I have the exact same problem.  I can connect by using integrated auth to our http TFS instance.  But everything I try connecting to the query gives the root error:  Microsoft.VisualStudio.Services.WebApi.VssResourceNotFoundException: API resource location a67d190c-c41f-424b-814d-0e906f659301 is not registered on http://(server):8080/tfs.
I've tried numerous combinations of query project paths beating my head on this.
If anyone has any idea how to proceed it would be greatly appreciated!

@jeffolsonatnfm The problem is because you have a / in your project name.  Are you typing in the project + team name?  / is not a supported character in a project.


Array type in query parameters

Hi,
I'm currently trying to use Zodios to specify a GET endpoint that receives an array of values as a query parameter. I have to respect an existing open API spec that defines that query parameter as a style: form, explode: false format (https://swagger.io/docs/specification/serialization/) so I have to accept a query string like /endpointName?id=3,4,5.
I defined the endpoint with the following code
...
{
    name: "id",
    type: "Query",
    schema: z.array(z.string()).optional().default([]),
},
...

but it works only with query strings like /endpointName?id=1&id=2&id=3 or /endpointName?id=[1,2,3].
I tried with the following code
...
{
    name: "id",
    type: "Query",
    schema: z.string().transform((v) => v.split(",")).pipe(z.array(z.string()).optional().default([])),
},
...

but then the generated client accepts only a string as an id parameter, not an array.
There's a way to make this work?

You can try to configure paramsSerializer of axios.
paramsSerializer Option

Changing the axios paramsSerializer doesn't change only how the zodios client sends the request? Because in my case the zodios client is not used


Security vulnerabilities of ubuntu base images

As part of trivy container  vulnerability scanner  our team figured out the next HIGH vulnerabilities:

https://ubuntu.com/security/notices/USN-5301-1
https://ubuntu.com/security/notices/USN-5301-2

Need to investigate but the latest ubuntu base image should contain fixes for those packages.

Our team also have discovered a couple of vulnerabilities, but using Docker scan with Snyk.
`Testing eclipse-temurin:<IP_ADDRESS>_1-jre...
✗ High severity vulnerability found in expat/libexpat1
Description: Exposure of Resource to Wrong Sphere
Info: https://snyk.io/vuln/SNYK-UBUNTU2004-EXPAT-2403778
Introduced through<EMAIL_ADDRESS><EMAIL_ADDRESS>From<EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>From<EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>Fixed in: 2.2.9-1ubuntu0.2
✗ High severity vulnerability found in expat/libexpat1
Description: Improper Encoding or Escaping of Output
Info: https://snyk.io/vuln/SNYK-UBUNTU2004-EXPAT-2403934
Introduced through<EMAIL_ADDRESS><EMAIL_ADDRESS>From<EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>From<EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>Fixed in: 2.2.9-1ubuntu0.2
✗ High severity vulnerability found in cyrus-sasl2/libsasl2-modules-db
Description: CVE-2022-24407
Info: https://snyk.io/vuln/SNYK-UBUNTU2004-CYRUSSASL2-2408941
Introduced through<EMAIL_ADDRESS>From<EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>From<EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>><EMAIL_ADDRESS>Fixed in: 2.1.27+dfsg-2ubuntu0.1`

@gdams - Do we need to update these or does DockerHub do that (via the base ubuntu-latest?

@gdams - Do we need to update these or does DockerHub do that (via the base ubuntu-latest?

I don't know if it helps, but snyk recommends using: ubuntu impish-20220128, I think it's 21.10

I think there's probably two separate relevant things to cover here:

the ubuntu image should definitely be updated; I think it's roughly "due" for one (which will of course rebuild all the downstream images and thus include any relevant updated packages); I'll poke some folks at Canonical and see what their plan is -- I would guess their plan is probably to update within a week from now (at the outside)

whether/when to update to new versions of your base is up to you -- I'd recommend keeping in mind that it usually does cause some breakage for users, and the way we usually manage that in other repositories is to add aliases such that users have an easy/obvious escape hatch to downgrade again if they experience issues (see https://hub.docker.com/_/python or https://github.com/docker-library/docs/blob/master/eclipse-temurin/README.md#supported-tags-and-respective-dockerfile-links :joy: for example); in most cases we try to limit to at most two versions of a given OS (and LTS where possible), given that there's added cognitive overhead for users ("which version/OS combination should I use??") and build overhead in supporting more

cc @yosifkit

Also https://ubuntu.com/security/notices/USN-5328-1 is even higher risk for most people. An updated image would be good.

Hello,
I've been redirected here to submit my security case.
Our GitHub container scan tool detected the eclipse-temurin:17-alpine image is vulnerable to the high CVE CVE-2022-0778: https://avd.aquasec.com/nvd/2022/cve-2022-0778/
This report happened 6 days ago after your release.
Our scan report: https://github.com/Cosmo-Tech/cosmotech-api/pull/217/checks?check_run_id=5601109545
Can you please confirm if this is related to your new version or not and if you have visibility on a fix?
Thanks, don't hesitate if I can bring any other information.

Discussion at PMC:
"We could check all of the supported Linux Vendors and see if they have public APIs that we can poll to see if a new point release has come out.  If so, then GH Action our way to victory."

Please see https://github.com/adoptium/containers/pull/183 for an update to our policy and what actually happens at DockerHub.


Avoid old access_token method

@andrewroth does this look correct? I don't know why the pull request showed up here rather than in CruGlobal.

Rescinded. The original patch is correct. The ::OAuth2::AccessToken.new in the new method never references oauth2_access_token.params, so you have to reach into the old method to get them, right?


[Feature Request] Consider to add support for IP2Location.io as a fallback

Description
Hi there,
Would you like to add support of our service into your project? Our service provided 500 queries per day for keyless query, or 30000 queries per month if you sign up our free plan. You can read more on the result returned via our documentation.
Screenshots
No response
Checklist

[X] I have checked for duplicate issues
[X] I have read the Contribution Guidelines
[ ] I am willing to work on this issue (optional)

Would like to work on this! Kindly Assign this issue


Use Java 11 as a baseline

The Mutiny 1.x series will continue to require Java 8.
Requiring Java 11 is considered as a major breaking change, so when we do that we will bump to the 2.x series.
Once 2.0.0 is out we will consider supporting the final 1.x release with important bug fixes.

[ ] Upgrade compilers to Java 11
[ ] Integrate module-info.java to the main source tree and remove moditect
[ ] Remove Java 8 from GitHub Actions workflows

Followed up by https://github.com/quarkusio/quarkus/issues/24723.
organization: GHUser@49974bee[bio=Quarkus: Supersonic Subatomic Java,blog=https://quarkus.io,company=<null>,email=<null>,followers=0,following=0,hireable=false,location=The clouds,login=quarkusio,name=QuarkusIO,type=Organization,createdAt=2019-02-14T16:18:52Z,id=47638783,nodeId=MDEyOk9yZ2FuaXphdGlvbjQ3NjM4Nzgz,updatedAt=2020-04-08T04:51:14Z,url=https://api.github.com/users/quarkusio]
repository: quarkus
issue: 24723
url: https://github.com/quarkusio/quarkus/issues/24723


Fix Errors in trainer_sgdmf.py and movielens.py

I tried to run this example following the docs at https://federatedscope.io/docs/recommendation/ with the command:
python federatedscope/main.py --cfg federatedscope/mf/baseline/hfl-sgdmf_fedavg_standalone_on_movielens1m.yaml
However, it did not run and reported some errors. The error occurred in the file ./federatedscope/mf/trainer/trainer_sgdmf.py. It might be caused by a torch type "Embedding". Specifically, ctx.model.embed_user.grad is incorrect, while ctx.model.embed_user.weight.grad is correct. Additionally, there are some other errors, such as "add(sparse, dense)".
I tried using ChatGPT to fix the code, and now the example can run. I checked my Git history. Here are my fixed records:
In federatedscope/mf/dataset/movielens.py, line 160-161
row = [mapping_user[mid] for _, mid in data["userId"].items()]
col = [mapping_item[mid] for _, mid in data["movieId"].items()]

In federatedscope/mf/trainer/trainer_sgdmf.py line 70, replace all funciton def hook_on_batch_backward(ctx):
def hook_on_batch_backward(ctx):
    """Private local updates in SGDMF

    """
    ctx.optimizer.zero_grad()
    ctx.loss_task.backward()

    if ctx.model.embed_user.weight.grad.is_sparse:
        dense_user_grad = ctx.model.embed_user.weight.grad.to_dense()
    else:
        dense_user_grad = ctx.model.embed_user.weight.grad

    if ctx.model.embed_item.weight.grad.is_sparse:
        dense_item_grad = ctx.model.embed_item.weight.grad.to_dense()
    else:
        dense_item_grad = ctx.model.embed_item.weight.grad

    # Inject noise
    dense_user_grad.data += get_random(
        "Normal",
        sample_shape=ctx.model.embed_user.weight.shape,
        params={
            "loc": 0,
            "scale": ctx.scale
        },
        device=ctx.model.embed_user.weight.device)
    dense_item_grad.data += get_random(
        "Normal",
        sample_shape=ctx.model.embed_item.weight.shape,
        params={
            "loc": 0,
            "scale": ctx.scale
        },
        device=ctx.model.embed_item.weight.device)

    ctx.model.embed_user.weight.grad = dense_user_grad.to_sparse()
    ctx.model.embed_item.weight.grad = dense_item_grad.to_sparse()
    ctx.optimizer.step()

    # Embedding clipping
    with torch.no_grad():
        embedding_clip(ctx.model.embed_user.weight, ctx.sgdmf_R)
        embedding_clip(ctx.model.embed_item.weight, ctx.sgdmf_R)

The code can now run, but I’m not sure if there are any other issues.
I rarely use GitHub. I might need to learn how to pull a request later.
Env.:
python 3.9
torch 1.10.1
cuda 11.3
Thank your work. Have a good day. ：）

Meanwhile, I cannot scan the QR code of Ding-group on the official website. It appears to be out-of-date.


AVI/v210: support of 00db frames

Some muxers use 00dc ("Compressed video frame"), some other muxers use 00db ("Uncompressed video frame"), source, and we forgot 00db during the development of AVI/v210 support.
@lhibberdatnls

It's Alive! Tested and working. Thanks @JeromeMartinez


Support for Instanced Stereo rendering

Hey @Milk-Drinker01 - Would it be possible to get support for Single pass Instanced Stereo rendering in Milk Instancer?
So one draw call for both eyes. This is very important for devices such as the Meta Quest line of devices and PC VR headsets on lower end hardware.

Ive been working on this for the past few hours and would like to say that theres a 99% chance i can get this to work. ill try to have it working by the end of the day, along with URP support :)

Cool looking forward to it :)

I just pushed the single pass instanced support. ill ping u on discord when urp is ready. i got side tracked today fixing a few issues i noticed with the system and didnt get to it today


Get the top tags

How should we avoid similar looking tags.  For now just grab the top 49.

Sometimes the tags have parents.  This might be useful for getting rid of the excess.

Sometimes the tags have parents.  This might be useful for getting rid of the excess.


Remove logical definitions from GOCHE terms

See GO classification changes (two tabs): https://docs.google.com/spreadsheets/d/1vbnyCOPXVysS_FncRvi17zOlVXZ63iS_GLSGFrBnMBw/edit#gid=0

This looks good to me. The total number of changes is slightly lower than when I did a more detailed analysis in April, as I would expect from the fact that we have removed the cofactor and coenzyme terms that utilized those GOCHE terms already. All the changes I see are what I expected, so my opinion is that you can proceed with this.
For the record, here are some tables summarizing the types of changes:

Classification   Term - Removals
Count

GO:0017144[drug   metabolic process]
98

GO:0042737[drug   catabolic process]
93

GO:0035690[cellular   response to drug]
86

GO:0042493[response to   drug]
61

GO:0015893[drug   transport]
47

GO:0016999[antibiotic   metabolic process]
47

GO:0006855[drug   transmembrane transport]
43

GO:0008144[drug   binding]
42

GO:0017001[antibiotic   catabolic process]
38

GO:0046677[response to   antibiotic]
37

GO:0071236[cellular   response to antibiotic]
36

GO:0097327[response to   antineoplastic agent]
35

GO:0001101[response to   acid chemical]
34

GO:0017000[antibiotic   biosynthetic process]
34

GO:0097237[cellular   response to toxic substance]
29

GO:0071229[cellular   response to acid chemical]
28

GO:2001023[regulation   of response to drug]
26

GO:2001024[negative   regulation of response to drug]
26

GO:2001025[positive   regulation of response to drug]
25

GO:0009410[response to   xenobiotic stimulus]
23

GO:0009636[response to   toxic substance]
21

GO:0006836[neurotransmitter   transport]
15

GO:0006805[xenobiotic   metabolic process]
13

GO:0042445[hormone   metabolic process]
13

GO:0071466[cellular   response to xenobiotic stimulus]
13

GO:0009725[response to   hormone]
11

GO:0032870[cellular   response to hormone stimulus]
11

GO:0042133[neurotransmitter   metabolic process]
10

GO:0042447[hormone   catabolic process]
10

GO:0005326[neurotransmitter   transmembrane transporter activity]
9

GO:0042446[hormone   biosynthetic process]
9

GO:0001505[regulation   of neurotransmitter levels]
8

GO:0042136[neurotransmitter   biosynthetic process]
8

GO:0042178[xenobiotic   catabolic process]
8

GO:0043385[mycotoxin   metabolic process]
8

GO:0043386[mycotoxin   biosynthetic process]
8

GO:0046885[regulation   of hormone biosynthetic process]
8

GO:0097329[response to   antimetabolite]
8

GO:0097332[response to   antipsychotic drug]
8

GO:0042165[neurotransmitter   binding]
7

GO:0043387[mycotoxin   catabolic process]
7

GO:0007584[response to   nutrient]
6

GO:0031670[cellular   response to nutrient]
6

GO:0032353[negative   regulation of hormone biosynthetic process]
6

GO:0042135[neurotransmitter   catabolic process]
6

GO:0042562[hormone   binding]
6

GO:0046618[drug   export]
6

GO:0046717[acid   secretion]
6

GO:0051410[detoxification   of nitrogen compound]
6

GO:0060992[response to   fungicide]
6

GO:0061476[response to   anticoagulant]
6

GO:0099528[G   protein-coupled neurotransmitter receptor activity]
6

GO:0005328[neurotransmitter:sodium   symporter activity]
5

GO:0009403[toxin   biosynthetic process]
5

GO:0046886[positive   regulation of hormone biosynthetic process]
5

GO:0051588[regulation   of neurotransmitter transport]
5

GO:0051589[negative   regulation of neurotransmitter transport]
5

GO:0051590[positive   regulation of neurotransmitter transport]
5

GO:0061478[response to   platelet aggregation inhibitor]
5

GO:0120178[steroid   hormone biosynthetic process]
5

GO:0009404[toxin   metabolic process]
4

GO:0017085[response to   insecticide]
4

GO:0017143[insecticide   metabolic process]
4

GO:0031924[vitamin B6   transmembrane transporter activity]
4

GO:0072347[response to   anesthetic]
4

GO:2001039[negative   regulation of cellular response to drug]
4

GO:2001040[positive   regulation of cellular response to drug]
4

GO:0001504[neurotransmitter   uptake]
3

GO:0009407[toxin   catabolic process]
3

GO:0009635[response to   herbicide]
3

GO:0009852[auxin   catabolic process]
3

GO:0031329[regulation   of cellular catabolic process]
3

GO:0032350[regulation   of hormone metabolic process]
3

GO:0046701[insecticide   catabolic process]
3

GO:0051180[vitamin   transport]
3

GO:0090482[vitamin   transmembrane transporter activity]
3

GO:0098878[neurotransmitter   receptor complex]
3

GO:2001038[regulation   of cellular response to drug]
3

GO:0006767[water-soluble   vitamin metabolic process]
2

GO:0009850[auxin   metabolic process]
2

GO:0010046[response to   mycotoxin]
2

GO:0019842[vitamin   binding]
2

GO:0031323[regulation   of cellular metabolic process]
2

GO:0031330[negative   regulation of cellular catabolic process]
2

GO:0031331[positive   regulation of cellular catabolic process]
2

GO:0033273[response to   vitamin]
2

GO:0036146[cellular   response to mycotoxin]
2

GO:0036270[response to   diuretic]
2

GO:0042364[water-soluble   vitamin biosynthetic process]
2

GO:0042365[water-soluble   vitamin catabolic process]
2

GO:0042910[xenobiotic   transmembrane transporter activity]
2

GO:0051580[regulation   of neurotransmitter uptake]
2

GO:0051581[negative   regulation of neurotransmitter uptake]
2

GO:0051582[positive   regulation of neurotransmitter uptake]
2

GO:0097366[response to   bronchodilator]
2

GO:1900376[regulation   of secondary metabolite biosynthetic process]
2

GO:1900378[positive   regulation of secondary metabolite biosynthetic process]
2

GO:0005550[pheromone   binding]
1

GO:0006766[vitamin   metabolic process]
1

GO:0009110[vitamin   biosynthetic process]
1

GO:0009111[vitamin   catabolic process]
1

GO:0009237[siderophore   metabolic process]
1

GO:0015229[L-ascorbic   acid transmembrane transporter activity]
1

GO:0022835[transmitter-gated   channel activity]
1

GO:0031326[regulation   of cellular biosynthetic process]
1

GO:0031327[negative   regulation of cellular biosynthetic process]
1

GO:0031328[positive   regulation of cellular biosynthetic process]
1

GO:0032351[negative   regulation of hormone metabolic process]
1

GO:0032352[positive   regulation of hormone metabolic process]
1

GO:0035461[vitamin   transmembrane transport]
1

GO:0036276[response to   antidepressant]
1

GO:0042810[pheromone   metabolic process]
1

GO:0042811[pheromone   biosynthetic process]
1

GO:0043455[regulation   of secondary metabolic process]
1

GO:0048583[regulation   of response to stimulus]
1

GO:0048584[positive   regulation of response to stimulus]
1

GO:0052314[phytoalexin   metabolic process]
1

GO:0061479[response to   reverse transcriptase inhibitor]
1

GO:0071295[cellular   response to vitamin]
1

GO:0097066[response to   thyroid hormone]
1

GO:0097067[cellular   response to thyroid hormone stimulus]
1

GO:0099095[ligand-gated   anion channel activity]
1

GO:0099130[estrogen   binding]
1

GO:1900377[negative   regulation of secondary metabolite biosynthetic process]
1

GO:1901998[toxin   transport]
1

--
--

CHEBI:24431[chemical   entity]
3

GOCHE:76924[substance   with plant metabolite role]
1

Classification   Term (Additions)
Count

GO:0070887[cellular   response to chemical stimulus]
9

GO:0019748[secondary   metabolic process]
6

GO:0042221[response to   chemical]
6

GO:0055085[transmembrane   transport]
6

GO:0031327[negative   regulation of cellular biosynthetic process]
5

GO:0044550[secondary   metabolite biosynthetic process]
5

GO:0031326[regulation   of cellular biosynthetic process]
4

GO:0031328[positive   regulation of cellular biosynthetic process]
4

GO:0006694[steroid   biosynthetic process]
3

GO:0048585[negative   regulation of response to stimulus]
3

GO:0008152[metabolic   process]
2

GO:0009056[catabolic   process]
2

GO:0009895[negative   regulation of catabolic process]
2

GO:0009896[positive   regulation of catabolic process]
2

GO:0044248[cellular   catabolic process]
2

GO:0046903[secretion]
2

GO:0048583[regulation   of response to stimulus]
2

GO:0048584[positive   regulation of response to stimulus]
2

GO:0004930[G   protein-coupled receptor activity]
1

GO:0005488[binding]
1

GO:0009403[toxin   biosynthetic process]
1

GO:0009404[toxin   metabolic process]
1

GO:0009407[toxin   catabolic process]
1

GO:0009894[regulation   of catabolic process]
1

GO:0010033[response to   organic substance]
1

GO:0015145[monosaccharide   transmembrane transporter activity]
1

GO:0015229[L-ascorbic   acid transmembrane transporter activity]
1

GO:0015370[solute:sodium   symporter activity]
1

GO:0044237[cellular   metabolic process]
1

GO:0044249[cellular   biosynthetic process]
1

GO:0046677[response to   antibiotic]
1

GO:0046943[carboxylic   acid transmembrane transporter activity]
1

GO:0048523[negative   regulation of cellular process]
1

GO:0098797[plasma   membrane protein complex]
1

--
--

CHEBI:38290[L-ascorbate])
1

@balhoff - This format is nice, very easy to deal with.

@krchristie I will go ahead and merge. I didn't redo the diff after #19528; I don't think it would be that different.


Cannot install, no disk found

Hi,
When the message "Select the disk where you want to install macOS" is displayed, there is no available disk.
There is only one disk "macOS Base System" which is greyed. Cannont continue.
OS : Ubuntu 20.04.3 LTS

@Olivier34 i have the same problem

You have to format the virtual disk first. Only then will ot show up as an installation target.
Looks around a bit and you will find a disk menu.
Setup a new partition there in the unallocated space.


Build the blueprints for Windmill and Buildings

Design the blueprint that would be used in the side quest for the player to build using sustainable materials

[ ] Build the Blue prints for the buildings possible to be built

[ ] Storage of sustainable materials and using it to gauge which buildings can be built

[ ] The location determination for the building blueprints

[ ] Test for API integration, design and gameplay

The above conditions have to be met for the task to be completed

Code review @jayakumar0812

Code review done. Good to go to testing.

Moved to testing @JohnKirubaharan


How to use EventCallbacks/provide examples and Popup Customization

@gismofx
Pls kindly advise, possibly by adding to current sample for customization such as callback event like below, only to see how calendar item can be intercept.
callback;
-OnClickCalendarEventOrTask
-OnChangeCalendarEventOrTask
-OnCreateCalendarEventOrTask
-OnDeleteCalendarEventOrTask
popup
-can this be resize or customize  ? for example, calendar is in  or MudPaper, the popup size stay the same.
regards
sanong
i will be retrieving data / save to SQL server, and do some validation etc when user do something on screen.

@sanongpost Have a look at the tui calendar docs. There is a lot to customize that you can control. https://nhn.github.io/tui.calendar/latest/Options
If you want to use your own pop-up editors you can disable the default ones with these properties in this class:
https://github.com/gismofx/toast_ui.blazor_calendar/blob/5cf78683218cafbecd3cf1f46f41645e7fe153d2/toast_ui.blazor_calendar/Models/TUICalendarOptions.cs#L66
(I haven't done this yet, but someone else might have)
Events/Callbacks, you can browse the code and code comments from intellisense. That said, I should and willadd some additional samples into the sample project which use all the available events so you can get an idea how they should be used.

Thanks  @.***> @gismofx/toast_ui.blazor_calendar
We appreciate existing sample with added usage of the component :
-event callback
-sizing and positioning which I have tried with Mudblazor ( eg. MudPaper) and found that dialog size don’t go along.
I am sure developer can extend from your guide easily.
Thank you keep supporting.
Regards
Sanong
From: gismofx @.>
Sent: Thursday, March 10, 2022 6:43 AM
To: gismofx/toast_ui.blazor_calendar @.>
Cc: sanongpost @.>; Mention @.>
Subject: Re: [gismofx/toast_ui.blazor_calendar] Suggestion/Advise on Component customization (Issue #17)
@sanongpost https://github.com/sanongpost  Have a look at the tui calendar docs. There is a lot to customize that you can control. https://nhn.github.io/tui.calendar/latest/Options
If you want to use your own pop-up editors you can disable the default ones with these properties in this class:
https://github.com/gismofx/toast_ui.blazor_calendar/blob/5cf78683218cafbecd3cf1f46f41645e7fe153d2/toast_ui.blazor_calendar/Models/TUICalendarOptions.cs#L66
(I haven't done this yet, but someone else might have)
Events/Callbacks, you can browse the code and code comments from intellisense. That said, I should and willadd some additional samples into the sample project which use all the available events so you can get an idea how they should be used.
—
Reply to this email directly, view it on GitHub https://github.com/gismofx/toast_ui.blazor_calendar/issues/17#issuecomment-1063489914 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ALRIKFRC6I6WPPXOXZ37LI3U7EZOVANCNFSM5QK66RZQ .
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675  or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .
You are receiving this because you were mentioned.  https://github.com/notifications/beacon/ALRIKFX54FEVNVW6VRHSDPTU7EZOVA5CNFSM5QK66RZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOH5RZC6Q.gif Message ID: @.*** @.***> >

@sanongpost
Examples added to sample project with how to use the events emitted from the calendar:
Here:
https://github.com/gismofx/toast_ui.blazor_calendar/blob/475e30f09ca01ff3210a4f439bc512221369e690/toast_ui.blazor_calendar.TestProject/toast_ui.blazor_calendar.TestProject/Pages/Index.razor#L39-L49
and here:
https://github.com/gismofx/toast_ui.blazor_calendar/blob/475e30f09ca01ff3210a4f439bc512221369e690/toast_ui.blazor_calendar.TestProject/toast_ui.blazor_calendar.TestProject/ViewModels/CalendarViewModel.cs#L171-L195
If you want to use your own pop-up editor you can, but you'll need to play with the settings and logic on your own.. Maybe read thru Tui there may be some customization you can do with their pop-up.


Cloudtest: global 'only-run' config field

The global option for cloudtest utility to run only selected tests
Description

Motivation and Context
Currently a developer should find and edit every execution config in .cloudtest.yaml in order to run only needed tests.
The global option allows the same thing with a single edit.
How Has This Been Tested?

[ ] Covered by existing integration testing
[ ] Added integration testing to cover
[x] Tested locally
[ ] Have not tested

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

Can we pass a list of only run tests  as arguments for cloudtest? Would it be better?
@alex-yust please, share your thoughts

Can we pass a list of only run tests  as an argument for cloudtest? Would it be better?

Sure it makes sense if we are going to run cloudtest locally(no CI involved) and there is need to do it with varying targets for each run.
However, since cloudtest is a very slow tool ( >15 minutes for start+stop) I don't see any advantages over 'only-run' field in .cloudtest.yaml.

@alex-yust I ofen run cloudtest on kind only... which is quiet a bit quicker (largely because when I've broken something I've broken it independent of environment ;) ).

@edwarnicke do you mean you need the option to specify test name(s) on command line?
If so, I would suggest the test names to be positional parameters:
cloudtest --cluster vagrant  test1 test2 ...

[x] --kind option to filter clusters by kind
[x] all positional parameters are considered test names to run

Ok... just discovered there is an execution config with name 'kind' which I confused with field 'kind' in execution config )

[x] automatic scaling down number of cluster instances when there are few tests

Also, you can check new functionality by unit testing. We already have examples: https://github.com/networkservicemesh/networkservicemesh/blob/master/test/cloudtest/pkg/tests/all_cluster_fail_test.go#L16

/rebase

/rebase


How can i get rider profile informations?

Hi @brentnd :)
Is there any way to get rider profile informations like:

sex
birthday (age)
weight?

I don't see any options in SDK so maybe it's worth to expose (if possible) that in next releases?

Thanks for your interesting in developing functionality for Hammerhead's devices. karoo-sdk is being deprecated in favor of karoo-ext. Check it out and open any questions/issues over there now.


The flashhls playback is not active if Clappr is incuded by es import

Include directory is ok
<script src="https://cdnjs.cloudflare.com/ajax/libs/clappr/0.2.96/clappr.js"></script>
<script>
new window.Clappr.Player()
</script>

Es import is not work
import Clappr from 'clappr'
new Clappr.Player({
          parent:document.querySelector('.player-box'),
          source: '',
          poster:'',
          height: '100%',
          width:  '100%',
          autoPlay:true
        })

@fancyboynet when you include Clappr as node module, you must also include assets in your project and provide base path using the baseUrl player option. Check also this issue.


Support JSON as output format for the zally CLI

It would be helpful, if the Zally CLI would support JSON as output format (--format json) to be easier to use in CI builds that need to post-process the output report.
Directly using the API is currently not a good option since the API is not able to directly consume the API spec files since they have to be wrapped into another JSON structure (api_definition_string).

Note that JSON output has previously been discussed under #648 with the conclusion that programmatic access should be using the API directly rather than via the CLI. Will be interesting to see if a different conclusion arises this time :)
Perhaps a preferable solution would be to add a new simpler API variant allowing the client to simply POST a raw spec file at the endpoint, without reference to api_definition_url or ignore_rules, which I suspect is the predominant way the service is used anyway.

Yes, that sounds good to me.

API access is still much more complicated than necessary. Unless we simplify the API, I'm open for contributions, that simply forward the response.


Undercurl not supported

There's a syntax option for undercurl (wavy underline) that only renders as an underline.

Hi😃
Goneovim supports undercurl.
What colorscheme / settings are you use to display undercurl ?
If you want to check undercurl easily, try the following:
{write some wrong/typo text into goneovim}
:highlight SpellBad gui=undercurl
:set spell

Sorry, this is my mistake. I migrated the colorscheme to neovim wrongly.


Fix typo storeunsubscribe -> storeunsubscribes

Thanks!  Do you have any interest in writing a regression test?

Not particularly, as it would take much time for me to get familiar with the code base, and I devised this particularly fix quite independently of it

Makes sense!


Load Data into Tabs

Use latest the newer apis to load the data into the tabs.
Updates the networking module and cleans up a lot of code.

#8