[Feature Request?] Context store for easily sharing data through machine hierarchy

I'm working on a pretty complex app with many invoked machines. After a while, it gets kind of hard to keep track of where you've properly passed down context from a parent machine into an invoked one. As the app has gotten more complex, tracking down these errors has become more of a slog.
As an example, let say I have an ecommerce app, and I need to keep my Order up to date. So I obviously have a browse machine, a cart machine, a checkout machine, a credit card checkout machine, a paypal checkout machine, etc etc. Not only do each one of those need to keep track of the Order, but each one of them can make changes to it.
This was a problem for React a while ago, where you'd have to pass down a single prop way down the structure, and it got unwieldy fast. Redux was one solution, but also there are React Contexts which are more lightweight.
I'm proposing something like this:
const BMachine = Machine({
  /* ... */
  states: {
    c: {
      onEntry: 'changeThing'
    }
  }
}, {
  actions: {
    changeThing: assignStore({
      thing: (ctx, evt, store) => store.thing + ' is the best'
    })
  }
});

Machine({
  /* ... */
  states: {
    a: {
      invoke: {
        src: 'b',
        shareStore: true
      }
  }.
  {
    services: {
        b: BMachine
    }
  }
}).withStore({ thing: 'my value' });

It's kind of a half baked idea, but I wanted to get thoughts on it. Maybe there's already an implementation of something like this that I missed, or maybe it's already in the pipeline, or maybe it's completely against the principles of the project. Figured I'd put it out there regardless.
Looking at it now, I guess I could just make my own store and inject it into my actions and what not. I've actually seen implementations of things like that. I just thought it might be good to add it to the official project. Let me know what y'all think.

I am interested in this pattern also and am in the very early stages of experimenting with it, so this comment is more theoretical than applied, at this stage. I do not use React so maybe this wont work.
My approach is to encapsulate each of the machines mentioned in their own microservice and use messages to communicate between services (client side). ie the standard microservice pattern whereby the state and UI is hidden inside the service and each service responds to messages of interest to update its state and hence the UI. So, there are no "child" states as such. Each machine's state change emits a message (eg Order quantity went from 1 to 2) and which ever services are interested in order quantity changes hear that message and update their own states.
I am playing with Seneca for browser https://github.com/voxgig/seneca-browser and am yet to start using XState as the state manager within each service. The UI is then also internal to the service. Theoretically one could use plain JS, or Vue, or jQuery, and I assume React? or any other UI library and indeed could have different libraries for each service which could be useful when migrating from one library to another.
Anyway, just my thoughts. I guess I am questioning whether child states are the way to go here or whether the issue could be resolved at a higher level of abstraction. I would love to hear thoughts since I have not built this experiment fully yet and it could be a complete disaster in practice.
Cheers,
Murray

PS: to push the concept even further, by decoupling all the elements of an ecommerce site into microservices client side, each microservice could even use different state managers internally (or plain JS for really simple services) because none of them need to know about the others. They just emit and listen for messages  (which can be broadcast, subscribe, request, sync, async, etc as required)

@flowt-au I mean, that's essentially how everything is working now. The complication is that as my app has gotten more complex, the individual "services" (machines) may or may not have disparate context. For instance, if the user deletes an item from their cart, then my checkout needs to be updated (that's not really how it works in my actual app, but I couldn't think of a better contrived example).
The current way I do this is by having a main machine that handles the broad strokes of the state that passes down context to its children, which pass it down to their children, etc via the data property of the invoke. Then each machine passes its changes back up the line via sendParent and they get merged.
This works, but as a developer, having to keep it in my head when and where I've merged my state manually is getting difficult, and it's led to times where one of my machines has the most current order, but another has an outdated version, and it causes bugs.
Just as an example, my machine hierarchy goes something like this:
                                     Main
                       _________|_________
                       |                                   |
                   Cart                   [Bunch of other machines]
         _______|______
         |                            |
   Checkout         SelectCustomer
   ___|__
   |           |
Card    Cash

Card and Cash need to know about the current customer, which is selected in SelectCustomer. So I have to send a message to Cart which updates its context, and then passes the update down the chain. Likewise, Checkout, Card, and Cash can all update the the cart object, which then has to be passed up the line all the way to the Main machine so that it can be displayed in the UI. The shopping cart object is kind of "global", but I'm constantly having to pass around versions of it that disagree and manually sync them.
In my mind, a machine's context shouldn't matter to the rest of the world, so if I need "global" data, it should be handled in another way.
What I've started to do, while this gets hashed out here, is to make a custom data store (just a JS class with a private data object and a way to listen for changes), and including in my actions and services manually. I just started doing this, so at the moment, it's a naive approach. It would be convenient to have my store as part of the machine somehow, but maybe this approach is fine.
TL;DR My main challenge is syncing all of the messages and updates from all the different machines. It's doable, but a very manual process that's prone to breaking due to developer error. I'm looking for a way have "global" context so I don't have to manually manage this.
PS: The UI isn't really an important part of this proposal. I was just using React.Context as an example of a similar problem solved in a similar way to what I'm proposing.

Yep, I understand what you are saying and it is different to what I was proposing in my theoretical construct. The difference is that each of the services (Cart, Checkout, Card, Cash, etc) knows nothing about each other and their internal states (the "child" part of the whole state you describe) get updated via messages, as per the Seneca pattern.
So, I am suggesting there is no need for a "global" state or a "machine hierarchy" at all. Instead of passing state "down the chain" of hierarchy when something changes in one service, a message is sent by that service saying "This item was deleted" (with the relevant data eg SKU or whatever) and anyone who cares changes their state accordingly.
So, the whole checkout "state" is distributed amongst what are now "child" states but they don't know of each other's existence because each one is hidden inside the service. When they send / receive messages they are processing the message and have no idea who sent it or who they are sending to.
That is the basis for the "microservice pattern". Mostly people talk about microservices server-side. I am interested in using them client-side as a way to architect the app in the browser (or other client-side app).
sendParent becomes irrelevant because there is no parent of any state. All states are self contained and have single "level" - they just send messages with data in order to communicate and update themselves and each other, but "anonymously".
Anyway, that is just how I think about it and when I build my first experiment it might well crash and burn. ;-)

Ah I see what you're saying. I'm not sure if that's the right pattern for what I'm doing. The hierarchy does offer some nice benefits with ensuring that certain machines are only listening for events at given times. As in, I don't want CreditCard to fire before Checkout has been invoked. I could add guards to prevent that, but the hierachical structure gives me that for free, so I think in this case the hierarchical pattern works well.
I think for now, I'll just force my custom store into my actions, plug it into react, and see how that works for me. If it works well, I'll come up with a more formal proposal for this project. I think I'll probably just do something like...
// In some machine file
const actions = {
  updateShoppingCart: (ctx, evt) => Store.set({ shoppingCart: evt.data })
};

const services = {
  addToCart: (ctx) => addToCart({ shoppingCart: Store.get('shoppingCart'), item: ctx.selectedItem })
};

// in the UI
class App extends React.Component {
  state = {
    shoppingCart: null
  }

  componentDidMount() {
    Store.addListener(({ shoppingCart }) => this.setState({ shoppingCart }));
  }
  /* ... */
}

This proposal may end up being un-needed bloat for this project, but it would be nice to come up with a standard way of plugging in like that. Then again, I may have fundamentally misunderstood the intent behind this project (wouldn't be the first time), so I'll check back and see if there are more ideas floating around.

Cool.
Just BTW: In the microservices pattern the messages can be "addressed" so the timing can be managed via a sequence of services, each receiving messages they are interested in then sending new messages when they have done their work so the chain of actions can stay in the correct sequence, as you say. :-)
Anyway, good luck with your experiments!

You can pass store from a parent machine context to the child machine using data property see https://xstate.js.org/docs/guides/communication.html#invoking-machines

@pyoner Yes, I suppose I could, and maybe that's the way I should go. I'd still have to make my custom store object, but I've already done that, so this could work too. And theoretically, it would be harder to screw that up than trying to sync disparate context values from different machines. Thanks for the suggestion.

Just like @flowt-au is saying, imagine if each machine was a microservice that lived in a completely different machine. As with the Actor model, the goal is eventual consistency -- not every "Actor" (machine instances in this case) will have the exact same "shared context" at the exact same time but that's okay, because they eventually will when they get "updates" via messages:

State of actors is local and not shared, changes and data is propagated via messages, which maps to how modern memory hierarchy actually works.
From Akka docs

I think what you're trying to do, since you already know the pattern for doing this currently, is ~bypass~ simplify navigating the hierarchical levels for development convenience. This can mostly be solved in userland; just think about the machine in isolation (pretend that other machines don't exist!) and come up with an event-based approach:
// Contrived example
const childMachine = Machine({
  // ...
  on: {
    ...syncParent(['checkout', 'customer'])
  }
});

You can imagine syncParent(...) returning an object like:
{
  "PARENT_CHANGE.checkout": {
    actions: assign({ checkout: (_, e) => e.value })
  },
  "PARENT_CHANGE.customer": {
    actions: assign({ customer: (_, e) => e.value })
  }
}

That's just one idea. I'll be exploring this more, as it seems to be a common pattern. We have to keep a few rules in mind though:

There is no guarantee that each machine will have the same state at the same time (eventual consistency)
Everything operates strictly as a state machine; "updates" are done via listening to events which carry updated data, because...
Each machine's state is local and isolated
Changes must propagate through the hierarchy (for determinism, concurrency, testability, etc.); i.e., we can't "skip" a parent.

Just like @flowt-au is saying, imagine if each machine was a microservice that lived in a completely different machine. As with the Actor model, the goal is eventual consistency -- not every "Actor" (machine instances in this case) will have the exact same "shared context" at the exact same time but that's okay, because they eventually will when they get "updates" via messages:

Probably I'm misunderstanding, but why is eventual consistency a goal? I've always thought of it as an unfortunate reality of certain types of systems (the kind where CAP theorem applies, for example) rather than something you actually want. I'd have thought it would be easier to reason about systems that aren't eventually consistent.

Probably I'm misunderstanding, but why is eventual consistency a goal?

Let's take the original example and apply it to a self-checkout machine:

The Cart (big computer) and the Payment (small computer to right) machines can be thought of as different services that live on different machines. These machines do not share memory, and only share data by communicating with each other.
This is similar to, say, replacing the Checkout machine in the original example with e.g., a Stripe checkout, which obviously can't read your data, but needs to be sent the order data and works asynchronously.
Eventual consistency is preferred when working with multiple async systems talking with each other, and makes each system highly testable and reliable in isolation. Strong consistency breaks down the more you introduce async data flow, regardless of if your services are on the same machine or not.
Just replace the "shared store" (in the original post) with a database or something async, and you can understand the problems that can arise with assuming that each services has the exact same data at the same time.

So, after doing a bit of looking around at how others use xstate, I think I'm overusing the invoke feature. I think my intent was to have one state machine to rule them all, but it seems like I'm better off having React invoke my various state machines, rather than having them invoke themselves. This offers a couple benefits in that my context doesn't grow crazily big, and I can actually inspect the state of a machine I call directly from React. I can use my "main" machine as a "store" of sorts to hang onto really important data that everything needs, like user info and whatever. Does this make sense to everyone?
Basically I'm thinking maybe the right way to do this is to decouple all of my machines from one another, and instead of invoking, call the specific machine I need for each screen as I need them from the UI itself.

Yep. That is the way I am approaching things. I will report back if I find an roadblocks when I starting building! Please let me know how it works out for you.

but it seems like I'm better off having React invoke my various state machines, rather than having them invoke themselves.

This is a good approach, and is essentially what is used in the TodoMVC example.

So, I'm thinkin that maybe this feature request isn't necessary if this is the proper approach. I've just about finished switching my app to an approach more similar to the TodoMVC example, and it's greatly simplified everything. Passing context back and forth isn't nearly as big of a problem for me now, and my machines are like half the code.
Also, I didn't realize that the on key can be used at the top level of a machine, which really changes the game for me.
So, yeah, I think the way things work now is probably fine for me, but maybe other people need this feature.

Also, I didn't realize that the on key can be used at the top level of a machine, which really changes the game for me.

I should definitely clarify this in the docs. Thanks for pointing that out 👏

I'm working on a pretty complex app with many invoked machines. After a while, it gets kind of hard to keep track of where you've properly passed down context from a parent machine into an invoked one. As the app has gotten more complex, tracking down these errors has become more of a slog.
As an example, let say I have an ecommerce app, and I need to keep my Order up to date. So I obviously have a browse machine, a cart machine, a checkout machine, a credit card checkout machine, a paypal checkout machine, etc etc. Not only do each one of those need to keep track of the Order, but each one of them can make changes to it.
This was a problem for React a while ago, where you'd have to pass down a single prop way down the structure, and it got unwieldy fast. Redux was one solution, but also there are React Contexts which are more lightweight.
I'm proposing something like this:
const BMachine = Machine({
  /* ... */
  states: {
    c: {
      onEntry: 'changeThing'
    }
  }
}, {
  actions: {
    changeThing: assignStore({
      thing: (ctx, evt, store) => store.thing + ' is the best'
    })
  }
});

Machine({
  /* ... */
  states: {
    a: {
      invoke: {
        src: 'b',
        shareStore: true
      }
  }.
  {
    services: {
        b: BMachine
    }
  }
}).withStore({ thing: 'my value' });

So maybe with this store config we could integrate more tightly a Redux store out of the box ??

@aislanmaia I think there are already some efforts to do this on github, but none of them have seemed to gain much traction. That said, in another app I made, I just used the interpreter's onDone() method to fire off an action to Redux.
Example:
interpreter.onDone(s => dispatch('SOME_ACTION', { data: s.currentState.context })

Or something like that... You can also do that with onTransition() and onChange() I believe. Each of them have different signatures, so you'll have to check because I don't remember them off the top of my head.

@jonlaing so you've various machines but orchestrate them with a Main machine (kind a Parent of all), if I understood. My fear is that with this approach the state gets spread out between the machines, and having to synchronize them back to Main machine is a pain. That is the why my preference is for having a big one store centralized. If I change a part of state (data), this is automatically in sync with all the application, because all of them already are listening to the same local.

That is the why my preference is for having a big one store centralized.

Just a note, this can quickly become an antipattern. Performance can degrade quickly when the shared store has even moderate numbers of nested objects, and without proper change detection, machines listening to the store will have redundant transitions/updates.
There's also the issue of async persistence, which might not seem like an issue with a single client-side global store, but becomes one as soon as you need to persist any part of your store somewhere else.
Also, the idea of "update from anywhere" is dangerous, and makes code much less testable, because you can't predict where updates are coming from, or even when updates might happen. You can imagine a "global store" machine as a state machine with unguarded transitions for every piece of data it has. Makes it useless to analyze/visualize.
Furthermore, the intent behind events and clarity of logic are lost as well. Compare these two contrived examples:
With global store
{
  on: {
    'STORE.CHANGE': [
      {
        actions: 'updateName',
        cond: (_, e) => {
          // Not even sure how you'd do change detection...
          return e.value.name !== e.previousValue.name
        }
      },
      {
        /* ... */
      }
    ]
  }
}

Without global store
{
  on: {
    'NAME.UPDATE': { actions: 'updateName' }
  }
}

Which one is more explicit? Which one is much easier to test? Which one is more clear, especially on a visualization?

In short, if you want to use a global store, you already have one - it's the machine's context which can be accessed in any nested state within the machine.
If you separated your machine out into services communicating with each other, always make the assumption that those services can be async. That makes the notion of a global store less useful, since there needs to be a communication mechanism for sharing state.

@aislanmaia that was the way i was doing it before, but it quickly got unwieldy in exactly the way you said it might. So, I have the parent machine that has very basic storage for me, but most of the storage is in the machines themselves, and I pass down context via React, using onDone to tell the machine up the change to change if it needs to.
As an example:
const Main = props => (
  <FSM machine={MainMachine}>
    {({state, context, send}) => (
      <Child
        someProp={context.someProp}
        onDone={someProp => send({ type: 'updateSomeProp', someProp }) }
      />
    )}
  </FSM>
);

const Child = props => (
  <FSM machine={ChildMachine}>
    {({state, context, send}) => (
      <div>
        <button onClick={() => send('updateThing')}>Update</button>
        <button onClick={() => props.onDone(context.thing)}>Done</button>
      </div>
    )}
  </FSM>
);

FSM is just a custom component I made to handle spinning up and interpreter and updating its state based on the machine's state. The code is pretty simple so, I can make a gist if you want to see it, but that's how I'm going about things at the moment.

Just a note, this can quickly become an antipattern. Performance can degrade quickly when the shared store has even moderate numbers of nested objects, and without proper change detection, machines listening to the store will have redundant transitions/updates

Thats will not happen when we are connecting the components with Redux because we have fine grained control of what props the components needs to be renderized (in Elm world this is fine too).
The problem you are stating here is more like when sharing all the state in the React Context, because it will force the nested objects (the components) to re-render unnecessarily when touching the shared state.

@aislanmaia that was the way i was doing it before, but it quickly got unwieldy in exactly the way you said it might. So, I have the parent machine that has very basic storage for me, but most of the storage is in the machines themselves, and I pass down context via React, using onDone to tell the machine up the change to change if it needs to.
As an example:
const Main = props => (
  <FSM machine={MainMachine}>
    {({state, context, send}) => (
      <Child
        someProp={context.someProp}
        onDone={someProp => send({ type: 'updateSomeProp', someProp }) }
      />
    )}
  </FSM>
);

const Child = props => (
  <FSM machine={ChildMachine}>
    {({state, context, send}) => (
      <div>
        <button onClick={() => send('updateThing')}>Update</button>
        <button onClick={() => props.onDone(context.thing)}>Done</button>
      </div>
    )}
  </FSM>
);

FSM is just a custom component I made to handle spinning up and interpreter and updating its state based on the machine's state. The code is pretty simple so, I can make a gist if you want to see it, but that's how I'm going about things at the moment.

I'm really interested to see this thing. One question thats up right the moment I see you using the React Context is exactly about the unnecessarily rerenders. I've just make some attempts using React Context and passing the machine, but I noticed that the parent and child components were rerendering more than they should.

Related: #424

The latest TodoMVC example now reflects how this can be accomplished with Actors as of version 4.6.
I'll make more detailed examples 🔜.

but it seems like I'm better off having React invoke my various state machines, rather than having them invoke themselves.

This is a good approach, and is essentially what is used in the TodoMVC example.

Is this still the case @davidkpiano? I'm a bit confused from this thread. I've created a Vue project that has an app machine and App component. The app machine invokes child machines as the user navigates to different routes throughout the app. I then pass those invoked services as props to the child vue components from the parent App component. The child components then call useService and pass in the already running service that has been passed down to them. The running service may invoke other machines and pass those services down to other child components. From what I'm reading in this thread though that isn't the way to go? Rather than passing the invoked services down from parent to child, should the child components be calling useMachine instead and invoke their own services?

Rather than passing the invoked services down from parent to child, should the child components be calling useMachine instead and invoke their own services?

No, your initial approach is correct. You can/should pass down those services as props, and interact with them using useService (and soon, useActor, which isn't in @xstate/vue yet).

Thanks for clearing that up @davidkpiano.
How will useActor differ from useService?

How will useActor differ from useService?

There is little difference. In fact, the useService() hook creates an actor from the service and then uses useActor():
// ...

export function useService<
  TContext,
  TEvent extends EventObject,
  TTypestate extends Typestate<TContext> = { value: any; context: TContext }
>(
  service: Interpreter<TContext, any, TEvent, TTypestate>
): [State<TContext, TEvent, any, TTypestate>, Sender<TEvent>] {
  const serviceActor = useMemo(() => fromService(service), [service]);

  return useActor<TEvent, State<TContext, TEvent, any, TTypestate>>(
    serviceActor,
    (actor) => (actor as typeof serviceActor).current
  );
}

How will useActor differ from useService?

There is little difference; useService converts the service to an actor, then passes that to useActor.

Yep. That is the way I am approaching things. I will report back if I find an roadblocks when I starting building! Please let me know how it works out for you.

I would be intensely interested in a '2-years-hence' summary on lessons learned for the above. Preceedingly you've referenced not using xstate. Have you started with it in the time since?

This was an interesting thread and touches on some of the main pain points I'm unsure how to resolve. In my particular case, I am using react-native + react-navigation. The main issue is that react-navigation keeps screens mounted after navigating forward in the same navigation stack. If machines are organized at the screen level, and some mutation occurs in a later screen that needs to cascade to the previous screen (which is still mounted) to reflect the change, it's unclear the best way to do that.
In this contrived example, let's say there are 2 screens:

ItemListScreen
ItemEditScreen
Let's also say you can only get to ItemEditScreen through ItemListScreen

The ItemListScreen fetches a list of items. The ItemEditScreen will edit a single item via PATCH request to /items/:id
Maybe you can see the problem already. If the ItemEditScreen mutates the data and we want that reflected on the list on the previous screen (which is still mounted btw), we need to manage that somehow.
One approach is to update the context of the ItemListScreen machine as a side effect of the EDIT event on the ItemEditScreen. But this doesn't feel very elegant or intuitive to follow. And not very scalable if the side effect should cascade over many previous screens (of which it could be hard/impossible to know which may still be mounted).
Alternatively, the fetching and caching of the api data could be its own machine living in react context that both screens share, and the screens can trigger the fetch/cache machine from within their own respective screens, and similarly the EditItemScreen machine can trigger a cache invalidation that will be detected by the ItemListScreen and it will respond by triggering a refetch from the fetch/cache machine. But this is beginning to feel very Rube Goldberg and hard to follow for what is simple api cache invalidation.
Perhaps this is more a problem with react-navigation than anything else. I'm pretty sure in the world of react web apps using react-router, components just unmount when they are navigated away from, so all of this becomes moot because the machines on each screen will just run through their bootstrap step and get the most up-to-date version of the data. It might be that this unfortunate design detail of react-navigation means that a machine (propagated via react context wrapping all screens in question) must take ownership of all screens that need to share state, but that's a big ol' bummer of a pattern.
The other (probably goofball) solution I could think of is to have the api cache data live as singleton functions that expose out Observables and a handful of methods to change the data in the cache (and trigger observable events when called). Then the screen machines that rely on the cache data will have parallel states, where in one sibling state, it invokes the observable store to begin listening for events (like cache invalidation), and in the other sibling state, it does all the other things it needs to do to manage the state of the screen. Then, if another screen machine mounts and needs to invalidate the cache that another machine might be reliant on, the observable will propagate that change. This also feels pretty hard to follow, and the mechanics of subscribing to the store by invoking an observable seems clunky.
Maybe the simplest answer is to try and listen for when the app navigates "back" to a screen that's stayed mounted (and is now in 'focus' again) in react, and send a REFRESH event that triggers some workflow that discovers the cache is now empty and it needs to fetch the list. This would keep the machines isolated from each other's side effects, and basically eliminates the need for a reactive global store altogether. But there might be a brief moment when the machine is trying to detect if it should refetch and the user might catch a glimpse of the old data they thought they just edited.
I'll start with that last one, but I worry it doesn't address scenarios where a truly global reactive storage is necessary.

I think that, in this case, some kind of a caching layer is desirable for the best UX anyway. It's not really your screen that manages data - it just needs to display and edit it (and perhaps kick off the initial network request but that, ideally, should happen as soon as you know that you will need a particular data, so not really during rendering).
The situation described here isn't that different from a listing page with the edit modal - although I guess in such a situation usually you have a parent-child relationship so it's easier to share data and put the whole data ownership in the listing component itself. Whereas, if I understand correctly, you don't have that luxury with react-navigation as those are completely different components, it just happens that old screens are not always fully unmounted.
Note that you are also not limited to only using useMachine (that ties the machine to the lifecycle of the component) - but you can also just create a "singleton" service using "raw" interpret API and consume it in your components using useActor/useSelector. This might make it easier to keep this data management in a single place and decouple it from components


In Service: select Tenants where the service will be available

this is for tracking PRs for https://bugzilla.redhat.com/show_bug.cgi?id=1678123

[x] migration with join table https://github.com/ManageIQ/manageiq-schema/pull/349
[x] changes on model  https://github.com/ManageIQ/manageiq/pull/18554
[x] RBAC changes https://github.com/ManageIQ/manageiq/pull/18554
[x] UI changes https://github.com/ManageIQ/manageiq-ui-classic/pull/5445
[x] Testing as whole thing

Tested as whole thing


Saving Graph/Structured Data in Datasets

Thanks for this amazing library! And my question is I have structured data that is organized with a graph. For example, a dataset with users' friendship relations and user's articles. When I try to save a python dict in the dataset, an error occurred ``did not recognize Python value type when inferring an Arrow data type''.
Although I also know that storing a python dict in pyarrow datasets is not the best practice, but I have no idea about how to save structured data in the Datasets.
Thank you very much for your help.

It should probably work out of the box to save structured data. If you want to sow an example we can help you.

An example of a toy dataset is like:
[
    {
        "name": "mike",
        "friends": [
            "tom",
            "lily"
        ],
        "articles": [
            {
                "title": "aaaaa",
                "reader": [
                    "tom",
                    "lucy"
                ]
            }
        ]
    },
    {
        "name": "tom",
        "friends": [
            "mike",
            "bbb"
        ],
        "articles": [
            {
                "title": "xxxxx",
                "reader": [
                    "tom",
                    "qqqq"
                ]
            }
        ]
    }
]

We can use the friendship relation to build a directional graph, and a user node can be represented using the articles written by himself. And the relationship between articles can be built when the article has read by the same user.
This dataset can be used to model the heterogeneous relationship between users and articles, and this graph can be used to build recommendation systems to recommend articles to the user, or potential friends to the user.

Hi,
you can do the following to load this data into a Dataset:
from datasets import Dataset
examples = [
    {
        "name": "mike",
        "friends": [
            "tom",
            "lily"
        ],
        "articles": [
            {
                "title": "aaaaa",
                "reader": [
                    "tom",
                    "lucy"
                ]
            }
        ]
    },
    {
        "name": "tom",
        "friends": [
            "mike",
            "bbb"
        ],
        "articles": [
            {
                "title": "xxxxx",
                "reader": [
                    "tom",
                    "qqqq"
                ]
            }
        ]
    }
]

keys = examples[0].keys()
values = [ex.values() for ex in examples]
dataset = Dataset.from_dict({k: list(v) for k, v in zip(keys, zip(*values))})

Let us know if this works for you.

Thank you so much, and that works! I also have a question that if the dataset is very large, that cannot be loaded into the memory. How to create the Dataset?

If your dataset doesn't fit in memory, store it in a local file and load it from there. Check out this chapter in the docs for more info.

Nice! Thanks for your help.


fix: move driver import to method

SUMMARY

Accidentally imported a trino driver type at module-level, which can cause problems for users who don't have the trino driver installed.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS

Run superset without the trino driver installed.
ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

I'll merge to fix the build - thanks for the prompt fix! - but can you explain the pylint comment to me for learning purposes?

@sfirke pylint lints our python code and looks for bad practices, code smell, etc. Generally it's best practice for imports to be at the top of the file, but as we've seen here, that doesn't always work out for our use case. The comment tells pylint to disregard this one.


revert fault filter change

As being discussed https://github.com/istio/istio/pull/36259#issuecomment-982286784 and below, I think we do not need to add filter at top level and per route config will take care of it.

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

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-ipv6-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test integ-ipv6-k8s-tests_istio

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-ipv6-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-pilot-istiodremote-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-ipv6-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-pilot-istiodremote-tests_istio

integ-distroless-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-distroless-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-ipv6-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-pilot-istiodremote-tests_istio

integ-distroless-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-distroless-k8s-tests_istio

integ-pilot-istiodremote-multicluster-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-pilot-istiodremote-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-pilot-istiodremote-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-pilot-istiodremote-tests_istio

integ-distroless-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-distroless-k8s-tests_istio

integ-pilot-istiodremote-multicluster-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-pilot-istiodremote-multicluster-tests_istio

integ-ipv6-k8s-tests_istio
e2f2e0e481e8a3bc7da6169493bff341bceedc7b
link
true
/test integ-ipv6-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-pilot-multicluster-tests_istio
21706ce6cd5cdf245e1308bb9b9e77da9c996410
link
true
/test integ-pilot-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test integ-pilot-multicluster-tests_istio

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test unit-tests_istio

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test unit-tests_istio

integ-ipv6-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-ipv6-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-ipv6-k8s-tests_istio

integ-distroless-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-distroless-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-ipv6-k8s-tests_istio

integ-distroless-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-distroless-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-ipv6-k8s-tests_istio

integ-distroless-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-distroless-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-tests_istio

integ-pilot-istiodremote-multicluster-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-ipv6-k8s-tests_istio

integ-distroless-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-distroless-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-tests_istio

integ-pilot-istiodremote-multicluster-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-multicluster-tests_istio

integ-pilot-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-ipv6-k8s-tests_istio

integ-distroless-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-distroless-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-tests_istio

integ-pilot-istiodremote-multicluster-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-multicluster-tests_istio

integ-pilot-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-k8s-tests_istio

integ-cni-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-cni-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ipv6-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-ipv6-k8s-tests_istio

integ-distroless-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-distroless-k8s-tests_istio

integ-pilot-istiodremote-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-tests_istio

integ-pilot-istiodremote-multicluster-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-istiodremote-multicluster-tests_istio

integ-pilot-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-k8s-tests_istio

integ-cni-k8s-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-cni-k8s-tests_istio

integ-pilot-multicluster-tests_istio
e0c514d961d8e8547d67bd572f1cd566e66c7c3e
link
true
/test integ-pilot-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Looked at Envoy code again, the original filter chain is built based on the filters defined in HCM and when the filter is executed it resolves the most specific config. So adding it to http filters is needed. Not sure how csrf test passed for me yesterday.

@howardjohn @hzxuzhonghu can PTAL? Any concerns with this?

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
a01e902efee9e576b08b2d8f8886bef7689ebd6d
link
unknown
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test lint_istio

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
a01e902efee9e576b08b2d8f8886bef7689ebd6d
link
unknown
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test unit-tests_istio

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
a01e902efee9e576b08b2d8f8886bef7689ebd6d
link
true
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test unit-tests_istio


[Android] Preserve websql databases when migrating from webview to cr…

…osswalk
SQLite Databases that are created using the window.openDatabase with
System WebVieware not accessible in Crosswalk, the databases need to
be moved to Crosswalk profile directory.
BUG=XWALK-7368 XWALK-4488

@lincsoon PTAL


displaying image causing an error on android

Having same issue, it looks like this library might have issues displaying custom components and images in markdown on Android. Android only supports text in text components.

You can get around this by adding the following to your markdown rules:
paragraph: {
            render: (node, output, state, styles) => {
              return (
                <View key={state.key} style={styles.container}>
                  {output(node.content, state)}
                </View>
              );
            },
          },

Who knows what this may break for you but at least it's a place to start!


[feature] sanitize items in title of the note  name (replace / with _ )

Great plugin!
My problem - I have  an example item/paper with a title Gao et al. (2017) Inferring synaptic excitation/inhibition balance from field potentials.  Because of / a Logseq hierarchy is created and I want to avoid that.

hi Daniel, thanks for this suggestion! this is pretty important - i'll work on adding this to the next release

Also I am adding the abstract and authors to the page property, and if those vaulues cointains, I am getting many pages reflecting parts of the sentence.
Maybe would be useful the wrap the values in "", and especially for abstract  to check if it the abstract doesnt contain another pair of quotes (and if yes, maybe sanitize it too?

that's a good point - will also be added to the next release

if yes, maybe sanitize it too?
could you elaborate on this?

What  I mean is the situation as below
Abstract: "Word "love" has many meanings, but we will discuss only one"
But such cases seems to be ok.

v.1.0.1 should 1) replace / w/ _ and 2) surround the abstract and authors property values in quotes - let me know if this works for you

@vyleung  thanks for update! I am now trying new release and the item  with / doesn't appear at all  ( note isn't created).
I am uploading example bibliography with an item that is problematic
Neuronal excitation/inhibition imbalance: core element of a translational perspective on Alzheimer pathophysiology
Test.json.zip

thanks for sending along your JSON file! i've tested it on my end, and it seems to work (see video). maybe try restarting Logseq or disabling then re-enabling the plugin?
https://user-images.githubusercontent.com/64292157/178155226-ee6ef846-502d-4125-9e38-c1ac100f08e8.mp4

indeed, it works! (the first time I restated logseq it didn't)


[RESOLVED] High ICMP ping response time

Problem started at 15:24:16 on 2023.07.14
Problem name: High ICMP ping response time
Host: ST-FG
Severity: Warning
Operational data: Value: 998ms
Original problem ID: 32652
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23135&eventid=32652

Problem has been resolved in 5m 0s at 15:29:16 on 2023.07.14
Problem name: High ICMP ping response time
Host: ST-FG
Severity: Warning
Original problem ID: 32652


Ui Issue

cannot remove the border bottom of the select field

Thanks for question, please take look at n4kz/react-native-material-textfield#47.


process_send_take function implemented

Description
This pull request implements process_send_take (previously only a placeholder function definition). Process_send_take does not require an open orders account or settlement of funds for the user - rather, it immediately deposits funds into the user account if there is a counterparty in the orderbook.
Fixes / Changes

Added vault signer as an account to the SendTake MarketInstruction.
Uses system_program as open orders account ID to bypass event queue in new_bid and new_ask.
Directly calls spl_token::instruction::transfer and send_from_vault functions in process_send_take rather than in settle_funds.

How Has This Been Tested?

Testing suite with basic tests
Frontend UX Demo

What needs to be tested further?

Lot size tests
Fee tests

Please fix the build


graphicsdriver/opengl: Call OpenGL functions directly instead of golang.org/x/mobile/gl

golang.org/x/mobile/gl's GL functions require gl.Context, which makes Ebiten complicated.
golang.org/x/mobile/gl's GL functions use channels, and this might be overheads (#1367)

This might mean giving up supporting gomobile-build.

I believe OpenGL ES has to use the context as well as the multi-threaded worker method used by the mobile/gl package. It’s fairly easy to roll it yourself, and I think you already do with the ebitenmobile, but just a heads up, but I’m not sure if it’ll actually reduce the thread count any more than golang.org/x/mobile/gl already does. I believe it’s a limitation of OpenGL ES’s low power stuff more than the library.

Hi,
My aim is not to reduce the thread count but reduce the switching-goroutine count. golang.org/x/mobile/gl's issue is that they require switching goroutines for every function call.
I've already succeeded for desktops and Metal at #1367.

Very interesting, you'd think it would make it faster. Do you think it's a bug in how go handles goroutine switching? Or is it just that big of a bottleneck?

Yeah, that is just a performance bottleneck. I guess gomobile's GL aims a Go-style API design and doesn't consider performance very much.

gomobile-build uses its own thread for GL context, and this is untouchable. That's unfortunate. The fix will be only for gomobile-bind.


github started to 500 on runs/.../logs on many runs

Started to happen Jan 30th with
2023-01-30T16:30:01-0500 [INFO    ] tinuous tinuous 0.6.0
2023-01-30T16:30:01-0500 [INFO    ] tinuous Fetching resources from github
2023-01-30T16:30:01-0500 [INFO    ] tinuous Fetching runs newer than 2023-01-30 19:48:09+00:00
2023-01-30T16:30:02-0500 [INFO    ] tinuous Fetching runs for workflow .github/workflows/cli-integration.yml (Test Integration with dandi-cli)
2023-01-30T16:30:03-0500 [INFO    ] tinuous Run 2044 not completed; skipping
2023-01-30T16:30:03-0500 [INFO    ] tinuous Found run 2043
2023-01-30T16:30:03-0500 [INFO    ] tinuous Downloading logs for cli-integration.yml (Test Integration with dandi-cli) #2043 to 2023/01/30/github/pr/1457/c4c77ea/Test Integration with dandi-cli/2043
2023-01-30T16:30:04-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:30:05-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:30:09-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:30:14-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:30:25-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:30:46-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:31:27-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:32:48-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:35:28-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:40:49-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T16:51:30-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
2023-01-30T17:12:51-0500 [WARNING ] tinuous Request to https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs returned 500; waiting & retrying
Traceback (most recent call last):
  File "/mnt/backup/dandi/tinuous-logs/venv/bin/tinuous", line 10, in <module>
    sys.exit(main())
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/click/decorators.py", line 38, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/tinuous/__main__.py", line 127, in fetch
    paths = obj.download(Path(path))
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/tinuous/github.py", line 356, in download
    self.client.download_zipfile(self.logs_url, path)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/tinuous/base.py", line 143, in download_zipfile
    self.download(path, zippath)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/tinuous/base.py", line 115, in download
    r = self.get(path, stream=True)
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/tinuous/base.py", line 107, in get
    r.raise_for_status()
  File "/mnt/backup/dandi/tinuous-logs/venv/lib/python3.8/site-packages/requests/models.py", line 960, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: https://api.github.com/repos/dandi/dandi-archive/actions/runs/4048205158/logs

and since then:
 106 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-git-annex.lock /mnt/datasets/datalad/ci/git-annex/tools/cron_job
 109 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-datalad-extensions.lock /mnt/datasets/datalad/ci/datalad-extensions/tools/cron_job
 110 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-git-annex-ci-client-jobs.lock /mnt/datasets/datalad/ci/git-annex-ci-client-jobs/tools/cron_job
 111 N   Jan 31 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandischema && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandischema.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 112 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-datalad.lock /mnt/datasets/datalad/ci/logs/tools/cron_job
 113 N   Jan 31 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-api && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-api.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 114 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-bids-specification.lock /mnt/datasets/datalad/ci/bids-specification/tools/cron_job
 116 N   Jan 31 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-archive && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-archive.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 117 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-git-annex-remote-rclone.lock /mnt/datasets/datalad/ci/git-annex-remote-rclone/tools/cron_job
 130 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-git-annex.lock /mnt/datasets/datalad/ci/git-annex/tools/cron_job
 132 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-datalad-extensions.lock /mnt/datasets/datalad/ci/datalad-extensions/tools/cron_job
 133 N   Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-git-annex-ci-client-jobs.lock /mnt/datasets/datalad/ci/git-annex-ci-client-jobs/tools/cron_job
 134 N   Jan 31 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandischema && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandischema.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 136 N   Jan 31 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-api && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-api.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 150     Jan 31 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-archive && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-archive.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 152     Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-git-annex.lock /mnt/datasets/datalad/ci/git-annex/tools/cron_job
 157     Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-datalad-extensions.lock /mnt/datasets/datalad/ci/datalad-extensions/tools/cron_job
 158     Jan 31 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-git-annex-ci-client-jobs.lock /mnt/datasets/datalad/ci/git-annex-ci-client-jobs/tools/cron_job
 159     Jan 31 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-api && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-api.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 162     Jan 30 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-archive && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-archive.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 174     Jan 30 Cron Daemon      Cron <datalad@smaug> chronic flock -n -E 0 /home/datalad/.run/tinuous-datalad-extensions.lock /mnt/datasets/datalad/ci/datalad-extensions/tools/cron_job
 176     Jan 30 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-api && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-api.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 177     Jan 30 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-archive && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-archive.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 186     Jan 30 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-api && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-api.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 190     Jan 30 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-archive && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-archive.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 200     Jan 30 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-api && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-api.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch
 214     Jan 30 Cron Daemon      Cron <dandi@drogon> cd /mnt/backup/dandi/tinuous-logs/dandi-archive && chronic flock -n -E 0 /home/dandi/.run/tinuous-dandi-archive.lock /mnt/backup/dandi/tinuous-logs/venv/bin/tinuous fetch

Most likely it is just something to report to github and make a note here hoping for a quick resolution, but I can be wrong.

@yarikoptic Is that the only URL that's failing in this way?

@yarikoptic Is tinuous able to download any logs at all, or do they all fail with 500?

didn't check, but I think I have not seen this issue for some time (a day). So it was worth complaining -- the gods have heard me ;)  if it reemerges - I will reopen


shortenURL and getNewsFeed endpoint

closes #19
closes #20

Codecov Report

Merging #58 (8d97603) into main (6c098ea) will increase coverage by 0.06%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #58      +/-   ##
==========================================
+ Coverage   99.07%   99.14%   +0.06%
==========================================
  Files          19       21       +2
  Lines         326      351      +25
==========================================
+ Hits          323      348      +25
  Misses          3        3

Impacted Files
Coverage Δ

hvpy/api_groups/communications/get_news_feed.py
100.00% <100.00%> (ø)

hvpy/api_groups/communications/shorten_url.py
100.00% <100.00%> (ø)

hvpy/facade.py
96.96% <100.00%> (+0.41%)
:arrow_up:

hvpy/parameters.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


fix download caddy url

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks for the submission @modInfo -- is the current link broken? The current link is there to grab all of the pre-packaged middlewares

the current link is broken...


Improvement for Image Text Layout

It would be awesome to set a number of max lines for displaying the text for an image.
There should be a "more" button which enlarges the text area.
Tapping on the text field also enlarges the text area.
Tapping on the enlarged Text collapses it again.
thanks bro <3

done BRO <3


Problems using lib in simulator

The library is presenting the following issue when build for iOS simulator:
In <...>/Pods/YYImage/Vendor/WebP.framework/WebP(libwebpencode_la-config.o), building for iOS Simulator, but linking in object file built for iOS, for architecture arm64
Any help?

No, I don't. For now I'm using only real devices. I think this library wasn't configured for x86_64 architectures


Fix typos

:grey_exclamation: Build Aborted

The PR is not allowed to run in the CI yet

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2023-02-22T08:21:11.683+0000

Duration: 3 min 42 sec

Steps errors
Expand to view the steps failures

Load a resource file from a library

Took 0 min 0 sec . View more details here
Description: approval-list/elastic/synthetics.yml

Error signal

Took 0 min 0 sec . View more details here
Description: githubApiCall: The REST API call https://api.github.com/orgs/elastic/members/lidi return the message : java.lang.Exception: httpRequest: Failure connecting to the service https://api.github.com/orgs/elastic/members/lidi : httpRequest: Failure connecting to the service https://api.github.com/orgs/elastic/members/lidi : Code: 404Error: {"message":"User does not exist or is not a member of the organization","documentation_url":"https://docs.github.com/rest/reference/orgs#check-organization-membership-for-a-user"}

:robot: GitHub comments
Expand to view the GitHub comments

To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

@lidi Bump, I can merge the PR once the CLA is signed. Please do let us know if you like to do that. Thanks!

Closing due to no activity.


Dependency problem on AVR specific #include.

Hi,
am struggling with a library - https://github.com/RobTillaart/DS18B20_INT
The library needs the "OneWire: so I adapted .arduino-ci.yml
compile:
  # Choosing to run compilation tests on 2 different Arduino platforms
  platforms:
    - uno
    - leonardo
    - due
    - zero
  # Declaring Dependent Arduino Libraries (to be installed via the Arduino Library Manager)
  libraries:
    - "OneWire"

unittest:
  # These dependent libraries will be installed
  libraries:
    - "OneWire"
    - "util/crc16"   <<<<<<<<<<<<<<<<<<< does not work.

The example of the lib now compiles correctly, however the unit test fails on util/crc16.h  which is used by the OneWire lib.
The path (on my PC) is   ...\Arduino\hardware\tools\avr\avr\include\util\crc16.h  but I do not know how to include it in the unit test.
It might be a feature that need to be solved in the future.
For now I will disable the unit test.

Can you post the output from the unit test run?  The libraries that you list in the config file refer to the names that the library manager would use, not paths on disk.  If utl/crc16.h isn't being made available to the unit tests, that's the real bug here.

LOG_DS28CM00_LIB.zip
This log is from the DS28CM00 library  [this is an ID chip] - https://github.com/RobTillaart/DS28CM00/tree/arduino-ci

The unit test compiles and runs as expected.
Three examples

Compiles as expected
fails on #include util/crc16.h
fails on #include rom/crc.h This example is an ESP32 specific example of previous.

The problem 3 is expected and need to be fixed. I will merge [2] and [3] and use conditional compilation.
When I get ESP32 to work it will be tested too. (another story).

@per1234 does the use of utli/crc16.h or rom/crc.h fall under either "undocumented API" or "platform-specific feature"?
I'm tempted to close this as "works as intended", with limiting the set of test platforms & adding preprocessor directives being the proper remedy.  But I want to double check that assumption.

"undocumented API"

util/crc16.h
it's definitely documented: https://www.nongnu.org/avr-libc/user-manual/group__util__crc.html
rom/crc.h
I'm not sure. I see there is doxygen documentation in the source code:
https://github.com/espressif/esp-idf/blob/v3.3.4/components/esp32/include/rom/crc.h
but I didn't find that documentation published anywhere. I really don't have much experience with the ESP32.

"platform-specific feature"

It looks like both of these are platform-specific.

Hmm.  I'll probably deprioritize this then, sorry Rob.
My reasoning here is that it seems fruitless to try and replicate all functions that might exist in any platform library (vs existing in the "core" set of Arduino library functions).  I had enough trouble with the AVR side of things, and don't want to go further down that path unless/until I can find a smarter way to do it.
I can revisit this if there is movement on https://github.com/arduino/arduino-cli/issues/1090 or https://github.com/arduino/arduino-cli/issues/1092

Hmm. I'll probably deprioritize this then, sorry Rob.
OK, but as the OneWire library is used for several devices / libraries, all these will be affected.
So please do not close.

I won't close it.  It's definitely something that needs to be addressed and the good news is that there are a few ways to address it.  I just have to figure out which of the possible workarounds is the appropriate one and/or whether the approach in OneWire is (or isn't) considered a best practice.

@per1234 regarding "undocumented API", would you say that something like portModeRegister(P) is undocumented?  I see it listed here:
https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/Arduino.h
But what assurance do I have that this macro will always be provided by the core?

@per1234 regarding "undocumented API", would you say that something like portModeRegister(P) is undocumented?  I see it listed here:
https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/Arduino.h
But what assurance do I have that this macro will always be provided by the core?

This is definitely a problem. It's difficult to say whether some of these things are undocumented because nobody ever got around to documenting them (or even creating a place to document them, since this is not something you would want to expose a beginner to), or if it was only ever intended for internal use by the core library.
There is a request for a more comprehensive documentation of the platform interface here: https://github.com/arduino/arduino-cli/issues/985
There is also an interesting related discussion about breakage the transition to using ArduinoCore-API in ArduinoCore-samd caused to some code that relied on the undocumented interfaces: https://github.com/arduino/ArduinoCore-samd/issues/587

This is definitely a problem. It's difficult to say whether some of these things are undocumented because nobody ever got around to documenting them (or even creating a place to document them, since this is not something you would want to expose a beginner to), or if it was only ever intended for internal use by the core library.
There is a request for a more comprehensive documentation of the platform interface here: https://github.com/arduino/arduino-cli/issues/985
There is also an interesting related discussion about breakage the transition to using ArduinoCore-API in ArduinoCore-samd caused to some code that relied on the undocumented interfaces: https://github.com/arduino/ArduinoCore-samd/issues/587

It's difficult to say whether some of these things are undocumented because nobody ever got around to documenting them

Arduino was intended to learn people to do fun stuff, this level of coding was explicitly the level they wanted to hide, not only for beginners but for everyone.
For the libraries / unit test, I can live perfectly with some things that won't work in a unit test. Should not be too much of course, but when developing I often depend on testing with real hardware (sensor etc). The unit tests are most valuable for PR's fro 3rd parties to check they didn't break too much.
For me the compilation of examples are the top priority, as these are the starting points for the users of the libs.

It's difficult to say whether some of these things are undocumented because nobody ever got around to documenting them

Arduino was intended to learn people to do fun stuff, this level of coding was explicitly the level they wanted to hide, not only for beginners but for everyone.
For the libraries / unit test, I can live perfectly with some things that won't work in a unit test. Should not be too much of course, but when developing I often depend on testing with real hardware (sensor etc). The unit tests are most valuable for PR's fro 3rd parties to check they didn't break too much.
For me the compilation of examples are the top priority, as these are the starting points for the users of the libs.


Show removed file with some indication

I suggest either crossing the filename out or mark is as read with a red D to the right:

For example, vue-html.json should either show as crossed out, or in red with a red D below the M of vue-html.YAML.

Hmm, we should already be rendering a D decorator for these files, so this sounds like a bug:

You wouldn't happen to remember if the files were modified in some other way, like a move or rename?

Cool, if this comes up I can open another issue.


vim is laggy

When I am using vim in the terminal, it is really laggy and I do not know what is the reason. Like when I try to go down the lines in my file, the text cursor will take 1 or 2 seconds to respond. It is worse if I want to compile all my classes since it will take even longer. This never happens before lab 5. Is it because I have more files in my docker workspace now and it just takes longer to process?

:set lazyredraw will buffer screen updates instead of updating all the time.
Have you tried the 'ttyfast' option? See:
:help 'ttyfast'
for help
:set ttyfast
to enable it.
To make it a permanent fix u can consider editing the .vimrc file in root to change the settings on startup.


NSEC records should be allowed when a CNAME already exists

Versions
NetBox Version: 3.6.1
NetBox DNS Version: 0.19.3
Python Version: 3.9
Describe the bug
Unlike other record types, NSEC records are allowable when a CNAME exists for the given name. See RFC4034 section 4
To Reproduce
Steps to reproduce the behavior:

Create a CNAME record.
Attempt to create an NSEC record with the same name as the CNAME

Expected result
The record should be created
Actual result
The form shows the error
"There is already an active CNAME record for name name in zone zone, no other record allowed."

Hi @sabo, thanks for raising this - you're obviously right. I'll look into it soon.

Hi @sabo, 0.19.4 is out now.

thanks for the amazingly quick fix!

You're welcome. It was pretty simple, most effort went into writing the tests for it :-)


Vagrant gathered an unknown Ansible version:

$vagrant up
error's
Vagrant gathered an unknown Ansible version:

and falls back on the compatibility mode '1.8'.

Alternatively, the compatibility mode can be specified in your Vagrantfile:
https://www.vagrantup.com/docs/provisioning/ansible_common.html#compatibility_mode

    k8s-m-1: Running ansible-playbook...
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md5
ERROR:root:code for hash sha1 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha1
ERROR:root:code for hash sha224 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha224
ERROR:root:code for hash sha256 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha256
ERROR:root:code for hash sha384 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha384
ERROR:root:code for hash sha512 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha512
Traceback (most recent call last):
  File "/usr/local/bin/ansible-playbook", line 60, in <module>
    import ansible.constants as C
  File "/usr/local/lib/python2.7/site-packages/ansible/constants.py", line 12, in <module>
    from jinja2 import Template
  File "/usr/local/lib/python2.7/site-packages/jinja2/__init__.py", line 36, in <module>
    from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \
  File "/usr/local/lib/python2.7/site-packages/jinja2/loaders.py", line 16, in <module>
    from hashlib import sha1
ImportError: cannot import name sha1
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.Vagrant gathered an unknown Ansible version:

and falls back on the compatibility mode '1.8'.

Alternatively, the compatibility mode can be specified in your Vagrantfile:
https://www.vagrantup.com/docs/provisioning/ansible_common.html#compatibility_mode

    k8s-m-1: Running ansible-playbook...
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md5
ERROR:root:code for hash sha1 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha1
ERROR:root:code for hash sha224 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha224
ERROR:root:code for hash sha256 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha256
ERROR:root:code for hash sha384 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha384
ERROR:root:code for hash sha512 was not found.
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File<EMAIL_ADDRESS>line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha512
Traceback (most recent call last):
  File "/usr/local/bin/ansible-playbook", line 60, in <module>
    import ansible.constants as C
  File "/usr/local/lib/python2.7/site-packages/ansible/constants.py", line 12, in <module>
    from jinja2 import Template
  File "/usr/local/lib/python2.7/site-packages/jinja2/__init__.py", line 36, in <module>
    from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \
  File "/usr/local/lib/python2.7/site-packages/jinja2/loaders.py", line 16, in <module>
    from hashlib import sha1
ImportError: cannot import name sha1
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.```

I have not been able to reproduce the issue.
Please provide software releases:
$ vagrant -v
Vagrant 2.2.9

$ ansible --version
ansible 2.9.9
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/jruiz/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.6 (default, Sep 25 2020, 09:36:53) [GCC 10.2.0]

Thanks

Closing as no more info has been provided, please reopen if needed


SSL.com Signing Certificate does not chain to a Microsoft Root Certificate

signtool verify /v /kp holt1553.sys
Verifying: holt1553.sys
Signature Index: 0 (Primary Signature)
Hash of file (sha256):<PHONE_NUMBER>D4CA090F3769B9B8FC1061FF2B132FE404176B137AC93C98DEA827
Signing Certificate Chain:
Issued to: SSL.com EV Root Certification Authority RSA R2
Issued by: SSL.com EV Root Certification Authority RSA R2
Expires:   Fri May 30 13:14:37 2042
SHA1 hash: 743AF0529BD032A0F44A83CDD4BAA97B7C2EC49A
    Issued to: SSL.com EV Code Signing Intermediate CA RSA R3
    Issued by: SSL.com EV Root Certification Authority RSA R2
    Expires:   Wed Mar 22 12:44:23 2034
    SHA1 hash: D2953DBA95086FEB5805BEFC41283CA64C397DF5

        Issued to: W. G. Holt Inc.
        Issued by: SSL.com EV Code Signing Intermediate CA RSA R3
        Expires:   Tue Mar 23 16:11:44 2021
        SHA1 hash: 47C1160D1AFC7A9BD55CE1F8E44EEB58213714F8

The signature is timestamped: Tue May 12 08:10:01 2020
Timestamp Verified by:
Issued to: SSL.com Root Certification Authority RSA
Issued by: SSL.com Root Certification Authority RSA
Expires:   Tue Feb 12 12:39:39 2041
SHA1 hash: B7AB3308D1EA4477BA1480125A6FBDA936490CBB
    Issued to: SSL.com Timestamping Issuing RSA CA R1
    Issued by: SSL.com Root Certification Authority RSA
    Expires:   Sun Nov 12 13:50:05 2034
    SHA1 hash: 84DC2F563A1AAA690C468F3B56EF2D63AEC7CA39

        Issued to: SSL.com Timestamping Unit 2019
        Issued by: SSL.com Timestamping Issuing RSA CA R1
        Expires:   Sat Nov 10 13:58:26 2029
        SHA1 hash: 986D74F120B5B18ADC7CE7B55294BDF6D8466950

SignTool Error: Signing Cert does not chain to a Microsoft Root Cert.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

@wbrosche. could you share this file  holt1553.sys here

Hi @wbrosche
This feedback forum gets sent to the Windows driver documentation team. We use it to track documentation issues. The Hardware Dev Center Support team has the right people to help investigate a customer problem with signing and submissions, like your issue. To open a ticket with the support team:

First, sign into your hardware dev center account, and then...
Go to Hardware Dashboard FAQ, where you'll find this passage:

How do I contact Partner Center Support?
If you are having problems accessing the Dashboard or need Dashboard Support please open a support ticket here: https://developer.microsoft.com/windows/support. Select Contact us, Dashboard issue, and then Hardware submissions & signing (all OS version) from the dropdown menu.

It's important that you sign into your account first.
If support, working with the dashboard developers, finds that something needs to change in the docs, we'll then update that here.
I hope this helps.
Eliot


First Android app: Android Basics with Compose

URL of codelab
https://developer.android.com/codelabs/basic-android-kotlin-compose-first-app?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-1-pathway-2&hl=ja#4
In which task and step of the codelab can this issue be found?
5-3 (Perhaps what I've found is only part of the problem. Information on all Japanese pages seems outdated.)
Describe the problem
While doing the Japanese version of the tutorial, I noticed that DefaultPreview() was missing in the auto-generated code.
@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
   GreetingCardTheme {
       Greeting("Meghan")
   }
}

https://developer.android.com/codelabs/basic-android-kotlin-compose-first-app?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-1-pathway-2&hl=ja#4
When I checked the English version of the tutorial, the same GreetingPreview() as my code was posted.
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
    GreetingCardTheme {
        Greeting("Meghan")
   }
}

https://developer.android.com/codelabs/basic-android-kotlin-compose-first-app?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-1-pathway-2#3
I presume that the information written in Japanese is old information.
Steps to reproduce?

Proceed with project creation according to the Japanese tutorial.

Versions
Android Studio version:
Android Studio Flamingo | 2022.2.1 Patch 1
Build #AI-222.4459.24.2221.9971841, built on April 20, 2023
API version of the emulator:
None
Additional information
Include screenshots if they would be useful in clarifying the problem.

Hello @htg1889,
Thank you for reaching out to us and sharing your concern.
Please note that after updating the content of the English version, it takes about another couple of weeks for the update in all other languages.
If after another 1-2 weeks the mismatch is still observed, please do not hesitate to open a new GH issue.


Change build & release policy

Due to changing the release staff, unfortunately the release format
of v22.2 and v22.3 was different from before. Although it's not
intentional, we have decided to take this opportunity to change our
release policy to follow the policy of our other products:

Don't make differences in functionality between the public version and
the product version anymore
Use self-signed certification instead of ClearCode's one for signing
the public version of the Add-on
Don't sign the public version of the installer anymore

問題なさそうなのでマージしました！


Improve navbar of the website by make it sticky and responsive

Improve navbar by make it sticky and responsive
Add some hover effect and transition to look better UI.
Features drop down list UI can be better by adding proper hover on it.
Select language is not aligned with the nav links
These issues i would like to resolved under GSSOC'23
@akshitagupta15june consider this issue!!

it fine now


03/31/2018 14:54 : Create Pull Request for branch master -> prTesting1_2018033114

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon1.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


:two: :zero: :one: :eight: minutes: Add partial record of 2018 minutes

This commit is a "checkpoint" of the 2018 meeting minutes migrated from
the raw Google Doc export into a more polished and easy to navigate
form. I moved the meeting minutes that were already in the repository
into this file as well.
It does not conclude the 2018 meeting minutes, but it is a fair chunk
done. I will continue working on this in iterations, but for now, it
would be good to add the work done already so we can use the link in our
existing Google Doc as a reference.

Rebased on latest changes in main and solved the merge conflict.


changed directiveValue to noChange. so returning a noChange in a comp…

…onent will force lit to do nothing (more detailed explanation in https://github.com/Polymer/lit-html/pull/276)

@fopsdev can you also add an entry to the changrlog?


Apply fixes from StyleCI

This pull request applies code style fixes from an analysis carried out by StyleCI.

For more information, click here.

This change is

Coverage increased (+0.2%) to 64.125% when pulling 100d78aca2325b3dde473bd39beb725c7bc97272 on analysis-D2wpmJ into ef6245c2bffc3e5ca24f3410e2d04c22bbdd7e02 on master.


Pvii Small Typo

On line 3:
Fortunately gthere are excellent tools available for this purpose

Fixed, thanks!


Fix error on relationship server side search and order while using accessor

Do not try to search or order server side if an accessor is used for belongsTo relationship.
Pass sortableColumns to the view to check which columns can be server side ordered.
Rename method findRelationshipRow to findSearchableRelationshipRow for clarity.

Codecov Report

Merging #5245 (1c7eb27) into 1.4 (9d20973) will increase coverage by 0.51%.
The diff coverage is 66.12%.

:exclamation: Current head 1c7eb27 differs from pull request most recent head c232952. Consider uploading reports for the commit c232952 to get more accurate results

@@             Coverage Diff              @@
##                1.4    #5245      +/-   ##
============================================
+ Coverage     62.96%   63.48%   +0.51%
- Complexity     1372     1399      +27
============================================
  Files           194      195       +1
  Lines          4007     4138     +131
============================================
+ Hits           2523     2627     +104
- Misses         1484     1511      +27

Impacted Files
Coverage Δ
Complexity Δ

src/Commands/AdminCommand.php
8.33% <0.00%> (-0.56%)
12.00 <0.00> (+1.00)
:arrow_down:

src/Database/Schema/Identifier.php
85.71% <ø> (ø)
2.00 <0.00> (ø)

src/Database/Schema/Index.php
60.00% <ø> (ø)
14.00 <0.00> (ø)

src/Database/Types/Common/CharType.php
0.00% <ø> (ø)
2.00 <0.00> (ø)

src/Database/Types/Common/DoubleType.php
0.00% <ø> (ø)
1.00 <0.00> (ø)

src/Database/Types/Common/JsonType.php
100.00% <ø> (ø)
1.00 <0.00> (ø)

src/Database/Types/Common/NumericType.php
0.00% <ø> (ø)
1.00 <0.00> (ø)

src/Database/Types/Common/TextType.php
100.00% <ø> (ø)
1.00 <0.00> (ø)

src/Database/Types/Common/VarCharType.php
0.00% <ø> (ø)
1.00 <0.00> (ø)

src/Database/Types/Mysql/BinaryType.php
0.00% <ø> (ø)
2.00 <0.00> (ø)

... and 91 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 16a0c25...c232952. Read the comment docs.


Expose exports variable to support CommonJS and Babel

This PR could fix this issue #6

@ErrorPro that fixes #6 for sure, see comment https://github.com/plasticine/inject-loader/issues/6#issuecomment-124474515

Hey peeps :)
I'm on vacation for the next week or so, will merge and sort out a bunch of these when I get back to work. :v:

Ok, seems people really want this fix, so I will put it into master as I can't see any reason not to. However I can only eyeball the code as I am sans-computer for the next week, this also means there will be not new release published until I am back at a keyboard—people will have to use master.

Great, thanks!


README: fix donations link

BTW, I'd be happy to regularly kick in some money to support the project, maybe look into recurring donation options, Patreon being the most popular (and while it's not the cheapest, the network effect is valuable IMHO).

I appreciate it! https://www.patreon.com/theSquashSH
I set one up a while ago but never got up the courage to share it around.


Fake a search query for website to pull isight from S3.

We are going to have one hard-coded insight from the k-graph, but on the insights portal we want to make it look like we have to search for it to show up
Acceptance Criteria

Regardless of what you search on search page, it shows you the one insight we have.

feels real enough to show
https://streamable.com/3xh6tx


[Feature Request] Security Policy needed

Context
The project's security
Expected Behavior
A full checklist
Current Behavior
Hi @NiallJoeMaher! :) I just reviewed the project's Community Standard Checklist and noticed that it is not completely full due to missing a security policy
Your Solution
I think we should add a security policy to the project because it will minimize the risk of receiving unauthorized commits and security is a top concern according to this year's Open Source State Report. If approved, I'd be glad to implement this policy.

Awesome idea! @CBID2, you have eagle eyes. Thanks for this. Would you mind implementing it still?

I didn't see this reply! Very happy to give feedback @CBID2. Thanks!!!

I didn't see this reply! Very happy to give feedback @CBID2. Thanks!!!

Here it is @NiallJoeMaher: #306


[Refactoring] Remove unused variable from Hours

Issue

n/a

Overview (Required)
In this PR, I removed unused variable from Hours to fix a lint warning.
I'm not sure anyone plan to use this unused right variable in the future, but I think it should be removed for now as YAGNI principal.
Links

n/a

Screenshot

Looks good!