No version detected when Project element has attributes

Versionize fails to detect the Version in a Visual Studio 2022 project defined like this:
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
        ...
        <Version>1.0.0</Version>
        ...
     </PropertyGroup>
</Project>

I think this XPath expression should work and be compatible with current: //PropertyGroup/Version
Above XPath expression will find any Version attribute within a PropertyGroup element, irrespective of where in the document it is located effectively ignoring the different definitions of the Project element.

Having a PR ready to fix this https://github.com/versionize/versionize/pull/62

Fixed in 1.12.0


fix: remove log streaming endpoint

The runner now writes this to the timeline service directly

Aha! Yes, great point!


.gitignore directory matching discrepancies

I am seeing that git and ag have different ignore logic.
as a minimal example within a repo structured like so:
a_repo
├── .gitignore
├── config_dir
│   └── personal_config.txt
└── sub_dir
    └── config_dir
        └── code_to_track.py

We want to ignore all files in a_repo/config_dir by having a .gitignore file like:
config_dir/

git works as expected ignoring the personal_config.txt, while tracking changes in code_to_track.py, however ag incorrectly decides to ignore any directory like config_dir so I am not receiving results from code_to_track.py
Ag is amazing and I'll try to contribute a fix if I can figure it out!

This .gitignore excludes config_dir/ on all levels.
And code_to_track.py is only tracked if it is explicitly added.
Use /config_dir/ to exclude the first one only.
https://www.atlassian.com/git/tutorials/saving-changes/gitignore#git-ignore-patterns


Add redo and undo feature

v1.0 for checkstyle

Commit Feature

A change is going to be made upon current AddressBook, eg. setAddressBook. deletePerson, addPerson. Call it function x
ModelManager#function x is invoked. After change was made, VersionedAddressBook#commit will be called.
Record down current version as the latest AddressBook in history.

Undo Feature

User type in "undo"
Calls LogicManager#execute
Pass to addressBookParser#parseCommand, return a undoCommand back to LogicManager#execute
Calls UndoCommand#execute. Check if we can undo by calling model#canUndo. If can, call model#undo
Calls versionedAddressBook#undo which returns reference to undo version of Addressbook.
Calls Model#setAddressBook (Overload function). Reset current AddressBook to clone of undo version of Addressbook.

Redo Feature
Similar to Undo

@pangrwa @tituswe Friends, can help me assign the milestone?


Depreciation - Ember 1.13

Depreciation appears when using ember-cli-stripe with Ember 1.13.
{{# if hasBlock }}

Thanks for reporting this. Looks like adding hasBlock instead of template is needed.
http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html#toc_component-block-info

Ember.js 1.13 introduces two new template keywords that provide reflection on how a component is called.
hasBlock will be true when a component is invoked in block form. For example given this component:

{{! app/components/show-full-name.hbs }}
{{#if hasBlock}}
  {{yield fullName}}
{{else}}
  {{fullName}}
{{/if}}


Is it possible to run a chat conversation and run tests for each model answer?

I want to run a chat conversation with an LLM model and have some tests for the answer I'm going to get from each message.
Let's say that I have the following list of messages:
    {
      role: "user",
      content: "What is Facebook?",
    },
    {
      role: "user",
      content: "Who founded it?",
    },
    {
      role: "user",
      content: "When it was found?",
    }

As you can see, I want to send a message to a chat LLM, evaluate the answer, and then send another message where its context depends on the previous interaction. From the available demos, it looked like OpenPipe only works with a single answer per run.

Yes that's right. We don't currently provide a way to converse with an LLM. You can define multiple messages in the prompt editor, but there's no dynamic way to update scenario variables to contain new messages. You'd have to do that ahead of time.
Is this more like what you're looking for? https://chat.lmsys.org/


Speed up disjunctions by computing estimations of the score of the k-th top hit up-front.

Currently, our dynamic pruning logic for disjunctions updates the minimum competitive score as it sees more and more competitive hits. However this process can take time if some of the high-scoring clauses don't have many hits, or are very sparse at the beginning of the doc ID space. It is possible to do better by trying to estimate a lower bound of the score of the k-th top hit up-front in order to bootstrap the minimum competitive score to a value that will immediately enable efficient dynamic pruning.
The proposed approach computes this initial minimum score by only using clauses that have not evaluated k hits yet to drive iteration.

Here are results on wikimedium10m. OrHighHigh and OrHighMed don't get a speedup because their minimum competitive scores compute pretty quickly anyway, but OrHighHigh sees a major speedup:
                            TaskQPS baseline      StdDevQPS my_modified_version      StdDev                Pct diff p-value
                      AndHighLow     1452.84      (2.0%)     1410.03      (3.8%)   -2.9% (  -8% -    2%) 0.017
                          Fuzzy1       98.38      (1.6%)       96.51      (1.1%)   -1.9% (  -4% -    0%) 0.001
            HighIntervalsOrdered        6.24      (5.8%)        6.15      (4.4%)   -1.4% ( -11% -    9%) 0.494
                      OrHighHigh       61.69      (6.4%)       60.87      (5.4%)   -1.3% ( -12% -   11%) 0.585
             MedIntervalsOrdered       44.82      (5.1%)       44.23      (3.9%)   -1.3% (  -9% -    8%) 0.476
             LowIntervalsOrdered       57.23      (5.4%)       56.48      (4.0%)   -1.3% ( -10% -    8%) 0.497
                       OrHighMed      190.42      (3.8%)      188.10      (3.8%)   -1.2% (  -8% -    6%) 0.430
                      AndHighMed      236.92      (4.1%)      234.25      (4.1%)   -1.1% (  -8% -    7%) 0.500
                    OrHighNotMed      425.77      (6.6%)      421.99      (5.2%)   -0.9% ( -11% -   11%) 0.715
                         MedTerm      788.26      (7.2%)      781.68      (3.4%)   -0.8% ( -10% -   10%) 0.716
                   OrHighNotHigh      317.53      (6.6%)      314.90      (5.5%)   -0.8% ( -12% -   12%) 0.738
                        HighTerm      593.70      (7.6%)      589.22      (3.9%)   -0.8% ( -11% -   11%) 0.760
                          Fuzzy2       73.16      (1.3%)       72.68      (1.3%)   -0.7% (  -3% -    1%) 0.206
                   OrNotHighHigh      413.61      (6.0%)      411.20      (5.2%)   -0.6% ( -11% -   11%) 0.798
                       LowPhrase       43.15      (2.9%)       42.90      (1.4%)   -0.6% (  -4% -    3%) 0.526
                    OrNotHighMed      425.13      (4.4%)      422.86      (3.3%)   -0.5% (  -7% -    7%) 0.735
                HighSloppyPhrase       12.59      (4.7%)       12.53      (5.6%)   -0.5% ( -10% -   10%) 0.808
                     LowSpanNear       28.72      (2.1%)       28.57      (2.2%)   -0.5% (  -4% -    3%) 0.559
                    OrHighNotLow      475.44      (7.1%)      473.03      (5.2%)   -0.5% ( -11% -   12%) 0.841
                        PKLookup      245.49      (3.5%)      244.36      (3.8%)   -0.5% (  -7% -    7%) 0.759
                 LowSloppyPhrase       67.32      (2.7%)       67.06      (2.8%)   -0.4% (  -5% -    5%) 0.730
                         LowTerm     1124.64      (6.8%)     1120.58      (3.5%)   -0.4% (  -9% -   10%) 0.870
                        Wildcard      172.10      (2.7%)      171.49      (2.4%)   -0.4% (  -5% -    4%) 0.735
                       MedPhrase       59.34      (3.1%)       59.16      (1.4%)   -0.3% (  -4% -    4%) 0.765
           HighTermDayOfYearSort      457.23      (1.2%)      456.10      (1.2%)   -0.2% (  -2% -    2%) 0.611
                     MedSpanNear       29.71      (3.0%)       29.64      (2.6%)   -0.2% (  -5% -    5%) 0.859
                    OrNotHighLow     1283.05      (2.7%)     1282.59      (1.9%)   -0.0% (  -4% -    4%) 0.971
               HighTermMonthSort     4728.97      (2.8%)     4729.28      (1.9%)    0.0% (  -4% -    4%) 0.995
                     AndHighHigh       63.31      (4.8%)       63.31      (4.8%)    0.0% (  -9% -   10%) 0.997
                         Prefix3      346.29      (4.3%)      346.43      (3.9%)    0.0% (  -7% -    8%) 0.980
                      TermDTSort      192.60      (1.1%)      192.76      (0.9%)    0.1% (  -1% -    2%) 0.830
                         Respell       96.59      (1.6%)       96.73      (1.3%)    0.2% (  -2% -    3%) 0.798
               HighTermTitleSort      161.71      (3.7%)      162.22      (4.8%)    0.3% (  -7% -    9%) 0.860
            HighTermTitleBDVSort       15.55      (3.3%)       15.61      (2.5%)    0.4% (  -5% -    6%) 0.748
                      HighPhrase       97.18      (4.1%)       97.75      (2.1%)    0.6% (  -5% -    7%) 0.659
                    HighSpanNear        6.86      (6.0%)        6.91      (6.6%)    0.8% ( -11% -   14%) 0.754
                 MedSloppyPhrase       38.05      (5.0%)       38.38      (4.0%)    0.9% (  -7% -   10%) 0.646
                          IntNRQ       94.63     (21.2%)       98.52     (21.0%)    4.1% ( -31% -   58%) 0.634
                       OrHighLow      430.69      (5.4%)      617.92      (4.7%)   43.5% (  31% -   56%) 0.000

I added a few tasks that I'm adding here for reference to see how it plays with disjunctions that have more terms or different document frequencies:
OrHighVeryLow: 2005 mousehole # freq=835460 freq=123
OrHighVeryLow: until motorboats # freq=425389 freq=128
OrHighVeryLow: made monceau # freq=742313 freq=126
OrHighVeryLow: do bush's # freq=511178 freq=2681
OrHighVeryLow: 10 mikup # freq=918339 freq=119
OrHighMedLow: international chris valois
OrHighMedLow: right million universalist
OrHighMedLow: known created forays
OrHighMedLow: its universal bush's
OrHighMedLow: 9 network racedetail.html
OrHighHighHigh: 2005 until made
OrHighHighHigh: do 10 international
OrHighHighHigh: right known its
OrHighHighHigh: until 10 known
OrHighHighHigh: made international its
OrHighMedMed: international chris million
OrHighMedMed: right million created
OrHighMedMed: known created universal
OrHighMedMed: its universal network
OrHighMedMed: 9 network chris
OrHighHighLow: several following valois
OrHighHighLow: publisher end universalist
OrHighHighLow: 2009 film forays
OrHighHighLow: http known bush's
OrHighHighLow: south county racedetail.html
OrHighHighMed: international right million
OrHighHighMed: right known created
OrHighMighMed: known its universal
OrHighHighMed: its 9 network
OrHighHighMed: 9 international chris

                            TaskQPS baseline      StdDevQPS my_modified_version      StdDev                Pct diff p-value
                    OrHighMedMed      158.53      (3.6%)      155.92      (4.4%)   -1.7% (  -9% -    6%) 0.193
                  OrHighHighHigh       53.97      (5.0%)       53.13      (4.9%)   -1.6% ( -10% -    8%) 0.324
                   OrHighHighMed      106.81      (4.0%)      105.37      (4.3%)   -1.3% (  -9% -    7%) 0.306
                      OrHighHigh       64.42      (5.6%)       63.64      (4.0%)   -1.2% ( -10% -    8%) 0.433
                   OrHighMighMed      201.12      (3.7%)      198.74      (3.5%)   -1.2% (  -8% -    6%) 0.298
                    OrHighMedLow      323.10      (3.7%)      319.32      (4.2%)   -1.2% (  -8% -    6%) 0.349
                       OrHighMed      227.13      (3.9%)      225.41      (3.0%)   -0.8% (  -7% -    6%) 0.487
                        HighTerm      652.70      (4.2%)      659.51      (5.3%)    1.0% (  -8% -   11%) 0.491
                        PKLookup      248.57      (3.4%)      251.38      (1.9%)    1.1% (  -4% -    6%) 0.198
                         MedTerm     1060.67      (4.5%)     1076.33      (5.4%)    1.5% (  -8% -   11%) 0.350
                         LowTerm     1639.65      (7.0%)     1667.48      (4.9%)    1.7% (  -9% -   14%) 0.377
                   OrHighVeryLow      172.35      (8.2%)      196.54      (8.4%)   14.0% (  -2% -   33%) 0.000
                   OrHighHighLow      449.76      (3.0%)      633.61      (3.5%)   40.9% (  33% -   48%) 0.000
                       OrHighLow      546.08      (5.4%)     1187.98      (5.1%)  117.5% ( 101% -  135%) 0.000

While it tends to help queries that are already fast, it also helped OrHighVeryLow above, which is not among the fastest. I also like that none of the queries is getting a major slowdown.

OrHighHigh sees a major speedup:

I think you meant OrHighLow, which is indeed very nicely improved

Oops, yes indeed OrHighLow.

Wow, impressive!  Maybe we should add OrHighVeryLow to nightly benchy too?

We could. These tasks are a bit malicious as the doc freq is slightly greater than the value of k=100 so it takes lots of collected matches to find k documents that have this term. I suspect that another interesting value for the document frequency is when it is a bit less than k.
I still need to figure out a way to avoid referencing readers in weight, I think we had issues with that in the past though I can't remember exactly what the issue was.

Maybe we should add OrHighVeryLow to nightly benchy too?

@mikemccand  I started looking into this, but my enwiki (enwiki-20120502-lines-with-random-label.txt) seems to have slightly different frequencies compared to frequencies reported in wikinightly.tasks, are nightly benchmarks using the same export or a different one? I think it could make sense to have two new tasks OrHighLow110 where the low-frequency term always has a frequency of 110 >k and OrHighLow90 where the low-frequency term always has a frequency of 90<k. These two cases are interesting because in one case it takes very long to collect k matches of the highest scoring clause, and in the other case this never happens.

@mikemccand  FYI I gave a try at adding some interesting boolean queries to nightly benchmarks at https://github.com/mikemccand/luceneutil/pull/240.

I'll reopen when I have time to get back to this, this could be a useful optimization, though the benefit has become lower thanks to other optimizations to disjunctions.


Added Streamline_Pipeline function

closes #94
not complete

You should add logic to make sure test_composable_exception_join and test_composable_exception_fork pass. This could be tricky with the current implementation. We may need to review how we keep track of what IP are used

Please run flake8 and resolve any syntax warning


Make HiddenField recipe predictable

By using a LinkedHashSet rather than a regular HashSet in FindNameShadows#find() to collect the shadowing variables, the renaming of the variables becomes predictable. I.e. the same variable always gets renamed to the same name if the recipe is tested multiple times. This is especially important for tests.
Fixes #2592

Thanks @knutwannheden !


[FR] subplotgrid function

Would be nice to have something equivalent with PyPlot's subplots function:
fig, axs = subplotgrid((X, Y); sharex, sharey)

such a function would make an XxY grid layout, and optionaly share their x and/or y axis (also hiding ticks if axis are shared).
(I'll do this, assign me on GitHub please)

@SimonDanisch I'm not making a PR yet because I just don't know where to put this function. But here is the code:
using GLMakie

"""
    subplotgrid(m, n; sharex = false, sharey = false, kwargs...) -> fig, axs
Create a grid of `m×n` subplots in a new figure and return the figure and the
matrix of axis. Optionally make every row share the y axis, and/or every column
to share the x axis. Any additional keywords are given to `Figure` generation.
"""
function subplotgrid(m, n; sharex = false, sharey = false, kwargs...)
    fig = Figure(;kwargs...)
    axs = Matrix{Axis}(undef, m, n)
    for i in 1:m
        for j in 1:n
            axs[i,j] = Axis(fig[i,j])
        end
    end
    if sharex
        for i in 1:m-1
            for j in 1:n
                linkxaxes!(axs[i,j], axs[m,j])
                hidexdecorations!(axs[i,j]; grid=false)
            end
        end
    end
    if sharey
        for j in 2:n
            for i in 1:m
                linkyaxes!(axs[i,j], axs[i,1])
                hideydecorations!(axs[i,j]; grid=false)
            end
        end
    end
    return fig, axs
end

fig, axs = subplotgrid(3,2; sharex = true, sharey = false)
display(fig)

feel free to give a review and/or tell me where to put it.

bump!

I will also make an in-place version that takes an existing figure or GridLayout as an argument and adds the axis. Just tell me where to actually put it to make a PR :D

Maybe this would be good for a Block, it could be called FacetGrid for example. That's because it could benefit from spanning labels on the axes and maybe boxes for the titles such as commonly found in ggplot.

I am not aware of what a Block is (https://makie.juliaplots.org/stable/search/index.html?q=Block ). Is it internal?

It's the new implementation of what Layoutable was, on master. A building block possible made of other building blocks, that you can place in a grid as one rectangular object.

Yes, I'll make it a block once I have the instructions of how to do so. Is it just a simple wrap of a GridLayout? In reality, the function I've coded above can just return a GridLayout.

There's an initial implementation here https://github.com/JuliaPlots/Makie.jl/pull/1827
begin
    f = Figure()
    fg = MakieLayout.FacetGrid(f[1, 1], 3, 4, sharey = :all,
        rowlabels = ["Hi", "Whats", "Up"])
    fg.columnlabels = ["a", "b", "c", "d"]
    lines!(fg[1, 2], cumsum(randn(50)))
    lines!(fg[3, 4], cumsum(randn(50)))
    Label(f[0, :], "A FacetGrid demonstration", tellwidth = false)
    f
end

I'm not sure yet if I like making an object out of this or if it should just make axes wherever. The options to style this are potentially infinite, and it's not going to be practical to implement them all with overlapping keywords etc. For example position of label boxes, if it's a full grid or if there are positions missing, etc. However, using a Block does make the thing somewhat nicely self contained.

I really hope the Makie developers strongly consider adding the above subplotgrid function to the API and exporting it, because it has become rather tedius to copy paste it in 20 different science projects and then include the file with this definition in every one scripts in these projects. Given the prevalence of "facet/grid plots" in science, this function is likely to be widespread used if available.

Yes, definitely. I need a bit more time to think about how exactly to integrate it, as this function is only one example of a multi-axis (or object) plotting recipe, for which we need better infrastructure anyway. So I don't want to include this as is only to come up with a unified way a bit later, leading to more breaking changes.

I've updated my original post with an even better and more general version of the code, that I Am particularly prooud about! I use this code in literally every science project I have!

Yeah I agree, let me try to prepare a PR soon, I have some small ideas about the API that I'd want to try. But it would be very useful to have


Add highly customized vasp task

This is for scenarios where users want to customize their calculation and still save things to the database. Currently, customizing S3tasks requires a separate app and no database result is saved.
When implementing this, the results table can have input/output json fields where anything can be stored. Further, the first step of this task could allow specify "parent" task to use as the basis for INCAR settings.

[ ] database table (all mixins...? just structure...? just json...?)
[ ] custom arguments
[ ] base task settings (e.g. base is MIT-relax)
[ ] command line interface that walks through all options

From @scott-materials:

I think it would be nice to specify custom INCAR settings in the .yaml, as well as specific input files (outside of the POSCAR).  This seems enabled in the command line but not the run-yaml. Also, if I can specify a CHGCAR or WAVECAR for the run, that would be helpful.  Because, ultimately, it will be helpful to have all runs logged in the database.

I was actually just wrote the final tutorial for simmate, where I discuss the absence of this feature. It's absence is intentional, but I realize that the majority of users would want this implemented.
My reasoning for leaving it out is discussed in the new tutorial -- specifically in the section entitled Why isn't there a custom_settings option?.
I'm still bouncing between two ways of implementing this:

allowing a custom_settings input for all workflows.

Pros: This is easier on users when running new workflows and testing different configurations.
Cons: Data filtering and analysis becomes more complicated. We have to trust users know what they're doing when comparing energies within a table. Also all table methods and toolkit classes need to be prepared to clean data.

creating a customized_workflow that saves all data independently from a workflow normal table. For example you'd submit the workflow with the following yaml:

# Indicates we want to change the settings, using a specific workflow as a starting-point
workflow_name: vasp/customized
base_workflow: static-energy/mit

# These would update the class attributes for the single workflow run
# The "custom_" start indicates we are updating some attribute
custom_incar:
    - ENCUT: 600
    - KPOINTS: 0.25
custom_potcar_mappings:
    - Y: Y_sv

# Then the remaining inputs are the same as the base_workflow
structure: POSCAR
command: mpirun -n 5 vasp_std > vasp.out

Then results would NOT be saved in the static-energy/mit table. The results would instead be saved as JSON in the vasp/customized table.


Only Mobile player works, Desktop player is never used

The Lastest version of streama-video-player is loading the mobile player for Desktop Computer and others
and The Video timeline is not walking

Ok thanks for reporting this


Test pr

This is a test PR, it will not be merged.
PR will be deleted once testing completes.

Codecov Report

Merging #2924 (86ccccf) into main (1f67494) will decrease coverage by 0.42%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #2924      +/-   ##
==========================================
- Coverage   28.93%   28.51%   -0.42%
==========================================
  Files         303      125     -178
  Lines       36131    13602   -22529
==========================================
- Hits        10455     3879    -6576
+ Misses      25676     9723   -15953

see 178 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


TEST

Song Name
a
Artist Name
a
Source
Youtube
Youtube Link
-o68Za69bCc
Direct File Link
No response
Song ID
999999
Start Offset [ms]
0
Extra
Created from Auto Nong.
Created for level: 109083830

accept

remove


Update 0036 to remove "Indy-isms" in the credential proposal

In the 1.0 and 1.1 versions of this protocol, there are references to Indy items in the credential proposal message. Propose that a 2.0 version of the protocol be defined that changes the format of that message to match the style of the other messages in the protocol with an attachment, and the Indy-specific fields be removed from the message.
@sklump has taken a first cut of that here. Note that Stephen's version of the RFC is not quite correct because it is treating the versioning at the message level vs. the protocol level. That will be changed prior to submission.
Related, second issue - I would prefer not to have a separate RFC document for this change, even though it is a new major version, but am open to discussion on that.  Should the rule -- new major version, new RFC be strictly adhered to? The answer to this is no. Further, in this case, the changes are larger than first thought, so we want to start a new RFC regardless.

Based on the Aries Working Group discussion on this, the following things need to be done to 0036 and 0037:

define how to add types to the attachments
in defining the types, define a registry of those types for devs
can the attachments be just JSON vs. base64-encoded JSON?
should the "credential preview" be an attachment?
should the presentation preview by an attachment?

@swcurran is to move this forward by creating a PR based on what @sklump started. That covers the "credential proposal" attachment.

Regarding JSON. The Attachments RFC makes it very clear how a JSON attachment is to be implemented, so there should be nothing in the Credential Exchange RFCs that preclude the use of JSON vs. base64 encoded data. I suggest we add that as a clarification to the RFCs, but implementations should be reviewed and updated if necessary to make sure that they support both.

Regards the attachment "type" and a registry of the type of the attachments.
Per the "attachments" RFC, the "id" should uniquely identify the attachment in the context of the message.  We've agreed (and spelled out in the 0036/0037 RFCs) that though the attachments are arrays, in these messages, they should not be used for bulk issuance of different credentials, but rather for different representations of the same credential (e.g. a ZKP and JWT version a credential containing the same claims). As such, I think the ID should used to determine both the handler and version of the attachment. This is partially done (sans the versioning) in the presentation RFC today and we should expand that to issue credential.
Given that, I think the RFC could contain (at least initially) a table that is the registry of the ID values and their meanings.
I'll put that into a proposal for the 2.0 Issue Credential and the 1.1 (or 2.0) Present Proof RFCs.

Closing as we now have the Issue Credential v2 proposal which removed all indy-isms.


Update installation.md: Add x-cmd method to install uv

Summary
Add x-cmd method to install uv

Hi, we have implemented a lightweight package manager using shell and awk. It helps you download uv release packages from the internet and extract them into a unified directory for management, without requiring root permissions.

I mean, can the installation method provided by x-cmd be added to the uv installation.md?The installation method for the x command and uv demo
x env use uv

Test Plan
Nothing.

Hi @lunrenyi
Thanks for contributing to both uv and Ruff to keep our documentation consistent.
As I explained in the [corresponding Ruff PR]: We intentionally limit the documentation to the commonly used installation methods to keep the documentation brief.
Thanks again and good luck with X-CMD


yarn test fails on node > 16

When using node >16 the tests fail due to an issue with Jest.
$ node --version
v16.20.0
$ yarn test
yarn run v1.22.19
$ yarn validate:prettier && yarn validate:eslint && yarn jest
$ prettier "{src,jest,plugin/src}/**/*.{js,ts,tsx}" --check
Checking formatting...
All matched files use Prettier code style!
$ eslint "src/**/*"
$ jest
 PASS  plugin/src/__tests__/withSKAdNetworkIdentifiers-test.ts
 PASS  plugin/src/__tests__/withUserTrackingPermission-test.ts
 PASS  plugin/src/__tests__/withFacebookIOS-test.ts
 PASS  plugin/src/__tests__/withFacebookAndroid-test.ts
 PASS  RNFBSDKExample/__tests__/App-test.js

Test Suites: 5 passed, 5 total
Tests:       19 passed, 19 total
Snapshots:   0 total
Time:        1.359 s
Ran all test suites.
✨  Done in 4.46s.

Switch node version
$ node --version
v20.4.0
$ yarn test
yarn run v1.22.19
$ yarn validate:prettier && yarn validate:eslint && yarn jest
$ prettier "{src,jest,plugin/src}/**/*.{js,ts,tsx}" --check
Checking formatting...
All matched files use Prettier code style!
$ eslint "src/**/*"
$ jest
 FAIL  plugin/src/__tests__/withFacebookAndroid-test.ts
  ● Test suite failed to run

    TypeError: Cannot assign to read only property 'performance' of object '[object global]'

      at Object.<anonymous> (node_modules/react-native/jest/setup.js:419:20)

 FAIL  plugin/src/__tests__/withUserTrackingPermission-test.ts
  ● Test suite failed to run

    TypeError: Cannot assign to read only property 'performance' of object '[object global]'

      at Object.<anonymous> (node_modules/react-native/jest/setup.js:419:20)

 FAIL  RNFBSDKExample/__tests__/App-test.js
  ● Test suite failed to run

    TypeError: Cannot assign to read only property 'performance' of object '[object global]'

      at Object.<anonymous> (node_modules/react-native/jest/setup.js:419:20)

 FAIL  plugin/src/__tests__/withFacebookIOS-test.ts
  ● Test suite failed to run

    TypeError: Cannot assign to read only property 'performance' of object '[object global]'

      at Object.<anonymous> (node_modules/react-native/jest/setup.js:419:20)

 FAIL  plugin/src/__tests__/withSKAdNetworkIdentifiers-test.ts
  ● Test suite failed to run

    TypeError: Cannot assign to read only property 'performance' of object '[object global]'

      at Object.<anonymous> (node_modules/react-native/jest/setup.js:419:20)

Test Suites: 5 failed, 5 total
Tests:       0 total
Snapshots:   0 total
Time:        0.312 s, estimated 2 s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.```

Upgrading to a newer version (^29.6.0) and the tests all pass successfully

$ node --version
v20.4.0
$ yarn test
yarn run v1.22.19
$ yarn validate:prettier && yarn validate:eslint && yarn jest
$ prettier "{src,jest,plugin/src}/**/*.{js,ts,tsx}" --check
Checking formatting...
All matched files use Prettier code style!
$ eslint "src/**/*"
$ jest
 PASS  RNFBSDKExample/__tests__/App-test.js
 PASS  plugin/src/__tests__/withFacebookAndroid-test.ts
 PASS  plugin/src/__tests__/withFacebookIOS-test.ts
 PASS  plugin/src/__tests__/withUserTrackingPermission-test.ts
 PASS  plugin/src/__tests__/withSKAdNetworkIdentifiers-test.ts

Test Suites: 5 passed, 5 total
Tests:       19 passed, 19 total
Snapshots:   0 total
Time:        0.45 s, estimated 1 s
Ran all test suites.
✨  Done in 3.59s.

I'm not sure this is still happening. Is still happening for you?
I see yarn test (or yarn jest) failing locally but for a different reason:

 FAIL  RNFBSDKExample/__tests__/App.test.tsx
  ● Test suite failed to run

    Invariant Violation: __fbBatchedBridgeConfig is not set, cannot invoke native modules

      at invariant (RNFBSDKExample/node_modules/invariant/invariant.js:40:15)
      at Object.invariant (RNFBSDKExample/node_modules/react-native/Libraries/BatchedBridge/NativeModules.js:182:3)
      at Object.require (RNFBSDKExample/node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.js:15:23)


AnalyticsEvent.endpoint includes the HTTP request method

Purpose
Allows http method to be captured in analytics events
Fixes:
#65

Updated based on your suggestions, thanks for the review, @PSalant726 !
Re: isort and pytest and black- I suspect something weird is going on with my editor, where I run auto-format for black and isort, and the changes do not appear in git diff. Similarly, running pytest fails locally bc the command-line is not picking up on recently updated code in intelliJ. I'll see if I can sort this out tomorrow


Source metrics does not support reporting client error

Expected Behavior
The source stats reporter should have tags for representing client errors (eg. when http.Client.Do() returns an error, or other client, like Kafka...).
Actual Behavior
No such tags.

why is this in PKG?
we do this already in eventing: https://github.com/knative/eventing/blob/master/pkg/adapter/v2/cloudevents.go#L113

this is adding additional metric labels. The current code does not generate stats all kind of errors, like timeout.
See https://github.com/knative/eventing/pull/3081 for more details.


AVRO-2702: Fix and test UNION equivalents.

This PR adds a commit for unit testing the fix from https://github.com/apache/avro/pull/980
This shouldn't be squashed, credit to @bellemare
This is also built on top of the PHP fix from https://github.com/apache/avro/pull/986
Jira

[ ] My PR addresses the following Avro Jira issues and references them in the PR title. For example, "AVRO-1234: My Avro PR"

https://issues.apache.org/jira/browse/AVRO-2702
In case you are adding a dependency, check if the license complies with the ASF 3rd Party License Policy.

Tests

[ ] My PR adds the following unit tests OR does not need testing for this extremely good reason:

Commits

[ ] My commits all reference Jira issues in their subject lines. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters (not including Jira issue reference)
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Documentation

[ ] In case of new functionality, my PR adds documentation that describes how to use it.

All the public functions and the classes in the PR contain Javadoc that explain what it does

All three commits cherry-picked to branch-1.10

@RyanSkraba Thanks Ryan! I appreciate you doing the all the hard parts! :) Credit to YOU!


Hang when verifying

The full log file is attached: out.txt. Here is the command used : cargo kani --verbose --enable-unstable --output-format old --cbmc-args --verbosity 9 > out.log 2>&1
It would seem that kani hangs indefinitely. I'm not sure how to get more output than this, please let me know how I could get more output to help troubleshoot :)

Hi @pwnorbitals , thanks for opening this bug report!
Unfortunately, I'm not sure the output will be enough for us to work on a fix. Would it be possible for you to provide the source code (or another, possibly-reduced version of it) that causes this behavior?

Unfortunately cannot publicly share the code, but would be OK to share it privately

Hi @pwnorbitals , sorry for the late reply. Please share the code privately with me and I'll take a look.

Hi @pwnorbitals , would you mind reaching out to me? It isn't necessary for you to share the code in private, but any details regarding what you're trying to do might be helpful for us to determine if this is a new issue or not.

Update: @pwnorbitals shared with me an almost executable version of the code with two harnesses. Then, I was able to run the harnesses by making some minor changes.
But I wasn’t able to reproduce the hanging behavior described above with Kani 0.45.0. Both harnesses terminated within 15mins for me in a m5a.4xlarge instance. The second harness (i.e., the one where @pwnorbitals expected the problematic behavior) fails to verify because the unsupported intrinsic sqrtf64 is reachable. Both harnesses seem quite similar in terms of complexity, at least according to stats shown by CBMC (VCCs, variables, etc.). It's also possible that these stats are considerably different because the code itself is much simpler.
I’ll close the issue because I wasn’t able to reproduce it. Please feel free to re-open this issue if you continue to encounter it with the latest Kani versions. FYI I’m including the relevant parts of the output for each harness below.
Output for transform_into_frame:
Runtime Symex: 2.81632s
size of program expression: 64795 steps
slicing removed 43266 assignments
Generated 3146 VCC(s), 936 remaining after simplification
Runtime Postprocess Equation: 0.0801212s
Passing problem to propositional reduction
converting SSA
Runtime Convert SSA: 1.48226s
Running propositional reduction
Post-processing
Runtime Post-process: 2.693e-05s
Solving with CaDiCaL 1.7.2
690151 variables, 2602562 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 2.19843s
Runtime decision procedure: 3.70513s
Running propositional reduction
Solving with CaDiCaL 1.7.2
690151 variables, 2602563 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 3.7646s
Runtime decision procedure: 3.7927s
Running propositional reduction
Solving with CaDiCaL 1.7.2
690151 variables, 2602564 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 72.8242s
Runtime decision procedure: 72.8618s
Running propositional reduction
Solving with CaDiCaL 1.7.2
690151 variables, 2602565 clauses
SAT checker: instance is UNSATISFIABLE
Runtime Solver: 761.65s
Runtime decision procedure: 761.704s

[...]

SUMMARY:
 ** 0 of 6573 failed (589 unreachable)

VERIFICATION:- SUCCESSFUL
Verification Time: 865.40094s

Complete - 1 successfully verified harnesses, 0 failures, 1 total.

Output for check_combine_frame_transformations:
Runtime Symex: 2.26625s
size of program expression: 53038 steps
slicing removed 34869 assignments
Generated 2837 VCC(s), 779 remaining after simplification
Runtime Postprocess Equation: 0.0639936s
Passing problem to propositional reduction
converting SSA
Runtime Convert SSA: 1.25489s
Running propositional reduction
Post-processing
Runtime Post-process: 2.003e-05s
Solving with CaDiCaL 1.7.2
551676 variables, 2177202 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 2.45933s
Runtime decision procedure: 3.73361s
Running propositional reduction
Solving with CaDiCaL 1.7.2
551676 variables, 2177203 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 26.5861s
Runtime decision procedure: 26.6119s
Running propositional reduction
Solving with CaDiCaL 1.7.2
551676 variables, 2177204 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 136.613s
Runtime decision procedure: 136.668s
Running propositional reduction
Solving with CaDiCaL 1.7.2
551676 variables, 2177205 clauses
SAT checker: instance is UNSATISFIABLE
Runtime Solver: 127.665s
Runtime decision procedure: 127.687s

[...]

SUMMARY:
 ** 1 of 6143 failed (6142 undetermined)
Failed Checks: 'sqrtf64' intrinsic is not currently supported by Kani. Please post your example at https://github.com/model-checking/kani/issues/new/choose
 File: "/github/home/.rustup/toolchains/nightly-2024-01-17-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/f64.rs", line 398, in std::f64::<impl f64>::sqrt

VERIFICATION:- FAILED
** WARNING: A Rust construct that is not currently supported by Kani was found to be reachable. Check the results for more details.
Verification Time: 310.36472s

Summary:
Verification failed for - kani_tests::check_combine_frame_transformations
Complete - 0 successfully verified harnesses, 1 failures, 1 total.


[Do not merge] Migrate detailed guides

Detailed guides are being migrated, and should therefore be rendered using government-frontend, not whitehall.
Relevant Trello: https://trello.com/c/CkHu0suq/317-6-detailed-guides-migration-final-tasks-deploy-1-medium

Found some inconsistencies in review listed here: https://trello.com/c/CkHu0suq/317-6-detailed-guides-migration-final-tasks-deploy-1-medium#comment-5774f15d7336ca3ed6f7d01b

✨


can't install mraa

Hi,
I am trying to install mraa using: npm install mraa, but I am getting this error message:
npm ERR! Linux 4.15.0-23-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "mraa"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the mraa package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs mraa
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls mraa
npm ERR! There is likely additional logging output above.

Well, I am sure I have the last version of both node.js and npm, so I think the problem lies somewhere else.Since  I am new to this, I am not able to figure it out my self. Any suggestions?
Thanks in advancd
Dhiaa

I am sure I have the last version of both node.js

...and that's the problem - see #598 and https://github.com/swig/swig/pull/968 - SWIG doesn't support Node versions > 6 at the moment, so you'd need to downgrade your Node to be able to use mraa with it, as our JS bindings are generated via SWIG.

If you want to use Node 8, you'll have to patch swig and build mraa from source. It's pretty straight forward and I've added instructions in the documentation a while back.


Need to update jsprim due to vulnerability in its sub package

json-schema has a vulnerability which is included in older versions of jsprim.
jsprim is currently as 2.0.1

I just updated jsprim to 2.0.2 a few minutes ago to address this in that package.
Testing of http-signature on node 0.10 with jsprim updated to 2.0.2:
diff --git a/package.json b/package.json
index 42500ab..c278e85 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "http-signature",
   "description": "Reference implementation of Joyent's HTTP Signature scheme.",
-  "version": "1.3.5",
+  "version": "1.3.6",
   "license": "MIT",
   "author": "Joyent, Inc",
   "contributors": [
@@ -31,7 +31,7 @@
   },
   "dependencies": {
     "assert-plus": "^1.0.0",
-    "jsprim": "^1.2.2",
+    "jsprim": "^2.0.2",
     "sshpk": "^1.14.1"
   },
   "devDependencies": {
[root@node-tester ~/src/node-http-signature]# make test
npm install
TAP=1 ./node_modules/.bin/tap test/*.test.js
TAP version 13
# convert.test.js
# TAP version 13
# 1024b pem to rsa ssh key
ok 1 should be equal
# 2048b pem to rsa ssh key
ok 2 should be equal
# 4096b pem to rsa ssh key
ok 3 should be equal
# 1024b rsa ssh key
ok 4 should be equal
# 2048b rsa ssh key
ok 5 should be equal
# 4096b rsa ssh key
ok 6 should be equal
# 1024b dsa ssh key
ok 7 should be equal
# fingerprint
ok 8 should be equal
# tests 8
# pass  8
# ok
ok 9 test/convert.test.js

# examples.test.js
# TAP version 13
# read in doc
# find keys and examples
# tests 0
# ok
ok 10 test/examples.test.js

# header.test.js
# TAP version 13
# setup
ok 11 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date request-line content-length",signature="oSwbRe6Ed78lu3xKah7ZK/T5K9DdM4dtGs7TA7lCzhqqoIf8xKiwGIR7BkjUb07xs9NhmGpWCAPd9yBC6b7lURLqemOiIjBvT8f3vtj54/vpLcrQl2rgGcjggDXpfGE3CzA28y0rcXIer6gkCvwjT/KL+Eu+f3zuHZexiHntjTE="
# header with 0 value
ok 12 (unnamed assert)
ok 13 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date x-foo",signature="eJqjL3xGQaHZ+lrICae+qolAZio3fT1jk1DPU1HLu6DSZPiPaDEaEu6E4Kst2v+dMwZ99JJss4RcWC3czxn56/sg/DNRhw4ZZPqtp06Y0K/wmpV4FAxkdlCc0HLU+kSC95uUki6FJE7Q8sNo837xNNbHohrGOu/Mddn4klW6qWM="
# header with boolean-mungable value
ok 14 (unnamed assert)
ok 15 (unnamed assert)
# tear down
# tests 5
# pass  5
# ok
ok 16 test/header.test.js

# parser.test.js
# TAP version 13
# setup
# no authorization
ok 17 should be equal
ok 18 should be equal
# bad scheme
ok 19 should be equal
ok 20 should be equal
ok 21 should be equal
# no key id
ok 22 should be equal
ok 23 should be equal
ok 24 should be equal
# key id no value
ok 25 should be equal
ok 26 should be equal
ok 27 should be equal
# key id no quotes
ok 28 should be equal
ok 29 should be equal
ok 30 should be equal
# key id param quotes
ok 31 should be equal
ok 32 should be equal
ok 33 should be equal
# param name with space
ok 34 should be equal
ok 35 should be equal
ok 36 should be equal
# no algorithm
ok 37 should be equal
ok 38 should be equal
ok 39 should be equal
# algorithm no value
ok 40 should be equal
ok 41 should be equal
ok 42 should be equal
# no signature
ok 43 should be equal
ok 44 should be equal
ok 45 should be equal
# invalid algorithm
ok 46 should be equal
ok 47 should be equal
ok 48 should be equal
# no date header
ok 49 should be equal
ok 50 should be equal
ok 51 should be equal
# valid numeric parameter
ok 52 should be equal
# invalid numeric parameter
ok 53 should be equal
ok 54 should be equal
ok 55 should be equal
# invalid numeric parameter - decimal
ok 56 should be equal
ok 57 should be equal
ok 58 should be equal
# invalid numeric parameter - signed integer
ok 59 should be equal
ok 60 should be equal
ok 61 should be equal
# created in future
ok 62 should be equal
ok 63 should be similar
ok 64 should be equal
# expires expired
ok 65 should be equal
ok 66 should be similar
ok 67 should be equal
# valid created and expires with skew
ok 68 should be equal
# valid default headers
ok 69 should be equal
# valid custom authorizationHeaderName
ok 70 should be equal
# explicit headers missing
ok 71 should be equal
# {
# }
# valid explicit headers request-line
ok 72 should be equal
ok 73 (unnamed assert)
ok 74 should be equal
ok 75 (unnamed assert)
ok 76 should be equal
ok 77 should be equal
ok 78 should be equal
ok 79 (unnamed assert)
ok 80 should be equal
ok 81 should be equal
ok 82 should be equal
ok 83 should be equal
ok 84 should be equal
ok 85 (unnamed assert)
ok 86 should be equal
ok 87 should be equal
ok 88 should be equal
# valid explicit headers request-line strict true
ok 89 should be equal
ok 90 should be equal
ok 91 should be equal
# {
# }
# valid explicit headers request-target
ok 92 should be equal
ok 93 (unnamed assert)
ok 94 should be equal
ok 95 (unnamed assert)
ok 96 should be equal
ok 97 should be equal
ok 98 should be equal
ok 99 (unnamed assert)
ok 100 should be equal
ok 101 should be equal
ok 102 should be equal
ok 103 should be equal
ok 104 should be equal
ok 105 (unnamed assert)
ok 106 should be equal
ok 107 should be equal
ok 108 should be equal
# expired
ok 109 should be equal
# missing required header
ok 110 should be equal
ok 111 should be equal
ok 112 should be equal
# valid mixed case headers
ok 113 should be equal
# not whitelisted algorithm
ok 114 should be equal
ok 115 should be equal
ok 116 should be equal
# tearDown
# tests 100
# pass  100
# ok
ok 117 test/parser.test.js

# signer.test.js
# TAP version 13
# setup
ok 118 (unnamed assert)
ok 119 (unnamed assert)
ok 120 (unnamed assert)
ok 121 (unnamed assert)
# > Signature keyId="unitTest",algorithm="rsa-sha256",signature="PgmDcqnyvGMCBUjcj6UfJuKMoHecXH/+okqSVpjJW8TujArAE6AXQuS8v323+9Uxm7wzhnj+eHW8emgG8ehxi+bQqBXArBoOeyEylx8F16dqjhdxGN798PcUjpqHI1XlHiVacf2xhJzwhs6HUeUz0ef1z81IagOkdIolqauXuRI="
# defaults
ok 122 (unnamed assert)
ok 123 (unnamed assert)
ok 124 should be equal
ok 125 (unnamed assert)
ok 126 (unnamed assert)
# > Signature keyId="unitTest",algorithm="rsa-sha256",signature="PgmDcqnyvGMCBUjcj6UfJuKMoHecXH/+okqSVpjJW8TujArAE6AXQuS8v323+9Uxm7wzhnj+eHW8emgG8ehxi+bQqBXArBoOeyEylx8F16dqjhdxGN798PcUjpqHI1XlHiVacf2xhJzwhs6HUeUz0ef1z81IagOkdIolqauXuRI="
# with custom authorizationHeaderName
ok 127 (unnamed assert)
ok 128 (unnamed assert)
ok 129 should be equal
ok 130 (unnamed assert)
ok 131 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date request-line",signature="gAsWbHHP+0XdUBGXLZMXmGjpbfvLmzxjBgGz56ZbAErJltQz0tpDZmaIrKtFSGhPU8mbA9Q+TMcuH0V7yj9rnFyusA+XJRUiYcYhnHY9vx/622J8vrKPR6XPn9rReCDfoGr4vSnHE1pKDMdw3G5mNaENAakSfil1Eu/Z8GROtq8="
# request line strict unspecified
ok 132 (unnamed assert)
ok 133 (unnamed assert)
ok 134 should be equal
ok 135 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date request-line",signature="gAsWbHHP+0XdUBGXLZMXmGjpbfvLmzxjBgGz56ZbAErJltQz0tpDZmaIrKtFSGhPU8mbA9Q+TMcuH0V7yj9rnFyusA+XJRUiYcYhnHY9vx/622J8vrKPR6XPn9rReCDfoGr4vSnHE1pKDMdw3G5mNaENAakSfil1Eu/Z8GROtq8="
# request line strict false
ok 136 (unnamed assert)
ok 137 (unnamed assert)
ok 138 (unnamed assert)
ok 139 (unnamed assert)
# request line strict true
ok 140 Expected to throw
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date (request-target)",signature="Rddbzx9JiPHGKiklsampIu5Ggc+Rs6vp3JWtZVTb8OqaMpkNTSKCQX0bWpqGoZvq1frrWT9DYBYFabCTJhrGqGX0R2io4pn007SwkPvMG8L5akdduFqQD726Hc7Nkuyaw4cbABDJoMTbbLP88pr8h6XdCaDNERINP6J8smUsy/Q="
# request target
ok 141 (unnamed assert)
ok 142 (unnamed assert)
ok 143 should be equal
ok 144 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date (keyid)",signature="O6s9ES35zfqg7MrdZwjN/qcXQUr5zLsN5vpCjIGI557mhu9qzdwX3PJtCNCaCZzkJJEA2tayUrpW91nUwDRaWGTipWqfDtRum6Tx/xlw6nUZygDqJ8yXntSc619zfBZOdlrLmP8xwy7PFs/w9ivqL1DrjxS9LaqGZGGji2cez8s="
# keyid
ok 145 (unnamed assert)
ok 146 (unnamed assert)
ok 147 should be equal
ok 148 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date (algorithm)",signature="rhjNmRxDYmx0OnbhsdCS8afhuvkZ7GSRKZ5J8MUC/+RQFALw1u+b/IuvAKFLfboRiOX6WKwEHRuCxA7Ve7zophJ7PTZ5kvedNY6sYISQhvfgLiN7Niw5NzlEKf/foC7lvfgCkFj0du0lWiGC1OTsPisXnfZaItEicCb1r2kOflw="
# signing algorithm
ok 149 (unnamed assert)
ok 150 (unnamed assert)
ok 151 should be equal
ok 152 should be equal
ok 153 should be equal
ok 154 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date (algorithm)",signature="rhjNmRxDYmx0OnbhsdCS8afhuvkZ7GSRKZ5J8MUC/+RQFALw1u+b/IuvAKFLfboRiOX6WKwEHRuCxA7Ve7zophJ7PTZ5kvedNY6sYISQhvfgLiN7Niw5NzlEKf/foC7lvfgCkFj0du0lWiGC1OTsPisXnfZaItEicCb1r2kOflw="
# signing with unspecified algorithm
ok 155 (unnamed assert)
ok 156 (unnamed assert)
ok 157 should be equal
ok 158 should be equal
ok 159 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",opaque="opaque",headers="date (opaque)",signature="bvICmKJgnB6kciRWSWEsygBGmf5m6PIwZahBpghq87Ivat2g4P1et5ZvkKO7+7M+cBKG6cpX6gWBtJ75HU+Ca4tkRzDky6vrFIROlBlju5zELr7tLj1Z6FY21TBxuh+Jx23h+YbzIL7vjJWI9gb5ghmxkmvk3ojJf2aLpQTIHho="
# signing opaque param
ok 160 (unnamed assert)
ok 161 (unnamed assert)
ok 162 should be equal
ok 163 should be equal
ok 164 (unnamed assert)
# > Signature keyId="unit",algorithm="rsa-sha256",headers="date (algorithm)",signature="ROMt51x1aZqlTpyAlfy1xb9jcRrmyRpPYolbGAmZk8l7wpC6eSc4x0OpmPp1ZvsPRm5S6zLm9DufL1Ey3yApVGbBogHZWGwgRvfMIc6lWR7+U9WMTLRFallIq9YoFqBNfY2yTfA9vaEx+Ew7+Ai2lmJrLpaP/3YuRjZMII88zoY="
# signing with key protected with passphrase
ok 165 (unnamed assert)
ok 166 (unnamed assert)
ok 167 should be equal
ok 168 should be equal
ok 169 (unnamed assert)
# > Signature keyId="unit",algorithm="dsa-sha1",headers="date (request-target)",signature="MCwCFFG37hj+0QXdsRNrxcfUB4y5mrsZAhRLeEKhZlJ3atgV+tQ/pS8gqJ2zaA=="
# request-target with dsa key
ok 170 (unnamed assert)
ok 171 (unnamed assert)
# > Signature keyId="unit",algorithm="ecdsa-sha256",headers="date (request-target)",signature="MEQCIHUaCooOElk1ChatOOfcbMZWrKVcAys13k3dXIrJBRQMAiAoDFUefFrMDRtJszA6f9OQoapFaz8IW//kMoGxF0IXkw=="
# request-target with ecdsa key
ok 172 (unnamed assert)
ok 173 (unnamed assert)
# > Signature keyId="unit",algorithm="hmac-sha1",signature="i0+OKV5oXxsb6hZlxL0+8ZDaCRc="
# hmac
ok 174 (unnamed assert)
ok 175 (unnamed assert)
# > Signature keyId="foo",algorithm="rsa-sha1",headers="(request-target) date",signature="Cs9jW5ivjocnWnnw4E6td/9RxMokP8qDSXvF4/XFOU1OSurwzr0DOYxBldq4ijXylNMwCCmdUvJJtZcUFpxeWsLZ51lGD3rATp6sSyeDrkoYeZBD1MVQg1ypV311Mt+Xa8ucjNuC0/u/S0SOD3YEO9swRUbiYR9IktnEPlmMTPs="
# createSigner with RSA key
ok 176 (unnamed assert)
# createSigner with RSA key, auto algo
ok 177 (unnamed assert)
# createSigner with RSA key, auto algo, passphrase
ok 178 (unnamed assert)
# createSigner with HMAC key
ok 179 (unnamed assert)
# createSigner with sign function
ok 180 (unnamed assert)
ok 181 (unnamed assert)
ok 182 should be equal
ok 183 (unnamed assert)
ok 184 (unnamed assert)
# tear down
# tests 67
# pass  67
# ok
ok 185 test/signer.test.js

# verify.test.js
# TAP version 13
# setup
ok 186 (unnamed assert)
ok 187 (unnamed assert)
ok 188 (unnamed assert)
ok 189 (unnamed assert)
ok 190 (unnamed assert)
ok 191 (unnamed assert)
# invalid hmac
ok 192 (unnamed assert)
ok 193 should be equal
# valid hmac
ok 194 (unnamed assert)
ok 195 should be equal
# invalid raw hmac
ok 196 (unnamed assert)
ok 197 should be equal
# valid raw hmac
ok 198 (unnamed assert)
ok 199 should be equal
# invalid rsa
ok 200 (unnamed assert)
ok 201 should be equal
# valid rsa
ok 202 (unnamed assert)
ok 203 should be equal
# invalid dsa
ok 204 (unnamed assert)
ok 205 should be equal
# valid dsa
ok 206 (unnamed assert)
ok 207 should be equal
# invalid ecdsa
ok 208 (unnamed assert)
ok 209 should be equal
# valid ecdsa
ok 210 (unnamed assert)
ok 211 should be equal
# invalid date
ok 212 Expected to throw
ok 213 should be equal
# valid rsa from spec default
ok 214 (unnamed assert)
ok 215 (unnamed assert)
ok 216 should be equal
# valid rsa from spec default
ok 217 (unnamed assert)
ok 218 (unnamed assert)
ok 219 should be equal
# valid rsa from spec all headers
ok 220 (unnamed assert)
ok 221 (unnamed assert)
ok 222 should be equal
# valid rsa from spec all headers (request-target)
ok 223 (unnamed assert)
ok 224 (unnamed assert)
ok 225 should be equal
# tear down
# tests 40
# pass  40
# ok
ok 226 test/verify.test.js

1..226
# tests 226
# pass  226

# ok

@bahamat I know this an oddball request, but if it's possible to backport this patch to ~1.2.x that would allow anyone using request to pick up this fix as well.
I know that request is deprecated, but it's still very popular with ~17 million weekly downloads.
Ideally request would have specified ^1.2.0, but they have ~1.2.0 which means that this fix is out of range.

I certainly wouldn't blame you for not wanting to backport this, but a whole lot of people on the internet would appreciate you for it :)


Allow fetching of credentials when hibernated

The code for get_credentials.sh seems to have been copied from apply.sh where the goal is to have a ready cluster when it completes, but the cluster being running and reachable is not a requirement to get the credentials.

@gurnben As far as I can tell, it doesn't currently wait? It just checks once.

You are.... correct