g-images with dynamic paths not correctly generating full feature set

Summary
We have some components that we want to load images in. I've tried many variations on making this work, and in most cases, gridsome simply outputs the literal property path without actually transforming it. Using require() will correctly output the path, but then it doesn't output an actual g-image feature, just a generic unhashed img tag.
I'm quite surprised at this as I can't imagine the tool would be very useful without dynamic images in components.
There is an existing bug for this with a proposed solution, however as you'll see below, the proposed solution is actually not working.
Example code
<template>

    <g-image :src="imagePath" />

    <g-image :src="imageSrc" />

    <g-image :src="webpackImagePath" />

    <g-image<EMAIL_ADDRESS>/>

</template>

Since this issue is about dynamic paths I hoped to see how you want to construct your image path. Something like computed value imagePath in the issue summary.

As a simple example, we have a footer component. Depending on the sales page it appears on, it's going to have a different background image...

How and where you place your logic to make image dynamic?

Hi @Al-Rozhkov, I think there might be a misunderstanding. I'm not computing or making anything "dynamic", just the paths are dynamically passed to a component from another component. This is why I think it is a bug.
Using the footer component in a real scenario looks like this:
// Some sales page
<template>

Some sales page

PASS: This works fine and outputs a responsive g-image

    <g-image src="~/assets/images/some-image.png" width="650" height="400" fit="contain" />

      FAIL: The g-image in this component fails to load via webpack,
      and outputs the literal string

</template>

And here's how that output looks:

<img src="/assets/static/src/assets/images/some-image.png?width=650&height=400&fit=contain" width="650" data-src="/assets/static/src/assets/images/some-image.png?width=650&height=400&fit=contain" data-srcset="/assets/static/src/assets/images/some-image.png?width=480&height=296&fit=contain 480w, /assets/static/src/assets/images/some-image.png?width=650&height=400&fit=contain 650w" data-sizes="(max-width: 650px) 100vw, 650px" class="g-image g-image--lazy g-image--loaded" sizes="(max-width: 650px) 100vw, 650px" srcset="/assets/static/src/assets/images/some-image.png?width=480&height=296&fit=contain 480w, /assets/static/src/assets/images/some-image.png?width=650&height=400&fit=contain 650w">

I'd love to know a solution for this as well.

Indeed I misunderstood you. I feel like I wasted a lot of your time. Sorry.
The cause of the failure is inside your props declaration. It has to be an Object not a String. In fact q-image accepts an object with following parameters:
{
  type
  mimeType,
  src,
  size,
  sizes,
  srcset,
  dataUri
}

If you directly print a String in <g-image> tag all magic is done by Webpack. If you use graphql everything handled in Data Store level. In your case image path remains a string because you declared it in the props:
props: {
    imageSrc: {
      type: String,
      required: true
    }
  },

And it works with slots because Webpack can pick it up.

Hi again, yes, that's the problem 👍. No time wasted, I'm happy to explain because I like gridsome and want it to succeed, and this particular use case seems like it will be an issue for a lot more people than just me and the other commenters.
You can pass an object to g-image, but that doesn't seem to be intended for users to do on their own. At the point that g-image receives the object you mentioned, it's been processed further upstream by the image processing queue and already has the sizes and srcset, etc. Here's where that is created:
https://github.com/gridsome/gridsome/blob/66c7068df5a853f05e07885ede3d0c577ff67a0a/gridsome/lib/app/queue/ImageProcessQueue.js#L145-L149
I think it would defeat the purpose of g-image if users had to manually generate the object, when the image processing queue already handles that. You don't have to specify an object for a static link or a graphql link, because they're passed through the asset queue.
It seems to me that the fix for this issue is that string paths passed via a prop should be added to the asset queue somehow, and processed like static and graphql defined string paths. Given that the functionality for this already exists, it seems plausible to me.
Maybe there's a post-compilation step that generates all of the images like for the graphql? Or maybe there's an extra webpack hook (or whatever) so that if we do <g-image src="require('some_path')" /> it's automatically added to the asset queue (or whatever)?

The problem with dynamic src is that webpack doesn't have access to the JavaScript variables. We can look into require.context and see if that will make dynamic src paths possible.

I just looked at Gatsby docs to understand how it handles images.  I guess it is for a reason.

The problem with dynamic src is that webpack doesn't have access to the JavaScript variables.

@hjvedvik yeah, that is the described issue! At the time that vue-loader is parsing g-image, the AST still only contains the source code values in the postTransformNode hook, not the compiled values. BUT! assets-loader is already dynamically added to static images and webpack picks it up, so it is possible.  Here's where that happens:
https://github.com/gridsome/gridsome/blob/66c7068df5a853f05e07885ede3d0c577ff67a0a/gridsome/lib/webpack/modules/assets.js#L33-L36
I don't know if there's a "post-compile" vue-loader hook that can do something similar, but with the already code-compiled tree. The GraphQL code seems does it somehow, I'm guessing it's processed after Vue is, so it must hook into something to do it, right?
On another note, if when we explicitly specify the loader when setting the property image source, it will work, but setting the values via explicit loader statement sucks as a user experience. For example, this will work:

some text

    <img src="/assets/static/src/assets/images/some-image.png?width=800" width="800" data-src="/assets/static/src/assets/images/some-image.png?width=800" data-srcset="/assets/static/src/assets/images/some-image.png?width=480 480w, /assets/static/src/assets/images/some-image.png?width=800 800w" data-sizes="(max-width: 800px) 100vw, 800px" class="g-image g-image--lazy g-image--loaded" sizes="(max-width: 800px) 100vw, 800px" srcset="/assets/static/src/assets/images/some-image.png?width=480 480w, /assets/static/src/assets/images/some-image.png?width=800 800w">

But that's brittle and easy to mess up.  Some other possible solutions:

Maybe a helper function that auto generates the asset loader as part of the g-image process?
Maybe an extra data-attribute that says "process me later"?
Some kind of helper function that creates that loader in a better way?
Some kind of easier to produce options parameter?
Or best yet, something in g-image that handles this automatically?

@Al-Rozhkov I think this is important to resolve because this is basic Vue behavior and it's going to be a surprise to people. Deriving absolutely everything on a page from GraphQL seems overly complicated for a lot of use cases. What about a pricing page? You may want some images or icons, and you'd want a component for that shared behavior, and if you try to use images for the icons, this issue would come up. Maybe gridsome only wants to be a static blog or article generator, but Vue is awesome and it would be fantastic to use it for other static pages as well, especially when this is the only real showstopper I ran into.
I'm not sure how to solve it but I think this is a great discussion and will lead to great results!

require("!!assets-loader?${query}!${value}") generates a string based on a static src value. webpack can handle dynamic requires, but because it doesn't see the dynamic value at compile time, it generates a list of all possible files matching a certain regex and creates chunks for them. So if you have 100 images in a folder but only uses 3 of them, Gridsome will still process all the images.
I haven't done any testing, but I think something like this could work with require.context under the hood. The context attribute must be a static value that webpack can resolve. And it should only look for images with supported extensions.
<g-image context="~/images" :src="node.imageFileName" />

Any news on this?
The only way it works is with this:
require('!!assets-loader?width=90!~/assets/img/' + img);
But this reduces the performance a lot.
Best

Pinging @hjvedvik for visibility.

I'm new to Gridsome and the amount of digging I've had to do to figure out why <g-image> wasn't working has been a big pain.
My use case is that of a single-file collection which is updated by Netlify CMS. It contains data applicable to the entire site (including paths to images I'd like optimised), and thus I can't import it with source-filesystem because I don't want routes generated for it.
The docs do mention the value can't be dynamic "unless it comes from GraphQL", so I then spent another half an hour looking at the as-yet-unknown-to-me Data Store API to add some global metadata containing the image, but then realised that <g-image> only works with <page-query>, not <static-query>; as the image is to appear in a global footer, I had to use the latter.

I believe, you can use the source-filesystem plugin with no routes and it will not generate them. That is the what I have been doing for reusable content that I don't want urls for.

I've struggled with g-image also, and have used the code shown below when I wanted files that were not in Graph QL but were in the repo.
This could we be in the a vue component or page <template></template> tag
      <g-image
        class=""
        :src="require('~/assets/images/vos-lockup-white-text.png')"
        alt=""
      />

@mjatharvest - both of these look ideal. Couple of questions (because I'm afk right now):

Won't that config generate routes for admin/site/content/collections/articles/*? The docs seem to say this is the case.
Will the require() work with dynamic values?

@snoopdouglas based on the contents of my dist folder there are no routes / urls generated for the articles if no route is provided. @hjvedvik could confirm
Re dynamic values, not sure with require, but sometimes I've had to use a component with a template slot to avoid errors.

@mjatharvest @snoopdouglas @robaxelsen @hjvedvik @bbugh
Can you confirm that require method is working and has no drawbacks?
<g-image :src="require('~/assets/images/image.jpg')"/>

In my case, I can see the images but I don't them blured while loading.

@sergeyfilimonov you're correct, looks like it's only loading image src and not creating srcset or lazy loading images

@mjatharvest yes, it's working just as img tag.
This is what I see in final HTML with require:

This is what I see in HTML with a static url:
<img src="/assets/static/src/assets/images/olga.jpg?width=853" width="853" data-src="/assets/static/src/assets/images/olga.jpg?width=853" data-srcset="/assets/static/src/assets/images/olga.jpg?width=480 480w, /assets/static/src/assets/images/olga.jpg?width=853 853w" data-sizes="(max-width: 853px) 100vw, 853px" class="relative rounded g-image g-image--lazy g-image--loaded" srcset="/assets/static/src/assets/images/olga.jpg?width=480 480w, /assets/static/src/assets/images/olga.jpg?width=853 853w" sizes="(max-width: 853px) 100vw, 853px">

I have run into this too, falling back to using normal img for now.
Looking forward to using g-image in my components files soon though, eager for an update!

I suggest using an external image cdn service such as cloudinary it is very easy to use and you can enable auto upload and support dynamic sizes.
eg.
// imagePath = "website/customers/stylight-website-new.png"

Image with a width of 600px

<g-image :src="`https://cloudinary-res.cloudinary.com/image/upload/c_scale,f_auto,q_auto,600_w/${imagePath}`">

Image with a width of 1200px

<g-image :src="`https://cloudinary-res.cloudinary.com/image/upload/c_scale,f_auto,q_auto,1200_w/${imagePath}`">

Image with a dynamic width and height

<g-image :src="`https://cloudinary-res.cloudinary.com/image/upload/c_scale,f_auto,q_auto,${width}_w, ${height}_h/${imagePath}`">

1200px wide scaled image
You'ed have to for write some code to generate the placeholder dataURI that you then can pass with the src as an object to

Cloudinary and friends will indeed do all of this for you, but other solutions exist for that. <g-image> seems a better fit for those of us who'd prefer not to rely on an external provider for our sites' images.

If the images are in the local file system there must be a way to use g-image with GraphQL natively that I'm missing. The docs indicate it's possible https://gridsome.org/docs/images#usage-via-graphql

First question, what should the GraphQL look like for an image? Can it be just a string? Or should it be an object? Here is an example of an image object I'm creating in gridsome.server.js

const axios = require('axios')

module.exports = function (api) {

  api.loadSource(async store => {

// JSON article data from local CMS
    const { data } = await axios.get('http://mycms.local/articles?filter=published')

    const contentType = store.addContentType({
      typeName: 'Article',
      route: '/articles/:year/:month/:day/:slug'
    })

    for (const item of data) {
      contentType.addNode({
        id: item.id,
        title: item.title,
        excerpt: item.excerpt,
        content: item.content,
        image: {
          src: item.image,
          width: '',
          height: '',
          quality: '',
          fit: 'cover',
          blur: '40',
          immediate: false
        },
        date: item.date,
        slug: item.slug
      })
    }
  })

}

Second question - what should the query look like in the Vue Template?

Does it need !!asset-loader or require

// src/pages/News.vue
<page-query>
    news: allArticle (sortBy: "date", order: DESC) {
      edges{
  	    node {
          id
          title
          path
          excerpt
          external_link
          image {
            src
          }
        }
      }
    }
  }
</page-query>

<template>
  <Layout>

            <g-image  :src="edge.node.image.src" :alt="edge.node.title" />

  </Layout>
</template>

Would be great to sort this out and then update the docs.

In researching this further and some help from this thread, I was able to get g-image working with GraphQL using a full fill system path. https://github.com/gridsome/gridsome/issues/459

@mjatharvest could you please share your code that works?

@mjatharvest I'd be super interested to see what the code you used was as well!

@sergeyfilimonov @tbredin sorry for the delay, haven't been able to get this as quick as I'd like
I'm not about to post everything due to time constraints, but my solution has been to use gridsome.server.js and fetch data from an api:
My case is probably not typical. It would depend on what your data from the api looks like.
I also use process.env to define different variables for development and production.
// Load Axios for Ajax Requests
const axios = require('axios')

// Set the url to Get data from Statmic (Different urls for production and local dev)
const apiHost = process.env.API_HOST

// Set the file path for image uploads (Different urls for production and local dev)
// In local looks like: '/Users/myusername/Sites/path/to/site/uploads/'
const uploadPath = process.env.UPLOADS_FULL_PATH

module.exports = function (api) {

   /*
    * Articles / News
    */
  api.loadSource(async store => {
    const { articleData } = await axios.get( apiHost)

    const articles = store.addContentType({
      typeName: 'Article',
      route: '/articles/:year/:month/:day/:slug'
    })

    for (const item of articleData.data) {
      articles.addNode({
        id: item.id,
        //path: '/',
        title: item.title,
        excerpt: item.excerpt,
        external_link: item.external_link,
        image: {
          src: uploadPath + item.image.fileName,
        },
        source_date: item.source_date,
        date: item.date.date,
        slug: item.slug
      })
    }
  })

}

the key is that a full system file path to the image must be used

For anyone that can't get their downloaded images' path absolute within GraphQL you can modify the existing ContentType and add a new field eg. absImage:
This should also work if you need to set the url of an image, just set ROOT to the url domain.
// gridsome.server.js

const ROOT = process.cwd()
module.exports = function (api) {
  api.loadSource(({ addContentType }) => {
    const articles = addContentType('Article')

    articles.addSchemaField('absImage', ({ graphql }) => {
      return ({
        name: 'AbsoluteImagePath',
        type: graphql.GraphQLString,
        async resolve (node, args) {
          return node.cover_image ? `${ROOT}/${node.relImage}` : null
        }
      })
    })
  })
}

Update cover_image to match the field that contains the relative path of the image.

Ran into this problem today. Can't use g-image as a child component because I can't pass "~/assets/image.png" to it in a prop.

@Zyles try this:
<CustomComponent :image="require('!!assets-loader?width=800!~/assets/image.png')" />

@Zyles try this:
<CustomComponent :image="require('!!assets-loader?width=800!~/assets/image.png')" />

That gives me a  ?

That gives me a  ?

The prop in this case image should be type Object within CustomComponent not string, could you check that?

Got it working now. I was trying to use a computed property.
Solved it by calling my component in Index.vue:
<MyCustomComponent imageFile="image.png">
And in my MyCustomComponent:
<template>
<g-image :src="require('!!assets-loader!~/assets/' + imageFile)" />
</template>

export default {
  props: {
    imageFile: String
  }
}

@Zyles, I tried the code in your last comment but I'm getting Error: Cannot find module '!!assets-loader?...(image path here) in Gridsome 0.7.5. Is your solution still working for you?

Thanks @Zyles, my approach without using props (for anyone who is trying to do similar is):
<g-image :alt="author.name" class="author__image" :src="author.img" width="180" height="180" blur="5" />

and
export default {
  props: ['showTitle'],
  computed: {
    author() {
      return {
        name: 'Todd',
        img: require('!!assets-loader!~/assets/images/todd.jpg')
      }
    }
  }
}

I'm sure this approach is generally applicable regardless of where the data is coming from.

I created a PR which is trying to solve this. It's using require.context to resolve the image paths.

Any news about this issue? I've had to use solution https://github.com/gridsome/gridsome/issues/292#issuecomment-524371751

My solution to the issue is to just not to use <g-image> as a sub-component.
Instead what I do is create a slot where my g-image would have been and then just pass my g-image, tag and all, into the component using the slot.
Looks something like this...
// InlineIconFeature.vue
...

    // image goes here
    <slot></slot>

{{ heading }}

{{ description }}

...

Then in the parent template...
// Index.vue

<InlineIconFeature
  heading="Weddings"
  description="Lorem ipsum, dolor sit amet consectetur adipisicing elit."
>
  <g-image src="~/assets/images/wedding-rings.png" width="65px" />
</InlineIconFeature>

This is my way of putting a bandage over the problem while I wait for someone way smarter than me to come up with a better solution. 😁

Any updates on this?
Currently when i want to v-for through Cards (data returned from NetlifyCMS) dynamic
:src on g-image is not working.

Is there any solution now... for using dynamic path in g-image tag.
Example:
<g-image :src="imageUrl" width="500" />

data:()=> ({
  imageUrl = "~/assets/image.png"
})

But it is not working... can any body help me...

This has been working for me:
Go to gridsome.config.js and add an alias for your images folder inside of the chainWebpack function (you may need to add it):
module.exports = {
  siteName: 'Jeremy Jackson',
  plugins: [],
  chainWebpack: config => {
    config.resolve.alias.set('@images', '@/assets/images')
  },
  templates: {}
}

Save the file and restart the server.
Then in your code where you want to use the image you can do:
<g-image :src="require(`!!assets-loader!@images/${imageUrl}`)"/>

And the dynamic image shows up. This works inside of v-for as well.
For reference, here's the code I'm using inside of a v-for in my site:

Screenshots

      <g-image class="responsive-image" :src="require(`!!assets-loader!@images/${projectImage}`)"/>

and the result:

This has worked for me. If there's a better solution to this, let me know so I can fix my stuff ;)

This has been working for me:
Go to gridsome.config.js and add an alias for your images folder inside of the chainWebpack function (you may need to add it):
module.exports = {
  siteName: 'Jeremy Jackson',
  plugins: [],
  chainWebpack: config => {
    config.resolve.alias.set('@images', '@/assets/images')
  },
  templates: {}
}

Save the file and restart the server.
Then in your code where you want to use the image you can do:
<g-image :src="require(`!!assets-loader!@images/${imageUrl}`)"/>

And the dynamic image shows up. This works inside of v-for as well.
For reference, here's the code I'm using inside of a v-for in my site:

Screenshots

      <g-image class="responsive-image" :src="require(`!!assets-loader!@images/${projectImage}`)"/>

and the result:

This has worked for me. If there's a better solution to this, let me know so I can fix my stuff ;)

Thank you so much for this solution. It works to a point, but it doesn't seem to work correctly if you specify a width and height.  For example:
<g-image :src="require(!!assets-loader!@images/${imageUrl})"/> will render the same as <g-image :src="require(!!assets-loader!@images/${imageUrl})" width="100" height="100"/>
This is not the case if the variable path is replaced with a local path, in that case the image is re-sized per the documentation.
Does anyone have a solution to get the fully documented use of g-image when images urls are set by a variable like this?
Thank you again for this solution though, at least we can use variables finally!

Add a query string to the end of the file path, you should be able to set the width, height, quality, and blur through it.

Add a query string to the end of the file path, you should be able to set the width, height, quality, and blur through it.

Thank you! For anyone who who finds themselves here from Google, the tldr is see jeremyjackson89's answer https://github.com/gridsome/gridsome/issues/292#issuecomment-583692119 and then to specify a width/height/etc you add a query string right before the path. So the example above would become:
<g-image class="responsive-image" :src="require(`!!assets-loader?width=250?height=250!@images/${projectImage}`)"/>

Can anyone tell me why I'm unable to use the approaches mentioned here? I just always get
Cannot find module<EMAIL_ADDRESS>Do I need to configure the asset builder in webpack or something? I've added the extra bits @jeremyjackson89 suggests, but I still just get this error.

I see this solution is working.
Why it does not work when you pass the alias directly in the property value?
And why a new alias is required?
I mean, Shouldn't it work the same way if we simply pass a value like @/assets/images/myimage.jpg and then do <g-image :src="require(!!assets-loader?${projectImage})"/>
PS: not a webpack guru or anything... Just trying to understand what's going on here

I had the same problem and this is what I did:
<g-image :src="'~/assets/' + imageUrl" width="500" />

data:()=> ({
  imageUrl = "image.png"
})

Not working form me

I had the same problem and this is what I did:
<g-image :src="'~/assets/' + imageUrl" width="500" />

data:()=> ({
  imageUrl = "image.png"
})

Not working form me

@crstnmac Did you tried this one....

I had the same problem and this is what I did:
<g-image :src="'~/assets/' + imageUrl" width="500" />

data:()=> ({
  imageUrl = "image.png"
})

Not working form me

@crstnmac Did you tried this one....

Worked like charm

https://github.com/gridsome/gridsome/issues/137

Hi everyone!
I'm using the require assets-loader solution by @bbugh, but, when I'm using with images with extension name uppercased (like myimage.PNG, or myimage.JPG) an error occurs on g-image tag:
Error in render: "TypeError: Cannot read property 'width' of undefined"

I believe this error occurs because the return of the require function is not the same when my image has the extension name uppercased, like the following:
When the image has the extension name in lowercase:
{
  "type": "image",
  "mimeType": "image/jpeg",
  "src": "/assets/static/src/images/willian-justen-de-vasconcellos-11wof7joiek-unsplash.jpg?width=800&quality=100&fit=inside&key=3bf356f",
  "size": {
    "width": 800,
    "height": 800
  },
  "sizes": "(max-width: 800px) 100vw, 800px",
  "srcset": ["/assets/static/src/images/willian-justen-de-vasconcellos-11wof7joiek-unsplash.jpg?width=480&quality=100&fit=inside&key=3bf356f 480w", "/assets/static/src/images/willian-justen-de-vasconcellos-11wof7joiek-unsplash.jpg?width=800&quality=100&fit=inside&key=3bf356f 800w"],
  "dataUri": "data:image..."
}

When the image has the extension name in uppercase:
{
  "type": "file",
  "mimeType": "image/jpeg",
  "src": "/assets/files/src/images/_mg_0394.JPG"
}

My component:
<template>

    <g-image :src="imageURL"></g-image>

</template>

Any suggestion? Thanks!

@emanuelgsouza I encounter the same issue on my project, uppercase image ext are giving me the same error

Is this planned to be solved? Seems like a very important core feature :smile:

@jeremyjackson89 is my new hero. This worked like a charm.

I tried just about every solution here, but @jeremyjackson89's is the only one that worked like a charm.

This has been working for me:
Go to gridsome.config.js and add an alias for your images folder inside of the chainWebpack function (you may need to add it):
module.exports = {
  siteName: 'Jeremy Jackson',
  plugins: [],
  chainWebpack: config => {
    config.resolve.alias.set('@images', '@/assets/images')
  },
  templates: {}
}

Save the file and restart the server.
Then in your code where you want to use the image you can do:
<g-image :src="require(`!!assets-loader!@images/${imageUrl}`)"/>

And the dynamic image shows up. This works inside of v-for as well.
For reference, here's the code I'm using inside of a v-for in my site:

Screenshots

      <g-image class="responsive-image" :src="require(`!!assets-loader!@images/${projectImage}`)"/>

and the result:

This has worked for me. If there's a better solution to this, let me know so I can fix my stuff ;)

Does anyone knows if this works for remote images as well?

Using @jeremyjackson89 's solution, but I'm still looking for a way to add the g-image properties dynamically.
So this
require(!!assets-loader?width=1200&quality=85!@images/${filename})
is working, but this
require(!!assets-loader${query}!@images/${filename})
isn't
any workaround for this, or is it simply not possible?

@spaceneenja @knightspore it would be cool if you improved it, it's available in the gridsome.com repo https://github.com/gridsome/gridsome.org/tree/master/docs

Hey everyone! I would like to know if someone else has been having the same problem with the application bundle size after the @jeremyjackson89 solution. I share with you two screenshots that you can see the differences in app.js file.
Before the solution with require statement:

After the solution:

As you can see, the app bundle size increased almost 200k after adding the require statement.
To do more context, my component:
<template>

    <g-image
      :src="require(`!!assets-loader!@images/${imageName}`)"
      :alt="alt"
      :title="title"
      v-if="imageName"
    />

</template>

And an issue in our repository with more examples: https://github.com/storyblok/storyblok-gridsome-boilerplate-moon/issues/7
I don't know why this happens and how can I fix. Is anyone here experiencing the same problem?

Yeah I'm seeing a similar issue.
on a page
no image:
1312 bytes
hardcode path:
4539 bytes
dynamic path:
16848 bytes

Hey, is there any news on this topic? (>2yrs later)

Hi for me I think it would be easier to preprocess myself my images and put them on a remote somewhere then force them to be local and static just for gridsome to be able to process them. Is it possible to do that using img srcset but also be able to use the lazy loading and intersection observer part or is this last feature necessarily baked in the g-image?

Just for future viewers: although the solution provided above works, it's generally a bad idea - see comment here https://github.com/gridsome/gridsome.org/pull/519#issuecomment-689131121

I tried to look into this again and I have come to the realisation that source-filesystem is about parsing the contents of a file that is then loaded into GraphQL. Hence we have transformers like JSON, YAML and Markdown.
An image cannot be parsed as a string and hence we cant use source-filesystem + a transformer to add image nodes. This is why when you attempt to do this gray-matter throws an error because the contents of the file is not a string.
The way I see it, for an image to be added to GraphQL it can only be as a field of a another node, or as its own collection but not use source-filesystem.

@JFossey I have made a transformer which can handle the latter option (with source-filesystem): https://github.com/thetre97/gridsome-transformer-image

@thetre97 — can you show an example of how to use this?


extra lint rules

This turns on a few more ruff linting rules to help further standardise the codebase and ensure best practice.
It adds the following config to pyproject.toml:
[tool.ruff.lint]
select = [
    # pycodestyle
    "E",
    # Pyflakes
    "F",
    # pyupgrade
    "UP",
    # flake8-bugbear
    "B",
    # flake8-simplify
    "SIM",
    # isort
    "I",
]
ignore = ["E501"] # Line too long

These should be automatically detected and used by your ruff linter (if setup correctly).

Going to merge this too to reduce the backlog. The only behaviour change is better exception logging on the server, see e.g. here. Everything else is reformatting and linting.


Blog post for sprint 144 request page redesign

I would also add a section mentioning other issues we worked on. I would mention these pull requests/issues fixed as well:

https://github.com/openSUSE/open-build-service/pull/14349
https://github.com/openSUSE/open-build-service/pull/14607
https://github.com/openSUSE/open-build-service/pull/14614

Yoy can take this section of a blog entry from the YaST team as inspiration: https://yast.opensuse.org/blog/2023-02-16/announcing-d-installer-0-7#but-thats-not-all

I would also add a section mentioning other issues we worked on. I'm referring to these pull requests:

Refactoring tab visibility - use decorator instead of helper open-build-service#14349
Request description as part of the conversation history open-build-service#14607
Show the most relevant information of the current action in the dropdown open-build-service#14614

Yoy can take this section of a blog entry from the YaST team as inspiration: https://yast.opensuse.org/blog/2023-02-16/announcing-d-installer-0-7#but-thats-not-all

We usually don't post anything about issues in blog posts. I'll add this one to the post https://github.com/openSUSE/open-build-service/pull/14607


AnimationTreePlayer.  Unable to get the position of animation.

The AnimationTreePlayer node is missing tool receiving position animation.

AnimationTreePlayer is deprecated in Godot 3.1 and will be removed in Godot 3.2. It is replaced by AnimationTree, which was written from scratch and likely fixes/deprecates this issue.
If the issue is still relevant in some form with AnimationTree in Godot 3.1, please open a new issue about it (potentially linking this one if there is relevant discussion to keep track of).


Cannot send transactions with VIem adapter: Cannot use 'in' operator to search for 'rpcUrls' in undefined

I'm attempting to use an embedded wallet in my app with the Viem adapter, but I've been unable to get transactions to send. Transactions are failing with the following error:
TransactionExecutionError: An unknown RPC error occurred.

Request Arguments:
  from:   0x0e27Af5cF96515759ecF27FC3247556f450232DB
  to:     0x0000000000000000000000000000000000000000
  value:  0 ETH

Details: Cannot use 'in' operator to search for 'rpcUrls' in undefined
Version<EMAIL_ADDRESS>    at getTransactionError (chunk-RD27M5LS.js?v=f641f710:1334:10)
    at sendTransaction (chunk-RD27M5LS.js?v=f641f710:1416:11)

I've tried this several different inputs for 'defineChain', both with ViemChain types and chain ids, none of which seem to work.
This minimal reproduction is causing the error for me when building with Vite for use in a Sveltekit app with<EMAIL_ADDRESS>and<EMAIL_ADDRESS>import { createThirdwebClient, defineChain } from "thirdweb";
import { embeddedWallet } from "thirdweb/wallets/embedded";
import { viemAdapter } from "thirdweb/adapters/viem";

const tw = createThirdwebClient({
  clientId: PUBLIC_THIRDWEB_CLIENT_ID,
});

const twWallet = embeddedWallet();

const chain = defineChain(1);

const account = await twWallet.connect({
  client: tw,
  strategy: "google",
});

const walletClient = viemAdapter.walletClient.toViem({
  client: tw,
  account,
  chain,
}) as Wallet;

await walletClient.sendTransaction({
  to: zeroAddress,
  value: BigInt(0),
});

and<EMAIL_ADDRESS>
I assume it's 2.9.6 :)
I'll take a look at this and see if I can reproduce it. Thank you for reporting this!

We should be able to add a test-case for this to reproduce it, fix it and make sure it does not happen again.

likely that the issue is happening in the viem adapter code-path, somewhere here

hey there @jaxernst could you try with this dev build and see if it fixes your issue?
<EMAIL_ADDRESS>I was able to reproduce the error and added a test in #2662, but would love if you could confirm it works with this version, I'll then cut a new stable release tonight

keeping open to wait for confirmation of fix using the change

Just tested, all working for me now! Thank you

Great, closing. We'll ship the release in the morning!


Including docs on Tab parameters

With this present we can close #355, as there's a feature that solves that issue but was not documented.

Thank you @igorsantos07! But it's against the wrong branch ;)
Could you create a new PR against master and update this file instead?
https://github.com/tleunen/react-mdl/blob/master/docs/pages/components/tabs.md

Whoops. Haha will do
Igor Santos
-- Desenvolvedor Web
[enviado do meu celular]
On Aug 12, 2016 11:08, "Tommy"<EMAIL_ADDRESS>wrote:

Closed #363 https://github.com/tleunen/react-mdl/pull/363.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tleunen/react-mdl/pull/363#event-754042223, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfS1e4HduUmKXbRwxOWEyDC50XReWIks5qfH5EgaJpZM4Jiyto
.


Nancy availability?

Hi,
Any plans to make a pretrained model for cloning prosody available? As is, the script run_prosody_override.py simply doesn't work.

This has nothing to do with the Nancy dataset, you can use any model for this. The model downloader script downloads a model with the ID "Meta", you can just select this. I'll change the default.

I fixed a shape mismatch in the prosody override, now everything should work, as long as you're using an existing model.


Ability to install to Discord Development Build

Windows: https://discord.com/api/download/development?platform=win
Debian: https://discord.com/api/download/development?platform=linux
macOS: https://discord.com/api/download/development?platform=osx
Discord keeps a secret development build, the client says it's Canary, but it gets even more updates and uses less resources. When I select this version in the installer, the installer just says that Discord Canary is not installed.

This has generally been known, however it's extremely low priority for a few reasons.

Discord development is actually an abandoned client. The client in practice just redirects to the canary API endpoint.
Barely anyone uses it and it's generally not well known.
There will need to be some changes in the client for it to work.

There is currently an open pull to add support on the client, however if this pull does get merged it will likely not be added to the installer. Instead you'll most likely have to perform a manual injection by building the client from it's source code and running the inject script. This is for the reasons listed above.

Leaving this issue open for discussion.

Created a fork: https://github.com/dikahdoff/BetterDiscordApp
Use npm run inject dev to install to Dev build.

I still don't understand the point of supporting it, I cannot seem to get any definitive information about the utility of the development build. https://github.com/rauenzi/BetterDiscordApp/issues/520#issuecomment-812629675

I still don't understand the point of supporting it, I cannot seem to get any definitive information about the utility of the development build. rauenzi/BetterDiscordApp#520 (comment)

i mean its basicly a fork of canary but with a few differences. i still think it should be install able just incase the client changes build branch to its own thing or if someone just likes the black icon

I still don't understand the point of supporting it, I cannot seem to get any definitive information about the utility of the development build. rauenzi/BetterDiscordApp#520 (comment)

You can add the feature for manually injecting via nodejs directly and just not add it to the UI installer. It's almost the same as Canary but has a few minor changes. It's fairly simple to do, (like 6 people have git cloned and modified it already to allow for it) There is already a PR (a few) for it if you want to just add the: npm run inject dev feature.

I don't plan to add this to the installer

not working

did they stop supporting it? I get this if i open the installer

did they stop supporting it?
The Development client no longer installs properly. If you have an existing install it will continue to work. Any hope for using the Development client again on a new install relies on an update causing the client to start working... again.

did they stop supporting it?
The Development client no longer installs properly. If you have an existing install it will continue to work. Any hope for using the Development client again on a new install relies on an update causing the client to start working... again.

do you think they will ever actually update it again?

if u delete update in the folder and run it it works perfectly fine

@wockaid which folder does it exclude?

if u delete update in the folder and run it it works perfectly fine

Wow, it actually does. That's pretty cool.

@wockaid which folder does it exclude?

Delete Update.exe from %localappdata%\DiscordDevelopment

I've used the Development client of Discord by using the WSL with a command, but I forgot it... I'm pretty sure it still works.


[BUG] Handle exception in train task - key metrics

Describe the bug
New exception showed up during training:
2024-12-02 06:56:33.131 | INFO     | canswim.covariates:stack_covariates:250 - stacked covariates column count: 15
2024-12-02 06:56:33.133 | INFO     | canswim.covariates:prepare_key_metrics:277 - preparing past covariates: key metrics
2024-12-02 06:56:41.704 | ERROR    | canswim.train:main:123 - Skipping train loop due to ERROR.: cannot reindex on an axis with duplicate labels
Traceback (most recent call last):

  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code

  File "/home/ivelin/canswim/src/canswim/__main__.py", line 128, in <module>
    train.main(new_model=args.new_model)
    │     │              │    └ False
    │     │              └ Namespace(task='train', forecast_start_date=None, new_model=False, same_data=False)
    │     └ <function main at 0x798d14343ba0>
    └ <module 'canswim.train' from '/home/ivelin/canswim/src/canswim/train.py'>

> File "/home/ivelin/canswim/src/canswim/train.py", line 119, in main
    trainer.canswim_model.prepare_data()
    │       │             └ <function CanswimModel.prepare_data at 0x798d17192c00>
    │       └ <canswim.model.CanswimModel object at 0x798d14723510>
    └ <canswim.train.CanswimTrainer object at 0x798d15617590>

  File "/home/ivelin/canswim/src/canswim/model.py", line 418, in prepare_data
    self.prepare_forecast_data(self.train_date_start)
    │    │                     │    └ Timestamp('1991-01-01 00:00:00')
    │    │                     └ <canswim.model.CanswimModel object at 0x798d14723510>
    │    └ <function CanswimModel.prepare_forecast_data at 0x798d17192b60>
    └ <canswim.model.CanswimModel object at 0x798d14723510>

  File "/home/ivelin/canswim/src/canswim/model.py", line 375, in prepare_forecast_data
    self.covariates.prepare_data(
    │    │          └ <function Covariates.prepare_data at 0x798d316c84a0>
    │    └ <canswim.covariates.Covariates object at 0x798d154be390>
    └ <canswim.model.CanswimModel object at 0x798d14723510>

  File "/home/ivelin/canswim/src/canswim/covariates.py", line 461, in prepare_data
    self.prepare_past_covariates(
    │    └ <function Covariates.prepare_past_covariates at 0x798d316c8a40>
    └ <canswim.covariates.Covariates object at 0x798d154be390>

  File "/home/ivelin/canswim/src/canswim/covariates.py", line 668, in prepare_past_covariates
    kms_series = self.prepare_key_metrics(stock_price_series=stock_price_series)
                 │    │                                      └ {'AADI': <TimeSeries (DataArray) (Date: 1751, component: 5, sample: 1)>
                 │    │                                        array([[[6.97500000e+01],
                 │    │                                                [7.27500000e+01],
                 │    │                                         ...

  File "/home/ivelin/canswim/src/canswim/covariates.py", line 668, in prepare_past_covariates
    kms_series = self.prepare_key_metrics(stock_price_series=stock_price_series)
                 │    │                                      └ {'AADI': <TimeSeries (DataArray) (Date: 1751, component: 5, sample: 1)>
                 │    │                                        array([[[6.97500000e+01],
                 │    │                                                [7.27500000e+01],
                 │    │                                         ...
                 │    └ <function Covariates.prepare_key_metrics at 0x798d3169fd80>
                 └ <canswim.covariates.Covariates object at 0x798d154be390>

  File "/home/ivelin/canswim/src/canswim/covariates.py", line 317, in prepare_key_metrics
    tkms_series_tmp = TimeSeries.from_dataframe(
                      │          └ <classmethod(<function TimeSeries.from_dataframe at 0x798e105002c0>)>
                      └ <class 'darts.timeseries.TimeSeries'>

  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/darts/timeseries.py", line 723, in from_dataframe
    return cls.from_xarray(
           │   └ <classmethod(<function TimeSeries.from_xarray at 0x798e10500180>)>
           └ <class 'darts.timeseries.TimeSeries'>
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/darts/timeseries.py", line 378, in from_xarray
    xa_ = cls._fill_missing_dates(xa, freq=freq)
          │   │                   │        └ 'B'
          │   │                   └ <xarray.DataArray (Date: 135, component: 59, sample: 1)>
          │   │                     array([[['1990'],
          │   │                             [4],
          │   │                             [1.9132096385027146],
          │   │                            ...
          │   └ <classmethod(<function TimeSeries._fill_missing_dates at 0x798e10510a40>)>
          └ <class 'darts.timeseries.TimeSeries'>
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/darts/timeseries.py", line 4367, in _fill_missing_dates
    return cls._restore_xarray_from_frequency(xa, freq)
           │   │                              │   └ 'B'
           │   │                              └ <xarray.DataArray (Date: 135, component: 59, sample: 1)>
           │   │                                array([[['1990'],
           │   │                                        [4],
           │   │                                        [1.9132096385027146],
           │   │                                       ...
           │   └ <classmethod(<function TimeSeries._restore_xarray_from_frequency at 0x798e10510cc0>)>
           └ <class 'darts.timeseries.TimeSeries'>
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/darts/timeseries.py", line 4527, in _restore_xarray_from_frequency
    resampled_time_index = resampled_time_index.asfreq(freq)
                           │                    │      └ 'B'
                           │                    └ <function NDFrame.asfreq at 0x798e22d81620>
                           └ Date
                             1991-01-31    NaN
                             1991-04-30    NaN
                             1991-07-31    NaN
                             1991-10-31    NaN
                             1992-01-31    NaN
                                          ...
                             2023-07-31  ...
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/pandas/core/generic.py", line 8878, in asfreq
    return asfreq(
           └ <function asfreq at 0x798e21d46b60>
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/pandas/core/resample.py", line 2690, in asfreq
    new_obj = obj.reindex(dti, method=method, fill_value=fill_value)
              │   │       │           │                  └ None
              │   │       │           └ None
              │   │       └ DatetimeIndex(['1991-01-31', '1991-02-01', '1991-02-04', '1991-02-05',
              │   │                        '1991-02-06', '1991-02-07', '1991-02-08...
              │   └ <function Series.reindex at 0x798e22311940>
              └ Date
                1991-01-31    NaN
                1991-04-30    NaN
                1991-07-31    NaN
                1991-10-31    NaN
                1992-01-31    NaN
                             ...
                2023-07-31  ...
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/pandas/core/series.py", line 4981, in reindex
    return super().reindex(
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/pandas/core/generic.py", line 5521, in reindex
    return self._reindex_axes(
           │    └ <function NDFrame._reindex_axes at 0x798e22d76e80>
           └ Date
             1991-01-31    NaN
             1991-04-30    NaN
             1991-07-31    NaN
             1991-10-31    NaN
             1992-01-31    NaN
                          ...
             2023-07-31  ...
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/pandas/core/generic.py", line 5544, in _reindex_axes
    new_index, indexer = ax.reindex(
                         │  └ <function Index.reindex at 0x798e27369940>
                         └ DatetimeIndex(['1991-01-31', '1991-04-30', '1991-07-31', '1991-10-31',
                                          '1992-01-31', '1992-04-30', '1992-07-31...
  File "/home/ivelin/anaconda3/envs/canswim/lib/python3.11/site-packages/pandas/core/indexes/base.py", line 4434, in reindex
    raise ValueError("cannot reindex on an axis with duplicate labels")

ValueError: cannot reindex on an axis with duplicate labels
2024-12-02 06:56:42.572 | INFO     | canswim.train:main:142 - Skipping daily routine. Yesterday: 2024-12-02 00:00:00, wall_time: 2024-12-02 06:56:42.572893
2024-12-02 06:56:42.573 | INFO     | canswim.train:main:161 - Skipping weekend routine. Previous weekend: 2024-11-30 00:00:00, wall_time: 2024-12-02 06:56:42.573018
2024-12-02 06:56:42.573 | INFO     | canswim.model:load_model:429 - Loading saved model name: canswim_model.pt
2024-12-02 06:56:43.571 | INFO     | canswim.model:load_model:433 - Loaded saved model name: canswim_model.pt,

To Reproduce
Steps to reproduce the behavior:
canswim train

Expected behavior
Code needs to handle this new data issue or handle exception more gracefully.
Desktop (please complete the following information):

PopOS latest desktop

No more exceptions after #65 was fixed. Appears that the yf corrupted data was causing training exceptions.


saucectl run with puppeteer not working

Problem:-
An error saying "No tests found, exiting with code 1" is coming when i execute saucectl run command.
Environment:-
Windows 10
saucectl version 0.15.0
CONFIG.YML
apiVersion: v1alpha
metadata:
name: Feature XYZ
tags:
- e2e
- release team
- other tag
build: Release $CI_COMMIT_SHORT_SHA
files:

tests/example.test.js
suites:

name: "saucy test"
match: ".*.(spec|test).js$"
image:
base: saucelabs/stt-puppeteer-jest-node
version: latest
sauce:
region: eu-central-1

Details
I am very new to saucectl and trying to explore and i have been following the below documentation link
https://github.com/saucelabs/testrunner-toolkit

Install using npm i -g saucectl
Set SAUCE_USERNAME and SAUCE_ACCESS_KEY in system environment variables
Run saucectl new
Choose Puppeteer project(./sauce/config.yml file is being created and an example tests under the tests directory is also created successfully)
Run saucectl run

Logs
PS C:\sauceLab_PuppeteerDemo> saucectl run

<EMAIL_ADDRESS>test /home/seluser
DISPLAY="$(cat DISPLAY)" DEBUG="puppeteer:*" jest --config=./.config/jest.config.js --runInBand

cat: DISPLAY: No such file or directory
No tests found, exiting with code 1
Run with --passWithNoTests to exit with code 0
In /home/seluser
10 files checked.
testMatch: /home/seluser/tests/example.test.js - 0 matches
testPathIgnorePatterns: /node_modules/ - 10 matches
testRegex:  - 0 matches
Pattern:  - 0 matches
npm ERR! Test failed.  See above for more details.

Thank you for trying out saucectl!
Could I ask you to download the newest saucectl release (https://github.com/saucelabs/saucectl/releases/tag/v0.16.1) that just came hot off the press and try this again (and post its log output again if it doesn't work)?
Also, it'd be great if you could set the version of the docker image specifically inside the config.yml file:
image:
  base: saucelabs/stt-puppeteer-jest-node
  version: v0.1.10

To ensure that it's not using some cached, older version of "latest" :)

Closing due to inactivity.


Nav bar expands vertically when too many top level nav items present

Environment

Python version: 3.8
Nautobot version: 1.2.7

Steps to Reproduce

Have a plugin register enough top level nav items that all horizontal space in the nav bar is consumed

Expected Behavior
The nav bar should be responsive to the available horizontal space and alter the navigation without compromising the vertical space the nav bar consumes.

Observed Behavior
The nav bar search is pushed down which doubles the vertical size of the nav bar resulting in the nav bar covering critical UI elements like buttons and text.

Currently the wrapping/collapsing of the nav bar is based on hard-coded pixel widths (see for example #1217). We need to rework this so that it's dynamic based on what menus are actually present.


Allow to put web-ui on separate port/host

I'd like to put the web-ui on a different port or a different subdomain, but couldn't find an option to do so.
This might also be workarount for #238, as it allows to set a password in the reverse proxy you might run in front of ntfy

Could you elaborate on the use case? Why it be useful to split the web app and the API?

Could you elaborate on the use case? Why it be useful to split the web app and the API?

E.g. to make the webUI only accessible via an internal URL or VPN. I know that the client itself does not provide acess to any confidential information without having the credentials, but I don't want it to be visible/accessible for anyone.

It feels a bit arbitrary and doesn't really need to happen in ntfy (you could do this in nginx or apache), so I think I'm going to take the liberty to say "no" to this request. ntfy already has a lot of config options and is more confusing than I'd want it to be. This seems unnecessary, since it is a cosmetic change with no real security/other benefit.
In nginx, you can restrict routes for certain IP ranges easily, so you don't need ntfy to help you via a different port.
Keep the tickets coming, and don't be discouraged by me not implementing everything.

Makes sense, in that case I'd suggest adding an example of how to set this up in the docs, since there is already an example on the reverse proxy setup. I tried earlier with nginx but couldn't get it to work properly. If I'm successful I'll let you know


PipelineValidationFailed for external reference after update from 0.49 to 0.50

Expected Behavior
We use TriggerTemplate with reference to Pipeline in another namespace.
 spec:   resourcetemplates:     spec:           pipelineRef:         params:         - name: kind           value: pipeline         - name: name           value: my-pipeline         - name: namespace           value: my-tekton-catalog         resolver: cluster
Everything worked as expected till version 0.50. Cluster-resolver uses default configuration from release.yaml
Actual Behavior
PipelineRun in the app namespace throws an error PipelineValidationFailed with the message:
message: 'validation failed for referenced Pipeline k8s-deploy-app: the namespace       of the provided object does not match the namespace sent on the request'
I observed no errors in Resolution requests or in the logs of tekton-pipelines-resolver.
Everything works as expected when I copy Pipeline from the catalog namespace to the app workspace and change 'pipelineRef:' block to simple 'name:'.
A simple change of resolver image to v0.49 version does not fix the problem. Complete rollback of release.yaml to v0.49 does.
Additional Info

Kubernetes version: 1.26.6
Output of kubectl version:

Client Version: v1.27.4
Kustomize Version: v5.0.1
Server Version: v1.26.6

Tekton Pipeline version:
Output of tkn version or kubectl get pods -n tekton-pipelines -l app=tekton-pipelines-controller -o=jsonpath='{.items[0].metadata.labels.version}'

v0.50.0

Hey @isniukArte, this is a similar issue as https://github.com/tektoncd/pipeline/issues/7015 and has been fixed by https://github.com/tektoncd/pipeline/pull/7017 👼🏼
It's gonna be in the upcoming 0.50.1 release, which I am trying to get released today 😉


ISSUE-792: Move checkUserFollowing method to TestUtils

Describe your changes :

I worked on the move ckechUserFollowing method from TableResourceTest, ChartResourceTest, and TopicResourceTest to TestUtils.

Type of change :

[x] New feature

Frontend Preview (Screenshots) :
For frontend related change, please link screenshots of your changes preview! Optional for backend related changes.

Checklist:

[x] I have read the CONTRIBUTING document.
[x] I have performed a self-review of my own.
[x] I have tagged my reviewers below.
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] My changes generate no new warnings.
[ ] I have added tests that prove my fix is effective or that my feature works.
[x] All new and existing tests passed.

Reviewers

@kozhukhovsky thank you for your first contribution. Hopefully there are many more to come! 👏🏼👏🏼👏🏼


Saga parallelism

It would be good to be able to perform optimistic concurrency check to avoid data corruption when running a few instances at the same time.
I propose to add Revision property of type uint to the ISagaState.

Hi, I believe such thing is covered inside ISagaCoordinator:
using (await Locker.LockAsync(id))
            {
                var (isInitialized, state) = await _initializer.TryInitializeAsync(saga, id, message);

                if (!isInitialized)
                {
                    return;
                }

                await _processor.ProcessAsync(saga, message, state, context);
                await _postProcessor.ProcessAsync(saga, message, context, onCompleted, onRejected);
            }

Therefore adding the revision/version should not be necessary.

Hi, I believe such thing is covered inside ISagaCoordinator:
using (await Locker.LockAsync(id))
            {
                var (isInitialized, state) = await _initializer.TryInitializeAsync(saga, id, message);

                if (!isInitialized)
                {
                    return;
                }

                await _processor.ProcessAsync(saga, message, state, context);
                await _postProcessor.ProcessAsync(saga, message, context, onCompleted, onRejected);
            }

Therefore adding the revision/version should not be necessary.

It will work only if you process saga on a single PC.

That's a good point... I need to come up with some sort of distributed storage for such a scenario. Will do my best to deliver this quite soon.

That's a good point... I need to come up with some sort of distributed storage for such a scenario. Will do my best to deliver this quite soon.

Any update :D?


Ideation 💡

As we have covered GitHub, what platform we should cover next? 🤔
Do add a comment here and let us know 💫

Twitter ,instagram,medium

We can scrape data from amazon.com

We can also scrape data from YouTube and Facebook in addition to the sites mentioned here.

Guys, what about LinkedIn !!! 🤔

Nice idea
Pls allow me to work on it

Please assign me the project for flipkart,amazon,myntra

Hey @VardaPanchal005, this issue will not be assigned to someone, this is a place to discuss ideas.

maybe google images?

maybe google images?

Sounds good. So, like downloading images by keywords?
Like, google.images(obj="computer") ?

yeah probably. does that sound like an issue worth working on? coz in that case, i'd like to

Hey @VardaPanchal005, this issue will not be assigned to someone, this is a place to discuss ideas.

Okay sir. But is that an idea worth working on?

Yes, one more !! Kaggle will be an awesome choice to go 💫

What about stock market analysis, Sports score and statistic ?

@nikhil25803 so do I have the go ahead to make an issue?

Hi,
I'm a GSSoC 2023 contributor and would like to work on this issue. It would be great if you could assign it to me.
Thanks and regards,
tushar verma

Hey!!
I'm a contributor in GSSoC 2023 and would like to Contribute on this issue. It would be Awesome if you assign this work to me.
Thanks and regards,
Kunal shrivastava

We can scrape the data from medium

Great idea @karthikbhandary2

So @nikhil25803 should I create a new issue to work on it?

Yes, go ahead @karthikbhandary2

yeah, where should I add the code along with the Instagram and GitHub ones? @nikhil25803

In my thought Reddit would be a good platform for web scraping as it consists of numerous communities - "subreddits" dedicated to specific interests, such as technology, news, gaming, fashion, and more. This diverse content makes Reddit a valuable source for scraping data on various subjects. Reddit is primarily driven by user-generated content in the form of posts, comments, and discussions. This provides a vast amount of data that can be scraped and analyzed for sentiment analysis, trend identification, opinion mining, or content aggregation. Most of the content on Reddit is publicly accessible, meaning that you don't usually need an account or special permissions to view the posts and comments. This accessibility makes it easier to scrape data from Reddit compared to platforms that require authentication or have strict access restrictions. Reddit follows a structured format for its content, with clear hierarchies of posts, comments, and replies. This structure simplifies the process of navigating and extracting data from Reddit using scraping techniques. Additionally, Reddit provides an API (Application Programming Interface) that allows developers to access data in a structured and controlled manner.Reddit has a large and active user community, resulting in a constant flow of new content and discussions. This makes Reddit a real-time source of information and opinions, which can be valuable for monitoring trends, gathering up-to-date data, or conducting sentiment analysis in real-time. Reddit provides an official API (known as the Reddit API) that allows developers to access and retrieve data from Reddit in a controlled and authorized manner. The API provides endpoints to fetch posts, comments, user information, and other data, making it easier to scrape Reddit content programmatically.

Hi! Just wanted to share this dataset I created with the help of the scrape-up package. Feel free to play with it.
Thank you :)

That's great @Schefflera-Arboricola | This is what our motive is, glad you shared.
Thank a lot ✨


When the persistent socket is disabled, batch segment sends and share a UDP socket for each batch

When running in a Lambda function and when a segment contains a lot of sub-segments, it's possible to exhaust the number of file descriptors and have errors reporting the segments. This change will allow many segments that are sent at the same time to share a single socket. This change means many fewer sockets will be created and should have at least two advantages:

Should be more efficient, but I have not measured it
It avoids the errors of running out of file handles for large segments. I have verified this by deploying  patched version in our our environment and seeing the fix.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@haotianw465 or @awssandra any thoughts on this? We're using a patched version of this library in our deployments right now and I'd love to move to an official version if this can be merged. If there are any changes you'd like to see I'm happy to do the work.

@haotianw465 checkout my new updates. I've improved the function and variable names. I also added comments to the new functions that explains their use

I have two concerns. One is that this might cause stack overflow. Based on my understanding the number of recursive calls == ops.length per batch execution but the batch size is decided by the library and likely to be aggressive based on what you said "The default batch size is as many as big as possible". But considering the load you have would otherwise exhaust the file descriptors and your application is running fine with batching, I think this should not be an issue.
The other thing is that the socket send buffer for each socket has a fixed size per OS. Although now the  emitter uses less sockets, the requirement for a single socket throughput is higher since it is sending multiple segment documents to a single socket and the send buffer needs to be cleared fast enough (which means the X-Ray daemon needs to read fast enough) so the packet will not be dropped (or send blocked depending on OS config) due to buffer full. The UDP traffic is local so this is likely not an issue neither, but I don't have data or evidence to say there is no chance of such case happening.
Having said that, I think this is a more optimized strategy for most use cases. We might have to provide an opt-in option to switch back to one socket per send for some special cases. I'm happy to merge this but I would like to hear from your thoughts on these concerns. It would also be good if you increase the subsegment size of your Lambda function and test it out. The simplest way is to add a big chunk of metadata to each subsegment. This test makes sure the PR still works best for you when the subsegments grow into a certain size as you add more information to it.

Re the stack overflow. I don't think it's an issue because the callback should be called asynchronously. Each call to sendMessage is an IO action and so it should generate a new IO event and callback when it's done. If you are still concerned, setImmediate could be used to avoid the issue. I don't think it's needed.
Re socket send buffer. This code moves the Lambda mode slightly towards the performance of the non-Lambda mode. So if there are no issues with the fully used socket I don't expect there will be any issues with this version either. It should be less efficient than the non-Lambda mode.
I think I understand both of your concerns, but I don't think that either one needs a change. We have been running with this change and some pretty large X-Ray segment lists without any trouble in their scenario. Like you said, before this it was a crash instead =)

Done. This PR is released in 1.3.0 with some other changes. https://github.com/aws/aws-xray-sdk-node/blob/master/packages/core/CHANGELOG.md


Setting custom ffmpeg/ffprobe binary path

I'd like to use python-ffmpeg-video-streaming and set a custom path to the ffmpeg and ffprobe binaries (as opposed to using the value found in the path), as I have multiple custom ffmpeg builds available on my system.
I see the run_command call in _media.py:
               run_command: bool = True, ffmpeg_bin: str = 'ffmpeg', monitor: callable = None, **options):
And in _command_builder.py:
def command_builder(ffmpeg_bin: str, media):
How can I override this value without having to modify the code myself & recompile?

Try this:
hls = video.hls(Formats.h264())
hls.auto_generate_representations(ffprobe_bin="/custom/path/to/ffprobe")
hls.output('/var/media/hls.m3u8', ffmpeg_bin="/custom/path/to/ffmpeg")

ffprobe = FFProbe('/var/media/video.mp4', ffprobe_bin="/custom/path/to/ffprobe")


MicroPython time.time() value is wrong

I did in micropython:
>>> import time
>>> time.time()
4790818803

Then in my PC I converted it to datetime:
>>> import datetime
>>> print(datetime.datetime.fromtimestamp(4790818803)
2121-10-25 10:00:03

In my PC now:
>>> time.time()
1628497438.6996312
>>> datetime.datetime.fromtimestamp(1628497438.6996312)
datetime.datetime(2021, 8, 9, 11, 23, 58, 699631)

Thanks! Is this behavior different from the physical Pi Pico? (I don't have one at the moment to test it on)

Unfortunately I have not Pico myself.
Best,
Tony
ma 9. elok. 2021 klo 12.13 Uri Shaked @.***) kirjoitti:

Thanks! Is this behavior different from the physical Pi Pico? (I don't
have one at the moment to test it on)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/wokwi/rp2040js/issues/77#issuecomment-895067583, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AARTO2COTD7COME4FNWPQALT36L3BANCNFSM5BZQ4CMQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

--
Best regards / Ystävällisin terveisin
Tony Veijalainen DBA/Tmi Trusty Tony
@., @.
tel. / p. +358 50 371 1265

I googled micropython, and it looks epoch is different actually.
Time Epoch: Unix port uses standard for POSIX systems epoch of 1970-01-01 00:00:00 UTC. However, embedded ports use epoch of 2000-01-01 00:00:00 UTC.
Time from the number was in future, with later epoch one would expect that. So maybe this is just micropython difference from standard. Interesting was that it was whole number, but PC number had fractions of second.

I did calculation in Spreadsheet
Epoch	Now	Days	Seconds
1.1.2000	9.8.2021	7891	681782400
1.1.1970	9.8.2021	18848<PHONE_NUMBER>
So expected value would be around 681782400. But maybe it is not expected to be RTC in many embedded applications.


1010updates

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/core/how-to-configure-iis-for-an-http-receive-location.md
:white_check_mark:Succeeded
View

biztalk/dev-center/his-biztalk-adapters.md
:white_check_mark:Succeeded
View

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.


Inheritance of types with With attribute write methods that change type

Describe the bug
When I apply the With attribute to types where they inherit from each other, the With methods are made in each partial type and therefore the return type is possibly wrong in usage.
To Reproduce
[With(MemberType = Property)]
public partial class BaseClass
{
   public int Id { get; set; }
}

[With(MemberType = Property)]
public partial class InheritingClass : BaseClass
{
   public string Name { get; set; }
}

Generates
public partial class BaseClass
{
   public BaseClass WithId(int id)
   {
      this.Id = id;

      return this;
   }
}

public partial class InheritingClass
{
   public InheritingClass WithName(string name)
   {
      this.Name = name;

      return this;
   }
}

Issue Created By
InheritingClass myInheritingClass = new InheritingClass().WithId(1);

The type is InheritingClass, yet WithId(int id) returns BaseClass and the above will not compile.
Expected behavior
I think the approach should be changed to implement extension methods instead that are implemented as such:
public static partial class WithExtensions
{
   public static TBaseClass WithId<TBaseClass>(this TBaseClass baseClass, int id) where TBaseClass : BaseClass
   {
      baseClass.Id = id;

      return baseClass;
   }

   public static TInheritingClass WithName<TInheritingClass>(this TInheritingClass inheritingClass, string name) where TInheritingClass : InheritingClass
   {
      inheritingClass.Name = name;

      return inheritingClass;
   }
}

Environment info
.NET version:  8.0
Lombok.NET version: 2.4.0

This would be a rather major change, this should work for you:
public class BaseClass
{
    public int Id { get; set; }
}

[With(MemberType = MemberType.Property, IncludeInheritedMembers = true)]
public partial class InheritingClass : BaseClass
{
    public string Name { get; set; }
}

Note there was still a bug with this approach in v2.4.0, but it is fixed in v2.4.1.


Uncalled-for warning after disabling pylint: Linter pylint is not installed

Environment data

VS Code version: 1.26.1
Extension version: Python
OS and version: Mac Sierra 10.12.6
Python version: Python 3.7.0
Type of virtual environment used: virtualenv
Relevant/affected Python packages and their versions: pylint, flake8, black
vscode settings:

{
    "workbench.startupEditor": "newUntitledFile",
    "editor.minimap.enabled": false,
    "python.linting.pylintEnabled": false,
    "python.linting.flake8Path": "${workspaceRoot}/venv/bin/flake8",
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": [
        "--max-line-length=90"
    ],
    "python.formatting.provider": "black",
    "python.formatting.blackPath": "${workspaceRoot}/venv/bin/black",
    "python.formatting.blackArgs": [
        "--line-length=90"
    ],
    "editor.formatOnSave": true,
    "python.unitTest.pyTestEnabled": true,
    "python.unitTest.pyTestPath": "${workspaceRoot}/venv/bin/pytest",
    "editor.minimap.enabled": false
}

settings.
{
    "python.pythonPath": "${workspaceRoot}/venv/bin/python",
}

Actual behavior
After configuring the setting:
"python.linting.pylintEnabled": false,

the following warning is displayed:

(Linter pylint is not installed.)
Even though flake8 and black are working correctly and pylint is disabled, this warning is displayed everytime a python file is modified and saved.
Expected behavior
The warning should not be displayed.
Steps to reproduce:

Apply the aforementioned vscode settings
Initialize virtualenv
Save a python program

Hi @saimkhan92 thanks for the report.
I cannot seem to reproduce this on the latest VSCode and vscode-python extension. I see your reported version of the VSCode editor itself is a bit behind (I'm on 1.27.2 now), could you perhaps try and see if that fixes the issue?

@saimkhan92

Where are the settings.json file contents from?
Is that your user settings, workspace settings?
The settings is located in the .vscode subdirectory of your workspace.

What folder do you have opened in VS Code?
Please could you take a screen shot of VS Code along with the Explorer View, so we can see the folder structure.

Because we have not heard back with the information we requested, we are closing this issue for now. If you are able to provide the info later on then we will be happy to re-open this issue to pick up where we left off.


CSCETSIN-302: Exclude datasets with preservation_dataset_origin_version

Datasets with the field 'preservation_dataset_origin_version' should be excluded from elastic search.
These datasets are PAS datasets that exist in two versions, one in PAS and one normal version. The PAS version is now excluded from elasticSearch, displaying only the original version of the dataset. Navigating to the original version, through Etsin, will display a link to the PAS version.
Added functionality that checks if 'preservation_dataset_origin_version' exists. These checks run both the first time a dataset enters elastic search (callback_create), and on possible updates (callback_update)

Closed, due to needed update in callback_create

Update done and tested locally, pull request should be ready for review.


Configuration api is not suitable for use

The problem we have with passing configuration to ember-cli-embedded is that all code references have to be changed which access config/environment.js.
const embeddedConfig = container.lookup('config:embedded');

The problem is that config:embedded is only available when ember-cli-embedded is enabled, meaning it can't be environment specific.
We've ended up doing plain ember approach:
GlobalAppVar.__container__.lookupFactory('config:environment').APP.host = 'example.com'

Advantages

app does not depend on ember-cli-embedded
no code changes required for embedded mode

Issues

not all config will reflect changes (e.g. rootElement does not work)

What are the advantages of introducing new configuration system with ember-cli-embedded rather than using existing one?

What are the advantages of introducing new configuration system with ember-cli-embedded rather than using existing one?

Avoiding configuration collision was my first thought. But if what you want is to merge external and internal configuration, then obviously it defeats the point.
Good point on the config:embedded not being always available.
I've created #4 as the target for the related enhancement, feel free to comment.

i guess we'll move discussion to #4


[JOSS review] Names could be less ambiguous

This is part of the review feedback for JOSS submission (https://github.com/openjournals/joss-reviews/issues/6024)
I am going to keep track here of user facing variables that could be more precise.

[ ] structure_path is not just the path but the file name as well
I think naming it structure_file would be more clear. If you do want to emphasise that a path can be provided it seem that you have the code for that in DebyeCalculator().interact()

All the computation return tuples of parameters in reverse order from the name of the method. Is this on purpose?

[ ] calc.iq returns Q, I
[ ] calc.sq returns Q, S
[ ] calc.fq returns Q, F
[ ] calc.gr returns r, G
Another reviewer mentioned that namedtuples would improve this situation and I agree, I think giving outputs more precise names,  together with namedtuples for the two parameters would make the output more intuitive; ie. calc.scattering_intensity() would return ScatteringIntensity(values, points)/ (y, x)/(ordinate, abscissa).... It also feels like those second return parameters are optional (?)

Thank you for the suggestion of changing the naming of the variables.
We have now renamed structure_path to structure_source. This change is more in line with the expanded input formats that were developed after the feedback in suggestion #21.

All the computation return tuples of parameters in reverse order from the name of the method. Is this on purpose?

Yes, that's intentional. The functions return Q and I (in that order) since it's customary to plot Q on the x-axis. However, we usually refer to it as Iq in discussions. Therefore we named the function calc.iq. This naming follows the convention used in DiffPy-CMI. To address your namedtuples point, we have updated the output so it can be accessed in two ways:
Directly:
q, iq = calc.iq(...)
Via namedtuple:
scattering = calc.iq(...)
q = scattering.q
iq = scattering.i
I am closing this issue. Feel free to reopen the issue if you would like to see any further changes made to this.


fix(android): replace Kt Android ext with Java equivalent for compatibility

This change supports older versions of the Android Gradle Plugin (AGP) and ensures consistency with ClipboardWriteImageHandler.copyImageToClipboard() similar usage of ImageDecoder.decodeBitmap.

Fix https://github.com/singerdmx/flutter-quill/issues/2340

Update: I'm uncertain if this outdated AGP issue, though it's most likely Android dependency issue.


Add Feature Tracking for Measure-Tools

Resolve Issue #980
Based off solutions on tree-widget package, add feature tracking to measure-tools. Now, users can pass their callback function onFeatureUsed to MeasureToolsUiItemsProvider to handle features being used. There is an usage example in the updated README.
(This information is also included in README but just put here for reference) The feature tracking message is now in format feature-[feature being used]-event-[event related to the feature]. This format should be easy enough for users to process and paste the message.
Current tracking features and respective are (will update more later!) (for detailed message, please again refer to updated README):

Distance Measurement: Trigger, Cancel (for example we change to select mode or clear all measurements), Click on Start/End point of Distance

Clear Measurements: Trigger

Property Widget: When results are updated, when widget is empty

Selection Set: While this is not essentially a feature. All measurements seem to base off a global selection set. Hence, changes to this selection set might prove useful for users, so feature tracking for Selection Set is added.

We already have feature tracking that all the tools call if subclasses provide Feature and it's called in the postInstall of the base tool. At some point in the past, the implementation did change a bit so the app would have to set it up by adding an event listener to FeatureTracking.onFeature.
At most this should just be providing a listener in the props to the UI provider that hooks up this event for the app, but it's also arguable that could also happen in MeasureToolsFrontend.startup.
For the extra granularity in features, they should be added to our list of features in FeatureTracking, but who requested adding those for every point / property widget update?

We already have feature tracking that all the tools call if subclasses provide Feature and it's called in the postInstall of the base tool. At some point in the past, the implementation did change a bit so the app would have to set it up by adding an event listener to FeatureTracking.onFeature.
At most this should just be providing a listener in the props to the UI provider that hooks up this event for the app, but it's also arguable that could also happen in MeasureTools.startup.
For the extra granularity in features, they should be added to our list of features in FeatureTracking, but who requested adding those for every point / property widget update?


Undo breaks in TileMap editor after a while and engine crashes after trying to close the tab

Godot version
3.4-beta5, 3.3.3
System information
Windows 10
Issue description
Error happens on both versions listed. After I place down tiles for a while, the undo stops working and shows the message "Nothing to undo". Closing the tab crashes the engine.
Steps to reproduce
Place down tiles in a TileMap until it happens.
Minimal reproduction project
No response

I think this is the famous error where something like "condition -> true" appears.
This is being a pain when working with the tilemap editor.


Unneeded empty lines in license text for LGPL-3.0-only

The license text for LGPL-3.0-only contains unneeded empty lines, which are actually not displayed in the HTML version of the license: https://github.com/spdx/license-list-data/blob/master/text/LGPL-3.0-or-later.txt
For me it seems that line breaks from the LGPL-3.0 HTML page are considered by the conversion tool in the same way as  or  tags, which leads to the strange result.
This issue was originally reported in the reuse tracker, adding a link for cross-referencing the issue: https://github.com/fsfe/reuse-tool/issues/178

Here's a link to the source license XML: https://github.com/spdx/license-list-XML/blob/master/src/LGPL-3.0-only.xml
I wonder if this is caused by the extra paragraph tags within the item tags.
I am considering this a bug in the generation tool since it renders correctly in HTML, but it could be argued we should fix the source XML to remove the paragraphs.

Resolved with PR #83


Added info about block.number and block.timestamp in the block section.

Updated block.number and block.timestamp info in the block section, also explained why we return L1 batches inside EVM and why we return L2 blocks from API? I also updated the information about the block properties.

@krofax I think for better DX and for avoiding potential confusion it is better to make a note

L2 blocks, or just "blocks", are simply the blocks created on L2, that is on the zkSync network. Further in this page notion 'blocks' is referred to L2 blocks.

I've reorganised the content a little bit, moving the properties section up. I've also rephrased a few things and added links to the SDKs pages and added an internal link in the number and timestamp properties to the section that includes more info about them.


IP Camera Functionality

yeah.

Note that the camera stream should be publicly available on the website

Plan for implementation:
(Inspired by https://gist.github.com/raiever/df5b6c48217df521094cbe2d12c32c66)
[all in a separate, camera-specific blueprint]

Run a thread focused solely on capturing from the webcam. This thread will only run when it is required by a client, and will chill if a frame has not been pulled in more than a few seconds.
Create a flask endpoint with a continuous feed of frames from the camera thread (locks, etc. should be used to await a new frame being ready)

Important to ensure proper thread locks are used to account for the fact that GUnicorn spawns many main application threads in order to handle requests snappily


PullRequestResource resource usage

Looks like users are not able to understand how to use the PullRequestResource with secrete configuration.
Maybe it's a bit confusing with respect to documentation.

@hrishin
Could you supply some example for use PullRequest Resource as output, I means update PR status on Github.

@vincent-pli that sounds nice idea. Just wondering where shall we add the example?
Because example Task has to pass the CI integration and not sure how to keep the Github creds.

A better way we can address it in the followup PR? @vincent-pli @sbwsg

If a working example is required I'd personally tackle it in a separate PR from #1276. Seems like it's going to need more thought on how exactly to make that work with the YAML tests.

@sbwsg :+1:


A frame consisting of CharType(255)  doesn't map to anything in Hive/Parquet sink

The method io.eels.component.parquet.ParquetSchemaFns.toParquetType doesn't handle Frames with a CharType and hence the following exception:
scala.MatchError: CharType(255) (of class io.eels.schema.CharType)
at io.eels.component.parquet.ParquetSchemaFns$.toParquetType(ParquetSchemaFns.scala:72)
at io.eels.component.parquet.ParquetSchemaFns$$anonfun$2.apply(ParquetSchemaFns.scala:110)
at io.eels.component.parquet.ParquetSchemaFns$$anonfun$2.apply(ParquetSchemaFns.scala:110)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.Iterator$class.foreach(Iterator.scala:893)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at io.eels.component.parquet.ParquetSchemaFns$.toParquetSchema(ParquetSchemaFns.scala:110)
at io.eels.component.parquet.ParquetWriterFn$.apply(ParquetWriterFn.scala:30)
at io.eels.component.parquet.ParquetSink$$anon$1.(ParquetSink.scala:16)
at io.eels.component.parquet.ParquetSink.writer(ParquetSink.scala:14)
at io.eels.actions.SinkAction$.execute(SinkAction.scala:10)

A workaround is to manually map the Frame type to a StringType
However I think CharType should map to the Parquet logical type of FIXED_LEN_BYTE_ARRAY - I also think the same should be done for VarcharType
Note varchar(size) and char(size) are valid Hive types and are handled by the Hive Parquet Serde.
Note Hive Char types are similar to Varchar but they are fixed-length meaning that values shorter than the specified length value are padded with spaces but trailing spaces are not important during comparisons. The maximum length is fixed at 255.

I've mapped it to Strings. The reason I've done that rather than FIXED_LEN_BYTE_ARRAY is because if we use FIXED_LEN_BYTE_ARRAY, will hive or impala know to interpret it as a string if we query it? Eel would know, but I'm not sure other libraries would.

Yeah I can live with that 😄


Improvements to README.md

@spy16 I've made a couple of changes to the README, which I now submit for your consideration — what do you think?
IMHO the current version of the README somewhat buries the lede.  In my experience, you usually want to position a product very early on, explaining who the intended audience is, and which problem it solves.  In the existing version, we immediately dive into a list of technical feature, which — while important — might leave users wondering "is this for me?"
The main change is therefore to add a 'Why Slurp' section near the top, containing a positioning statement.  It tells us who Slurp is for, why it exists, and how it works.  This is immediately followed by the 'Features' section because if you're still reading at that point, you are convinced that Slurp is for you, and you want to ensure it meets your detailed technical requirements.
The other changes are mostly centered around convenience.  I've included a table of contents at the top of the readme, and I've also linked some of the example use-cases under 'Usage' to their relevant main.go files under ./examples.  Note that I've also taken the liberty of linking use-case 4 ("build your own LISP dialect") to Wetware — I hope that's alright?
I'm probably going to add small Wiki page that contains a 'Getting Started' tutorial, and link to it from the README.
As such, please don't merge this quite yet, but please do read it over and let me know if it looks good to you! 🙂
Change log:

Add a 'Why Slurp' section near the top that contains a positioning statement.
Add installation instructions under 'Usage'
Link to examples in use-cases under 'Usage'
Add table of contents

Ok, I've also moved much of the info about customizing Slurp to the Wiki.
LMK what you think. 🙂

I agree with you on all points. Love the new readme format and the wiki content. Feel free to merge when ready !


Delete Unneeded windowWidth Prop From TopNav Component

The TopNav component does not need the prop, and it’s making the app break when I run my local Contact work.
Changes done:

Delete the de-structured prop and its type from TopNav.tsx
Delete the prop being passed through TopNav component within App.tsx

Contact on Slack: "Meke (Mickey) - She/her/cornball"

Is there a visual I can look at that shows the windowwidth outcome?

@QGDevelopment this is a FANTASTIC question! I’m so sorry for not providing screenshots. I should’ve recorded the screen behavior of the change expected by the user. I will do this ASAP!


Introduce docker build files for moulin

Partly reused docker configuration and script from:
https://github.com/aoscloud/meta-aos-vm/pull/56
Signed-off-by: Andrii Chepurnyi<EMAIL_ADDRESS>

I refrain from reviewing due to lack of knowledge regarding containers.
I have read doc/docker.md and have no comments or objections.

@lorc Comments addressed. RUN usage decreased. Added moulin to the PATH

Acked-by: Volodymyr Babchuk<EMAIL_ADDRESS>

I guess those command should be added
RUN sudo pip3 install gitpython
RUN sudo apt install python-clang-4.0
RUN sudo pip3 install clang

@dsemenets this version is for new build system, so your comment may be for old


Use redis in tests instead of fakeredis

TODO:

[x] Check Redis server v < 5.0
[x] make the code more explanatory

Thanks a lot!


🚀 - Support Angular v19

Which ngx-ui-tour-* package is relevant to the feature request?
md-menu
Description
Add support for Angular v19

Hi! Just as an information: ngx-bootstrap 19.0.1 was released today https://github.com/valor-software/ngx-bootstrap/issues/6710.

I'll try to release a new version next week.
Pretty busy now.

Guys you know that PRs are welcome ?
I mean everyone can ask , but also you can contribute.

Any luck with the update? It would be greatly appreciated. Thanks

Working on it 😉

Great news! Thanks!

v14 has been released. Check out the release announcement.


Metashape Agisoft 1.5.2 Script for Gaussian Splatting

Is this script also available for my older version of metashape 1.5.2?

Hello!
No, this script was introduced in Metashape 2.0 (the 2.0 version is available in the 2.0 branch), so it has only been tested with Metashape versions 2.0 and 2.1.
So I can recommend you to upgrade Metashape to version 2.0 or 2.1. Note that you don't need to buy a new license - your old one is fine - see note here.


off by one error in string tests

https://github.com/godotengine/godot/blob/a77b786683483448d7a9d5d5a33b7ae19c9fa4d3/bin/tests/test_string.cpp#L907
> Godot_v2.0_beta_20160126_win32.exe -test string
...
Passed 28 of 27 tests

Thanks. It doesn't seem to be off by one but that the parameters are swapped, it should actually be "Passed 27 of 28 tests" I suppose (which means one test failed, does the rest of the output confirm that?).
Feel free to propose a PR that swaps the two parameters as you already did most of the job :) If not I can of course do it too, I just propose so that you can get attribution for looking into it :)

it should actually be "Passed 27 of 28 tests" I suppose (which means one test failed, does the rest of the output confirm that?).

Now I see, one test failed.
Test 26: RegEx
	match: true
	3 captures:
name:password
name
password
	FAILED

Submitted PR. Will create a new issue for that bug.

Failed test is in issue #3556.


How do i install this onto my Ubutnu

How do i install this in my Ubuntu terminal.

Open ~/.bashrc in your favourite text editor and just add the script in it.
Closing this since it isn't a technical issue.


InvalidType for generic closure

final f = <U, V>(U x, V y) => y;

Analyzer infers:
final <U,V>(U, V) → V f;

Front-End infers:
<U extends dart.core::Object, V extends dart.core::Object>(invalid-type, invalid-type) → invalid-type

I believe this is blocked on support for local type variables, which @peter-ahe-google is currently working on.

Turns out we also had #29798 to track this, I'll close this issue as a duplicate.


How do I access optionalCharacteristics?

In Services.js is specified
this.optionalCharacteristics = [];
and filled from HomeKitTypes.js. A requied characteristic can be accessed by getCharacteristic or setCharacteristic. How this has to be done for the optional ones?
A small example:
var sensorCO2Service = new Service.CarbonDioxideSensor();

sensorCO2Service
  .getCharacteristic(Characteristic.CarbonDioxideDetected)
  .on('get', 'true');
  .getCharacteristic(Characteristic.CarbonDioxideLevel)
  .on('get', function(callback) {
    // return our current value
    callback(null, FAKE_SENSOR.getCO2());
  });

CarbonDioxideDetected works, CarbonDioxideLevel doesn't.

Try
sensorCO2Service
  .getCharacteristic(Characteristic.CarbonDioxideDetected)
  .on('get', 'true');
sensorCO2Service
  .getCharacteristic(Characteristic.CarbonDioxideLevel)
  .on('get', function(callback) {
    // return our current value
    callback(null, FAKE_SENSOR.getCO2());
  });

?

Http.js shows how to add an optional Characteristic:
    lightbulbService
      .addCharacteristic(new Characteristic.Brightness())
      .on('set', this.setBrightness.bind(this));

@cflurin yeah, you're right... just found that from samples :)

Works, thank you. :+1:

I reopen this. Using addCharacteristic is the same way it is used in HomeKitTypes.js for required characteristics. You have no added value, no consistency check, that your added characteristic is allowed in this context.
I think there should be a user function for those optional characteristics, that check this is an allowed one with the data from this.optionalCharacteristics = [];.

@volschin I think you're right.
@nfarina What happens to the optionalCharacteristics that are pushed into that array of the service definitions in HomeKitTypes.js ? Are the used somewhere? If not, volschin's idea of using them as a security check (issue a warning to the log/console e.g.) might prove helpful.

Right now they're not used for anything - I wasn't sure how to handle them honestly besides putting them "in the code" for some visibility. I like the "security check" idea as long as you can bypass it somehow once you've been warned and you've decided you know what you're doing.
Perhaps getCharacteristic (and getService) should be throwing Errors anyway if the item doesn't exist instead of returning null, since they're used often for chaining calls. That way we could enhance the description of the Error when you ask for an optional Characteristic, suggesting to add it first?

Sounds reasonable to me. An error saying "on is not a method of undefined" or such does not really suggest to add a characteristic first.
I suggest just to put a message to the console on service.addCharacteristic() if the UUID is not found in the optionals, and support your idea of throwing a defined exception if you try to getCharacteristic and isn't found! :+1:

If no one is working on that I'll give it a try!
synopsis:
If Service.prototype.getCharacteristic(Characteristic.Type) does not find the characteristic, AND it is no optionalCharacteristic match, it fails ungracefully and throws an error; programmer can use addCharacteristic() to add it anyhow, but will then receive a WARNING in console log entry.
If Service.prototype.getCharacteristic(Characteristic.Type) does not find the characteristic, BUT the type is in optionalCharacteristic, it adds the characteristic.type and returns it.
If Accessory.prototype.getService(Service.type) does not find the service in the accessory, it fails ungracefully with an exception.
details:
Service.prototype.addOptionalCharacteristic will return the added characteristic instead of undefined, for getCharacteristic() to return in turn.

Being at that, does anybody have an idea why the minimumValue is not usable in Characteristic.prototype.getDefaultValue ?
Although in Characteristic.TargetTemperature  it is set to 10 (°C) in getDefaultValue it is 0.
Are we in the wrong this?

@snowdd1: As an example I implemented a WindowCovering with optional Characteristics (Brightness and Saturation) in order to be able to use it with iOS 8.4.1. I don't see any disadvantages. This is also possible with the HK Simulator.
https://github.com/cflurin/homebridge-shims > FhemWindowCovering.js

any disadvantages
The only I see is that Siri does only know the 'default' sets.

Right! but just now it's work for me and soon (16th.) I'll change the code for iOS 9. :smile:

So PR #128 is there.

@snowdd1 Great :) I think it's not necessary to show warning when trying to add a non-optional characteristic to service... Would you mind to modify that part? Thx

Of course I can remove that, but this was actually the core/starting point  of the idea.
@volschin: you raised this issue...! Is it enough to have getCharacteristic to return new optionals instead of adding them with addCharacteristic?

Am 12.09.2015 um 05:13 schrieb Khaos Tian -<EMAIL_ADDRESS><EMAIL_ADDRESS>@snowdd1 Great :) I think it's not necessary to show warning when trying to add a non-optional characteristic to service... Would you mind to modify that part? Thx
—
Reply to this email directly or view it on GitHub.

@KhaosT @nfarina
Your opinions voiced here and in #128 are exactly opposing.
Could you agree which features are the wanted here?

The warning if programmers try to add non-optional characteristics
or the ability to return a new optional characteristic on getCharacteristic with an not-yet-existing characteristic type,
or throwing an error on not-yet-existing non-optional characteristics?

@snowdd1 Sorry for the confusion, I think having the ability to return a new optional characteristic on get characteristic is the one I want to keep. Since HomeKit Accessory Simulator didn't prevent user from adding additional characteristic and HomeKit is happy with that, I think the warning for add non-optional characteristic is not necessary.

Done.

this issue is still open?
I write a fake AirQualitySensor service and want to get OptionalCharacteristic PM2_5Density,but he home app don`t show OptionalCharacteristic PM2_5Density

@mybays try viewing in the Eve app. That seems to show most all of the air quality optional characteristics whereas the HomeKit app only shows CarbonMonoxide. Take a look at homebridge-airnow as an example.


Add transition to FAQ

Pull Request
Title
Add transition to FAQ
fixes #680
Description
This PR adds transitions by creating a new css file in the styles directory.
Related Issues
issue #680
Changes Made
updated the jsx classes and created a new css component
Checklist

[X] I have tested the changes locally
[X] Documentation has been updated (if necessary)
[X] Changes are backward-compatible

Screenshots (if applicable)
https://github.com/user-attachments/assets/d17ec657-6e7b-4d82-a9f7-33e8ae76267f
Footer

Don't change package.json

PLEASE Raise a new PR