Fixed tests

@quarckster I bumped codecov-action to deal with https://github.com/codecov/codecov-action/issues/322, we can migrate to v2 in a separate pr.


[Compatibility] Adding RENAMENX command

Adding support for RENAMENX command in Garnet

Is there a way to check the existence of the object without calling GET which the current EXISTS method does?
Or is there a similar method for object type like SET NX?

Is there a way to check the existence of the object without calling GET which the current EXISTS method does? Or is there a similar method for object type like SET NX?

GET is probably your best bet in terms of performance.


Handle Science Museum errors with batches larger than 50 pages

Fixes

Fixes #864
Background

The Science Museum API appears to be throwing 400 errors when you attempt to access a page number greater than 50 for large datasets, even when there should legitimately be > 50 pages. For example, a recent run received this response for the 50th page of a dataset:
# Excerpt from response_json
  "links":{
      "self":"https://collection.sciencemuseumgroup.org.uk/search/date[from]/1875/date[to]/1900/images/image_license?page[size]=100&page[number]=50",
      "first":"https://collection.sciencemuseumgroup.org.uk/search/date[from]/1875/date[to]/1900/images/image_license?page[size]=100",
      "last":"https://collection.sciencemuseumgroup.org.uk/search/date[from]/1875/date[to]/1900/images/image_license?page[size]=100&page[number]=65",
      "prev":"https://collection.sciencemuseumgroup.org.uk/search/date[from]/1875/date[to]/1900/images/image_license?page[size]=100&page[number]=49",
      "next":"https://collection.sciencemuseumgroup.org.uk/search/date[from]/1875/date[to]/1900/images/image_license?page[size]=100&page[number]=51"
   },
   "meta":{
      "total_pages":66,
      ...

Note that total_pages > 50, and the links section does contain a link to page 51. However if you attempt to actually request page 51, you get a 400 error and the DAG eventually errors after a few retry attempts.
We were already splitting the data from the Science Museum up into year_range intervals to try to get smaller batches of data, presumably to avoid this error. It looks as though some of the year ranges are now too large.
Description
This PR:

Reduces the length of our existing year_range intervals so that none contains more than 50 pages of data
Updates the year_range calculation to be future-proof
Future-proofs the DAG by detecting when we're about to exceed 50 pages, then halting ingestion for the batch early and alerting in Slack.

In order to get the Slack alert working I had to make a small modification to pass dag_id into provider data ingesters, so there are a few changes related to that. I also updated docs and cleaned up a few small things.
Testing Instructions

just test
Run the DAG locally and ensure that you don't see any Slack alerts or errors. Setting an ingestion_limit will prevent the buggy scenario from being reached, so if you want to speed up the process you can instead manually edit the starting page_number in get_next_query_params:
    from_, to_ = kwargs["year_range"]
        if not prev_query_params:
            # Reset the page number to 49 for testing
            self.page_number = 49
        else:
            # Increment the page number
            self.page_number += 1

To test the Slack alerting when a page number greater than 50 is reached, you can edit the year_ranges locally to be a few very long ranges that will definitely have more than 50 pages:
year_ranges = [(0-1900), (1900-2023),]

Then run the DAG again and verify that you can see the send_alert message in the logs, but ingestion continues. (Ie you should ingest the first 50 pages worth of data for each of your long ranges).
Checklist

[ ] My pull request has a descriptive title (not a vague title like Update index.md).
[ ] My pull request targets the default branch of the repository (main) or a parent feature branch.
[ ] My commit messages follow best practices.
[ ] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[ ] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

In doing some poking around on the Science Museum side of things, I was able to find this issue: https://github.com/TheScienceMuseum/collectionsonline/issues/735. Looks like they came to a similar conclusion as us: https://github.com/WordPress/openverse-api/issues/857
Pagination is a hard problem it seems!
What's interesting is that their API limits to the first 150 pages still:
https://github.com/TheScienceMuseum/collectionsonline/blob/6e29580414256db34783993a97624d75d60e9b8d/lib/search.js#L15
Do you think we should reach out for this case and file a bug on their repo, given that the issue we're seeing is on page 50 and not 150? And also given that a next link is still provided even though we aren't allowed to traverse beyond page 50.

I was able to test, this worked well! One note, your example has: year_ranges = [(0-1900), (1900-2023),], I think it needs to be year_ranges = [(0, 1900), (1900, 2023),] (I was getting a TypeError when I copy and pasted the example since it was just subtracting the numbers).


Automate releases build for macOS and Linux

We need to automate releases build for macOS and Linux on Circle CI

See https://github.com/japaric/trust for more info

Fixed in v0.4.0


security/acme-client: Automation SFTP-Upload: Fullchain incomplete, intermediate missing

Describe the bug
ACME-client Automation "Upload certificate via SFTP" is not sending a complete fullchain.pem. The intermediate certificate is missing.
To Reproduce
Steps to reproduce the behavior:

Renew certificate with Automation "Upload certificate via SFTP" in the end
Check fullchain.pem after succesfull upload

Expected behavior
Fullchain.pem with complete certificate chain
ACME-Client Version: 3.1
OPNsense 21.7.3_1-amd64
FreeBSD 12.1-RELEASE-p20-HBSD
OpenSSL 1.1.1l 24 Aug 2021

THANK YOU. I am having the same issue with DNSDist, seem other things like HAProxy are ok with the chaining, they must generate the chain on their own. So i managed to go here:
https://tools.keycdn.com/ssl
and paste the fullchain.pem in and it says there is a chaining / ordering issue.
So i went here: https://whatsmychaincert.com/
and there is a "Generate correct chain" option, i took the output, pasted it into fullchain2.cer and everything works when i point to that file. So i compared the two and they are different in the last cert, but i don't know enough to understand why exactly this would be.
Hope this helps with at least the workaround.

ACME-client Automation "Upload certificate via SFTP" is not sending a complete fullchain.pem. The intermediate certificate is missing.

I cannot reproduce this. In my case the fullchain.pem is complete, it contains my certificate and both intermediate certificates. Please provide more details (which ACME CA, the actual contents of your fullchain.pem, etc.).

I am using the "Let's Encrypt" CA. I think the problem is caused by the "upload_sftp.php" and the construction of the fullchain.pem certificate since the fullchain.pem the client downloads are ok and containing the complete chain.
This problem just came to my attention because the Let's Encrypt DST Root CA X3 expired today and caused my services to fail. After exchanging the fullchain.pem manually by just copying the Version downloaded by the ACME-Client to other servers it started working again as expected. The Problem only exists with the certs uploaded by the automation script.
Here you see the chain details of the fullchain.pem uploaded via sftp automation:
Certificate chain
0 s:/CN=greensite.me
i:/C=US/O=Let's Encrypt/CN=R3
1 s:/C=US/O=Let's Encrypt/CN=R3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
And here are the chain details of a fullchain.pem downloaded by ACME-Client:
Certificate chain
0 s:/CN=greensite.me
i:/C=US/O=Let's Encrypt/CN=R3
1 s:/C=US/O=Let's Encrypt/CN=R3
i:/C=US/O=Internet Security Research Group/CN=ISRG Root X1
2 s:/C=US/O=Internet Security Research Group/CN=ISRG Root X1
i:/O=Digital Signature Trust Co./CN=DST Root CA X3

OK, so this has nothing to do with the SFTP functionality.
Please apply the hotfix as described in the other issue:
https://github.com/opnsense/plugins/issues/2550#issuecomment-929380587


Unify Payload configuration

Back when this project first started there were not many different kinds of
payload and only two generators. There was an awkward config -> payload switch
table that happened in each generator and, while I did love it, eh. There are
now more generators and more payloads with more on the way and what was once an
annoyance will quickly become a real code duplication problem.
This commit follows the generator/blackhole configuration model and has payload
provide its own configuration. This allows all the generators to drop their
Variant configuration and means introducing a new payload is not a big slog. If
we need generators to serialize differently from one another that is now more
difficult, but is surely something we can address by fiddling with the
Serializer trait.
Signed-off-by: Brian L. Troutwine<EMAIL_ADDRESS>

@GeorgeHahn all yours. :)


Typo on Microsoft Teams example

Hey,
I found a small typo:
from knockknock import telegram_sender # <-- should be teams_sender

CHAT_ID: int = <your_messaging_room_id>
@teams_sender(token="<webhook_url_to_your_teams_channel>")
...

thank you @dylanjcastillo, merged it!


Discussion: Should we remove  or implement it in a different way?

FWIW it should be trivial to update in older projects if we choose the route of backwards compatibility.

I've use this a hell-of-a lot, so would be interested to see what the reasoning is behind removing it, as its a pretty monolithic breaking change ;)

Could we not just have <grid><row><content/></row></grid> and create the "single column row" dynamically? OR create a generic <container/> element which gives you the same flexbox based layout as a grid column, but without being tied to a grid structure?

I don't think I care enough to get involved in this one. I will probably always do <Grid><Row><Col></Col></Row></Grid> as I have a snippet set up for it (I type "gri" and press tab and it pumps out a full grid). I'm rarely in a situation where I'm sure it'll be a one col row as I'm usually playing around with layout so don't want to tie myself in.
@philmower suggestion of <container /> is interesting though. Might be a different discussion, not sure. Sounds similar to where #29 is going (see recent Slack for more info on this)

I'm not convinced it needs to go... Its a timesaver, and reduces the amount of markup you have to read/write. You don't have to use it and its only 5 lines of code in grid.tsx
<SingleColumnRow>Hello world</SingleColumnRow>
vs
<Row>
   <Col>Hello world</Col>
</Row>

I can't be bothered to maintain this. IT IS GONE (in 1.0)


showTreeItemPicker and groupBy setting don't cooperate

When groupBy != resourceGroup, and we call showTreeItemPicker searching for a resource group, it will always fail since none of the items are resource groups.

Duplicate of #128


fix: hidden unknown primary language block

overview
I noticed that undefined is lined up on the display of opensource.twitter.com. The reason for this is that it includes repositories such as https://github.com/twitter/template where only documents are lined up.
solution
Since the website created by this hugo configures the DOM by doing document.createElement in static/js/project.js , I added one branch in it so that undefined is not displayed.
need discuss
I added Border by matching the project color with the language color of GitHub, but the browser uses the default black because a invalid value is added as border-color. If you don't specify the default color, you can leave it as it is, but if you want to define the default color, you need to implement it.

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

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


Async file access code with synchronous one replaced

If I run oss-attribution-generator the generation of the attribution overview took more than 25 minutes.
In a quick research I found out that this code often handles file access asynchronously.
This caused to very high disk load.
I've replaced all this asynchronous code with synchronous one.
This applies to all areas in getNpmLicenses() and getBowerLicenses() where the following methods was used:

jetpack.existsAsync()
jetpack.findAsync()
jetpack.readAsync()

After the integration of the synchronous code, I could reduce the generation time from 25 minutes to 2 minutes.
Tested on:
Windows 10 Enterprise x64bit (Build 1703)
Node v8.9.4

Benchmarked this on a sample project vs. master and it yielded ~75% reduction in execution time. Nice! Reviewing the code changes now.


I get the error "FindEntityOperation failed" when I run:
op = session.find_entity(filter_expr="zone and temp and sensor")
however it return correct values when I run:
op = session.find_entity(filter_expr="ahu and equip")
Also when I run:
op = session.find_entity(filter_expr=<EMAIL_ADDRESS>for some points it returns the right entity and for some points it returns:

I have checked both points exist.
This is through SkysparkHaystackSession
I really appreciate to know what I am missing.

On 28/06/17 10:26, p2ya wrote:

I get the error "FindEntityOperation failed" when I run:
op = session.find_entity(filter_expr="zone and temp and sensor")
however it return correct values when I run:
op = session.find_entity(filter_expr="ahu and equip")
This is through SkysparkHaystackSession

If you inspect op.result, you should see the exception that triggered
the failure.
--
Stuart Longland (aka Redhatter, VK4MSL)
I haven't lost my mind...
...it's backed up on a tape somewhere.

Hi Stuart,
I test that for two points by reading their SkySpark IDs, op = session.find_entity(filter_expr=<EMAIL_ADDRESS>one works nicely but one throws an error as follow through op.result:
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

On 30/06/17 10:57, p2ya wrote:

Hi Stuart,
I test that for two points by reading their SkySpark IDs, op =
session.find_entity(filter_expr=<EMAIL_ADDRESS>one works nicely but one throws an error as follow through op.result:
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its
entirety, but it didn't consume all the text. The non-matching portion
of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

In other words, the server returned more than what the client was
bargaining for.
I wonder if you could try creating the session with a logger and try the
action again?
Something like the following should do the trick:
import logging
import pyhaystack
logger.basicConfig(level=logging.DEBUG, filename='/tmp/skyspark.log')
session = pyhaystack.connect(your, args, here,
log=logging.getLogger('pyhaystack'), http_args=dict(debug=true))
That'll create skyspark.log in your /tmp directory.  In the log
should be a raw dump of exactly what Skyspark sent in its reply and we
can amend hszinc's parsing rules to accommodate it.
Stuart Longland (aka Redhatter, VK4MSL)
I haven't lost my mind...
...it's backed up on a tape somewhere.

Do you have a working example which uses the log file ?
I get couple of errors implementing it

Just to follow up after @p2ya . I implemented the code you suggested and the result can be seen below.
DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): host.com
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /auth/ss_project/api?user HTTP/1.1" 200 141
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "POST /auth/ss_project/api?user HTTP/1.1" 200 66
DEBUG:pyhaystack.client.SkysparkHaystackSession.get_grid.read:Authenticated, trying again
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /api/ss_project/read?filter=id+%3D%3D+1c264c3d-ccfc92a4 HTTP/1.1" 200 None
DEBUG:pyhaystack.client.SkysparkHaystackSession.find_entity:Received grid: <Grid>
	Metadata: MetadataObject{'projName'='ss_project'}
	Columns:
		id
		analytics
		cmd
		disMacro
		equipRef
		his
		hisEnd
		hisEndVal
		hisId
		hisOnWrite
		hisSize
		hisStart
		hisStatus
		hot
		kind
		levelRef
		navName
		obixConnRef
		obixHis
		point
		regionRef
		siteRef
		stateRef
		tz
		unit
		valve
		vav
		water
		mod
	Row    0: id=Ref('1c264c3d-ccfc92a4', 'CLIENT - Site VAV2 8C HWV', True), analytics=MARKER, cmd=MARKER, disMacro='$equipRef $navName', equipRef=Ref('1c1258a2-6dd7daf9', 'CLIENT - Site VAV2 8C', True), his=MARKER, hisEnd=datetime.datetime(2017, 6, 30, 13, 15, 9, tzinfo=<DstTzInfo 'Australia/Hobart' AEST+10:00:00 STD>), hisEndVal=BasicQuantity(0.0, '%'), hisId='0.530', hisOnWrite='fixObixTz', hisSize=104243.0, hisStart=datetime.datetime(2014, 6, 22, 11, 15, 10, tzinfo=<DstTzInfo 'Australia/Hobart' AEST+10:00:00 STD>), hisStatus='ok', hot=MARKER, kind='Number', levelRef=Ref('1eaac91f-8b1434fa', 'CLIENT - Site Level 2', True), navName='HWV', obixConnRef=Ref('1be5ab92-4871f8e1', 'CLIENT - Site', True), obixHis=Uri('/obix/histories/St_John_St_79_G_L3/VAV2_8C_HWV/'), point=MARKER, regionRef=Ref('1ea9d962-bb8f33b3', 'North Tasmania', True), siteRef=Ref('1be9855e-7ab53b9f', 'CLIENT - Site', True), stateRef=Ref('1ea9d50b-0054078a', 'TAS', True), tz='Hobart', unit='%', valve=MARKER, vav=MARKER, water=MARKER, mod=datetime.datetime(2017, 4, 21, 3, 57, 17, 644000, tzinfo=<iso8601.Utc>)
</Grid>
DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): host.com
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /auth/ss_project/api?user HTTP/1.1" 200 141
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "POST /auth/ss_project/api?user HTTP/1.1" 200 66
DEBUG:pyhaystack.client.SkysparkHaystackSession.get_grid.read:Authenticated, trying again
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7 HTTP/1.1" 200 None
DEBUG:pyhaystack.client.SkysparkHaystackSession.get_grid.read:Parse fails
Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7 HTTP/1.1" 200 None
DEBUG:pyhaystack.client.SkysparkHaystackSession.get_grid.read:Parse fails
Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7 HTTP/1.1" 200 None
DEBUG:pyhaystack.client.SkysparkHaystackSession.get_grid.read:Parse fails
Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).
DEBUG:pyhaystack.http_client:Merging None with None, exclude None -> {}
DEBUG:pyhaystack.http_client:Merging {} with None, exclude True -> {}
DEBUG:pyhaystack.http_client:Merging {} with None, exclude True -> {}
DEBUG:pyhaystack.http_client:Merging None with None, exclude None -> {}
DEBUG:pyhaystack.http_client:Performing operation GET of http://host.com/auth/ss_project/api?user, headers: {}, cookies: {}, body: None
DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): host.com
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /auth/ss_project/api?user HTTP/1.1" 200 141
DEBUG:pyhaystack.http_client:Merging None with None, exclude None -> {}
DEBUG:pyhaystack.http_client:Merging {b'Content-Length': '74', b'Content-Type': 'text/plain; charset=utf-8'} with None, exclude True -> {b'Content-Length': '74', b'Content-Type': 'text/plain; charset=utf-8'}
DEBUG:pyhaystack.http_client:Merging None with None, exclude True -> {}
DEBUG:pyhaystack.http_client:Merging None with None, exclude None -> {}
DEBUG:pyhaystack.http_client:Performing operation POST of http://host.com/auth/ss_project/api?user, headers: {b'Content-Length': '74', b'Content-Type': 'text/plain; charset=utf-8'}, cookies: {}, body: 'nonce:265e2feba027266d5956ca1745001cce\ndigest:TfBNzt9G79DjxDmc+lHk5PHrpLU='
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "POST /auth/ss_project/api?user HTTP/1.1" 200 66
DEBUG:pyhaystack.get_grid.read:Authenticated, trying again
DEBUG:pyhaystack.http_client:Merging {'filter': 'id == 20a7e02c-ff2c81e7'} with None, exclude None -> {'filter': 'id == 20a7e02c-ff2c81e7'}
DEBUG:pyhaystack.http_client:Merging {b'Accept': 'text/zinc'} with None, exclude None -> {b'Accept': 'text/zinc'}
DEBUG:pyhaystack.http_client:Merging None with {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}, exclude None -> {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}
DEBUG:pyhaystack.http_client:Merging None with None, exclude None -> {}
DEBUG:pyhaystack.http_client:Performing operation GET of http://host.com/api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7, headers: {b'Accept': 'text/zinc'}, cookies: {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}, body: None
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7 HTTP/1.1" 200 None
DEBUG:pyhaystack.get_grid.read:Parse fails
Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).
DEBUG:pyhaystack.http_client:Merging {'filter': 'id == 20a7e02c-ff2c81e7'} with None, exclude None -> {'filter': 'id == 20a7e02c-ff2c81e7'}
DEBUG:pyhaystack.http_client:Merging {b'Accept': 'text/zinc'} with None, exclude None -> {b'Accept': 'text/zinc'}
DEBUG:pyhaystack.http_client:Merging None with {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}, exclude None -> {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}
DEBUG:pyhaystack.http_client:Merging None with None, exclude None -> {}
DEBUG:pyhaystack.http_client:Performing operation GET of http://host.com/api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7, headers: {b'Accept': 'text/zinc'}, cookies: {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}, body: None
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7 HTTP/1.1" 200 None
DEBUG:pyhaystack.get_grid.read:Parse fails
Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).
DEBUG:pyhaystack.http_client:Merging {'filter': 'id == 20a7e02c-ff2c81e7'} with None, exclude None -> {'filter': 'id == 20a7e02c-ff2c81e7'}
DEBUG:pyhaystack.http_client:Merging {b'Accept': 'text/zinc'} with None, exclude None -> {b'Accept': 'text/zinc'}
DEBUG:pyhaystack.http_client:Merging None with {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}, exclude None -> {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}
DEBUG:pyhaystack.http_client:Merging None with None, exclude None -> {}
DEBUG:pyhaystack.http_client:Performing operation GET of http://host.com/api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7, headers: {b'Accept': 'text/zinc'}, cookies: {'fanws': '07a9811a-072b-2fc0-bb49-005056957564-12434b8fd6674e88'}, body: None
DEBUG:requests.packages.urllib3.connectionpool:http://host.com:80 "GET /api/ss_project/read?filter=id+%3D%3D+20a7e02c-ff2c81e7 HTTP/1.1" 200 None
DEBUG:pyhaystack.get_grid.read:Parse fails
Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/pyhaystack/pyhaystack/client/ops/grid.py", line 217, in _on_response
    decoded = hszinc.parse(body, mode=hszinc.MODE_ZINC)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 63, in parse
    return list(map(_parse, GRID_SEP.split(grid_str.rstrip())))
  File "/home/user/Documents/projects/pyhaystack_test/.venv/src/hszinc/hszinc/parser.py", line 70, in parse_grid
    parsed = zinc_grammar.parse(grid_str)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/home/user/Documents/projects/pyhaystack_test/.venv/lib/python3.6/site-packages/parsimonious/expressions.py", line 112, in parse
    raise IncompleteParseError(text, node.end, self)
parsimonious.exceptions.IncompleteParseError: Rule 'grid' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '@20a7e02c-ff2c81e7 "' (line 3, column 1).

Hmm, I thought that should have emitted the response back in handling the parse error.  Okay, there's a debug statement that should be added for future tracing purposes.
Just thinking though, SkySpark supports JSON grid formats, maybe try putting grid_format=hszinc.MODE_JSON in your session arguments… that will switch it to use JSON instead of ZINC mode.  ZINC is used with nHaystack as it doesn't implement JSON properly, everything else is new enough to have JSON grids standardised.

I agree... and i could result in setting default mode to JSON for skyspark eventually...

changing grid format worked


unevaluatedProperties causes a 500 error in online demo.

When I use this yaml with the online demo, it crashes with a 500 error:
openapi: 3.1.0
info:
  title: Burgers
  license:
    name: License Agreement
    url: https://www.example.com/licensing.html
  version: latest
  description: |
    More burgers!

Thanks for finding this, I will investigate the error.

Would you be able to re-try?

I validated this is fixed with the online demo.


Test ARM on native hardware

as #526 is in with #867  and #918 we can test cOS on native hardware.
Keep in mind that the default example images and the arm builder script partitions by default the SD image without a COS_PERSISTENT partition set, so needs a cloud-init setup similar to https://rancher-sandbox.github.io/cos-toolkit-docs/docs/getting-started/booting/#cloud-images (see cloud-init layout example), which should provided as result of this card too, as part of documentation
We need to test if at least if the minimum core set of functionalities are working on RPI3/4.
Action items

[ ] Configure COS_PERSISTENT with cloud-init
[ ] Test upgrades
[ ] Test resets
[ ] Test upgrade of recovery
[ ] Document requirements to get a fully functional system

Notes
To get the image:
# Image will be available at rpi-image/build/*.img, and can be used with dd
sudo luet util unpack quay.io/costoolkit/examples:rpi-0.7.9-3-g1128618e.img rpi-image

The image link above should be changed to something like ...:latest :wink:

Currently experimenting with quay.io/costoolkit/examples:rpi-554a9b96 and the cloud-init below (to place manually into the COS_OEM partition after flashing the SD card) which setup a 'fake' COS_PERSISTENT partition from the recovery, in such way cos-upgrade can run:
name: "Immutable Layout"
stages:
  boot:
    - name: "Create COS_PERSISTENT"
      commands:
      - |
        RECOVERY=$(blkid -L COS_RECOVERY || true)
        mkdir /run/rec
        mount $RECOVERY /run/rec
        if [ ! -e "/run/rec/persistent.img" ]; then
          dd if=/dev/zero of=/run/rec/persistent.img bs=1MB count=100
          mkfs.ext4 /run/rec/persistent.img -L COS_PERSISTENT
        fi

        export DRIVE=$(losetup -f "/run/rec/persistent.img" --show)
        kpartx -va $DRIVE
        mount $DRIVE /usr/local

Upgrading from release channel
                       ██      ██    ██ ███████ ████████
                       ██      ██    ██ ██         ██
                       ██      ██    ██ █████      ██
                       ██      ██    ██ ██         ██
                       ███████  ██████  ███████    ██

                 Luet - 0-deps container-based package manager

    0.22.7-gbff45b9bd953b46dda8498495d5d6e1b4575fe8c 2022-01-18 07:50:59 UTC
                Luet Copyright (C) 2019-2021 Ettore Di Giacinto
                This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under certain conditions.
 INFO    Enabled plugins:
 INFO    	 luet-cosign (at /usr/bin/luet-cosign)

  Install

 INFO    Downloading  quay.io/costoolkit/releases-green-arm64:repository.yaml
  ERROR     Plugin luet-cosign at /usr/bin/luet-cosign had an error: bash: warning: setlocale: LC_ALL: cannot change locale (en_GB.utf-8)
          Error: exactly one of: key reference (--key), or hardware token (--sk) must be provided
          main.go error during command execution: exactly one of: key reference (--key), or hardware token (--sk) must be provided

Upgrade is running but I am getting this error in the end, not sure if this is an issue.

The images are not signed, can you try with cos-upgrade --no-cosign ?

Results in different errors:
Program Name | Version  | License | Repository
system/cos   | 0.7.17-1 |         | cos

Downloading packages [0/1] █                                                                   0% | 0s
 INFO    Downloading image  quay.io/costoolkit/releases-green-arm64:cos-system-0.7.17-1
 WARNING    failed downloading image quay.io/costoolkit/releases-green-arm64:cos-system-0.7.17-1: write /usr/local/.cos-upgrade/tmp/upgrade/tmpluet/image4146378108/boot/initrd-5.3.18-59.40-default: no space left on device
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xfc0380]

goroutine 75 [running]:
github.com/mudler/luet/pkg/api/core/types/artifact.(*Checksums).generateSum(0x4000843cd0, 0x0, {{0x1650cf8, 0x4001ca5480}, {0x13b953d, 0x6}})
	/luetbuild/go/src/github.com/mudler/luet/pkg/api/core/types/artifact/checksum.go:78 +0x30
github.com/mudler/luet/pkg/api/core/types/artifact.(*Checksums).generateSHA256(0x4000843cd0, 0x0)
	/luetbuild/go/src/github.com/mudler/luet/pkg/api/core/types/artifact/checksum.go:73 +0x78
github.com/mudler/luet/pkg/api/core/types/artifact.(*Checksums).Generate(...)
	/luetbuild/go/src/github.com/mudler/luet/pkg/api/core/types/artifact/checksum.go:60
github.com/mudler/luet/pkg/api/core/types/artifact.(*PackageArtifact).Verify(0x0)
	/luetbuild/go/src/github.com/mudler/luet/pkg/api/core/types/artifact/artifact.go:114 +0x78
github.com/mudler/luet/pkg/installer.(*LuetInstaller).getPackage(0x400044c080, {{0x1684f80, 0x40261b9b80}, 0x4015968480, {0x1623200, 0x40006bc180}}, {0x167e758, 0x4026136780})
	/luetbuild/go/src/github.com/mudler/luet/pkg/installer/installer.go:937 +0x7c
github.com/mudler/luet/pkg/installer.(*LuetInstaller).downloadWorker(0x400044c080, 0x3, 0x40262bde60, 0x40005b3810, 0x401dddc840, {0x167e758, 0x4026136780})
	/luetbuild/go/src/github.com/mudler/luet/pkg/installer/installer.go:971 +0xe8
created by github.com/mudler/luet/pkg/installer.(*LuetInstaller).download
	/luetbuild/go/src/github.com/mudler/luet/pkg/installer/installer.go:633 +0x4dc
+ upgrade_cleanup
+ EXIT=2
+ upgrade_cleanup2
+ return 2

Closing for now as we have initial support for ARM in our development documentation


Add Kubernetes documentation

This PR adds the repository for Kubernetes documentation.

Thanks for the PR @zacharysarah
This repo is already added :) https://github.com/deepsourcelabs/good-first-issue/blob/master/data/repositories.toml#L31

@jaipradeesh Whoops, I missed that--thanks!


 It would be nice to have a scheduler built inside KITE so that it can be scheduled to run after an interval specified in the config file.

I think that it is the responsibility of CI tools.

Done.


Clean up api_get_fields()

api_get_fields still uses response_format() and claims to support CSV.

Closing to consolidate API issues.


Channel server returns inconsistent versions for channel v1.30

For channel v1.30, the channel server's json says the latest version is "v1.30.7+k3s1". However, the link for channel v1.30 leads to version "v1.30.6+k3s1".
Steps To Reproduce:
https://update.k3s.io/v1-release/channels returns:
...
    {
      "id": "v1.30",
      "type": "channel",
      "links": {
        "self": "https://update.k3s.io/v1-release/channels/v1.30"
      },
      "name": "v1.30",
      "latest": "v1.30.7+k3s1",
      "latestRegexp": "v1\\.30\\..*",
      "excludeRegexp": "^[^+]+-"
    }
...

Following the self link https://update.k3s.io/v1-release/channels/v1.30, I get a redirect to https://github.com/k3s-io/k3s/releases/tag/v1.30.6+k3s1.
Expected behavior:
Shouldn't the redirect be to "v1.30.7+k3s1"?
https://github.com/k3s-io/k3s/releases/tag/v1.30.7+k3s1
Actual behavior:
Redirected to v1.30.6+k3s1.
So the install script installs v1.30.6+k3s1 :-(
Additional context
Could this be because somehow v1.30.7+k3s1 is tagged as a pre-release in GitHub ? This doesn't make sense according to the versioning scheme.

Duplicate of https://github.com/k3s-io/k3s/issues/11421#issuecomment-2523956669


Paket does not add all project references for some NuGet packages

Description
When I install the Prius  NuGet package Paket only adds one project reference even though the NuGet package defines two references.
You can see from this nuspec file that Prius needs 2 project references to be added Prius.Contracts.dll and Prius.ORM.dll but when I add this NuGet package to my project Paket only adds a reference to Prius.Contracts.dll
Repro steps

Start a new console app in Visual Studio 2013
Configure Paket and add a reference to the Prius NuGet package.
Run paket install
Examine the project references and see that Prius.ORM.dll is not referenced
If you write code that uses Prius then the application will fail at startup because Prius.ORM.dll is missing from the bin folder.

Expected behavior
Paket should examine the <references> section of the nuspec file and include all of the references listed there.
Actual behavior
Paket only creates a project reference for the first <reference> listed in this case. I did not find any other examples to see if it is always just the first one that is referenced.
Known workarounds
You can manually add the missing reference to the project

It turns out that the NuGet package in question has a case mismatch between the DLL and the nuspec file.
NuGet appears to be case insensitive whereas Paket is case sensitive which is why this caused an issue.
The Prius ORM package has been corrected.

I don't know if it's the same issue - perhaps I should create a new one:
When I have multiple projects and one references another, and I run paket pack, and the file system path differs to the reference in csproj by only letter case, then dll produced by the referenced project is added to the nupkg. If the paths are exactly the same, then the reference is created in nupkg, and dll is not included (as expected).


Error in guidance text in step 2

I think:
pac solution init --publisher-name <enter your publisher name> --publisher-prefix <enter your publisher name>
Should be:
--publisher-prefix <enter your publisher prefix>

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 700c487a-6048-5ed1-d3b3-f15756f0f953
Version Independent ID: 35502302-bdf4-6a02-11cb-dea21d9fa7ff
Content: Import components - PowerApps
Content Source: powerapps-docs/developer/component-framework/import-custom-controls.md
Service: powerapps
GitHub Login: @Nkrb
Microsoft Alias: nabuthuk

@HilaryStoupa Thanks for the feedback. We have updated the docs and published live. Closing the issue.


The C program to implement floyd warshall algorithm

floyd warshall algorithm is a graph algorithm which is used to find the minimum cost required to travel from every node to every other node

This is all pair shortest path problem


Build process

Optimize build process

athena_signal/kernels/dios_ssp_api.c( at line 31) is not well indented, I suggest add .clang_format , and keep the same code style.


fix: change remove bit size suffixes from parse cheats

In https://github.com/foundry-rs/foundry/pull/2854 parseUint256 and parseInt256 cheats were added. This PR removes the 256 suffix from their names for consistency with the envUint and envInt cheat names, since those have been around for longer. This is also consistent with the DSTest event names of e.g. log_named_uint

Yea, and I think the cheats are new enough that they're not widely used yet so it should be ok.


Reduce bundle size (7.2MB -> 5.4MB) with consistent grommet imports

Considering the current build system, does using "import type" (instead of simple import) make any difference in the compiled product? I see a mixed practice in the current codebase, including this PR.

Ah yeah, I'll remove that import type (has nothing to do with reducing size)


Can it be filled with other colors, such as blue, red

After deleting the background, the default color is white, can it be filled with other colors, such as red

convert  is good for add background image.
its from ImageMagick.
code like
$cmd = "convert $file_1 -background '".$color."'  -flatten $file_2";

if your are useing PHP
or just command line
convert input_file  -background 'blue|red|..'  -flatten output_file


🐛 The SSL connection could not be established

Cc: @danielmackay

Hi @danielmackay
Describe the Bug

As per our conversation, when attempting to navigate to https://localhost:17161/login?t=<token>, I get an "The SSL connection could not be established" error.
To Reproduce
Steps to reproduce the behavior:

Follow README instructions for setup
Start project
Try navigate to https://localhost:17161/login?t=<token>
See error

Expected Behavior

It should load the page without errors.
Tasks

[ ] Investigate
[ ] Fix

More Information

Using launch settings from /home/bjeyn/Documents/work/ssw/Northwind365/tools/AppHost/Properties/launchSettings.json...
Building...
warn: Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer[8]
      The ASP.NET Core developer certificate is not trusted. For information about trusting the ASP.NET Core developer certificate, see https://aka.ms/aspnet/https-trust-dev-cert
info: Aspire.Hosting.DistributedApplication[0]
      Aspire version: 9.0.0+01ed51919f8df692ececce51048a140615dc759d
info: Aspire.Hosting.DistributedApplication[0]
      Distributed application starting.
info: Aspire.Hosting.DistributedApplication[0]
      Application host directory is: /home/bjeyn/Documents/work/ssw/Northwind365/tools/AppHost
info: Aspire.Hosting.DistributedApplication[0]
      Now listening on: https://localhost:17161
info: Aspire.Hosting.DistributedApplication[0]
      Login to the dashboard at https://localhost:17161/login?t=d0cee01007c581b1fe8ad5136eb39367
info: Aspire.Hosting.DistributedApplication[0]
      Distributed application started. Press Ctrl+C to shut down.
fail: Aspire.Hosting.Dashboard.Model.DashboardClient[0]
      Error loading data from the resource service.
      System.Threading.Tasks.TaskCanceledException: A task was canceled.
         at Grpc.Net.Client.Internal.Retry.RetryCallBaseClientStreamReader`2.MoveNext(CancellationToken cancellationToken)
         at Grpc.Core.AsyncStreamReaderExtensions.ReadAllAsyncCore[T](IAsyncStreamReader`1 streamReader, CancellationToken cancellationToken)+MoveNext()
         at Grpc.Core.AsyncStreamReaderExtensions.ReadAllAsyncCore[T](IAsyncStreamReader`1 streamReader, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
         at Aspire.Dashboard.Model.DashboardClient.<>c__DisplayClass29_1.<<EnsureInitialized>g__WatchResourcesAsync|5>d.MoveNext() in /_/src/Aspire.Dashboard/ResourceService/DashboardClient.cs:line 323
      --- End of stack trace from previous location ---
         at Aspire.Dashboard.Model.DashboardClient.<>c__DisplayClass29_1.<<EnsureInitialized>g__WatchResourcesAsync|5>d.MoveNext() in /_/src/Aspire.Dashboard/ResourceService/DashboardClient.cs:line 323
      --- End of stack trace from previous location ---
         at Aspire.Dashboard.Model.DashboardClient.<>c__DisplayClass29_0.<<EnsureInitialized>g__WatchResourcesWithRecoveryAsync|3>d.MoveNext() in /_/src/Aspire.Dashboard/ResourceService/DashboardClient.cs:line 298
      --- End of stack trace from previous location ---
         at Aspire.Dashboard.Model.DashboardClient.<EnsureInitialized>g__ConnectAndWatchResourcesAsync|29_1(CancellationToken cancellationToken) in /_/src/Aspire.Dashboard/ResourceService/DashboardClient.cs:line 246
fail: Aspire.Hosting.Dashboard.Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
      Unhandled exception in circuit 'B9ccrB-v795nfzhICHk_SFQkmjb38Z9Y3OxIazHukBc'.
      Grpc.Core.RpcException: Status(StatusCode="Internal", Detail="Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot", DebugException="System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.")
       ---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
       ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
         at System.Net.Security.SslStream.SendAuthResetSignal(ReadOnlySpan`1 alert, ExceptionDispatchInfo exception)
         at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions)
         at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)
         at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
         --- End of inner exception stack trace ---
         at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.InjectNewHttp2ConnectionAsync(QueueItem queueItem)
         at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at Grpc.Net.Client.Balancer.Internal.BalancerHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at Grpc.Net.Client.Internal.GrpcCall`2.RunCall(HttpRequestMessage request, Nullable`1 timeout)
         --- End of inner exception stack trace ---
         at Grpc.Net.Client.Internal.Retry.RetryCall`2.StartRetry(Action`1 startCallFunc)
         at Grpc.Net.Client.Internal.Retry.RetryCallBase`2.GetResponseCoreAsync()
         at Aspire.Dashboard.Model.DashboardClient.<>c__DisplayClass29_0.<<EnsureInitialized>g__ConnectAsync|2>d.MoveNext() in /_/src/Aspire.Dashboard/ResourceService/DashboardClient.cs:line 262
      --- End of stack trace from previous location ---
         at Aspire.Dashboard.Components.ApplicationName.OnInitializedAsync() in /_/src/Aspire.Dashboard/Components/Controls/ApplicationName.razor.cs:line 32
         at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
fail: Aspire.Hosting.Dashboard.Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
      Unhandled exception in circuit 'B9ccrB-v795nfzhICHk_SFQkmjb38Z9Y3OxIazHukBc'.
      Grpc.Core.RpcException: Status(StatusCode="Internal", Detail="Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot", DebugException="System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.")
       ---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
       ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
         at System.Net.Security.SslStream.SendAuthResetSignal(ReadOnlySpan`1 alert, ExceptionDispatchInfo exception)
         at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions)
         at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)
         at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
         --- End of inner exception stack trace ---
         at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.InjectNewHttp2ConnectionAsync(QueueItem queueItem)
         at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at Grpc.Net.Client.Balancer.Internal.BalancerHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at Grpc.Net.Client.Internal.GrpcCall`2.RunCall(HttpRequestMessage request, Nullable`1 timeout)
         --- End of inner exception stack trace ---
         at Grpc.Net.Client.Internal.Retry.RetryCall`2.StartRetry(Action`1 startCallFunc)
         at Grpc.Net.Client.Internal.Retry.RetryCallBase`2.GetResponseCoreAsync()
         at Aspire.Dashboard.Model.DashboardClient.<>c__DisplayClass29_0.<<EnsureInitialized>g__ConnectAsync|2>d.MoveNext() in /_/src/Aspire.Dashboard/ResourceService/DashboardClient.cs:line 262
      --- End of stack trace from previous location ---
         at Aspire.Dashboard.Components.ApplicationName.OnInitializedAsync() in /_/src/Aspire.Dashboard/Components/Controls/ApplicationName.razor.cs:line 32
         at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)

Environment

Device: Framework 13'
Browser: Chrome & Firefox
OS: Fedora Linux 40 (Workstation Edition) 6.10.12-200.fc40.x86_64
Container manager: Podman

Screenshots

Figure: browser output
Thanks!

@brookjeynes-ssw try running this first - dotnet dev-certs https --check --trust


feat: add line highlight feature for protosaurus code language

This PR implements the following syntax:

// highlight-next-line
// highlight-start and // highlight-end.

Sample code:
message Booking {
  // ID of booked vehicle.
  int32 vehicle_id = 1;

  // Customer that booked the vehicle.
  // highlight-next-line
  int32 customer_id = 2;

  // highlight-start
  // Status of the booking.
  BookingStatus status = 3;

  // Status of the booking.
  BookingStatus status = 3;

  // Has booking confirmation been sent.
  bool confirmation_sent = 4;

  // Has payment been received.
  bool payment_received = 5;

  // Color preference of the customer.
  string color_preference = 6;
  // highlight-end

  // Pick-up location.
  // This is a coordinate.
  Location pickup_location = 7;

  // Destination location.
  // This is a coordinate.
  Location destination_location = 8;

  // Intermediate locations.
  repeated Location intermediate_locations = 9;

  enum BookingPriority {
    NORMAL = 0;
    PRO = 1;
    ENTERPRISE = 2;
  }

  // Describes the priority of the booking.
  // The higher the level is, the faster the process will be.
  BookingPriority priority = 10;

  enum JourneyStatus {
    option allow_alias = true;
    UNKNOWN = 0;
    STARTED = 1;
    DEPARTED = 1;
    ARRIVED = 2;
  }

  // Describes the status of the journey.
  JourneyStatus journey_status = 11;

  // Use outside enum.
  TestEnumOutside test_enum_outside = 12;
}

The result can be seen here: https://imballinst.github.io/protosaurus/pr-31/docs/test
Dark mode

Light mode

This PR also reworks how the deletion works for the MDX files. Instead of whitelisting a static variable, we now will delete files based on the generated JSON files, e.g. if booking.v1.json exists, then booking.v1.mdx will be deleted. This is handy so that we only need to update .gitignore when creating a new static MDX file instead of having to update both .gitignore and the emit.ts file.
Signed-off-by: Try Ajitiono<EMAIL_ADDRESS>

Thanks @dio for the review!


WebAudioSound's destroy() method causes crash in Safari (iOS and Mac)

Version

Phaser Version: 3.51.0
Operating system: iOS and Max OS 11.1
Browser: Safari (iOS and Mac OS)

Description
The WebAudioSound class' destroy() method causes a crash when running in Safari both on iOS and Mac OS. This seems to be caused by the new WebAudio panning feature which breaks on Safari.
From looking at the destructor, there's a call to the disconnect() method on a panner node instance that is null. This results in the following error appearing in the JavaScript console:

Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'this.pannerNode.disconnect')

This seems to be related to bug fix #5460
Here's the code from WebAudioSound.js
destroy: function ()
{
    BaseSound.prototype.destroy.call(this);

    this.audioBuffer = null;
    this.stopAndRemoveBufferSource();
    this.muteNode.disconnect();
    this.muteNode = null;
    this.volumeNode.disconnect();
    this.volumeNode = null;
    this.pannerNode.disconnect(); // <--- This line is causing the crash
    this.pannerNode = null;
    this.rateUpdates.length = 0;
    this.rateUpdates = null;
},

Writing a simple guard around the code seems to get things working again in Safari:
destroy: function ()
{
    BaseSound.prototype.destroy.call(this);

    this.audioBuffer = null;
    this.stopAndRemoveBufferSource();
    this.muteNode.disconnect();
    this.muteNode = null;
    this.volumeNode.disconnect();
    this.volumeNode = null;
    if (this.pannerNode) this.pannerNode.disconnect(); // <--- This gets things working again
    this.pannerNode = null;
    this.rateUpdates.length = 0;
    this.rateUpdates = null;
},

Thank you for spending time reporting this issue. However, we've already fixed this in the master branch of Phaser and it will be part of the next official release. You can track what's already been fixed by searching closed issues, or by looking at the Change Log.

Thank you for spending time reporting this issue. However, we've already fixed this in the master branch of Phaser and it will be part of the next official release. You can track what's already been fixed by searching closed issues, or by looking at the Change Log.

Sorry should have spotted this in the change log. Thanks for the update!

Sorry should have spotted this in the change log. Thanks for the update!

the same problem occurs sometimes with other parameters:
this.muteNode, this.volumeNode and this.rateUpdates
All are (sometimes) reported null.
Phaser Version: 3.55.2
Operating system: Windows 11
Browser: Opera 89.0

the same problem occurs sometimes with other parameter:
this.muteNode reported null.
Phaser Version: 3.55.2
Operating system: Mac OS Ventura 13.3.1(a)
Browser: Chrome 114.0


Fix rbac.yaml

The "escalate" permission needs to be added to (Cluster)Role not
(Cluster)RoleBinding. Users might also need the "bind" permission.
See https://v1-13.docs.kubernetes.io/docs/reference/access-authn-authz/rbac/#privilege-escalation-prevention-and-bootstrapping

I'm not sure why I'm getting this error. I've signed the commit.
$ GIT_CHECK_EXCLUDE="./vendor" git-validation -q -run DCO,short-subject,dangling-whitespace
 f4e3cb9 - FAIL - does not have a valid DCO

ah I have to add the signed off by line

@davidxia thanks for the clarification here.
I fixed a small type with a commit but I can't push the signature to your branch. Can you squash in my fix and re-push with the Signoff? Sorry about the back and forth.

Done, thanks!


In the Field Reported Data, the Quantity value doesn’t include thousands separators

P3, virtual
On the View CheckIns page, in the Field Reported Data, the Quantity value doesn’t include thousands separators.

I have added this to the feature backlog. Thank you for your comment.


Add support for transparency animations to textures in M2s

Transparency animations apply to individual textures, and not just the overall texture unit.

[x] Find a model that actually uses transparency animations
[x] Try compare Wowser's rendering of said model with the same model in the actual client
[x] Try consolidate all values in to a single animation track-- seems like it would be more efficient for the render loop than maintaining several separate tracks.
[ ] Do something to prevent flagging M2s with single value 1.0-at-timestamp-0 transparency animation blocks as animated. They aren't actually animated, and eat cycles in the render loop. Keep in mind that some animation blocks for transparencies have 1 value, but it's not 1.0-at-timestamp-0-- these animation blocks are actually still animated.

This was closed by #128
The last todo item can happen as part of a separate issue down the road.


Lowercase Host header value in HTTP identifier

In accordance to RFC 2616. Handles #106

:star: looks great 🎱

:star: agreed!  would you mind updating CHANGES.md as well?

Done. ;)

thanks, @Ashald!


Check the calculation of BlockInfo.size

The placeholder we have there currently does not seem right. Check if it gives the same block size as major providers do.

Google search didn't give any results, and the official docs don't explain anything (naturally). Closing for now, this field is not too important, so the current guess (the size of RLP-encoded block) seems good enough.


Disable OCM layer

OCM is no longer free for all. I propose to disable the layer, leaving instructions on how to enable it.
Resolves #577

@bhousel it's still around, but requires an API key. In #577 I came to the conclusion that we'd need to pay and that we don't have a mission to provide free access to commercial tiles and no interest in charging for use of geojson.io.


Implement SKR chart removal for last watcher CR deletion

Proposed changes:

Uninstall chart while reconciling the deletion of the last watcher CR

/hold

Implementation looks great, but please adapt module-manager interface as mentioned here https://github.com/kyma-project/module-manager/#sample-usage
and tests are missing

I have created a ticket to take care of adapting the module-manager interface to match the usage guide #268
Please check the ACs and update them as necessary 👍


vmTools can't build CentOS RPMs of current Nix for want of sufficiently recent GCC

Issue description
The nice stuff we have for building RPMs of Nix using Nix doesn't work on any current version of CentOS/RHEL because the versions of GCC they ship with are too old. But there are repositories in which we can find newer versions of GCC for CentOS/RHEL 6 and 7 which have a high degree of community support (the repos are mirrored in the CentOS Vault. We also have the capacity to add those repositories to the VMs used for building Nix (see below).
(There are likely some additional quirks to deal with because in this case they get installed somewhere under /opt and are not placed on the PATH.)
Technical details
@FRidh Thanks for taking a closer look at the vmTools source! I wish I had looked more carefully, months ago. :-(
The good news is that EPEL was always the wrong repository for newer GCC on CentOS 7 anyway; what we want is something like Developer Toolset 7. As you can see in the instructions there, it doesn't add the new GCC binaries to the PATH by default, but provides an activation script which can be sourced to do so.
I think this or this is where we can find the metadata files we want.
@bhipple you probably want in on this discussion :-)

@therealpxc I indeed had a look at the Developer Toolsets. The vault repositories are quite messy making it hard to determine which *primary.xml.gz is needed for gcc 6/7.

Related: the glibc version in nixpkgs unstable/master doesn't support the old kernel versions that RHEL 6 are running, so after 17.09 dies there would be nothing left.  Still, it might be possible to work around this easily, and I'm working on that ATM.

@vcunat that'd be great! LMK if you need help testing or something, good luck!
While on the subject of dreams-come-true for old servers, but mostly just to confirm:
sandbox support is not possible on these kernels, right? I'm using SL6, but that should be similar enough I think.
Shame my beefiest build machine can't be trusted since doesn't use sandbox :cry:

I got a bit further. The following is sufficient to build an RPM, although the tests fail. For libsodium-devel epel is used, but we should find another source because they do not keep their releases. We need to add a preBuild hook to enable scl.
running test tests/run.sh... [FAIL]
    + clearStore
    + echo 'clearing store...'
    clearing store...
    + chmod -R +w /tmp/nix-test/store
    + rm -rf /tmp/nix-test/store
    + mkdir /tmp/nix-test/store
    + rm -rf /tmp/nix-test/var/nix
    + mkdir /tmp/nix-test/var/nix
    + nix-store --init
    + clearProfiles
    + profiles=/tmp/nix-test/var/nix/profiles
    + rm -rf /tmp/nix-test/var/nix/profiles
    + clearCache
    + rm -rf /tmp/nix-test/binary-cache
    + nix run -f run.nix hello -c hello
    + grep 'Hello World'
    Hello World from /tmp/nix-test/store/x310dgwjr86plkj7zplv4cfk8iwajf5d-hello/bin/hello
    + grep 'Hello NixOS'
    + nix run -f run.nix hello -c hello NixOS
    Hello NixOS from /tmp/nix-test/store/x310dgwjr86plkj7zplv4cfk8iwajf5d-hello/bin/hello
    ++ uname
    + [[ Linux = Linux ]]
    + chmod -R u+w /tmp/nix-test/store0
    + rm -rf /tmp/nix-test/store0
    + clearStore
    + echo 'clearing store...'
    clearing store...
    + chmod -R +w /tmp/nix-test/store
    + rm -rf /tmp/nix-test/store
    + mkdir /tmp/nix-test/store
    + rm -rf /tmp/nix-test/var/nix
    + mkdir /tmp/nix-test/var/nix
    + nix-store --init
    + clearProfiles
    + profiles=/tmp/nix-test/var/nix/profiles
    + rm -rf /tmp/nix-test/var/nix/profiles
    ++ nix eval --raw -f run.nix hello
    + path=/tmp/nix-test/store/x310dgwjr86plkj7zplv4cfk8iwajf5d-hello
    + grep 'Hello World'
    + nix run --sandbox-build-dir /build-tmp --sandbox-paths '/nix? /bin? /lib? /usr?' --store /tmp/nix-test/store0 -f run.nix hello -c hello
    builder for '/tmp/nix-test/store/dj7jgxsbbxwiwgnbzapqflp6cxdljbrg-hello.drv' failed with exit code 1; last 1 log lines:
      while setting up the build environment: executing '/usr/bin/bash': No such file or directory
    error: build of '/tmp/nix-test/store/dj7jgxsbbxwiwgnbzapqflp6cxdljbrg-hello.drv' failed
1 out of 46 tests failed
make: *** [installcheck] Error 1
[ 5840.061612] reboot: Power down
builder for '/nix/store/fav7649yb4p1la8hh9in2cj7qcx6if34-nix-rpm-centos-7.4-x86_64-1.12pre1234.abcdef.drv' failed with exit code 2
error: build of '/nix/store/fav7649yb4p1la8hh9in2cj7qcx6if34-nix-rpm-centos-7.4-x86_64-1.12pre1234.abcdef.drv' failed

Nixpkgs
diff --git a/pkgs/build-support/release/rpm-build.nix b/pkgs/build-support/release/rpm-build.nix
index 194bbc60534..17e9c0ad4e8 100644
--- a/pkgs/build-support/release/rpm-build.nix
+++ b/pkgs/build-support/release/rpm-build.nix
@@ -13,7 +13,7 @@ vmTools.buildRPM (
   {
     name = name + "-" + diskImage.name + (if src ? version then "-" + src.version else "");

-    preBuild = ''
+    preBuild = (args.preBuild or '''') + ''
       . ${./functions.sh}
       propagateImageName
       src=$(findTarball $src)
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index e31f513c666..08bf2a03042 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -1303,17 +1303,43 @@ rec {
       packages = commonCentOSPackages ++ [ "procps-ng" ];
     };

-    centos74x86_64 = rec {
+    centos74x86_64 = let
+      # N.B. Switch to vault.centos.org when the next release comes out
+      lists = [
+        # Base package list
+        rec {
+          urlPrefix = http://mirror.centos.org/centos-7/7.4.1708/os/x86_64;
+          packagesList = fetchurl {
+            url = "${urlPrefix}/repodata/b686d3a0f337323e656d9387b9a76ce6808b26255fc3a138b1a87d3b1cb95ed5-primary.xml.gz";
+            sha256 = "1mayp4f3nzd8n4wa3hsz4lk8p076djkvk1wkdmjkwcipyfhd71mn";
+          };
+        }
+        # For libsodium-devel
+        rec {
+          urlPrefix = http://dl.fedoraproject.org/pub/epel/7/x86_64;
+          packagesList = fetchurl {
+            url = "${urlPrefix}/repodata/97f4964898c2bc8216c62151be9e0d676409358514507084982259f857a61ca7-primary.xml.gz";
+            sha256 = "19qwlrbzhn92k2270l0lhlshjr371ngbwl91qqb85g62k149dx4p";
+          };
+        }
+        # For devtoolset-7-gcc
+        rec {
+          urlPrefix = http://mirror.centos.org/centos-7/7.4.1708/sclo/x86_64/rh/;
+          packagesList = fetchurl {
+            url = "${urlPrefix}/repodata/8006a42e70d08cc899cb37da41d0d72bce2af6461de1c1cfb6536b046fd260c8-primary.xml.gz";
+            sha256 = "1j30s9ph8ssknv7w3q8x8vv2mkibsz843niprfcwi36hf0pa81l0";
+          };
+        }
+      ];
+      urlPrefixes = lib.catAttrs "urlPrefix" lists;
+      packagesLists = lib.catAttrs "packagesList" lists;
+    in rec {
       name = "centos-7.4-x86_64";
       fullName = "CentOS 7.4 (x86_64)";
-      # N.B. Switch to vault.centos.org when the next release comes out
-      urlPrefix = http://mirror.centos.org/centos-7/7.4.1708/os/x86_64;
-      packagesList = fetchurl {
-        url = "${urlPrefix}/repodata/b686d3a0f337323e656d9387b9a76ce6808b26255fc3a138b1a87d3b1cb95ed5-primary.xml.gz";
-        sha256 = "1mayp4f3nzd8n4wa3hsz4lk8p076djkvk1wkdmjkwcipyfhd71mn";
-      };
+      inherit urlPrefixes;
+      inherit packagesLists;
       archs = ["noarch" "x86_64"];
-      packages = commonCentOSPackages ++ [ "procps-ng" ];
+      packages = commonCentOSPackages ++ [ "procps-ng" "libsodium-devel" "devtoolset-7-gcc-c++" ];
     };
   };

Nix
diff --git a/release.nix b/release.nix
index 16d635a4..208ccadf 100644
--- a/release.nix
+++ b/release.nix
@@ -205,6 +205,7 @@ let
     rpm_fedora25i386 = makeRPM_i686 (diskImageFuns: diskImageFuns.fedora25i386) [ "libsodium-devel" ];
     rpm_fedora25x86_64 = makeRPM_x86_64 (diskImageFunsFun: diskImageFunsFun.fedora25x86_64) [ "libsodium-devel" ];

+    rpm_centos74x86_64 = makeRPM_x86_64 (diskImageFunsFun: diskImageFunsFun.centos74x86_64) [ "libsodium-devel" ];

     #deb_debian8i386 = makeDeb_i686 (diskImageFuns: diskImageFuns.debian8i386) [ "libsodium-dev" ] [ "libsodium13" ];
     #deb_debian8x86_64 = makeDeb_x86_64 (diskImageFunsFun: diskImageFunsFun.debian8x86_64) [ "libsodium-dev" ] [ "libsodium13" ];
@@ -325,6 +326,10 @@ let
         su -c 'bash -l -c "nix-build --option use-substitutes false --no-out-link tests/dependencies.nix"' alice
         umount /nix/store
       '';
+
+      preBuild = ''
+        source /opt/rh/devtoolset-7/enable
+      '';
     };

``

This is awesome progress @FRidh!
That said -- and take this with a grain of salt since I'm not an RPM expert -- my understanding is that an OS's RPM distribution is meant to provide a single ABI based on a single glibc / gcc / set of packages, and that for an RPM to be installable by default on a vanilla system it has to adhere to this standard.
EPEL's contract is that packages in it will never conflict with the base distribution of RPMs, which is why you don't see things like a newer libcurl or a newer gcc in it.  If a sysadmin wants something from EPEL he just has to update the yum subscription and install a package from it (which may pull in other packages in base + EPEL but will not conflict with the base).
The software collections take a different strategy, by installing a full set of dependencies in /opt/rh/devtoolset-N/{FHS} with a newer toolchain and ABI.  I'm not sure what the best practice is for creating RPMs that depend on an SCL, since by doing so they lose the ability to interface safely with the system RPMs.  It's possible @peti knows more about how this works.
In the documentation, it looks like there are some rpmbuild support and specfile macros for building RPMs that depend on an SCL:
# Build against system packages
$ rpmbuild -ba package.spec

# Build against the SCL in /opt/<provider>/
$ rpmbuild -ba package.spec --define 'scl <name>'

The resulting application will then live in /opt/<provider>/nix/... in an isolated environment that doesn't touch the system libraries, and running it will require activating the scl to setup LD_LIBRARY_PATH and so on.  What I don't quite understand is where it gets its dependencies and whether we'd need to first rebuild the dependencies?  If rpmbuild has some magical tooling to rebuild the base distro with the newer SCL toolchain on-the-fly that'd be neat, but I don't see it discussed anywhere.  I'll keep digging around.
Another strategy altogether is to try to get nix on master to compile with c++11 using a bunch of #ifdefs and/or removing newer language features, which is hideous and awful, but would mean we could skip the SCL complexity entirely.  At that point we'd just need to handle libsodium, either by the  [#ifdef strategy](](https://github.com/NixOS/nix/pull/1722) or by adding EPEL -- which can be done safely for all el7 systems.

# Build against the SCL in /opt/<provider>/
$ rpmbuild -ba package.spec --define 'scl <name>'

So instead of sourcing the scl we add it here to build a proper scl RPM. And, for during runtime, we need to invoke the daemon through the scl, see 2.4.3 at https://access.redhat.com/documentation/en-us/red_hat_software_collections/1/html/1.0_release_notes/chap-installation_and_usage#sect-Installation_and_Usage-Use
service software_collection-service_name start


Only mark propagated txs as seen

Describe the feature
currently we're marking txs as seen
https://github.com/paradigmxyz/reth/blob/71bf575a4e60b8e14b590094f3b7f767dbd1fa61/crates/net/network/src/transactions/mod.rs#L435-L436
before we're truncating the hashes or full transactions:
https://github.com/paradigmxyz/reth/blob/71bf575a4e60b8e14b590094f3b7f767dbd1fa61/crates/net/network/src/transactions/mod.rs#L460-L462
https://github.com/paradigmxyz/reth/blob/71bf575a4e60b8e14b590094f3b7f767dbd1fa61/crates/net/network/src/transactions/mod.rs#L473-L473
TODO

only check if !.contains and only insert actually propagated txs into seen_transactions

Additional context
No response

Hey @mattsse could I pick this up?


Compiler Selection

Create Plug-in! But there is one small issue:
I'd like to choose a different compiler, but the program always compiles with default c++ and gcc. What im doing wrong? Also adding the compiler variables CXX and CC has no impact.
/Edit: Ok it only doesn't work if I select a Makefile. There it always uses the default compiler.

Ok I changed it by myself. I also added a checkbox to disable automatic execution of the build.
I can provide the changed file, if somebody is interested

It's a bit late, but I don't quite understand your issue.
In the setting page there is two options namely gcc Compiler and g++ Compiler where you can choose another compiler.
Also I don't think disable automatic execution of the build matches the idea of this extension because it aims to compile/make and run, not just compile. 😂


When navigating to a URL with code lines, the browser scrolls so that top lines are under the refined-to-be-sticky top bar

Example
https://github.com/sindresorhus/refined-github/blob/7aad28997cdd9d6627c6620e242a17308f259897/source/content.js#L112

(navigate to this URL in a new tab)
Actual

Expected

Notice: this is not a bug of RGH

@bfred-it Well, yes, technically not a bug but a consequence of the fixed top bar feature.

No no, the top bar is fixed by GitHub. I didn't mean that as "won't fix this non-bug" but rather "we can improve this as an enhancement"  👍

Oops for some reason I thought it's refined, or without refinement it behaved differently, otherwise I would notice the inconvenience years ago.

It might be a new GitHub bug, can you report it to them? They might just fix it, I can see they're manually calling their function called scrollToTargetFragment so they are interested in getting it right.

@bfred-it Yes, will do.

My super-bad. It was indeed a bug of RGH. I disabled the extension and still saw it somehow.


why not use atob and btoa?

I'm just curious on this one. Is there a js environment that doesn't implement that?

ooops, didn't see the thing about the byte array. pretend I didn't say anything

Web Worker in Safari 8 doesn't have it.

Also it chokes on non ASCII characters. In other words those functions are completely broken.
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding


How to add vue-x, vue-router, ...?

Dear @sreenaths ,
How can i add vue-x, vue-router to adapted with this library ?
My example code:
import {
    createApp,
    h
} from 'vue'
import App from '~/App.vue';
import 'tui-image-editor/dist/tui-image-editor.css';
import 'pace-js/themes/red/pace-theme-flash.css'
import PDFPage from '~/components/PDFPage.vue';
import router from '~/components/vue-route-app';

const app = createApp(App)
app.config.isCustomElement = (tag) => tag === 'pdf-page';
app.use(router)
app.component('pdf-page', PDFPage)
// app.mount('#app')
import wrapper from "vue3-webcomponent-wrapper";
const webComponent = wrapper(app, createApp, h);
window.customElements.define('my-element', webComponent)

This must help I guess https://github.com/vuejs/vue-web-component-wrapper/issues/93#issuecomment-820408466

How I integrated this library and want to export all components inside the iFrame?


Pre-trained weights are not fully compatible with backbone

Hey! Thanks for your brilliant work!
The pre-trained weights seemed to be not fully compatible with the backbone. What's the reason for this difference? Does it affect the training process?
Missing key(s) in state_dict: "absolute_pos_embed", "norm0.weight", "norm0.bias", "norm1.weight", "norm1.bias", "norm2.weight", "norm2.bias", "norm3.weight", "norm3.bias".
Unexpected key(s) in state_dict: "norm.weight", "norm.bias", "layers.0.blocks.1.attn_mask", "layers.1.blocks.1.attn_mask", "layers.2.blocks.1.attn_mask", "layers.2.blocks.3.attn_mask", "layers.2.blocks.5.attn_mask".

mark

请问swin transformer作为backbone可以处理不同尺寸的输入吗，是否能和resnet一样呢？我注意到它的参数里面是有img_size这一项的，那在测试过程中对于不同尺寸的图像怎么办？

Hi, @rulixiang
1. absolute position embedding
We do not use absolute position embedding by default. You may refer to Table 4 in our paper for ablations.
2. norm layers
For pre-training with classification task, only the output of the last layer is used and we apply a norm layer after it(see this line).
While for segmentation, we use outputs from different layers. After each output, we add an extra norm layer(see this line).
This difference results in the missing keys of norm0.weight, norm0.bias, .... and the unexpected keys of norm.weight, norm.bias.
3. attention masks
Attention masks is implemented for cyclic shifted window.
Note that input image sizes are fixed in the classification task, so these masks are computed in the initialization and registered in model buffer.
For segmentation, input image sizes may differ in different forward pass. So we compute attention masks on the fly.

请问swin transformer作为backbone可以处理不同尺寸的输入吗，是否能和resnet一样呢？我注意到它的参数里面是有img_size这一项的，那在测试过程中对于不同尺寸的图像怎么办？

我的警告如下 ，应该如何设置呢。


Unrecognised rules with grammars split across multiple files

When rules defined in one pest file are used in a different pest file, as per https://pest.rs/book/grammars/grammars.html#load-multiple-grammars
( e.g. https://github.com/pest-parser/pest/blob/master/derive/examples/base.pest which is then used in https://github.com/pest-parser/pest/blob/master/derive/examples/calc.pest ), the extension will report errors of undefined rules for the names defined in a different file (even though there is no problem when building it thanks to https://github.com/pest-parser/pest/pull/758 )

Can there be a plugin config for users to specify whether or which grammars to load together?

Maybe yeah

We already have some config so this will be fine.
I'd like to keep a track of those RA issues that might allow a kind of plugin system though

Would the meta-grammar extension ("use base") help? One issue for that is how to interpret it in the file-less pest_vm environments.

If there was an explicit import statement, the LSP would probably not require any modifications for this issue to be fixed. I'm not sure what the best way forward is. Maybe a poll in the server again

@huacnlee any thoughts?

It would also makeore semantic sense to have a dedicated statement arguably

This should probably be revisited with Pest V3, it seems too awkward to fix for now


Several tests fail in development branch

Probably due to failure of git-automerge in most recent merge where parenthesis-scopes were introduced.
Will have a look at it tomorrow.

Resolved with #43


Nvenc Hevc isnt encoding

I am using a Nvidia Geforce GTX 860M and tried everything i can do, but i cant encode a Video with Nvenc hevc encoder dont know why. http://pastebin.com/xTNigUaz

btw th same dont work with intel h265 i have a intel core i7 4720 so its a maxwell which should support quick sync?

NVIDIA h265 encoding requires Maxwell second generation, Intel h265 encoding requires Skylake.


fix: mocks/ folder open/closed state

I don't know exactly why the GitHub preview shows 100x100 -> 150x150 in the diff, I didn't change the size 🤔


server - package.json -  jsonwebtoken. Problem with security.

Hi,
If you have time you could update package.json on server. Please look at changelog ( https://github.com/auth0/node-jsonwebtoken/blob/v5.0.4/CHANGELOG.md ) -

Important: versions >= 4.2.2 this library are safe to use but we decided to deprecate everything < 5.0.0 to prevent security warnings from library node-jws when doing npm install.

I would like to update this package however I won't have time in near future because I am working on another project right now but if you make a pull request and make sure app work properly I will merge it as it seems there are breaking changes in jwt.verify() function.


[core] Deprecate mail announcer in favor of smtp

Precedent to https://github.com/jreleaser/jreleaser/issues/954

Released in v1.4.0 -> https://github.com/jreleaser/jreleaser/releases/tag/v1.4.0


IDE tooling (analysis server) implementation for super-initializer parameters

See https://github.com/dart-lang/sdk/issues/48055 for the main tracking issue.

Note: in our planning meeting on Dec 13, it was suggested that when the user hovers over an optional super parameter that inherits a default value from the corresponding parameter on the base class, the IDE should show the default value that's being inherited from the base class constructor.  Doing so requires work in the analysis server, and possibly in some of the IDE integration logic.

Fyi @pq this is another language feature where I think having a lint and quick fix to show users how to use this pattern would be great.


Making the app mobile responsive

Best example (Geary Email Client):

Very Rough Sketch

Tagger is an app focused on the desktop. I don't really see it being used on mobile devices.


Make catalogsource compatible with restricted SCC enforcement

Restricted SCC enforcement will be added with OCP 4.14
Updating the catalogsource to allow the operator to get deployed
Clusters that don't support the setting (<4.12) will ignore it

Jira: OSD-17471

Codecov Report

Merging #197 (3ba5e68) into main (793154f) will not change coverage.
The diff coverage is n/a.

Additional details and impacted files

@@           Coverage Diff           @@
##             main     #197   +/-   ##
=======================================
  Coverage   38.91%   38.91%
=======================================
  Files          31       31
  Lines        1971     1971
=======================================
  Hits          767      767
  Misses       1113     1113
  Partials       91       91

/unhold