feature: Allow templateManipulators and wrappers to be assigned on a per form basis

Use case: Rendering the same field in a table might be different than rendering it in the horizontal bootstrap form.  This would allow people to define their own directives which define on the fly the wrappers and manipulators ex. formlyAsTable or formlyAsAccordion.  Also if the form being rendered in a form builder you may want different manipulators to run.
I do not have an immediate need just thought this would be a cool feature.

Maybe this should be an additional issue, but I think that while we're at it, we should make it work on a per-field/per-type basis as well.

+1

Officially released in 6.11.0!

The test for it is a little crazy: https://github.com/formly-js/angular-formly/blob/master/src/directives/formly-field.test.js#L975-L1083 :-)


[Question] About the Third-party API

[Question] How can I integrate a third-party API? Is it enough to change the client.base_url in config.py to the URL of the third-party API, such as client.base_url = "https://api.example.com" ? Do I also need to add something like /v1/chat/completions to the URL?
Thank you very much!

I encounter with this question too.It seems doesn't work besause after i set env value of OPENAIAPI and OPENAIAPI_URL,I start the operate,[Self-Operating Computer | gpt-4-with-ocr]
Hello, I can help you with anything. What would you like done?
[User]
1+1=
[Self-Operating Computer][gpt-4-with-ocr] That did not work. Trying another method
[Self-Operating Computer][Operate] That did not work. Trying again  Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-ZYumN***************************************tmpJ. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}
[Self-Operating Computer][Error] -> cannot access local variable 'content' where it is not associated with a value.


DPL-809 Import fresh blood samples into Sequencescape

User story
As a member of the BioResource team, I would like to be able to enter samples into Sequencescape for transfer of fresh blood samples to SeqOps for the 007c project.
Who are the primary contacts for this story
Laura L, Katy
Who is the nominated tester for UAT
Laura L
Acceptance criteria
To be considered successful the solution must allow:

[x] New manifest ("scRNA Core") which is identical to the Cardinal manifest, except that it also includes a column for donor_id (donor_id is needed because you want to avoid pooling 2 different samples from the same donor together for sequencing)
[x] Make a start on a documentation page similar to this one, which was made for Cardinal: https://ssg-confluence.internal.sanger.ac.uk/display/PSDPUB/Cardinal+Pipeline+Documentation (the "Importing samples into Sequencescape" section is relevant to this story)
See confluence here scRNA Core Pipeline

Additional Context
Documentation explaining how the manifest is used for Cardinal: https://ssg-confluence.internal.sanger.ac.uk/display/PSDPUB/Cardinal+Pipeline+Documentation#CardinalPipelineDocumentation-ImportingsamplesintoSequencescape
Existing Cardinal manifest screenshots, in case they're helpful:

Might be worth specifying that this is for getting blood samples in to the pipeline for isolating PBMCs and banking (as opposed to getting PBMCs into the later part of the pipeline).
We need to work out whether the 'Supplier' and 'Collected By' fields work for the other projects expected to run through this pipeline as those were designed around Cardinal which had two overarching 'suppliers' and multiple sites per 'supplier' which we entered into collected by.

Update from meeting yesterday:

Confirmed donor_id is needed, because they want to avoid pooling 2 different samples from the same donor together for sequencing - there will probably be a requirement around this in a later stage.
Decided to use "Collected by" to record the collection site, as in Cardinal, although this information will not be used in an automatic pooling decision, as there's not the same requirement as in Cardinal to have a spread of collection sites pooled together. However, the information will be available and it was thought best to record it at this stage. Would be useful when the data is handed back to the BioResource team.
There will need to be a discussion around what to record as the "Supplier" - probably just the same value for all manifests in this project, but needs to be decided and added to the system (by a user). Doesn't affect the LIMS development.
Supplier sample name - not sure it was decided what to record in here, whether the vacutainer tube barcode as in Cardinal or a different identifier. Doesn't affect the LIMS development but should be decided upfront for clarity for the users.
All fields should be kept mandatory, as in Cardinal.

In the latest scenario, the samples will go directly to HumGen and the aliquots for sequencing produced by them and passed onto SeqOps. As Katy has mentioned over email do we need to enhance this story to capture this piece (container type, barcodes etc.) or will it be a separate story?

@Lesley84 Good question, not sure! If we're still in Limber for both of those points, I guess we can add the feature during the transfer in Limber, so that it's specific to the pipeline. I don't suppose we can make it a universal feature like the tag clash detection, because the rules might be different for different pipelines?

N.B. donor_id is an existing manifest column, and not currently set as mandatory. No validation on it either.
So you can create a new column cardinal_donor_id which is a copy of donor_id and add the mandatory setting.
conditional_formattings:
    empty_mandatory_cell:

N.B. learnt from Bioscan the hard way that the manifest definition defines only what columns get created in an empty manifest download, they are NOT used on upload. Only the column heading in the uploaded file is used, so column heading text MUST be unique for the upload to match against the intended column definition. You cannot have 2 column definitions with heading 'DONOR ID' (or you can but it will validate against one of them uncontrolled and with Bioscan we suddenly broke other pipeline manifest uploads by forcing extra validations by re-using 'SUPPLIER NAME' and 'CONTROL TYPE' headings). So maybe 'SINGLE CELL DONOR ID' or something.

For the donor_id clash detection at pooling maybe this validation can be added on the labware creator(s) or JS that does the pooling? Make 007-specific versions of those pooling labware creators / JS and add the donor_id validation step in there.
e.g. When pooling tubes together it's JS for tag clash detection: as you scan each tube in it just builds up a total list of tags and on each new scan looks for matches with that list, so might be relatively easy to add an extra list and validation on donor_id in a 007 specific copy of the JS.

@andrewsparkes replied in Slack but summary...
I suggest:
a) new column with heading DONOR ID (required) - so it can be re-used by other manifests in future
b) new Collected By column specific to this manifest - we will have to ask Lesley or Laura what the dropdown values should be
And yes, I think the donor id clash detection will be in Limber so sounds OK.
Thanks

@LauraLetchford are you able to provide suggestions on the dropdown values for the Collected By column in the manifest?


<EMAIL_ADDRESS>hash check failed

I was able to install the 64 bit version of<EMAIL_ADDRESS>without issue and upon checking the hashes manually for both the 32 bit and 64 bit listed in imagemagick.json, still found no discrepancy.
Could you please supply what architecture scoop was trying to install, and what the hash was and whether or not you still get the error if you try again now. Thanks.


Added es_MX.utf8.php

Since Spanish from Spain isn't the same, this translation is more accurate on Latin America

Merged, thanks.


Slide in closest direction when in loop mode

Clear and concise description of the problem
Hi,
when sliding to a specific index, one can run swiper.slideTo(ndx). However when having the loop mode enabled, the swiper should have the option to slide in the closest direction to the desired index. For example when being on slide 10 and attempting to go to slide 1, it will go over all slides on the left instead of going one step to the right when having 10 slides in total.
Suggested solution
Either this becomes the default behavior of slideTo() when in loop mode or an option to enable that behavior.
Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Would you like to open a PR for this feature?

[ ] I'm willing to open a PR

Just found the slideToLoop() method, but the behavior is the same as with slideTo(), without going in the closest direction.

Nice option. I prefer to follow the shortest path of slides you've actually seen.

My workaround for this when in loop mode:
const mySlides = [...] //represents the content in each slide
const nextIndex = 0 //updated when navigating to another slide

...

 if (swiper.realIndex === mySlides.length - 1 && nextIndex === 0) {
    swiper.slideNext()
} else {
    swiper.slideToLoop(nextIndex)
}

+1
i'm having the same issue with 7 slides, 4 showing each time.
if i navigate from slide 6 to slide 1, it scrolls backwards.
@jmattiace that workaround only works if you navigate 1 by 1, if you want to navigate, let's say, from index 1 to index 4, that doesn't work.

Any progress on this? Having the same problem on a new project now

Swiper v9 comes with fully reworked and now different loop functionality. If you have similar issues in Swiper 9, open a new issue with a CodeSandbox showing the issue.


Why is there no example of using XHR/Ajax?

If someone find this issue here is an example.
choices.passedElement.element.addEventListener(
          'search',
          debounce(async e => {
            const data = await jsonFetch(`${this.dataset.search}?q=${encodeURIComponent(e.detail.value)}`)
            this.choices.setChoices(data, this.dataset.value || 'value', this.dataset.label || 'label', true)
          }, 400)
        )

If someone find this issue here is an example.
choices.passedElement.element.addEventListener(
          'search',
          debounce(async e => {
            const data = await jsonFetch(`${this.dataset.search}?q=${encodeURIComponent(e.detail.value)}`)
            this.choices.setChoices(data, this.dataset.value || 'value', this.dataset.label || 'label', true)
          }, 400)
        )

We are using it similar to the Example 2 in the Readme: https://github.com/jshjohnson/Choices#setchoiceschoices-value-label-replacechoices. Do you need more than that?

What is this.dataset, because for me is undefined ?

choices.passedElement.element.addEventListener(
    'search',
    debounce(async e => {
        const data = await jsonFetch(`${this.dataset.search}?q=${encodeURIComponent(e.detail.value)}`)
        this.choices.setChoices(data, this.dataset.value || 'value', this.dataset.label || 'label', true)
    }, 400)
)

There is a demo of remote source usage at https://joshuajohnson.co.uk/Choices/#choices-single-remove-xhr. The setChoices() also takes a function that returns the items which makes it easy to implement this without handling any events. See the docs for details.
This is the relevant code from the demo:
        var singleXhrRemove = new Choices('#choices-single-remove-xhr', {
          removeItemButton: true,
          searchPlaceholderValue: "Search for a Smiths' record",
        }).setChoices(function(callback) {
          return fetch(
            'https://api.discogs.com/artists/83080/releases?token=QBRmstCkwXEvCjTclCpumbtNwvVkEzGAdELXyRyW'
          )
            .then(function(res) {
              return res.json();
            })
            .then(function(data) {
              return data.releases.map(function(release) {
                return { label: release.title, value: release.title };
              });
            });
        });

I recommend using ES7 await instead of the .then() thought.
I agree, there could be an example that illustrates this more clearly.

I have search with ajax
el.addEventListener("search", _.debounce(async (event) => {
        let data = await getOptions(`${url}?q=${event.detail.value}`);

        select.setChoices(data, "value", "label", false);
    }, 1000)
);

but every i delete the keyword on search field, the last key not removed


parser: add better error messages for broken closing block tags

Implements #237.

Nice, thanks!

Not sure why it didn't allow me to merge here without overriding the option. Weird...


How do you run it?

I downloaded and installed the .deb on Linux Mint (Ubuntu variant).
How do you start the browser?

How did you install it? Did you dpkg -i /path/to/Min.deb?
If yes it should show up like any other program in your desktop environment ànd you should be able to start it on the command line with Min (case-sensitive).

This does not happen.
What is the command line to start it? Where are the files installed?
On Thu, Apr 28, 2016 at 4:07 AM, Bernhard Hayden<EMAIL_ADDRESS>wrote:

How did you install it? Did you dpkg -i /path/to/Min.deb?
If yes it should show up like any other program in your desktop
environment ànd you should be able to start it on the command line with
Min (case-sensitive).
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/PalmerAL/min/issues/115#issuecomment-215390421

@lance-edmodo  Yes , You are allright. when we install deb package, we have
{ % }: sudo dpkg -i min_1.2.0_i386.deb                                                                                29.Apr.16 10.51
dpkg: warning: parsing file '/var/lib/dpkg/available' near line 580187 package 'min':
 missing description
dpkg: warning: parsing file '/var/lib/dpkg/available' near line 580187 package 'min':
 missing maintainer
Selecting previously unselected package min.
(Reading database ... 318816 files and directories currently installed.)
Preparing to unpack min_1.2.0_i386.deb ...
Unpacking min (1.2.0-1) ...

Setting up min (1.2.0-1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for mime-support (3.54ubuntu1.1) ...

And when we search binary
{ % }: which Min
Min not found

I do that with min_1.2.0_i386.deb on UBUNTU 14.04LTS

I can reproduce this.

I can reproduce. The file /usr/bin/min is a dead symbolic link to /usr/share/min/min:
/usr/bin$ ls -l | grep min
lrwxrwxrwx 1    501 staff         16 avril 28 06:48 min -> ../share/min/min

The file should point to ../share/min/Min instead.

Thanks, that's really helpful!
This is fixed in aba88faa40eb91169158e78a1307eb5e74bffdde. I'll publish a 1.2.1 release soon that has this fix included.

1.2.1 has been released.


chore: Release 0.6.0

:robot: I have created a release beep boop
0.6.0 (2023-07-06)
⚠ BREAKING CHANGES

Update to ACVM 0.16.0  (#221)

Features

Update to ACVM 0.16.0  (#221) (062d5ed)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/noir-lang/acvm-backend-barretenberg/releases/tag/v0.6.0 :sunflower:


feat: Proof of concept play sound on card flip

@Nikomus This is just a proof of concept that play success sound on every card flip... but I #40 probably wants merging before I do more here.
Wanted to PR in case I am on the right track.
I'm thinking since not critical for the game to work is ok if Html Audio not supported everywhere
I'll give config of volume to user & abstract so different effects can be triggered by different events

@Nikomus Are you happy with this in principle? I'd like to build the logic on top of it if you are.

Sounds good 🎶
Only thing to maybe think about is that keeping all of the elements in the page might get quite large.  elements have a lot of shadow DOM nodes, it looks like ~150 nodes are added per click. We might want to keep the list a fixed size and replace the oldest if we're adding a lot more sound triggers.

Not sure how to check the shadow DOM nodes but we must be able to limit that somehow. Closing as it was a spike anyway.. but will build on for #35 and we can pair on getting the spawn per click under control.


Introducing kube-rs Guru on Gurubase.io

Hello team,
I'm the maintainer of Anteon. We have created Gurubase.io with the mission of building a centralized, open-source tool-focused knowledge base. Essentially, each "guru" is equipped with custom knowledge to answer user questions based on collected data related to that tool.
I wanted to update you that I've manually added the kube-rs Guru to Gurubase. kube-rs Guru uses the data from this repo and data from the docs to answer questions by leveraging the LLM.
In this PR, I showcased the "kube-rs Guru", which highlights that kube-rs now has an AI assistant available to help users with their questions. Please let me know your thoughts on this contribution.
Additionally, if you want me to disable kube-rs Guru in Gurubase, just let me know that's totally fine.

Hey, thanks for this (and appreciate you asking). I tried this out a little bit. I am having mixed results, but can see how this could be useful to some people provided they don't take the answers it produces as necessarily correct (i did see it produce some wildly misleading answers for hard stuff, but i also saw it produce some ballpark helpful overviews for simple questions).
I am not comfortable with a badge here for this, but happy to have an AI section in the https://kube.rs/guides/ as a place to backlink. wdyt? happy to take a pr adding a new table to https://github.com/kube-rs/website/blob/main/docs/guides.md.

Thanks for the review @clux, I have opened a PR based on your review.


Relationshipped data is not stored when in pivot table.

Hello,
I've a problem with Algolia Search Client using Laravel 5.1 and SQLite (development environment).
I've enabled auto-indexing, however the relationship data is not saved when creating a new record.
This is roughly the codes in my model:
public $indices;
public static $autoIndex = true;
public static $autoDelete = true;

public function __construct($attributes = [])
{
    parent::__construct($attributes);
    $this->indices = [config('algolia.connections.' . config('algolia.default') . '.indice_name')];
}

public function getAlgoliaRecord()
{
    /**
     * Load the user relation so that it's available
     *  in the laravel toArray method
     */
    $this->user;
    $this->tags;

    // When we set this method, $algoliaSettings is ignored, so we've to strip the function this:
    $allowed = $this->algoliaSettings['searchableAttributes'];
    $elements = array_intersect_key($this->toArray(), array_flip($allowed));

    return array_merge($elements, [
        'img_src' => config('whatthetag.s3_storage_cdn_domain') . config('whatthetag.uploads_folder') . '/' . $this->image,
        'thumb_src' => Croppa::url('/'. config('whatthetag.uploads_folder') .'/'.$this->image, 400, 300),
        'url' => config('app.url') . '/photo/detail/' . $this->slug,
        'user_name' => $this->user->name,
        'tags' => array_map(function ($data) {
            return [
                'title' => $data['title'],
                'slug'  => $data['slug'],
            ];
        }, $this->tags->toArray())
    ]);
}

public $algoliaSettings = [
    'attributesToHighlight' => [
        'title',
        'user_name',
        'tags',
    ],
    'searchableAttributes' => [
        'id',
        'title',
        'url',
        'img_src',
        'thumb_src',
        'user_name',
        'tags',
    ],
    'customRanking' => [
        'desc(popularity)',
        //'desc(id)',
    ],
];

public function tags()
{
    return $this->belongsToMany('App\Tag', 'photo_tag')
        ->withTimestamps();
}

public function user()
{
    return $this->belongsTo('App\User', 'user_id');
}

And this is roughy the photo creation code:
$photo            = new Photo;
$photo->user_id    = Auth::id();
$photo->title    = $request->get('title');
$photo->image    = $upload['filename'];
$photo->save();
$photo->tags()->attach($tagIds);

As you can see, the user_name string and the tags array comes from a string.
The user_name field is added when creating a new row, however the tags array is just blank (tags: [] in algolia panel when I look for it)
However, when I do Model::reindex() I can see the tags just fine.
I'm guessing it's because after the row is created the pivot table relation is not created yet.
How can I fix this ?
Thanks in advance,

Hi @Ardakilic ,
Currently we only subscribe for the events fired by the model itself, not the relationships.
I don't think we plan to support this given that then we would need to add other use cases as well and it would add some overhead.
The $photo->touch() seems like the easiest way to go for it. Let us know if you have a better idea in mind.


Bad example in Sparse_Categorical_CrossEntropy

URL(s) with the issue:
Please provide a link to the documentation entry, for example:
https://github.com/tensorflow/tensorflow/blob/1cf0898dd4331baf93fe77205550f2c2e6c90ee5/tensorflow/python/keras/losses.py#L493
Description of issue (what needs changing):
The example will cause errors:
cce = tf.keras.losses.SparseCategoricalCrossentropy()
loss = cce(
[0, 1, 2],
[[.9, .05, .05], [.5, .89, .6], [.05, .01, .94]])
print('Loss: ', loss.numpy())  # Loss: 0.3239
Need to change to
cce = tf.keras.losses.SparseCategoricalCrossentropy()
loss = cce(
[0, 1, 2],
tf.constant([[.9, .05, .05], [.5, .89, .6], [.05, .01, .94]]))
print('Loss: ', loss.numpy())  # Loss: 0.3239
In addition [.5, .89, .6] should be [0.05, 0.89, 0.06] to be consistent with similar example (
https://www.tensorflow.org/api_docs/python/tf/keras/losses/CategoricalCrossentropy?hl=en). Thus Loss should be updated to 0.0945

@wzzhu I am not able to observe the error with the latest tf-nightly. Can you show the version of the tf you are using?

!pip install tf-nightly-2.0-preview
import tensorflow as tf
cce = tf.keras.losses.SparseCategoricalCrossentropy()
loss = cce([0, 1, 2], [[.9, .05, .05], [.5, .89, .6], [.05, .01, .94]])
print('Loss: ', loss.numpy())  # Loss: 0.3239
I first found the problem in Tensorflow 2.0 stable version. When I tried running with nightly, it still had errors:
!pip install tf-nightly-2.0-preview
import tensorflow as tf
cce = tf.keras.losses.SparseCategoricalCrossentropy()
loss = cce([0, 1, 2], [[.9, .05, .05], [.5, .89, .6], [.05, .01, .94]])
print('Loss: ', loss.numpy())  # Loss: 0.3239
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/backend.py in sparse_categorical_crossentropy(target, output, from_logits, axis)
4523   if not from_logits:
4524     if (isinstance(output, (ops.EagerTensor, variables_module.Variable)) or
-> 4525         output.op.type != 'Softmax'):
4526       epsilon_ = constant_to_tensor(epsilon(), output.dtype.base_dtype)
4527       output = clip_ops.clip_by_value(output, epsilon, 1 - epsilon_)
AttributeError: 'list' object has no attribute 'op'

@wzzhu tf-nightly-2.0-preview has not been updated even before 2.0 released as it has been switched to tf-nightly. The last version of tf-nightly-2.0-preview was released in 10/02:
https://pypi.org/project/tf-nightly-2.0-preview/#history
Please use tf-nightly instead.

Right, it was TensorFlow Ver:  2.0.0-dev20191002.
I tried tf-nightly and it works. Thanks.
But the numbers still need updating to as [.5, 0.89, .6] is logits instead of a prob distribution as in categorical crossentropy example which is [.05, .89, .06]

Could reproduce the issue with TF version 2.0. Here is the Gist. Thanks!

@wzzhu Looks like the docstring has been fixed in  commit c7061962262c8cacc4017b352f32d2134216ca4a

Closing this issue since its resolved. Thanks!


fix parsing url strings with brackets

There seems to be an issue (on ios at least) where URLs with [] query parameters are not parsed; URLComponents will produce nil so routing won't succeed.
This fix escapes the strings by percent-encoding them so query parameters should now work as expected.
Added unit test for such a case

@nejcvivod Thanks for creating this PR! That's a good catch, can you please provide an entry in the CHANGELOG in order to review your PR?

@Vkt0r updated changelog & ran the command @swifter-bot posted :)

@Vkt0r updated


Container does not startup completely with fresh install

On Ubuntu 16.04 (x86_64) with all available updates installed.
No docker images at all.
                  -----
-----                    Startupscript is now running.                     -----
-----                          Please be patient!                          -----
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
-----                        Debugging information                         -----
-----                                                                      -----
-----                                System                                -----
-----                    arch:                x86_64                       -----
-----                                                                      -----
-----                             Docker-Image                             -----
-----                    image:               v6.0.0                       -----
-----                    build:               2021-12-17T03:48:21+00:00    -----
-----                                                                      -----
-----                               Versions                               -----
-----                    node:                v14.18.2                     -----
-----                    npm:                 6.14.15                      -----
-----                                                                      -----
-----                                 ENV                                  -----
-----                    SETGID:              1000                         -----
-----                    SETUID:              1000                         -----
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
-----                  Step 1 of 5: Preparing container                   -----
--------------------------------------------------------------------------------

Updating Linux packages on first run...
(Reading database ... 29139 files and directories currently installed.)
Preparing to unpack .../base-files_11.1+deb11u2_amd64.deb ...
Unpacking base-files (11.1+deb11u2) over (11.1+deb11u1) ...
Setting up base-files (11.1+deb11u2) ...
Installing new version of config file /etc/debian_version ...
(Reading database ... 29139 files and directories currently installed.)
Preparing to unpack .../libgmp10_2%3a6.2.1+dfsg-1+deb11u1_amd64.deb ...
Unpacking libgmp10:amd64 (2:6.2.1+dfsg-1+deb11u1) over (2:6.2.1+dfsg-1) ...
Setting up libgmp10:amd64 (2:6.2.1+dfsg-1+deb11u1) ...
(Reading database ... 29139 files and directories currently installed.)
Preparing to unpack .../libseccomp2_2.5.1-1+deb11u1_amd64.deb ...
Unpacking libseccomp2:amd64 (2.5.1-1+deb11u1) over (2.5.1-1) ...
Setting up libseccomp2:amd64 (2.5.1-1+deb11u1) ...
(Reading database ... 29139 files and directories currently installed.)
Preparing to unpack .../0-wget_1.21-1+deb11u1_amd64.deb ...
Unpacking wget (1.21-1+deb11u1) over (1.21-1+b1) ...
Preparing to unpack .../1-curl_7.74.0-1.3+deb11u1_amd64.deb ...
Unpacking curl (7.74.0-1.3+deb11u1) over (7.74.0-1.3+b1) ...
Preparing to unpack .../2-libcurl4_7.74.0-1.3+deb11u1_amd64.deb ...
Unpacking libcurl4:amd64 (7.74.0-1.3+deb11u1) over (7.74.0-1.3+b1) ...
Preparing to unpack .../3-distro-info-data_0.51+deb11u1_all.deb ...
Unpacking distro-info-data (0.51+deb11u1) over (0.51) ...
Preparing to unpack .../4-libcurl3-gnutls_7.74.0-1.3+deb11u1_amd64.deb ...
Unpacking libcurl3-gnutls:amd64 (7.74.0-1.3+deb11u1) over (7.74.0-1.3+b1) ...
Preparing to unpack .../5-linux-libc-dev_5.10.84-1_amd64.deb ...
Unpacking linux-libc-dev:amd64 (5.10.84-1) over (5.10.70-1) ...
Preparing to unpack .../6-publicsuffix_20211207.1025-0+deb11u1_all.deb ...
Unpacking publicsuffix (20211207.1025-0+deb11u1) over (20210108.1309-1) ...
Setting up wget (1.21-1+deb11u1) ...
Setting up distro-info-data (0.51+deb11u1) ...
Setting up linux-libc-dev:amd64 (5.10.84-1) ...
Setting up libcurl3-gnutls:amd64 (7.74.0-1.3+deb11u1) ...
Setting up libcurl4:amd64 (7.74.0-1.3+deb11u1) ...
Setting up curl (7.74.0-1.3+deb11u1) ...
Setting up publicsuffix (20211207.1025-0+deb11u1) ...
Processing triggers for libc-bin (2.31-13+deb11u2) ...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Done.

Registering maintenance script as command...
Done.

--------------------------------------------------------------------------------
-----             Step 2 of 5: Detecting ioBroker installation             -----
--------------------------------------------------------------------------------

Existing installation of ioBroker detected in /opt/iobroker.

--------------------------------------------------------------------------------
-----             Step 3 of 5: Checking ioBroker installation              -----
--------------------------------------------------------------------------------

(Re)Setting folder permissions (This might take a while! Please be patient!)...
Done.

Fixing "sudo-bug" by replacing sudo in iobroker with gosu...
Done.

Hostname in ioBroker does not match the hostname of this container.
Updating hostname to  iobroker...
The host for instance "system.adapter.admin.0" was changed from "buildkitsandbox" to "iobroker".
The host for instance "system.adapter.discovery.0" was changed from "buildkitsandbox" to "iobroker".
The host for instance "system.adapter.backitup.0" was changed from "buildkitsandbox" to "iobroker".
Done.

--------------------------------------------------------------------------------
-----                Step 4 of 5: Applying special settings                -----
--------------------------------------------------------------------------------

Some adapters have special requirements/ settings which can be activated by the use of environment variables.
For more information take a look at readme.md on Github!

--------------------------------------------------------------------------------
-----                    Step 5 of 5: ioBroker startup                     -----
--------------------------------------------------------------------------------

Starting ioBroker...

host.iobroker check instance "system.adapter.admin.0" for host "iobroker"
host.iobroker check instance "system.adapter.discovery.0" for host "iobroker"
host.iobroker check instance "system.adapter.backitup.0" for host "iobroker"
object system.meta.uuid created: 864704fc-a6b7-4751-a363-d93081d791c2
hash changed or no sources cached => force download of new sources

^^^ here it hangs for hours and does not continue.
Any ideas?

Sorry, I don't get it. :) What are you waiting for?
Log seems to be good. It's the normal startup process.
Simply open http://[host-ip-address]:8081 and you are fine...
Everything after "Starting ioBroker..." is Output from the running ioBroker instance.
Regards,
André

Yes, you are right. Sorry!
I was waiting for some kind of download "=> force download of new source". Last line is somehow irritating.
I will close this issue.
Thank you


Admin list certificates endpoint

Scope of changes
This adds an Admin endpoint for retrieving the certificates for a VASP. The real purpose for this is to support a future bff endpoint, although it's possible the frontend will want to use this as well.
SC-6643
Type of change

[ ] bug fix
[x] new feature
[ ] documentation
[ ] other (describe)

Acceptance criteria
Are we returning everything we need to in the reply? Are there any other fields we want to include in the top level (such as
the common name)?
Author checklist

[x] I have manually tested the change and/or added automation in the form of unit tests or integration tests
[ ]  I have updated the dependencies list
[ ]  I have recompiled and included new protocol buffers to reflect changes I made
[x]  I have added new test fixtures as needed to support added tests
[x]   Check this box if a reviewer can merge this pull request after approval (leave it unchecked if you want to do it yourself)
[x]  I have moved the associated Shortcut story to "Ready for Review"

Reviewer(s) checklist

[ ] Any new user-facing content that has been added for this PR has been QA'ed to ensure correct grammar, spelling, and understandability.

Codecov Report

Merging #609 (f815c97) into main (a45c69e) will increase coverage by 0.04%.
The diff coverage is n/a.

:exclamation: Current head f815c97 differs from pull request most recent head 95ad7c4. Consider uploading reports for the commit 95ad7c4 to get more accurate results

@@            Coverage Diff             @@
##             main     #609      +/-   ##
==========================================
+ Coverage   46.38%   46.42%   +0.04%
==========================================
  Files         519      519
  Lines       15173    15219      +46
  Branches     1186     1186
==========================================
+ Hits         7038     7066      +28
- Misses       7059     7071      +12
- Partials     1076     1082       +6

Impacted Files
Coverage Δ

.../github.com/trisacrypto/directory/pkg/gds/admin.go
55.40% <0.00%> (+0.22%)
:arrow_up:

...m/trisacrypto/directory/pkg/gds/admin/v2/client.go
43.10% <0.00%> (+0.41%)
:arrow_up:

Continue to review full report at Codecov.

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


Update Font Awesome to version 5

https://fontawesome.com/how-to-use/upgrading-from-4

can we use Font Awesome version 5 icon for toc-icon?

When the upgrade happens it'll be available everywhere in the theme.


Serial Number = ?

I am presuming the Serial number is what ecowater call the DSN?

Yes the serial number is the DSN. I will modify the README to make this clear!
Thanks 👍


The code examples in the readme.md file are not properly organized.

This issue has been resolved, and the pull request has been submitted. Kindly review and approve the pull request.

The issue has been closed.


Added SFAuthenticationSession for iOS 11 login

Hello!
fixes #426
Something to note here is that the content dialog shows the project name "Freetime".

Oof ya we should be able to change that easily. This probably displays for any permissions dialogs too. Maybe when you enable badging for the first time?
Sent with GitHawk

@joerocca thank you for this!! Will review and merge ASAP. Will help immensely with local testing on Xcode 9 too!
Sent with GitHawk

No problem!
It looks like "GitHawk" is used when enabling badging.

Another problem here is AfAuthenticationSession does not share the session with SFSafariViewController, so when   I press “Open in Safari” on a private repo I get a 404 page and have to sign in inside the SFSafariViewController before I can view the page. Wasn’t able to find a solution for this with SFSafariViewController. Maybe possible to solve this by using a WKWebView and injecting the cookie?
Sent with GitHawk

Something to note here is that the content dialog shows the project name "Freetime".

Linking to #420 as well since that's a related issue.

Oops thought I merged this. Def need to send this in to a TestFlight build.


BinaryPickle - unpickling something that contains empty Maps fails

package com.typesafe

import akka.util.ByteString
import akka.actor.Address
import akka.serialization.Serializer
import scala.pickling._
import scala.pickling.Defaults._
import scala.pickling.binary._

import scala.pickling.binary.BinaryPickle

class SanitySpec extends AkkaUnitTest {

  case class MyValue(protocol: String, servicePort: Int, serviceName: String)

  "Binary and Map[String, Map[String, MyValue]" should {

    // this is OK:
    "pickle" in {
      val bytes = Map("hello" -> Map("one" -> MyValue("pop", 23, "email"))).pickle.value
      val got = BinaryPickle(bytes).unpickle[Map[String, Map[String, MyValue]]]
    }

    // this is OK:
    "pickle empty inner - with types" in {
      val bytes = Map("hello" -> Map[String, MyValue]()).pickle.value
      val got = BinaryPickle(bytes).unpickle[Map[String, Map[String, MyValue]]]
    }

   // this FAILS:
    "pickle empty inner - no types" in {
      val bytes = Map("hello" -> Map()).pickle.value
      info("pickle = " + ByteString(bytes).utf8String)
      val got = BinaryPickle(bytes).unpickle[Map[String, Map[String, MyValue]]]
/*
[info] - should pickle empty inner - no types *** FAILED ***
[info]   java.lang.ArrayIndexOutOfBoundsException: 263
[info]   at scala.pickling.binary.ByteArrayInput.getInt(BinaryInput.scala:156)
[info]   at scala.pickling.binary.BinaryPickleReader.readLength(BinaryPickle.scala:255)
[info]   at scala.pickling.pickler.TravPickler$$anon$1.unpickle(Iterable.scala:59)
[info]   at com.typesafe.SanitySpec$$anonfun$2$$anonfun$apply$mcV$sp$4$ScalaTuple2$u005BjavaLangString$u002CscalaCollectionImmutableMap$u005BjavaLangString$u002CScalaPicklingSerializerSpecThisMyValue$u005D$u005DUnpickler$macro$619$2$.unpickle(ScalaPicklingSerializerSpec.scala:58)
[info]   at scala.pickling.Unpickler$class.unpickleEntry(Pickler.scala:81)
[info]   at com.typesafe.SanitySpec$$anonfun$2$$anonfun$apply$mcV$sp$4$ScalaTuple2$u005BjavaLangString$u002CscalaCollectionImmutableMap$u005BjavaLangString$u002CScalaPicklingSerializerSpecThisMyValue$u005D$u005DUnpickler$macro$619$2$.unpickleEntry(ScalaPicklingSerializerSpec.scala:58)
[info]   at scala.pickling.pickler.TravPickler$$anon$1.unpickle(Iterable.scala:64)
[info]   at scala.pickling.Unpickler$class.unpickleEntry(Pickler.scala:81)
[info]   at scala.pickling.pickler.TravPickler$$anon$1.unpickleEntry(Iterable.scala:18)
[info]   at scala.pickling.functions$.unpickle(functions.scala:11)
[info]   ...
*/
    }

  }
}

The pickled bytes look like this:
[info]   + pickle = lscala.collection.immutable.Map[java.lang.String,scala.collection.immutable.Map[scala.Nothing,scala.Nothing]]Zscala.Tuple2[java.lang.String,scala.collection.immutable.Map[scala.Nothing,scala.Nothing]]hello(scala.collection.immutable.Map$EmptyMap$

So yeah, Nothing is inferred and captures, but it still should be able to deserialize I think, using an empty Map literal is very useful at times - initialising empty data structures etc.
// this was on 0.10.0

The current issue "BinaryPickle - unpickling something that contains empty Maps fails" is stated as if this is a bug, but this is more of a feature request.
scala> import scala.pickling._, scala.pickling.Defaults._, scala.pickling.binary._
import scala.pickling._
import scala.pickling.Defaults._
import scala.pickling.binary._

scala> val x = Map("hello" -> Map())
x: scala.collection.immutable.Map[String,scala.collection.immutable.Map[Nothing,Nothing]] = Map(hello -> Map())

scala> val pkl = x.pickle.value
pkl: Array[Byte] = Array(0, 0, 0, 108, 115, 99, 97, 108, 97, 46, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 46, 105, 109, 109, 117, 116, 97, 98, 108, 101, 46, 77, 97, 112, 91, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 83, 116, 114, 105, 110, 103, 44, 115, 99, 97, 108, 97, 46, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 46, 105, 109, 109, 117, 116, 97, 98, 108, 101, 46, 77, 97, 112, 91, 115, 99, 97, 108, 97, 46, 78, 111, 116, 104, 105, 110, 103, 44, 115, 99, 97, 108, 97, 46, 78, 111, 116, 104, 105, 110, 103, 93, 93, 0, 0, 0, 1, 0, 0, 0, 90, 115, 99, 97, 108, 97, 46, 84, 117, 112, 108, 101, 50, 91, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 83, 116, 114, 105, 110, 103, 44, 115, 99, 97, 108, 97, 46, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 46, 105, 109, 109, 117, 116, ...
scala> case class MyValue(protocol: String, servicePort: Int, serviceName: String)
defined class MyValue

scala> pkl.unpickle[Map[String, Map[String, MyValue]]]
java.lang.ArrayIndexOutOfBoundsException: 263
  at scala.pickling.binary.ByteArrayInput.getInt(BinaryInput.scala:152)
  at scala.pickling.binary.BinaryPickleReader.readLength(BinaryPickle.scala:251)
  at scala.pickling.pickler.TravPickler$$anon$1.unpickle(Iterable.scala:59)
  at ScalaTuple2$u005BjavaLangString$u002CscalaCollectionImmutableMap$u005BjavaLangString$u002C$line6$readiwiwiwiwMyValue$u005D$u005DUnpickler$macro$25$2$.unpickle(<console>:21)
  at scala.pickling.pickler.TravPickler$$anon$1.unpickle(Iterable.scala:65)
  at scala.pickling.Unpickler$class.unpickleEntry(Pickler.scala:79)
  at scala.pickling.pickler.TravPickler$$anon$1.unpickleEntry(Iterable.scala:18)
  at scala.pickling.functions$.unpickle(functions.scala:11)
  at scala.pickling.UnpickleOps.unpickle(Ops.scala:23)
  ... 43 elided

scala> pkl.unpickle[Map[String, Map[String, Nothing]]]
res1: Map[String,Map[String,Nothing]] = Map(hello -> Map())

In the above, x is type inferenced to be Map[String, Map[Nothing, Nothing]], and that's how it's pickled. What you're asking is a form of duck typing that not even Scala would do:
scala> val empty = Map()
empty: scala.collection.immutable.Map[Nothing,Nothing] = Map()

scala> val y: Map[String, MyValue] = empty
<console>:19: error: type mismatch;
 found   : scala.collection.immutable.Map[Nothing,Nothing]
 required: Map[String,MyValue]
Note: Nothing <: String, but trait Map is invariant in type A.
You may wish to investigate a wildcard type such as `_ <: String`. (SLS 3.2.10)
       val y: Map[String, MyValue] = empty
                                     ^

While I recognize the desire for duck typing (it's useful for growing API), the underlying issue here is that it's possible to pickle Map[Nothing, Nothing] in the first place.


[api] Add coex metrics API support

Add platform get coex metrics API
Add spinel property for coex metrics

@abtink Could you help me review this PR at your convenience?


refactor: add default character set to read operations

Checklist

[x] the individual contributor license agreement is signed
[x] commit message follows commit guidelines

Description of change

Automated by http://errorprone.info/bugpattern/DefaultCharset

This change looks great!  :+1:


Move recommonmark-0.4.0-py_0 to broken

Can somebody move the recommonmark-0.4.0-py_0 packges to the Broken label? They didn’t list a version limit on commonmark, and now conda wants to downgrade to it so that it can upgrade my commonmark—which would break my env.

Thoughts, @conda-forge/core?

I am not opposed.

Not opposed either, can we get a PR which pins?

#1 pinned already...unless I misunderstand you?

Awesome, sorry I didn't see that :sheep:

Ok, went ahead and did it. Hope that helps.

That took care of it. Thanks!


Expected Capacity of machine should be able to be passed down to worker resource

How to categorize this issue?

/area autoscaling
/area usability
/kind enhancement
/kind api-change
/kind discussion
What would you like to be added:

add a expectedNodeAttributes field to the core.gardener.cloud/v1beta1.Machine
add expectedNodeAttributes field to the extensions.gardener.cloud/v1alpha1.WorkerPool which can be updated by gardenlet while creating worker resource
add validation logic for the fields

the field is
type ExpectedNodeAttributes struct {
	CPU *int
	GPU *int
	Memory *resource.Quantity
}

Why is this needed:
To enable machine resource information to be passed down from cloudprofile to worker resource, and finally to machineclass

/invite @rfranzke @AxiomSamarth
I want to discuss

if the name expectedNodeAttributes is ok
the types of CPU,GPU and particularly Memory is fine , or any other suggestions
any other thoughts ,improvement tips or queries

Linked Umbrella issue - https://github.com/gardener/autoscaler/issues/27

cc @rfranzke @AxiomSamarth I want to discuss

if the name expectedNodeAttributes is ok
@himanshu-kun

The name ExpectedNodeAttribute looks good to me. I would prefer the same as the name would be consistent across custom resources (MachineClass uses the same name)

the types of CPU,GPU and particularly Memory is fine , or any other suggestions

Regarding the Types, I think integer should be good for CPU & GPU. I do not see any fractional values in the machine catalogue for AWS/Azure. I will look for further comments by other senior colleagues.

any other thoughts ,improvement tips or queries
So far so good. Once you hear from Rafael, you can open a draft PR.

if the name expectedNodeAttributes is ok

Personally, I find expectedNodeAttribute highly confusing when reading it. In your description you write "end user to provide the resources cluster autoscaler should consider when scaling a worker pool from zero". I don't see how expectedNodeAttribute fits here. Finding precise, short names is hard and I don't have a better proposal now, but maybe you can reiterate on that.

the types of CPU,GPU and particularly Memory is fine , or any other suggestions

Why not use resource.Quantity for all of them, similar to how it's done in Kubernetes core APIs and also in our CloudProfile resource (https://github.com/gardener/gardener/blob/29ffac5ed724458803b7748800e9de6f07c84f0a/pkg/apis/core/v1beta1/types_cloudprofile.go#L140-L145)?

@rfranzke Hey Rafael,
Thanks. Regarding the data type resource.Quantity, yes, this is thought through. You are correct. This shall be implemented using resource.Quantity but somewhere in new future.
Why?
Currently, the machine catalogue (like here) which CA uses has these values as integer types and even the node template uses the same. Also, while building the node from the node template, these int types are ultimately type casted to resource.Quantity.
With the changes coming via PR linked to this issue, indeed, the scope of usage of machine catalogue will be nullified in Gardener context. However, we are looking forward to retain the usage of node template generation using machine catalogue for next couple of releases to offer backward compatibility (especially for those who are using MCM/CA independent of Gardener).

Hi @rfranzke
Thanks for valuable inputs.
We'll try to come up with a more meaningful name other than expectedNodeAttributes
The second point abt using resource.Quantity now seem valid to us. Earlier we were skeptical to make the changes as that would have required changes in the CA level as well. But after discussion among ourselves we have decided to make the following changes

Change expectedNodeAttributes to a more meaningful name
Use resource.Quantity for CPU, GPU as well in gardener core API
The changes in CA include

change the InstanceType struct to use resource.Quantity for CPU,GPU, MemoryMb fields in mcm_manager.go and aws catalogues and azure catalogues
adapt these in buildNodeFromTemplate() method and getMachineDeploymentNodeTemplate method
make changes in the machineClass API here

cc @vlerenc @ashwani2k

Thanks!

Do I get this right, that these hardcoded resource values are only required for ScaleMP where the amount of memory not necessarily matches the instance type?
While having read the attached generic scale from zero approaches and this comment, I am still not quite sure why this has to be hardcoded in the Shoot resource.
The main argument if I get it right, is that at runtime the amount of available memory can change and not necessarily matches the instance type.
Node resources are advertised by the kubelet on the Node resource via the Capacity. Could that be used to advertise the capacity on the MachineClass ?

Hey @danielfoehrKn You are correct with respect to the ScaleMP use case. This is one of the use cases which, this scale from zero story is addressing. The primary use case, this is trying to solve is to make Cluster Autoscaler scale up the worker pool from zero (when there are 0 nodes in the worker pool)

Node resources are advertised by the kubelet on the Node resource via the Capacity. Could that be used to advertise the capacity on the MachineClass ?

I doubt, if we can achieve this for 'scale from zero scenario' because there will be no nodes for the kubelet to refer the Capacity from. Am I right?

I doubt, if we can achieve this for 'scale from zero scenario' because there will be no nodes for the kubelet to refer the Capacity from. Am I right?

Correct, but this could be reconciled by a controller in the MCM which has access to the Shoot API server in the Seed. The capacity could then be regularly be written to the MachineClass

Correct, but this could be reconciled by a controller in the MCM which has access to the Shoot API server in the Seed. The capacity could then be regularly written to the MachineClass.

The problem which ScaleMP colleagues were facing is that scale-from-one works for them perfectly but not scale-from-zero.
The solution you are proposing solves the aspect where the machineclass can be updated with the resources of the node.
But the problem will be that we don't have the node (or any similar node) already present to read the resources from, and MCM also creates the machine/node once Cluster Autoscaler instructs it to do so.
Cluster Autoscaler will not instruct until it can form a nodeTemplate ( for which it needs node resources).
So the only way to break this is when some third party(Gardenlet and extension providers) updates the machineClass with the resources, so that CA can form nodeTemplate. The only way third party can get to know the resources during runtime is when its explicitly mentioned by the customer somewhere and since only customer facing API is shoot API we made changes there.

@timebertt proposed to rather not expose this expectedNodeAttributes field in the Shoot API but only in the extensions.gardener.cloud/v1alpha1.Worker resource. This way, only scale-from-zero will be supported.
In order to support the ScaleMP scenario we could extend the providerConfig of the SuSE CHost extension (as initially proposed in https://github.com/gardener/autoscaler/issues/27#issuecomment-910258051). If overridden node attribute configuration is provided here, the SuSE CHost extension could inject them via a mutating webhook into the MachineClass.
The rationale behind this proposal is that "overwriting node attributes" is highly specific to the ScaleMP scenario only, right? There is no other reasonable use case, or? If so, it should not be part of the Shoot API, probably. Obviously, this is a bit more to implement, however, perhaps the cleaner solution.

Side-question: is there actually a need to support scale-from-zero for the ScaleMP scenario? I have the feeling, that we are overdoing it because of an edge case (?). I feel like, it would probably be acceptable to simply only support scale-from-one for ScaleMP, because it is anyways not widely used (not at all?)?
I might be wrong, so I'm asking to clarify this :)

Side-question: is there actually a need to support scale-from-zero for the ScaleMP scenario? I have the feeling, that we are overdoing it because of an edge case (?). I feel like, it would probably be acceptable to simply only support scale-from-one for ScaleMP, because it is anyways not widely used (not at all?)? I might be wrong, so I'm asking to clarify this :)

I would like to pitch in here as I was involved in some of the initial discussions around the requirement.
For worker pools with XXL type machines, scale to zero is very important to save costs.
If I understand correctly, the biggest value preposition of ScaleMP is to expand instance memory of the provisioned XXL type machines to get even more out of them. So not able to support scale from zero will be counter intuitive to keep the XXL machines running if they consume scaleMP but supported otherwise.
Also for mutli-az deployments where scale from zero becomes more important (costs perspective), currently to achieve scaling across AZs we have the limitation to keep the Min for workers to be equal to no. of AZs configured for providers where Scale From Zero  is not supported.  So not supporting or only supporting Scale From 1 will only add to costs.
Given the costs savings involved and the usage, I believe we should support the feature here although its not a commonly asked on.

@timebertt proposed to rather not expose this expectedNodeAttributes field in the Shoot API but only in the extensions.gardener.cloud/v1alpha1.Worker resource. This way, only scale-from-zero will be supported. In order to support the ScaleMP scenario we could extend the providerConfig of the SuSE CHost extension (as initially proposed in gardener/autoscaler#27 (comment)). If overridden node attribute configuration is provided here, the SuSE CHost extension could inject them via a mutating webhook into the MachineClass. The rationale behind this proposal is that "overwriting node attributes" is highly specific to the ScaleMP scenario only, right? There is no other reasonable use case, or? If so, it should not be part of the Shoot API, probably. Obviously, this is a bit more to implement, however, perhaps the cleaner solution.

Coming to the approach -- Just from the original intent we wanted to solve the 3 problems laid out in the original intent in #27 through a single approach and hence the idea to have them as part of shoot spec. But as owners of the  Shoot spec if you recommend that a better way of achieving the same would be via enhancing the Worker spec and for scaleMP use-case via the  providerConfig of the os-extension,  then I believe we should explore these and adapt the implementation.
We can manage the additional effort and expectation with the stakeholder if the final solution is a lot cleaner.
Hope it was of some help.
Also while we refine this PR from the inputs in this thread, is the name AutoscalarNodeTemplate agreed upon or is the search still on :)

AutoscalerNodeTemplate

For me, that sounds good :)

@timebertt As far as I understand and @ashwani2k also confirmed, scale-from/to-zero is a cost saving topic for certain big players. These are the same big players that also require ScaleMP to get even more out of their already expensive machines.
@AxiomSamarth In regards to expectedNodeAttributes, I believe I expressed also doubts about that field name in one of our syncs, but I don't mind too much. My proposal was capacity in https://github.com/gardener/autoscaler/issues/27#issuecomment-910230136, but I see nodeTemplate above which sounds nice. So, here you have it (another opinion). ;-) However, see below...
@AxiomSamarth @rfranzke @timebertt As the capacity actually depends on the OS, I also second https://github.com/gardener/gardener/issues/4948#issuecomment-964234966 -> https://github.com/gardener/autoscaler/issues/27#issuecomment-910258051 as the more natural fit. The general scale-from/to-zero issue is solved, because we take the capacity from the cloud profile in general and the specific ScaleMP issue is solved, because the OS extension then "expands" (intercepts/overwrites) the capacity, which is what the extension actually quite literally does (poetic fit). ;-)

@timebertt As far as I understand and @ashwani2k also confirmed, scale-from/to-zero is a cost saving topic for certain big players. These are the same big players that also require ScaleMP to get even more out of their already expensive machines.

I'm still wondering whether these big players will actually scale their worker pools with these expensive machines to zero. Because I would expect that for development / evaluation use cases, where you might want to scale to zero, they surely wouldn't use these expensive machines and rather default machine types, which would already support scale-to/from-zero out of the box.

/reopen
PRs are reverted with https://github.com/gardener/gardener/pull/5113

Hi Colleagues,
Earlier we had come to conclusion that user will be providing their desired capacity in image provider config like this and we'll be implementing a mutating webhook in gardener-extension-suse-chost to mutate the machineClass and update nodeTemplate field to caterscaleMP memoryOne useCase(where runtime capacity is different from what's mentioned in cloudProfile), which will be used by Hana.
However, after discussion with @vpnachev and @dkistner we figured that in the coming future there might be other OS which enhances resources on runtime and to handle that we would have to introduce mutating webhook in every OS extension, and also update some interfaces for webhooks in g/g. Also there is this concern as to why OS extension should deal with machineClasses ?
A solution we concluded with would be to introduce nodeTemplate field in providerConfig of the core.gardener.cloud/v1beta1.Worker structure. The advantages of this solution will be

OS extensions won't have to deal with machineClasses
worker controller in the extensions is the one to fill nodeTemplate in machineClasses and would take a look at providerConfig at that time for any user provided values
would be quicker to implement

I would like to hear comments from @rfranzke and @timebertt on the same , and if it is feasible to make this change.
It would be great if we could conclude with a plan before colleagues go on Christmas vacation
cc @ashwani2k @vlerenc @AxiomSamarth

/reopen

As discussed and reviewed with @Samarth, his suggested approach looks to be suitable to our requirement.
The needed functionality is something we asked for back in August, and and delay is blocking us from improving TCO in HANA-Cloud, where already hundreds of instances are being used on daily (>100 are with over 1TB of memory).

Update:
We have got private approval regarding the new approach , and will proceed working on it. Since we are planning to enable feature in AWS first , we will be working on the changes in gardener-extension-aws . Please refer to this PR for progress.


Updated changedlog with correct s3 bucket name

Issue #, if available:
https://github.com/awslabs/amazon-eks-ami/issues/567
Description of changes:
For v20201117 AMI release, update s3 binary bucket name from 11-07 to 11-02
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Actually we need to update the dates here as well - https://github.com/awslabs/amazon-eks-ami/blob/master/Makefile#L47

Yes, I'm sending one more PR to update the Makefile -  https://github.com/awslabs/amazon-eks-ami/blob/master/Makefile#L47


unknown bin

Some installed packages could not be loaded because they contain native modules that were compiled for an earlier version of Atom.
Cannot find module '/Users/gregmcmenimen/.atom/packages/platformio-ide-terminal/node_modules/pty.js/bin'

https://github.com/platformio/platformio-atom-ide-terminal/releases/tag/v2.5.5


docs: prefetch avatar images

PWA enabled, don't merge yet, I need to do some final tests.
I need to check also the preview, so the PR cannot be on draft.

There is a small problem about sponsors images: since we have not in the sw precache both will be stored on the cache on subsequent navigation and so if we go offline the sponsors will not be loaded.
I can test removing the `loading="lazy" for these 2 images only to check if we can force to include them into the sw cache.

@patak-dev with previous hack we still have a problem with your sponsors image, it seems the server is not sending some CORS headers preventing the sw to precache it and maybe some cache headers, while Anthony's sponsors image is ok:
https://patak.dev/sponsors.svg
access-control-allow-origin: *
age: 38874
cache-control: public, max-age=0, must-revalidate
content-disposition: inline; filename="sponsors.svg"
content-encoding: br
content-type: image/svg+xml
date: Sat, 05 Mar 2022 09:38:56 GMT
etag: W/"5aa4d3bcc01a84304b97956f655b0fd042483ef128ac4fb4c10ecf9e3bcced05"
server: Vercel
x-vercel-cache: HIT
x-vercel-id: cdg1::hcgs4-1646473136541-19ed612593c2

https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg
accept-ranges: bytes
access-control-allow-origin: *
access-control-expose-headers: *
age: 6867
cache-control: public, max-age=604800, s-maxage=43200
content-encoding: gzip
content-length: 668467
content-type: image/svg+xml
cross-origin-resource-policy: cross-origin
date: Sat, 05 Mar 2022 09:33:39 GMT
etag: W/"eb786-e8bRIBWb4mnoGfEPBCy+PsLA3h4"
timing-allow-origin: *
vary: Accept-Encoding
x-cache: HIT, HIT
x-content-type-options: nosniff
x-jsd-version: master
x-jsd-version-type: branch
x-served-by: cache-fra19142-FRA, cache-mad22060-MAD

@userquin my sponsor image can now be retrieved using the same scheme as Anthony: https://cdn.jsdelivr.net/gh/patak-dev/static/sponsors.svg

Work on it

Haha, I think you are think it in a bit more complex way 😅

Dont merge yet I need to review it

Ouch!

I will lock the deploy to the previous build so you can take time to double check

I think you have included the sw itself on the sw precache manifest


fix(en/dramacool): fix urls & refactor

Checklist:

[x] Updated extVersionCode value in build.gradle for individual extensions
[x] Updated overrideVersionCode or baseVersionCode as needed for all multisrc extensions
[x] Referenced all related issues in the PR body (e.g. "Closes #xyz")
[x] Added the isNsfw = true flag in build.gradle when appropriate
[x] Have not changed source names
[x] Have explicitly kept the id if a source's name or language were changed
[x] Have tested the modifications by compiling and running the extension through Android Studio

Closes #895
Probably closes #576

This doesnt close #576 , it still wont download


Enhancement Request: Custom icon/wording for "app is blocked" notifications

Would it be possible to customize the icon and wording that appears in the notification when an application is blocked/terminated?
I like the way swiftDialog does it-- an image file can be placed in a specific location with a specific filename before the package is installed, and whatever image file is there is adopted as the app and notification icon, otherwise the standard Dialog.app icon is used.
Being able to customize the wording is more of a nice-to-have, I've always felt it should say "update your operating system" instead of "update your device."

This will be available in the next pre-release.


Mention Gitea, and generic git, mecurial, bzr support

As I understand it, the docs just work by git (or mercurial or bzr) and are not tied to specific platforms.
However, the docs on the website are unclear about this:

GoDoc hosts documentation for Go packages on Bitbucket, GitHub, Google Project Hosting and Launchpad.

Being new to the Go community and trying to understand how things work, I was confused by this at first.
I'd suggest updating the copy to read something more similar to this:

GoDoc hosts documentation for Go packages using git, mercurial, and bzr import URLs.
This works with popular hosting sites such as Bitbucket, GitHub, Google Project Hosting and Launchpad, as well as peer platforms such as GitLab and Gitea.

Related to https://github.com/golang/gddo/issues/538

I wonder ... does it support any git provider site? For example I am using https://git.sr.ht , however it can't seem to find this https://godoc.org/?q=git.sr.ht%2F~biosmarcel%2Fanimaid%2Fanimaid

Struggling with the same issue, but with my own go get-able site that godoc.org doesn't recognize.
The import path is import "go.azarus.ch/fuelconv"

Looks like the pattern in the gddo/gosrc.service for generic VCS is insufficient. The regexp is pretty strict and only allows A-Za-z0-9_.\-/, but the spec allows for most unicode characters except !"#$%&'()*,:;<=>?[\]^`{|}.
That being said, the two examples you gave are for git.sr.ht and hg.sr.ht, both of which suffer from go-get issues and fail for other reasons:

https://todo.sr.ht/~sircmpwn/hg.sr.ht/11
https://todo.sr.ht/~sircmpwn/git.sr.ht/130

Do you have an example git.sr.ht repo that I can test with that contains go code at the root? (e.g. git.sr.ht/~user/pkg)

Here: https://git.sr.ht/~biosmarcel/animaid

Hi Colin,
Here's an hg repo: https://hg.sr.ht/~azarus/fuelconv
I'll mirror it under https://git.sr.ht/~azarus/fuelconv in a minute.

yeah, adding the tilde char will unblock these go get-able repos:

I think there is a larger discussion to be had about the long term fix, since this regexp does not follow the spec, but that is for the repo maintainers.

If gddo is going to run a command like git or svn to fetch the source code, wouldn't it be simpler to just run go get?


doc: remove extra space after nested list

Remove extra spacing after a nested list.
Signed-off-by: David B. Kinder<EMAIL_ADDRESS>

@carlescufi brought this up while working on #21013


Remove @optional decorator.

Resolves #9
This removes the @optional decorator.
The @optional decorator was to allow a subclass to override the @required behavior of a parent class; however, this breaks the object-oriented paradigms that this library is based on.
For instance, if a parent class marks a field as required then it should be able to assume that the field is present. Overriding this behavior in a child class means that the parent methods inherited by the child may not work as expected due to a change in the interface for the input arguments.
@input
class Parent {
  @field(ID)
  @required
  id;

  toParams() {
    return getParams(this.id); // assume getParams fails if id is not provided
  }
}

@input
class Child extends Parent {
  @field(ID)
  @optional
  id;
}

In this example Child.toParams() will fail if id is not provided and id is marked as not required. Maybe this was done with some other implementation in mind; however, the interface required by the parent type should be maintained.

Pull Request Test Coverage Report for Build 57

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 55:
0.0%

Covered Lines:
278

Relevant Lines:
278

💛  - Coveralls

This PR changes the API by removing functionality. By definition, this would result in a major version change; however, since @optional is not documented anywhere and there has been little activity as far as npm downloads, it can probably be assumed that this functionality is not used and a minor version change will be sufficient to cover this.


test-branch/execute-job/wrong-commit-sha-on-pr/a69711c3-bb3e-4c57-9cf5-232d8c87d2a5

PR for testing 53d50c454da51fb99a2796712a844e8f5377fd22

/canonical/self-hosted-runners/run-workflows 931ad21dd9ace68aaa0a7d341e94de96ad93fa6b


A layout is sometimes broken when OnResize called.

It seems that OnRepaint works fine but OnResize does not.
On calling OnResize, the layout is down by one line.

Oh... it causes because ConsoleVec2 is no longer 'struct' !
It's just I was trapped by "C# Reference type".


Update husky to v8

Changes

Updates husky to v8.0.1. The latest version of husky drops support for Node 12, which is now end of life (ended on 30 April 2022).
Updated CI to run on Node versions 14, 16 and 18

Sorry missed that. I've updated the test to be a little more forwards compatible. Let me know what you think

The dependency that was breaking seemed to be v8-to-istanbul, which is a dependency for Jest. I've bumped Jest from v27 to v28 and that seems to have fixed the issue


Is this approach compatible with iOS?

Is the proposed approach to local font access compatible with the iOS 13 font security model? I’m not well-versed in the issue since I don’t think anyone uses the new font stuff in iOS 13, but my understanding was that the new iOS 13 approach to font privacy means that font enumeration isn’t allowed; only font pickers and querying for specific fonts are allowed.
I suppose it doesn’t matter since Safari is not subject to the security mechanisms of normal apps.

Hi @my2iu, thanks for filing the issue.
I'm not familiar with the system APIs on iOS. Our MacOS implementation uses CoreText APIs. The documentation pages state that the APIs are available on iOS 3.2+.
Could you please link to a page describing the iOS13+ Font privacy policy? Also, I assume this is about the new custom fonts capabilities for iOS apps.
Indeed, Safari could be treated differently from other iOS applications. I'm going to close this bug, but feel free to re-open if you feel this is relevant.

Yes, I was referring to this:
https://developer.apple.com/videos/play/wwdc2019/227/
My concerns are that

you may be pursuing a font security model that differs from and is incompatible with the direction that other major systems are going with, which is fine but it should be acknowledged
the fact that your design docs don't mention this other security model suggests a general lack of due diligence
the API you propose is looser than the iOS model, but your API could offer a more restrictive subset that could be compatible with the iOS model, so that developers could code to the more restrictive subset if they want something compatible with iOS


sdk(s3) hangs sometimes during saving stream via PutObject

What platform/OS are you using?
Windows x64
What compiler are you using? what version?
MSVC 2013
What's your CMake arguments?
Default, version of sdk - 1.0.83
Can you provide a TRACE level log? (sanitize any sensitive information)
I don't have aws log, but I have a call stack from frozen process:

ntdll.dll!NtWaitForSingleObject()	Unknown	Non-user code. Symbols loaded.
KERNELBASE.dll!WaitForSingleObjectEx()	Unknown	Non-user code. Symbols loaded.
msvcr120.dll!Concurrency::details::ExternalContextBase::Block() Line 151	C++	Non-user code. Symbols loaded.
[Inline Frame] msvcr120.dll!Concurrency::Context::Block() Line 62	C++	Non-user code. Symbols loaded.
msvcr120.dll!Concurrency::details::_Condition_variable::wait(Concurrency::critical_section & _Lck={...}) Line 595	C++	Non-user code. Symbols loaded.
msvcp120.dll!do_wait(_Cnd_internal_imp_t * * cond=0x000001dd05af8a38, _Mtx_internal_imp_t * * mtx=0x000001dd05af8a30, const xtime * target=0x0000000000000000) Line 56	C++	Non-user code. Symbols loaded.
//!!!Hangs there
aws-cpp-sdk-core.dll!Aws::Utils::ExclusiveOwnershipResourceManager<void * __ptr64>::Acquire() Line 52	C++	Symbols loaded.
aws-cpp-sdk-core.dll!Aws::Http::WinConnectionPoolMgr::AquireConnectionForHost(const std::basic_string<char,std::char_traits,std::allocator > & host={...}, unsigned short port=26320) Line 98	C++	Symbols loaded.
aws-cpp-sdk-core.dll!Aws::Http::WinSyncHttpClient::MakeRequest(Aws::Http::HttpRequest & request={...}, Aws::Utils::RateLimits::RateLimiterInterface * readLimiter=0x00007ff86614ec90, Aws::Utils::RateLimits::RateLimiterInterface * writeLimiter=0x0000000000000000) Line 285	C++	Symbols loaded.
aws-cpp-sdk-core.dll!Aws::Client::AWSClient::AttemptOneRequest(const std::basic_string<char,std::char_traits,std::allocator > & uri, const Aws::AmazonWebServiceRequest & request={...}, Aws::Http::HttpMethod method=HTTP_PUT) Line 247	C++	Symbols loaded.
aws-cpp-sdk-core.dll!Aws::Client::AWSClient::AttemptExhaustively(const std::basic_string<char,std::char_traits,std::allocator > & uri, const Aws::AmazonWebServiceRequest & request={...}, Aws::Http::HttpMethod method=HTTP_PUT) Line 131	C++	Symbols loaded.
aws-cpp-sdk-core.dll!Aws::Client::AWSXMLClient::MakeRequest(const std::basic_string<char,std::char_traits,std::allocator > & uri={...}, const Aws::AmazonWebServiceRequest & request={...}, Aws::Http::HttpMethod method=HTTP_PUT) Line 529	C++	Symbols loaded.
aws-cpp-sdk-s3.dll!Aws::S3::S3Client::PutObject(const Aws::S3::Model::PutObjectRequest & request={...}) Line 2422	C++	Symbols loaded.

May be the issue is fixed already(could you please mention concrete ticket?) since 1.0.83 version(it is ~March 2017).
This code is always executed from single(and main) thread(until sdk internal calls start to use multithreading).
Thanks a lot for help. If you need any other information that I might miss, feel free to ask.

The string where it hangs is:
m_semaphore.wait(locker, &{ return m_shutdown.load() || m_resources.size() > 0; });
in F:\aws-sdk-cpp-1.0.83\aws-cpp-sdk-core\include\aws\core\utils\ResourceManager.h

Can you turn on logging and provide a trace log?
Can you provide a sample code that reproduces the issue?
Have you tried later versions of the SDK? v1.0.83 is relatively old.

Thank you for quick reply.

Actually, it happens occasionally and I have no logs for this case right now. I will try to get logs when it happens again.

Sample code:

    Aws::Client::ClientConfiguration clientConfiguration;
    clientConfiguration.region = getRegion();

    Aws::S3::S3Client client(clientConfiguration);

    Aws::S3::Model::PutObjectRequest objectRequest;
    objectRequest.WithBucket(parsedUri.bucket)
      .WithKey(parsedUri.directory + parsedUri.name)
      .SetServerSideEncryption(Aws::S3::Model::ServerSideEncryption::AES256);
    std::shared_ptr<Aws::IOStream> stream = std::make_shared<Aws::IOStream>(source.rdbuf());
    objectRequest.SetBody(stream);
    auto putObjectOutcome = client.PutObject(objectRequest);

Yeah, I know that version is too old and I can update it, but for my situation it is more preferable to know that it is already fixed before updating.

@marcomagdy , any ideas?

Also, after update to 1.4.36 my method for detecting bucket region:
    Aws::S3::Model::GetBucketLocationRequest request;
    request.SetBucket(parsedUri.bucket);
    Aws::S3::S3Client client;
    Aws::S3::Model::GetBucketLocationOutcome response = client.GetBucketLocation(request);
    if (response.IsSuccess())
      parsedUri.region = Aws::S3::Model::BucketLocationConstraintMapper::GetNameForBucketLocationConstraint(
        response.GetResult().GetLocationConstraint());

stop working. Now it gives error because of V4 signature which wants region:

The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-1'

What could you advise me to get region of bucket now?

@marcomagdy , any updates?

GetBucketLocation can only be used in us-east-1 region AFAIK. So, make sure the ClientConfiguration you pass S3Client to make this call has the region set to us-east-1.
Is S3 still hanging for you? if yes, do you have the logs? is it the same stack trace?

Closing because of no further response.


Support for setting the execution context after import time to support late gevent patching

Is your feature request related to a problem? Please describe.
 I'm running into an issue where elasticapm.traces.execution_context is initialized at import time during the first phase, using the not-monkeypatched threading.local / contextvars, which causes transactions / spans to be linked to the wrong requests.
Describe the solution you'd like
Since fixing my codebase to not import the logging code is rather involved, I am looking for a safe way to either re-initialize the current execution context or assign it to a newly constructed instance. Ideally, I would be able to do something like
set_execution_context(ThreadLocalContext())

after I know gevent has done its patching. This would also open the door for using custom execution context implementations, if someone ever wanted to do that.
This seems like it would be a bit tricky to implement in the library as it is now, since there is a lot of
from elasticapm.traces import execution_context

which AFAIK makes it impractical to do something like elasticapm.traces.execution_context = Blah() due to the multiple names thing.
Describe alternatives you've considered
I've converted our setup code to use only local imports for elasticapm (in functions executed after I know gevent has finished patching), which works okay. It's a little fragile, though - if anyone ever imports elasticapm without the proper guards things could break again.
I think this might be specific to our codebase - we should really be patching gevent before we import things anyway. Feel free to close if this doesn't seem worth the effort, since I have a pretty solid work-around. Love the library and great work. 😄

I think this would be doable if we changed elasticapm.traces.execution_context to basically be a getter for the execution context that has been set. Then we could proved a setter for the execution context that could be set or updated any time.
That said, I don't see this being very high priority, but I think we can definitely leave this open. Thanks for the request!


Create decimal fields with precision

Version information

Laravel: v5.7
Voyager: v1.1.10
PHP: 7.x
Database: mysql 5.7

Description
If you create a field type decimal, you can't add precision, like 10,8
Steps To Reproduce
Create a field type decimal, if you try to add length to 10,8 it store as 10,0
Expected behavior
Should store decimal precision

The same issues, would be really useful to fix it.

+1 facing same issue
Any Progress on this one? mid-2020 now and this one is still open...

https://twitter.com/taylorotwell/status/1256031217943818242
Also, if I remember correctly, this was a problem with DBAL, not Voyager directly.

I noticed the same problem with Laravel 7 and latest Voyager. I will take a look on how the table is created because I think it is just a matter of changing the input to allow the comma and for it to be interpreted in the table creating code. As of now, we need to manually update the decimal precision in the database itself, otherwise we can't store monetary values at all.

Monetary values shouldn't be stored in floating-point numbers anyway (https://spin.atomicobject.com/2014/08/14/currency-rounding-errors/.  it's a bit old, but the points are still relevant)

Monetary values shouldn't be stored in floating-point numbers anyway (https://spin.atomicobject.com/2014/08/14/currency-rounding-errors/. it's a bit old, but the points are still relevant)

That is correct, but the decimal field is not a float. So it works

Yes, but what variable does that value go into when it gets pulled out of the database...?

Ah! I get it. Yes, the value will be treated as a float by internal conversion of PHP. But in the actual code you should never round the values, just format it. By the way that just reminded me I need to test saving the value with precision in the database, with the default input number of Voyager

Yes, but what variable does that value go into when it gets pulled out of the database...?

I have been thinking and maybe it is our approach that is wrong in this matter. How Voyager wants us to manage decimal or monetary values?

Yes, but what variable does that value go into when it gets pulled out of the database...?

I have been thinking and maybe it is our approach that is wrong in this matter. How Voyager wants us to manage decimal or monetary values?

For what is worth for monetary values I always try to avoid decimals, choose what's the precision and then use that as base.
For example if your prices need cents use cents as unit, store the integer value and convert for display.
$ 3.14 stored as 314

@MrCrayon oh you are right! I always forget we can do operation with cents and it makes sense to store the value as integer and doing visual transformations for display. Now I just have to know how can I work with currencies that does not have cents at all, like PYG (Paraguay Guaranies). But thanks for the info.

I have a amount column in Voyager table and I want to display the values with decimal places and comma (like number_format($var, 2), e.g. 1,000.20). Is it possible?

I have a amount column in Voyager table and I want to display the values with decimal places and comma (like number_format($var, 2), e.g. 1,000.20). Is it possible?

Having the same issue, the number is getting rounded each time i try to save it in the database.

When trying to display a decimal, this is still an issue. It rounds up on it's own.
I have it like: 0.0775 (for 7.75%), but Laravel 11 rounds up to 0.8
Is there a fix??


Refactor methods for pagination

The code from #1 contains a lot of copy & paste code for all the pagination loops.
This issue is to try to refactor it into something cleaner and generic.
Also, the pagination can be improved to be aware of how many elements we already retrieved, and how many are left.
For example, for a repository with 140 issues, maybe we can have a good default for the first page of 20. The totalCount returns 140, so we know we can do another query of 100 and another one of 20.

Why not doing an initial call to count all the resources (issues, repos, and topics), and then proceed with the download?
If we do not want this initial call, why not requesting the first 100 resources instead of only 20?

If we do not want this initial call, why not requesting the first 100 resources instead of only 20?

I don't remember if it was explained in some minutes or maybe it has been lost in some slack thread. But the problem is that that quota counts based on the number of potential nodes returned and not based on the number of actual nodes. So requesting the first n resources when they're actually m << n it's a waste. That's why 20 has been proposed as a reasonable default value.

@dpordomingo Maybe my terminology it's not much correct (I'm also not a graphql expert). What I meant with potential is that if for example I run this:
{
  viewer {
    login
    repositories(first: 100, isFork: false) {
      totalCount
      edges {
        node {
          id
          issues(first: 50) {
            edges {
              node {
                id
                comments(first: 90) {
                  edges {
                    node {
                      id
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

I can clearly see totalCount: 29, but the cost of this is still 51 = (1 + 100 + 5000) / 100, when I'd have obtained the same output by setting first: 29 with a cost of 15 = (1 + 100 + 1450) / 100.


Add more overloads of Graphs.jl functions

Codecov Report

Merging #8 (efcad20) into main (eb6d144) will increase coverage by 2.83%.
The diff coverage is 91.66%.

@@            Coverage Diff             @@
##             main       #8      +/-   ##
==========================================
+ Coverage   48.95%   51.79%   +2.83%
==========================================
  Files           4        4
  Lines         239      251      +12
==========================================
+ Hits          117      130      +13
+ Misses        122      121       -1

Impacted Files
Coverage Δ

src/DataGraphs.jl
100.00% <ø> (ø)

src/arrange.jl
100.00% <ø> (+15.38%)
:arrow_up:

src/abstractdatagraph.jl
50.93% <91.66%> (+3.28%)
:arrow_up:

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


Alsa

No

Support for ALSA was added some month ago: https://github.com/plietar/librespot/commit/445171a46a514644093d2e9d2f0a956487fd3776.


Gpkg autoconfig

Adds an AutoConfig() function to gpkg provider.  The config includes all available feature tables.  This function provides what NewTileProvider() expects, not a config.toml.
Also extracted out metadata collection from NewTileProvider() into featureTableMetaData() so it can be reused in AutoConfig() & more rigorously tested.

Coverage increased (+0.1%) to 44.494% when pulling a9f3b0f15e3960f381b6d8542601c65d0fce45c3 on gpkg_autoconfig into 287e6d37e431d53671181eb94d387db845261d1d on v0.6.0.

Coverage increased (+0.1%) to 44.494% when pulling a9f3b0f15e3960f381b6d8542601c65d0fce45c3 on gpkg_autoconfig into 287e6d37e431d53671181eb94d387db845261d1d on v0.6.0.

No changes, just rebased onto current v0.6.0.

The v0.6.0 branch no longer exists. moving this to be based of the new v0.7.0 branch.

Rebased onto v0.7.0

Pull Request Test Coverage Report for Build 875

0 of 0 (NaN%) changed or added relevant lines in 0 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.3%) to 46.295%

Files with Coverage Reduction
New Missed Lines
%

provider/gpkg/binary_header.go
2
100.0%

Totals

Change from base Build 871:
0.3%

Covered Lines:
5648

Relevant Lines:
12200

💛  - Coveralls

Pull Request Test Coverage Report for Build 875

0 of 0 (NaN%) changed or added relevant lines in 0 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.3%) to 46.295%

Files with Coverage Reduction
New Missed Lines
%

provider/gpkg/binary_header.go
2
100.0%

Totals

Change from base Build 871:
0.3%

Covered Lines:
5648

Relevant Lines:
12200

💛  - Coveralls

I'm fine with this PR for it's near term purpose. AutoConfig is a great feature that I would like to eventually establish an interface around, but that should be handled in another issue.


ConnectionResetError(104, 'Connection reset by peer') when opening links

I've been disconnected a couple of times now, when I tried to open random links with the enter key.
The following output was printed to the CLI:
ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

Hi! Thanks for opening an issue. Would you mind starting with logging enabled
rtv --log /tmp/rtv.log

and paste the logfile the next time the error occurs?

Thank you for the quick answer..
I've attached the log file.

Hmm...
So it looks like this is a legitimate HTTP connection reset generated by the underlying requests library. This isn't something that I have control over, besides possibly catching the exception when the connection drops and doing something sane with it. Under normal operation your connection shouldn't be reset, so I'm not sure if you're sending a bad URL or what else is going on.
I have a few questions that might aid in helping me to reproduce this:

How frequently does this happen?
Is is reproducible (will opening the same submission always fail)? If so, can you give an example of a bad submission?
Are you signed in to you reddit account when this happens?
Is it only when you press Enter to open the submission, or does it also happen when you press l to view comments?

As you described my problem I suspected my VPN, which causes similar behavior in other programs.
The error was not reproducible at all without my VPN connection, so it doesn't have to do with rtv.


Rely on generated IDs only

Description
Stop setting an explicit ID for applicant in repository test. Instead, we should only ever rely on generated IDs. This avoids conflicts in the database.
Checklist

[x] Created tests which fail without the change (if possible)
[ ] Extended the README / documentation, if necessary

Needs review from
ONEOF: [hmhsu, ndmckinley]

It looks like there's a compile error:

Error:  /usr/src/universal-application-tool-0.0.1/app/services/program/BlockDefinition.java:53:1: Parameter type com.google.common.collect.ImmutableList<java.lang.String> of setter method should be com.google.common.collect.ImmutableList<services.question.QuestionDefinition> to match getter services.program.BlockDefinition.questionDefinitions, or it should be a type that can be passed to ImmutableList.copyOf to produce com.google.common.collect.ImmutableList<services.question.QuestionDefinition>

Never mind, that's in another PR!  I'll wait for that to fix and you to rebase.


Improve cleanup

Current cleanup has a 0.1% chance per announce: https://github.com/ckcr4lyf/kiryuu/blob/9d45a1187962f20351410cb9bb81c08be76106ef/src/main.rs#L171-L176
This affects non popular torrents where the swarm dies of, e.g. in this one, the total (including stale) count in redis is 345, whereas the active (last 30 min) is just 8!
$ redis-cli
<IP_ADDRESS>:6379> ZCOUNT '4b0a62cb3d03d6e27a3878293ec9233b09254d74_seeders' 0 +inf
(integer) 345
<IP_ADDRESS>:6379> ZCOUNT '4b0a62cb3d03d6e27a3878293ec9233b09254d74_seeders'<PHONE_NUMBER>225<PHONE_NUMBER>225
(integer) 8

This introduces additional CPU strain per 8 announces per 30 min, vs. a more regular cleanup might be better (for less popular torrents)

From cleaning all torrents:

Seeders: 60MiB
Leechers: 100 MiB

Total -> 160/460 = ~38%!!!

On first (seeder) cleanup, I killed metrics so there is a gap. But the leecher clean shows no noticeable change in announce per min, latency during the cleaning

Cleanup is added to kouko, would be better if it can be within kiryuu (kouko is in TS/JS so even SCAN + loops are heavy on CPU)

We've added some cleanup to kiryuu in the postgres branch: https://github.com/ckcr4lyf/kiryuu/blob/88388cfb1f60f35a0421961f7907fcd9250247ae/src/bin/clean.rs#L47-L48
However, this does not delete old peers from active torrents!
E.g., running postgres version on kiryuu-test.mywaify.best , we see a ZSET:
Biggest   zset found '"378aeb09a1b57b4f753b3c59f9976c198d5593db_seeders"' has 9485 members

But if we get the members, then we see there are some that last announced 10 days ago!
<IP_ADDRESS>:6379> ZRANGE "378aeb09a1b57b4f753b3c59f9976c198d5593db_seeders" -inf +inf BYSCORE LIMIT 0 10 WITHSCORES
 1) "REDACTED"
 2) "1730257691922"

If we ZCOUNT all vs. last 30 min:
<IP_ADDRESS>:6379> ZCOUNT "378aeb09a1b57b4f753b3c59f9976c198d5593db_seeders" -inf +inf
(integer) 9509
<IP_ADDRESS>:6379> ZCOUNT "378aeb09a1b57b4f753b3c59f9976c198d5593db_seeders"<PHONE_NUMBER>000 +inf
(integer) 223

~97.6% space is wasted!
<IP_ADDRESS>:6379> MEMORY USAGE "378aeb09a1b57b4f753b3c59f9976c198d5593db_seeders"
(integer) 847028

In this particular example it turns out to be ~827kB wasted.


Disappearance transitions fail in apps with Popovers installed

Extremely weird issue. This is my app without Popovers installed:
https://user-images.githubusercontent.com/49819455/165876192-3b5dfac4-698d-4a5f-a635-9a11e0019d88.mov
This is my app with Popovers installed:
https://user-images.githubusercontent.com/49819455/165876194-0956d8f4-0452-4a69-b8ff-cc1074a108d8.mov
The dismissal animation does not work!
I didn't even import Popovers — all I did was add the package to my app. What could be the problem?

Wow. It was this:
https://github.com/aheze/Popovers/blob/main/Sources/PopoverUtilities.swift#L71-L75
extension Transaction: Equatable {
    public static func == (lhs: Transaction, rhs: Transaction) -> Bool {
        lhs.animation == rhs.animation
    }
}

It looks so innocent, but it's the problem. Wow...
I'll push a fix.

Fixed in https://github.com/aheze/Popovers/releases/tag/1.3.2.


libopusenc depends only on libopus？which verson？

1，you say “libopusenc depends only on libopus.”but

2，so，i add  speexdsp source code ， but

3，so，i 。。。

but

now，what can i do。i use libopus 1.2 and 1.2beta and 1.1.3 test in android！

(copy of response on the mailing list)
libopusenc does not require speexdsp. It copes some source code from it. The reason it's trying to #include that missing file is because OUTSIDE_SPEEX isn't defined. This is set in Makefile.am, but I assume you're overriding some/all of the build system.


Error using local disk and s3 DigitalOcean

Package version
adonis-responsive-attachment: ^1.3.0
Node.js and npm version
v14.17.6
Sample Code (to reproduce the issue)
Send a POST request with an "image" multipart field using Digital Ocean's S3 settings
The code is the default. Best exemplified in the repository.
Model (default)
@responsiveAttachment()
public image: ResponsiveAttachmentContract

Controller (default)
const requestPost = await request.validate(UploadValidator)
const attachment = await ResponsiveAttachment.fromFile(requestPost.image)
const upload = new Upload()
upload.image = attachment
await upload.save()

.env.example
S3_KEY="HJUS........YC3xyz"
S3_SECRET="xyJNeroqP..............RN4txyz"
S3_BUCKET="mybucketname"
S3_REGION="sfo2"
S3_ENDPOINT="https://sfo2.digitaloceanspaces.com"

BONUS (a sample repo to reproduce the issue)
https://github.com/rafas/test-attachments
Error description
I'm trying to implement Responsive Attachment (RA) with an s3 space Digital Ocean
In my tests with Attachment Lite the uploads work normally, however when I use Responsive Attachment it returns the error below.

The error happens differently in 2 cases
Case 1: local disk + s3 disk
In this case .env is setting DRIVE_DISK=local while decorator is setting to s3 @responsiveAttachment({ disk: 's3' })
The error occurs when the RA tries to read from disk s3 the file that was moved to the temporary folder on the local disk (image_upload_tmp).
Message
E_CANNOT_READ_FILE: Cannot read file from location "image_upload_tmp/cl3p7e9420001v1y88qa8613s.png"
Note: Here the file is in the local folder but the RA is trying to access it on s3 disck
Case 2: only s3 disk in all Adonis environment
In this case the .env is setting DRIVE_DISK=s3 for the entire Adonis environment, and the decorator is inheriting the environment's s3 disk.
Here the RA manages to send the file to the temp folder on the s3 disk, but fails when trying to read it.
Message
E_CANNOT_READ_FILE: Cannot read file from location "image_upload_tmp/image_upload_tmp/cl3p7x6yf000115y8dmzf0pqc.png"
Note: The file is in the s3 bucket, but the URL appears to be malformed, doubling the folder name "image_upload_tmp/"
Note: At the end of the report both cases return an exception with a typical s3 response when the file does not exist ("name": "NoSuchKey" and "httpStatusCode": 404).
Error Stack
E_CANNOT_READ_FILE: Cannot read file from location "image_upload_tmp/image_upload_tmp/cl3p71qps0001dgy8ezl0esv4.png"
    err: {
      "type": "CannotReadFileException",
      "message": "E_CANNOT_READ_FILE: Cannot read file from location \"image_upload_tmp/image_upload_tmp/cl3p71qps0001dgy8ezl0esv4.png\"",
      "stack":
          CannotReadFileException: E_CANNOT_READ_FILE: Cannot read file from location "image_upload_tmp/image_upload_tmp/cl3p71qps0001dgy8ezl0esv4.png"
              at Function.invoke (/Users/rafael/test-attachments/node_modules/@adonisjs/drive/build/src/Exceptions/index.js:30:23)
              at S3Driver.getStream (/Users/rafael/test-attachments/node_modules/@adonisjs/drive-s3/build/src/Drivers/S3.js:125:56)
              at processTicksAndRejections (internal/process/task_queues.js:95:5)
              at S3Driver.get (/Users/rafael/test-attachments/node_modules/@adonisjs/drive-s3/build/src/Drivers/S3.js:114:44)
              at ResponsiveAttachment.enhanceFile (/Users/rafael/test-attachments/node_modules/adonis-responsive-attachment/build/src/Attachment/index.js:185:52)
              at ResponsiveAttachment.save (/Users/rafael/test-attachments/node_modules/adonis-responsive-attachment/build/src/Attachment/index.js:209:35)
              at persistAttachment (/Users/rafael/test-attachments/node_modules/adonis-responsive-attachment/build/src/Attachment/decorator.js:59:32)
              at async Promise.all (index 0)
              at Proxy.saveWithAttachments (/Users/rafael/test-attachments/node_modules/adonis-responsive-attachment/build/src/Attachment/decorator.js:96:5)
              at UploadsController.store (/Users/rafael/test-attachments/app/Controllers/Http/UploadsController.ts:22:5)
      "location": "image_upload_tmp/image_upload_tmp/cl3p71qps0001dgy8ezl0esv4.png",
      "original": {
        "type": "NoSuchKey",
        "message": "UnknownError",
        "stack":
            NoSuchKey: UnknownError
                at deserializeAws_restXmlNoSuchKeyResponse (/Users/rafael/test-attachments/node_modules/@aws-sdk/client-s3/dist-cjs/protocols/Aws_restXml.js:8595:23)
                at deserializeAws_restXmlGetObjectCommandError (/Users/rafael/test-attachments/node_modules/@aws-sdk/client-s3/dist-cjs/protocols/Aws_restXml.js:6208:25)
                at processTicksAndRejections (internal/process/task_queues.js:95:5)
                at /Users/rafael/test-attachments/node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24
                at /Users/rafael/test-attachments/node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:11:20
                at StandardRetryStrategy.retry (/Users/rafael/test-attachments/node_modules/@aws-sdk/middleware-retry/dist-cjs/StandardRetryStrategy.js:51:46)
                at /Users/rafael/test-attachments/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/flexibleChecksumsMiddleware.js:56:20
                at /Users/rafael/test-attachments/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:6:22
                at S3Driver.getStream (/Users/rafael/test-attachments/node_modules/@adonisjs/drive-s3/build/src/Drivers/S3.js:121:30)
                at S3Driver.get (/Users/rafael/test-attachments/node_modules/@adonisjs/drive-s3/build/src/Drivers/S3.js:114:44)
        "name": "NoSuchKey",
        "$fault": "client",
        "$metadata": {
          "httpStatusCode": 404,
          "attempts": 1,
          "totalRetryDelay": 0
        },
        "Code": "NoSuchKey",
        "BucketName": "mybucketname",
        "RequestId": "tx000000000000096162b03-0062917aa7-2768dd76-sfo2a",
        "HostId": "2768de76-sfo2a-sfo"
      }
    }

We are facing the same issue. I'll try to get a pull request in.
If anyone else can help with the code or understanding do let us know.

I'm facing the same issue, is there any update ? Does  #10 fix it ?
@ndianabasi is on the Adonis.js discord, i'll try to contact him