[WIP] Add AES/HMAC demo application

I hacked together a simple example app that reads some plain text and key from the UART, then encodes/decodes this text, and prints it over UART.
This is work in progress and not ready for review. I made the PR mainly to make it available for someone willing to support me on the HMAC side.
This is based on my PR #1129.

sounds like @moidx has offered to contribute top-level demo code, and
@eunchan is willing to help with the HMAC side. Thanks guys and thanks
for starting this off @vogelpi

Quickly added some hashing to the demo.  Pushed changes to eval proposal. The demo currently does the following:

digest_initial = SHA256(plaintext) and print it.
ciphertext = AES(key, plaintext), and print it.
plaintext = AES(key, ciphertext), and print it.
digest_final = SHA256(plaintext), and print error if digest_initial != digest_final

Is this sufficient? s/SHA256/HMAC/ is easy to switch but I figured SHA was good enough for the purposes of this demo.
Here is a follow up idea... not sure if overkill, but let me know what you think:
If we want to make it more interactive, we could add some host to device communication, and have the host calculate a payload for OpenTitan to decrypt and check integrity before doing something.

host --> (send encrypted blob + hmac) --> OpenTitan
OpenTitan decrypt + hmac check. If valid action do something fun, else do something fun too
OpenTitan --> (send encrypted blob + hmac) --> host
Host checks response

This would require a shared secret between host and OpenTitan. wdyt?

HI @moidx,
thanks a lot for adding the SHA/HMAC-part.
Some host to device communication would be really great. Using known software libraries like OpenSSL/BoringSSL on the host side, we could demonstrate that our accelerators are real. Right now, since the same unit does the encode/decode it is less obvious that the implementation follows the specification/standard (theoretically, it just needs to be compatible to itself for this example).
However, involving also the host will make testing much more complex. At the moment, I do not have an FPGA board at hand. Or do you think this could also be done with Verilator?

Can I get which FPGA version you are using? I am getting error as below:
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/spi_device/u_clk_spi/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/u_dm_top/dap/i_dmi_jtag_tap/i_tck_inv/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/spi_device/u_clk_spi/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/u_dm_top/dap/i_dmi_jtag_tap/i_tck_inv/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/spi_device/u_clk_spi/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/u_dm_top/dap/i_dmi_jtag_tap/i_tck_inv/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/spi_device/u_clk_spi/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/u_dm_top/dap/i_dmi_jtag_tap/i_tck_inv/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/spi_device/u_clk_spi/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/u_dm_top/dap/i_dmi_jtag_tap/i_tck_inv/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/spi_device/u_clk_spi/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/u_dm_top/dap/i_dmi_jtag_tap/i_tck_inv/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/spi_device/u_clk_spi/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.
WARNING: [Power 33-230] Invalid input clock frequency for top_earlgrey/u_dm_top/dap/i_dmi_jtag_tap/i_tck_inv/gen_scan.i_dft_tck_mux/gen_xilinx.u_impl_xilinx/bufgmux_i. Out of range!
Resolution: Please refer to Clocking Resources User Guide for valid input clock frequency.

Finished Running Vector-less Activity Propagation
INFO: [Pwropt 34-9] Applying IDT optimizations ...
INFO: [Pwropt 34-10] Applying ODC optimizations ...

Starting PowerOpt Patch Enables Task
INFO: [Pwropt 34-162] WRITE_MODE attribute of 0 BRAM(s) out of a total of 146 has been updated to save power. Run report_power_opt to get a complete listing of the BRAMs updated.
INFO: [Pwropt 34-201] Structural ODC has moved 0 WE to EN ports
Number of BRAM Ports augmented: 80 newly gated: 0 Total Ports: 292
Ending PowerOpt Patch Enables Task | Checksum: 155850271

Time (s): cpu = 00:00:00.43 ; elapsed = 00:00:00.44 . Memory (MB): peak = 3047.512 ; gain = 0.000 ; free physical = 13520 ; free virtual = 60458
Ending Power Optimization Task | Checksum: 155850271

Time (s): cpu = 00:00:47 ; elapsed = 00:00:23 . Memory (MB): peak = 3047.512 ; gain = 624.645 ; free physical = 13558 ; free virtual = 60495

Starting Final Cleanup Task
Ending Final Cleanup Task | Checksum: 155850271

Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 3047.512 ; gain = 0.000 ; free physical = 13558 ; free virtual = 60495

Starting Netlist Obfuscation Task
Netlist sorting complete. Time (s): cpu = 00:00:00.04 ; elapsed = 00:00:00.04 . Memory (MB): peak = 3047.512 ; gain = 0.000 ; free physical = 13558 ; free virtual = 60495
Ending Netlist Obfuscation Task | Checksum: 15e173789

Time (s): cpu = 00:00:00.04 ; elapsed = 00:00:00.04 . Memory (MB): peak = 3047.512 ; gain = 0.000 ; free physical = 13560 ; free virtual = 60497
INFO: [Common 17-83] Releasing license: Implementation
33 Infos, 25 Warnings, 11 Critical Warnings and 0 Errors encountered.
opt_design completed successfully
opt_design: Time (s): cpu = 00:01:05 ; elapsed = 00:00:37 . Memory (MB): peak = 3047.512 ; gain = 1296.371 ; free physical = 13560 ; free virtual = 60497
source /build/lowrisc_systems_top_earlgrey_nexysvideo_0.1/synth-vivado/vivado_hook_opt_design_post.tcl
INFO: [Designcheck 2-1] Checking if ROM memory is mapped to BRAM memory.
WARNING: [Vivado 12-180] No cells matched 'get_cells -hierarchical -filter { NAME =~  "*rom_rom*dout_o_reg_0" && PRIMITIVE_TYPE =~ BMEM.*.* }'.
ERROR: [Designcheck 2-3] BRAM implementation not found for ROM memory.
ERROR: [runtcl-1] ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.
ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.

INFO: [Common 17-206] Exiting Vivado at Thu Dec  5 10:19:28 2019...
[Thu Dec  5 10:19:28 2019] impl_1 finished
wait_on_run: Time (s): cpu = 00:04:25 ; elapsed = 00:04:30 . Memory (MB): peak = 1341.891 ; gain = 0.000 ; free physical = 14856 ; free virtual = 61793
# open_run impl_1
ERROR: [Common 17-69] Command failed: Run 'impl_1' failed. Unable to open
INFO: [Common 17-206] Exiting Vivado at Thu Dec  5 10:19:28 2019...
make: *** [Makefile:6: lowrisc_systems_top_earlgrey_nexysvideo_0.1.bit] Error 1
ERROR: Failed to build lowrisc:systems:top_earlgrey_nexysvideo:0.1 : 'make' exited with an error code

@eunchan I was testing on Verilator. Let me try the FPGA.

HI @moidx,
thanks a lot for adding the SHA/HMAC-part.
Some host to device communication would be really great. Using known software libraries like OpenSSL/BoringSSL on the host side, we could demonstrate that our accelerators are real. Right now, since the same unit does the encode/decode it is less obvious that the implementation follows the specification/standard (theoretically, it just needs to be compatible to itself for this example).
However, involving also the host will make testing much more complex. At the moment, I do not have an FPGA board at hand. Or do you think this could also be done with Verilator?

@vogelpi we can probably add a hex string based protocol on top of UART just to make it easier to run in Verilator and FPGA, as part of a pytest or in interactive mode. What do you think?

@vogelpi we can probably add a hex string based protocol on top of UART just to make it easier to run in Verilator and FPGA, as part of a pytest or in interactive mode. What do you think?

Or... ZMODEM?

WRT the integrity check can we please keep it just a simple AES/HMAC demo (i.e. encrypt and hash some supplied data) without the integrity mockup as discussed in the demo coordination document?

Sorry guys, I did not manage to continue the work on this demo. Does it work on your FPGA @moidx?
Based on @GregAC 's comment we maybe best leave it as it is?

On FPGA it works. My bit file wasn't able to run SPIFLASH firmware download, but
Miguel's bitstream worked on my FPGA board and I could run the AES_HMAC demo.
Thanks Pirmin and Miguel for the work.
What we could improve on top of this PR is:

Adding XMODEM/ZMODEM to download binary file (and run AES and/or HMAC with
given key)
On the host side, give a way to compare the OT result and expected result.

On Fri, Dec 06, 2019 at 09:44:52AM -0800, Pirmin Vogel wrote:

Sorry guys, I did not manage to continue the work on this demo. Does it work on your FPGA @moidx?
Based on @GregAC 's comment we maybe best leave it as it is?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/lowRISC/opentitan/pull/1141#issuecomment-562670577

One more desired feature in the demo (talked with Miguel) is to have the demo run by itself with some dictionary, So that the presenter doesn't have to type to run the demo.

Thanks for your feedback @eunchan . I added a non-interactive mode (now the default). The user does not have to provide any input in this case. To enable the previous interactive mode, Switch 0 on the FPGA board needs to be in the ON position.
Regarding adding communication with the host, as @GregAC pointed out we should maybe keep it simple for this demo and not go into the direction of the integrity mockup.
I would consider this demo as being done. Should we clean it up and then merge it. Or what is the way to go with our demos @GregAC ?

Thanks @vogelpi
I think it works best in interactive mode, allows people to alter the key and see the ciphertext change and the hash remain the same etc. You can always just hit enter to avoid having to type much.
I've added a loop so it'll go round and do it again. It has the nice property of remembering what text/key you set last time.
As for whether we should merge it there is maybe some value in having little demo/test programs to demonstrate how things work. However also adds a bit of maintenance workload as they could break if we end up altering the HW spec.

Okay, great. Maybe we can merge your changes into this PR, clean it up and then merge after the summit.

Should we close this PR?

Hi @eunchan,
I discussed with @GregAC who did some modifications locally. Once he pushed his modifications, I will archive it in my fork and close the PR.

Thanks @GregAC for sharing your changes. I will now close this PR. The demo remains in my fork:
https://github.com/vogelpi/opentitan-1/tree/aes-hmac-demo


thread_ts support in message_changed event

In message_changed event, the thread_ts is sent by Slack but is missing in the MessageChangedEvent class.
This is a feature request to support thread_ts in message_changed event.
Category (place an x in each of the [ ])

[ ] bolt (Bolt for Java)
[ ] bolt-{sub modules} (Bolt for Java - optional modules)
[ ] slack-api-client (Slack API Clients)
[X] slack-api-model (Slack API Data Models)
[ ] slack-api-*-kotlin-extension (Kotlin Extensions for Slack API Clients)
[ ] slack-app-backend (The primitive layer of Bolt for Java)

Requirements
Please make sure if this topic is specific to this SDK. For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. :bow:
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to the those rules.

@maganth-seetharaman Thanks for writing in! 👋
From what I can see, supporting thread_ts would also include supporting parent_user_id as they are both returned by Slack.
I've gone ahead and added this to our backlog. If you have time open a PR as well we'd love the contribution!


[NPU] Reuse prefill of acc lib for pipeline

Description
1. Why the change?
Accelerate prefill of NPU pipeline.
Work with https://github.com/intel-analytics/llm.cpp/pull/598
2. User API changes
See example.
3. Summary of the change

Reuse prefill of acc lib for pipeline
Modify generate function for corresponding adaptation
Update embedding weight from input to const
Update examples

4. How to test?

[x] Unit test: Please manually trigger the PR Validation here by inputting the PR number (e.g., 1234). And paste your action link here once it has been successfully finished.
[x] Application test

5. Demo output

PR validation is passed: https://github.com/intel-analytics/ipex-llm-workflow/actions/runs/11545625174/job/32132875794

Performance validation is updated here : https://github.com/analytics-zoo/nano/issues/1687#issuecomment-2440336530


Collaborative editing

Allow multiple users to share a collaborative editing session for a fiddle.

Too complicated for ScalaFiddle. Maybe Scastie will support this one day.


update: port to PostCSS 8.

Since people are want to get the vue compiler to work with PostCSS 8 (https://github.com/vuejs/vue-next/pull/2649) and the vue compiler uses postcss-modules, it might be useful to port postcss-modules to PostCSS 8 to so that Vue only requires PostCSS 8.
I have made this a draft  because I haven't tested whether invoking postcss() again inside the plugin will play well with the PostCSS 8 single-tree traversal. Will other plugins be notified of the changes? Do we care? Should this implement the Processor interface instead?

@ludofischer thanks a lot for working on this! I actually just saw this after I submitted https://github.com/css-modules/postcss-modules/pull/114 which passes all the tests.


Node name added as a option for host display name

The host_display_name_attr is restricted to only fqdn and hostname
attributes of a node, only these could be used to name a host in icinga2.
This commit adds another option - a node name, under which is a node
registered within chef server.
For me this is useful, because nor fqdn or hostname are not really
descriptive and can't/won't change it. But I can use the chef node name,
which is under my control, nice and descriptive.

Now I see the "Contributing" on the front page…will do a ticket and other steps…

@stibi  this looks good, will merge once have issue id.

Here: https://dev.icinga.org/issues/9492

:+1:


get_maintainer.py incorrectly invoked by Github?

In PR #44188, the MAINTAINERS.yml file should have added some SOF people, see lyakh, lgirdwood, marc-hb and kv2019i below. It did not. No one from the SOF team was aware of the very useful but backward-incompatible 44188 and it caused a (fortunately short-lived) Zephyr build failure in SOF CI.
@nashif, @cfriedt  there seems to some get_maintainer.py-related glitch somewhere. Where is the get_maintainer.pyinvocation that assigns reviewers and the corresponding log for 44168?
PS: the "platform: Intel CAVS" github label was not automatically added either.
git checkout e4c171ed2255
./scripts/get_maintainer.py commits e4c171ed2255~5..e4c171ed2255

Intel Platforms (Xtensa)
	status: maintained
	maintainers: nashif
	collaborators: andyross, dcpleung, lyakh, lgirdwood, mengxianglinx, marc-hb, kv2019i, MaureenHelm
	inform:
	labels: platform: Intel CAVS
	description:

Twister
	status: maintained
	maintainers: nashif
	collaborators: chen-png, galak, PerMac, enjiamai, hakehuang, gopiotr
	inform:
	labels: area: Twister
	description:

West
	status: maintained
	maintainers: mbolivar-nordic
	collaborators: carlescufi, swinslow
	inform:
	labels: area: West
	description:

Originally posted by @marc-hb in https://github.com/zephyrproject-rtos/zephyr/issues/44188#issuecomment-1147928311

we do not use ./scripts/get_maintainer.py  to assign reviewers, this is done manually at the moment and probably this PR was missed for some other reason, so this is an invalid bug.
The step is planned to be automated, but we are not there yet.

Interestingly, some "zephyrbot" just performed a large update to the list of reviewers of #44188. This update seems to match MAINTAINERS.yml but... days after 44188 was merged.

https://github.com/zephyrproject-rtos/zephyr/pull/46380


Slider: fix thumb cut off and patch of color

Description

Removed corner radius on the slider container so the thumb is not cut off when at 0 and 100.
Increased negative margin on the thumb to fix #1765.
Motivation and Context

Fixes #1765 as well as thumb doesn't look cut off at 0 and 100 anymore.
How Has This Been Tested?

Manually.

/azp run

not sure we need to change the thumb size itself, isn't it 20 by design? or it's actually 18?

not sure we need to change the thumb size itself, isn't it 20 by design? or it's actually 18?
@tashatitova
I didn't change the visual size of the Thumb. I've reduced the value of width/height by 2px while increasing negative margin to compensate for that. It allows to keep thumb the same size while covering that uncolored patch that comes from rounded corners of the rectangle on the left/top of the thumb


If enough people express interest in it, I'll look into it more.


Create secrets for adhoc tests

To complete the migration of tests to luci we will need a few more secrets in cloudkms:

[x] GOOGLE_DEVELOPER_SERVICE_ACCOUNT_ACTOR_FASTLANE
[x] ANDROID_GALLERY_UPLOAD_KEY
[x] FASTLANE_PASSWORD
[x] PUBLISHING_MATCH_CERTIFICATE_REPO
[x] PUBLISHING_MATCH_REPO_TOKEN
[x] MATCH_PASSWORD
[x] GCLOUD_FIREBASE_TESTLAB_KEY
[ ] GCLOUD_SERVICE_ACCOUNT_KEY (we may not need this one)

@godofredoc encrypted and uploaded all necessary secretes to gcs. Please let me know if any one doesn't work through. (since we may not need GCLOUD_SERVICE_ACCOUNT_KEY, it is the only one that is missing now).

Triage: to test if it works.

This is working closing this bug.


Maximum delay of Timer

Duff,
I am trying to set the timer to fire after 5 minutes (3e5 milliseconds) but I am noticing that fires at maximum after 60 seconds. Is this the limit?
How can I set the module to wake up every 5 minutes?
Thx,
Iraklis

The max time for the timer wakeup is 65355 milliseconds use the rtc driver for longer sleep times.

Thank you Duff. My bad I should have checked better in the manual - LPTMRx_CMR is 16bit.
The library works perfect - really impressive work considering the complexity of the K20 sleep modes.


refactor enum name from ControlledVocabularyCategories to VocabCategories

Description
I think the enum class name of ControlledVocabularyCategories is just too long and makes the code look less clean I think. I think if we change it to a shorter like VocabCategories it will still create the same meaning for the user and keep the code clean and concise.
Changes

changed documentation in controlled_vocabulary_categories.md
changed example documentation
changed how it is imported into init.py
changed the test_api.py for it
changed how it is used in api.py
changed how it is used in material_deserialization.py

Tests
Known Issues
Notes
I think for the most accurate results, we would have to ask users about it what they thought and if they liked it we keep it, otherwise we remove it. I think this is something that is large and I am guessing users will either want it shorter or will not miss it if it becomes shorter.
Screenshots

Checklist

[ ] My name is on the list of contributors (CONTRIBUTORS.md) in the pull request source branch.
[ ] I have updated the documentation to reflect my changes.

I am also happy to keep this until after the first release, so we are not doing any big refactoring before the release


Update README with a link to the live a16z AI Playground

This is live now, so the link can be updated from http://localhost to http://aiplaybook.a16z.com/.
Fixes #64.

Good catch.
Still don't think the documentation website (http://aiplaybook.a16z.com/) is the example of AI Playground running live.


Control logging of executed keywords

Currently, all executed keywords are added as a node in the robot framework XML output.
Logged output from these keywords can be controlled with Log level, but the keyword itself cannot be turned off except with external command line options.
There are several issues with this:

If passwords are part of the keyword or parameters, this might be logged.
A user library might want to make repeated use of user-defined keywords (using BuiltIn.run_keyword), but logging of each repetition not wanted.
It is currrently possible to flatten/remove by keyword name and/or by tags, but this must be explicitly specified when running robot or rebot.  This proposal makes this up to the keyword implementation to decide.

This proposal is to introduce special tags like robot:flatten - for example:
*** Keywords ***
Example
    [Tags]    robot:flatten
    Some keyword
    Another keyword

In this case, keywords "Some keyword" and "Another keyword" do not appear in the log.
The output from these keywords still obey the current log level.
It could be that several special tags are needed - such as robot:flatten-this-keyword and robot:flatten-recursive, so that the implementor can choose whether the implemented keyword is logged and whether called keywords are logged.
Another thought is to enable programmatic/robot framework script use of the --flattenkeywords option so that it applies to the current scope.
Please offer any ideas for implementation.

Yeah, this would be a nice enhancement. One big benefit is reducing the size of the generated output.xml and log.html files. This also saves time processing output.xml.
In my opinion we should start with just robot:flatten tag and it should be recursive. Once we got it implemented, we can see would robot:no-flatten (also recursive) be useful too.
I don't have time to look at the code more closely right now, but I would assume implementing this requires basically these steps:

Either implement a special XmlLogger class (this one is responsible on writing output.xml) that doesn't write any information when keywords are started and stopped or enhance the current XmlLogger so that it can be externally configured to stop logging keyword start/stop.

When starting a keyword execution, change XmlLogger to stop logging keyword start/stop. When that keyword finishes, restore the old behavior.

One thing to decide is that should flattening affect already the keyword that has robot:flatten or only the internal keywords. In other words, should that keyword still be visible in the log file or not. I got a feeling that it should.

I have created a branch of robot framework: https://github.com/VernonCrabtree/robotframework
I am not entirely happy with it yet, but so far it has these features:

As discussed, keywords with the tag "flatten" are not logged.
Keywords can be prefixed with 2 directive characters from the set '+-'. The first is an instruction regarding logging of this call, the second instruct about the logging of all keywords called by this keyword. + = definitely log, - = don't log. Using * is to accept the current previous setting, so instruction like "+My logged keyword" can be used.
Keywords can be prefixed with a single character '-' or '+'. '-' causes the keyword to not be logged but called keywords will be logged. '+' over-rides the current logging directive and logs this keyword anyway. A single '*' can be used, but has no effect.

I had a plan to be able to log a block of keywords under a single self-defined keyword name, but then this is green in the log instead of red if the test fails. I am thinking this should be removed anyway.
The new features need good tests added in the testing of Robot Framework and I am a bit confused for now how these are implemented - there are techniques for validating the logged keywords that I need to use by the looks of it.
Please, could I have some advice on how to proceed so I can't respond fast - I don't have so much time anymore. Maybe in the next holidays. By now I probably at least have to rebase against the robot framework master repository.
Finally, please let me know if this is the right communication forum for this level of questions or is there a better channel to use?
Thank you for the great framework.

Hi,
Is there any progress on this or is it cancelled finally?

Natallia,
Thank you for your query - I have not had a lot of interest in this subject, none in fact.
I still think it is important - but I keep getting drawn in to operational test activities. In terms of Robot Framework, there are also plenty of other higher-priority enhancements.
Lately I have had a bit more time due to extensive use of the work "NO" - to work on more strategic activities! I have also learned a whole lot about how to use Git properly, so I should give it another go.
If you could give me some feedback about the proposed approach, that would help me a lot.
If you could help testing and/or documenting that would also help.
What do you think?

Hi @VernonCrabtree
Thanks for your reply.
I think we should stick to @pekkaklarck advice above and "robot:flatten", "robot:flatten-recursive" and similar is enough, there is no need of prefixes +- to keywords names.
I can help with documentation and testing new functionality manually, because I am not sure how RF is tested, I mean CI/CD pipelines, etc.

This is still considered an important issue, but because there are also other important issues and only very limited development resources, it's currently not scheduled to any release. External development help would be great, but this is rather big task and requires digging quite deep into Robot's code. Definitely nit impossible task if someone is interested.
Sponsoring the development is another possibility. That can be either directly by paying me or someone to implement this, or by joining Robot Framework Foundation that sponsors the development in general.

This is to some extend related to #2285.

The tag should probably be robot:flatten-keywords to make it more explicit what it does. Same naming convention would also work with robot:remove-keywords. I'm not entirely sure about the s at the end, but perhaps it's a good idea because this tag really affects the internal keywords, not the keyword that has the tag.

When developing a keyword, I can choose python (or other language) or I can write user-defined keywords. I have often found it faster to implement functionality in Robot Framework because of faster developer feedback via the logging.
I have sometimes decided to reimplement user defined keywords in python for performance reasons, but often the main performance bottleneck is this logging and just turning off the logging could be enough.
There are times when we don't want a keyword logged and times that we do want it logged. This can happen in the same script. As an example, a base-level keyword is "Log": I might want information split into separate Log entries in the output, or I might want all the output logging directly under my user-defined keyword. I might even want to mix-and-match within the keyword. But as a developer, I should be in control of the output logging.
I want to be able to choose for each call whether the keyword and its called keywords are logged or not. Putting a tag on the keyword does not achieve this. This is why I thought of the notation above. The passing of information between the parser and the logger as well as maintaining a call stack was complex. This may have changed in recent versions.
I think you are right about starting simple - Just one tag (or maybe 2), review how well it works and then proceed from there. But I would like to understand how to get to the flexible situation I describe here.
I will take another look over the next few weeks.

OK - having submitted a pull request for passing of arguments into tags, now I am back to the logging control.
First, a documentation review.
rebot --removekeywords requires an argument. One of ALL, PASSED, FOR, WUKS, NAME:, TAG: and the documentation says it removes all the messages as well. This is different from what we want here but it could be something we want to work with. Since we are defining a keyword, the identification of which keywords we want to target is not necessary.
rebot --flattenkeywords keeps the log messages and recurses the called keywords. This is desirable in some cases, but does not cover the situation where we want to hide the call to this keyword but log the called keywords. We could use this for the matching use-case and create a new tag name for hiding just this keyword.
The tag solution is good for user-defined keywords, but what if I want to use say "RUN KEYWORD" but not have RUN KEYWORD logged as a keyword. This is annoying because we have to click through to the keyword to see what keyword was run and in consumes disk space and processing.
A new keyword, which optionally does not get logged, could be introduced: RUN KEYWORD WITH TAGS, or something like that.
To be continued . .  .

We'd probably need both robot:flatten (same as --flattenkeywords) and robot:remove (same as --removekeywords). To make these tags easier to understand, naming them robot:flatten-keywords and robot:remove-keywords might be a good idea.
I don't like adding new Run Keyword variants that much, but we can discuss would it make sense in this use case. That would require a separate issue, though.

When a keyword is started, we need to know not to log the keyword start in the logged output (so not call logger.start on each logger).
When the keyword is ended, we conversely need to know that we didn't start, so we do not need to end each keyword.
Because keywords call other keywords, we need to retain this information in a stack of some sort.
This becomes more critical when we consider failure scenarios.
Question is, with the refactoring of how keywords are run, will there be a keyword context stack on which we can store this information and access it from the logger, or is it simpler just to do this separately in the logger?

This change only affects Robot's logger that writes output.xml. This could probably be implemented by creating different XmlLogger variants for different usages and switching that when needed. Or perhaps XmlLogger could have an externally controlled state that controls what's actually written.
As you mentioned, the execution side is going to be pretty heavily refactored before the next RF major version. Implementing this before that is possible only if changes aren't too big or complex.

Oh yea - that reminds me of the other design consideration:
Should the logging control tags affect just the XML Log output, or all log output (listeners and so forth)? My idea is all log outputs - so a keyword's logging is suppressed everywhere. However, your idea seems to be specific to the XmlLogger.
To support multiple variants of different loggers as efficiently as possible, I think I will take your suggestion of an externally controlled state.
Would you prefer this to be part of logger.py or should I write a separate module? I don't think it is a lot of code.

The problem this issue tries to solve is with output.xml (and log.html created based on that). I'd concentrate on that simply because it's a lot less work. There could also be downsides of disabling logging e.g. with listeners in this case.
I haven't looked at the code (and don't have time for that right now) to be able to comment what should be changed. If we go with altering XmlLogger state, changes could be pretty small and isolated. Go ahead and prototype and show the code when you have something ready. Doesn't need to be a PR in the first phase.

On our Slack someone proposed this kind of functionality and I mentioned this already somewhat old issue. Since I last commented here, issue #2603 adding support to control the continue-on-failure mode using tags has been implemented so we have an example that tags works well in this kind of usage.
My current thinking about how this issue should be implemented is as follows:

I believe we only need flattening at least in the beginning. Removing keywords can make it harder to debug failed tests. Removing keywords only if tests pass would require keeping information in memory and writing it to output.xml when tests end. which is harder to implement.
The tag should be robot: flatten. If we add removing, robot: remove is fine
No need for robot: no-flatten at least in the beginning.
This is probably easiest to implement by XmlLogger having state controlling should keywords be flattened ot not. Flattening would basically mean not doing anything in start_keyword and end_keyword. That would be easy.

I forgot we already had this issue and submitted #4584 about robot:flatten. The description has lot of information about flattening in general and also has a pretty concrete design proposal (with some open issues). I think it's better to keep that issue open so I close this one as its duplicate. Anyway, there's a good change this is implemented in somewhat near future.


[FLINK-1856][doc] Add notice about implicit TypeInformation

+1 looks good.

Is there a way to improve the Scala Compiler's error message as well? Via an annotation: http://www.scala-lang.org/api/2.11.5/index.html#scala.annotation.implicitNotFound

Not without a lot of changes because TypeInformation is not defined in Scala.
I could change every occurrence of TypeInformation in the Scala API by something like a TypeInformationWrapper. Then it would be possible to annotate this wrapper class with an implicitNotFound annotation. But this would require changes in all the code that deals with TypeInformation, also in user written libraries that use the TypeInformation context bound or implicit parameter.


fix(generator): don't query repo when we know no packages will be generated

Codecov Report

Merging #201 (e412c85) into main (11ef03a) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #201   +/-   ##
=======================================
  Coverage   95.01%   95.01%
=======================================
  Files          16       16
  Lines         903      903
=======================================
  Hits          858      858
  Misses         45       45

Impacted Files
Coverage Δ

src/ops2deb/generator.py
93.85% <100.00%> (ø)

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


fix l4lb delete lvs services unexpectedly

l4lb manager has a mistake when caculating services to deleted and
and to added.
for example, we have 1,2,4,5 vips originally, and new vip 3 is added,
so we have the following execution according to function generate_diff
oldvips         newvips          toAdd    toDelete    Mutation

[1,2,4,5]      [1,2,3,4,5]
[2,4,5]         [2,3,4,5]            []          []         []
[4,5]            [3,4,5]             []          []         []
[5]               [3,4,5]            []          [4]        []
[]                 [3,4,5]           []         [4,5]       []

return                               [3,4,5]        [4,5]        []

Can one of the admins verify this patch?

hey @mainred, thank you so much for the patch.
Please ignore my previous message, I've deleted it.
Your patch looks great, good catch! Could you please just check-pick my commit and rebase your branch to current master?

@mainred thank you very much for your contribution!


Failed to Build iOS App

Hello,
I git cloned this repo, ran flutter packages get, and tried to build to iPhone 7 but the iOS build was a failure:
Documents/Info.plist:0: error: reading data: The file “Info.plist” couldn’t be opened because there is no such file.

I got the same Issue

Same here

I got the same Issue

same here

Make sure your dependencies are updates and fixed

In order to run this properly, input your own Apple Team Developer ID. Not the same as your personal free one.

Aww I see what happened I must have copied the wrong folder over from the other tread. That’s ok. I found an even better one that I can direct you too. The React Native Navigation version has redux Firebase react navigation and much much more for you to get rolling and have built in chat. Cheers guys !


Add permadeath

Low priority... But it could be amusing.

I 'may' have added that to Trinity, but it was connected to 'Karma' or overall virtue levels. With a save prior to the death screen, so no reloads. Boo hoo hahahahah!


FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory

A re-occurrence of https://github.com/ContentMine/quickscrape/issues/9 ?
I fed it a list of ~3000 PNAS full text URLs last night and it choked after just 255
No crash file generated in /var/crash/
(quickscrape 0.4.2)
info: processing URL: http://www.pnas.org/content/100/19/10866.full
info: [scraper]. URL rendered. http://www.pnas.org/content/100/19/10866.full.
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
Aborted (core dumped)
$

input URLs:
http://www.pnas.org/content/100/19/10860.full (262nd)
http://www.pnas.org/content/100/19/10866.full (263rd)
http://www.pnas.org/content/100/19/10872.full (264th)
output folder
of 10860 is created and full of files as expected,
of 10866 is created but empty
the other slightly worrying thing is it progressed to the 263rd URL, but there are only 255 output folders in the output directory. Is there an option to keep a logfile of the scrape, in-built?
input commands:
$ quickscrape --urllist 3000PNAS.txt --scraper journal-scrapers/scrapers/pnas.json --output cm --outformat bibjson --ratelimit 20

Nothing to do with that particular URL. It works fine when quickscraping that one individually (I've tried, it works).

Hmm, we are leaking memory somewhere when doing --urllist. I will do some tracing to tidy it up.
Regarding keeping logs, just redirect the output to a file. Different levels of log event are output to different handles, so info and data events go to STDOUT, while debug, warn and error go to STDERR. That means you can save the different bits differently if you want:
quickscrape --urllist blah.txt --scraper blah.json > log.txt # saves info and data to log.txt, writes error, debug and warn to terminal
quickscrape --urllist blah.txt --scraper blah.json 2> log.txt # saves error, debug and warn to log.txt, writes info and data to terminal
quickscrape --urllist blah.txt --scraper blah.json &> log.txt # saves all logs to log.txt

and if you want to both see and save the logs, you can use tee:
quickscrape --urllist blah.txt --scraper blah.json 2>&1 | tee log.txt

I'm tracing this leak now.
Using memwatch I've identified that there's a pretty serious leak happening:
Memory leak detected:  { start: Sun May 17 2015 18:12:33 GMT+0100 (BST),
  end: Sun May 17 2015 18:15:30 GMT+0100 (BST),
  growth: 40908664,
  reason: 'heap growth over 5 consecutive GCs (2m 57s) - 793.5 mb/hr' }

Now the task is to figure out what's causing it. Profiling wasn't much help, as pretty much every variable created in the entire code is node being garbage collected. This suggests it's something high-level, like perhaps the way I iterate through the URLs using recursive callbacks.


/pyreload or /pyrestart doesn't change command code

when editing a command the changes aren't updated I have to issue /reload to update

found a new issue the following code only works once
from org.bukkit.event.player import AsyncPlayerChatEvent
@asynchronous()
def onMessage(event):
event.setCancelled(True)
event.player.sendMessage("you've been muted")
listener = add_event_listener(AsyncPlayerChatEvent, onMessage)
its suppose to stop the message from being sent it does this once thats it

found a new issue the following code only works once
from org.bukkit.event.player import AsyncPlayerChatEvent
@asynchronous()
def onMessage(event):
event.setCancelled(True)
event.player.sendMessage("you've been muted")
listener = add_event_listener(AsyncPlayerChatEvent, onMessage)
its suppose to stop the message from being sent it does this once thats it

You mean for commands you've added manually using the Python API? I guess that's expected, as you're 'responsible' for unregistering them first. Keeping track of added comments could be possible, but users would still be able to go straight through the Bukkit API and register commands there, which would be harder to track. I fear this is a #wontfix for now


[FLINK-6942] [table] Add E() support in Table API

Adds E() to Table API.

Hi @twalthr Thanks a lot for open this PR. It looks great to me. Here only one suggestion is add documentation for tableAPI.
Best,
SunJincheng

Thanks for the notice. Actually I updated the docs, but might forgot to add it.

I will merge this...

Thanks @twalthr .
+1 to merged.


Adds support for timestamps with a timezone

Athena supports the Presto timestamp with timezone.
When any field value is of this type in the result of Athena call, this library panic's.
This PR adds the new type.

👍 @tejasmanohar expected that to come, I was working late last night and didn't have time to set up a test environment on AWS which it might need. Tested the diff against one of our own services - I'll set up something more formal today hopefully and ping you when that's done and verified.
I also thought it might be worth removing the panic and failing more gracefully by bubbling the error back up to be handled properly but that's outside the scope of this.

I'll set up something more formal today hopefully and ping you when that's done and verified.

Thanks! I really need to add CI (just haven't got around to the required IAM fun)...

I also thought it might be worth removing the panic and failing more gracefully by bubbling the error back up to be handled properly but that's outside the scope of this.

@andrew-waters Any update here? Still interested in getting this in? 😃

@tejasmanohar sorry I had forgotten about this - I have two weeks holiday coming up, I will try and get the case added then. I'll have to spin up AWS, it would be good to get some automated CI because on a contributors part, it's a bit more hassle having to dive through the account process there.

No worries. I was just changing the status because GitHub kept listing this as a PR pending review.

This was handled as part of #20 .


Fix typos

Just a couple of minor typo/capitalization fixes.

We also need you to sign our CLA before we can merge any contributions. You can do so here:
https://cla.js.foundation/eslint/website?pullRequest=798

Out of date, so closing.

Hi @nzakas - I just rebased my local branch, and one of the two changes is still applicable. Can you reopen please?


upgrading to wkhtmltopdf 0.12.0 results in exitstatus 1 on middleware

I was having trouble getting all my Javascript loaded in time so upgraded to wkhtmltopdf 0.12.0
Generation through the use of kit = PDFKit.new(url); kit.to_file(location) works as expected. However the middleware comes up with
RuntimeError (command failed (exitstatus=1): /usr/bin/wkhtmltopdf --quiet --page-size Letter --margin-top 0.75in --margin-right 0.75in --margin-bottom 0.75in --margin-left 0.75in --encoding UTF-8 - -):
I'll try and set up a dummy Rails app to replicate this behaviour.

+1

+1

I have this error on Mac OS 10.9

Same here. PDF generation works from console, but not from inside my rails controller when trying to create PDF:
kit = PDFKit.new('http://localhost:3000/intake_agreements/1')
kit.to_file('public/PDF/kit.pdf')
http://localhost:3000/intake_agreements/1 is SUPER barebones, no relative stylesheets/javascript with the most bare bones custom layout.
If I change command to PDFKit.new('http://www.google.com')  it will save to a PDF just fine. It seems to just have trouble from localhost. I have tried solutions from just about every post on PDFkit.
wkhtmltopdf <IP_ADDRESS>
Ruby 2.0.0p594
Rails 4.0.2
Always hangs on:
Loading pages (1/6)
[======>                                                     ] 10%
When I stop the server I recieve error:
command failed (exitstatus=1): /Users/travis.glover/.rvm/gems/ruby-2.0.0-p594/gems/wkhtmltopdf-binary-edge-<IP_ADDRESS>/bin/wkhtmltopdf --page-size Letter --margin-top 0.75in --margin-right 0.75in --margin-bottom 0.75in --margin-left 0.75in --encoding UTF-8 http://localhost:3000/intake_agreements/1 public/PDF/kit.pdf

+1

@pranav7 What version of PDFKit are you using?

@cdwort I think @pranav7 was saying they tested PDFKit with an unknown version of wkhtmltopdf and was going to send a patch helping us with the upgrade. Right @pranav7?

@cdwort @sigmavirus24 Sorry about this. The problem was Sing Thread Issue, ironically the first point for troubleshooting. :\


Doesn't seem to work.

I get this error when attempting to run the acr task:
C:\Users\DarrellTunnell> az acr run --cmd $PURGE_CMD --registry labdocker /dev/null
Queued a run with ID: db1
Waiting for an agent...
2020/01/13 14:51:21 Creating Docker network: acb_default_network, driver: 'bridge'
2020/01/13 14:51:21 Successfully set up Docker network: acb_default_network
2020/01/13 14:51:21 Setting up Docker configuration...
2020/01/13 14:51:22 Successfully set up Docker configuration
2020/01/13 14:51:22 Logging in to registry: labdocker.azurecr.io
2020/01/13 14:51:23 Successfully logged into labdocker.azurecr.io
2020/01/13 14:51:23 Executing step ID: acb_step_0. Timeout(sec): 600, Working directory: '', Network: 'acb_default_network'
2020/01/13 14:51:23 Launching container with name: acb_step_0
Unable to find image 'acr:latest' locally
docker: Error response from daemon: pull access denied for acr, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
2020/01/13 14:51:24 Container failed during run: acb_step_0. No retries remaining.
failed to run step ID: acb_step_0: exit status 125
Run ID: db1 failed after 5s. Error: failed during run, err: exit status 1
Run failed

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

ID: 40e52f8e-a63e-3e85-6c84-f881db5d3b6c
Version Independent ID: 1290c892-ea9d-d12c-be84-7ed75f28fca0
Content: Purge tags and manifests - Azure Container Registry
Content Source: articles/container-registry/container-registry-auto-purge.md
Service: container-registry
GitHub Login: @dlepow
Microsoft Alias: danlep

Ah this can be closed. My version of az cli was outdated. Sorry.

Thanks for the update. We will now close this issue. If there are further questions regarding this matter, please tag me in a comment. I will reopen it and we will gladly continue the discussion.

Hello, I have the same issue on an image built via a Dockerfile  (build works fine) that works on docker installed locally (win & lin)
`patricia@Azure:~$ az acr run --registry ecqregistry1 --cmd  $Registry/whalesay /dev/null
Queued a run with ID: ca3
Waiting for an agent...
2020/02/17 13:52:27 Alias support enabled for version >= 1.1.0, please see https://aka.ms/acr/tasks/task-aliases for more information.
2020/02/17 13:52:27 Creating Docker network: acb_default_network, driver: 'bridge'
2020/02/17 13:52:27 Successfully set up Docker network: acb_default_network
2020/02/17 13:52:27 Setting up Docker configuration...
2020/02/17 13:52:28 Successfully set up Docker configuration
2020/02/17 13:52:28 Logging in to registry: ecqregistry1.azurecr.io
2020/02/17 13:52:29 Successfully logged into ecqregistry1.azurecr.io
2020/02/17 13:52:29 Executing step ID: acb_step_0. Timeout(sec): 600, Working directory: '', Network: 'acb_default_network'
2020/02/17 13:52:29 Launching container with name: acb_step_0
docker: invalid reference format.
See 'docker run --help'.
2020/02/17 13:52:29 Container failed during run: acb_step_0. No retries remaining.
failed to run step ID: acb_step_0: exit status 125
Run ID: ca3 failed after 4s. Error: failed during run, err: exit status 1
Run failed`

I tried it again & it worked would be nice to have a list of exit status codes.


feat: add headers parameter

This PR solves the headers request issue.

Thanks for submitting the PR. This is good to go.


add protolint support

What
add protolint support
QA
add protolint.ok and protolint.out
run go generate ./...
go test ./... fails at 'cmd/errorformat', but I am not sure this failure is due to my change, because tests of fmts pass
ok      github.com/reviewdog/errorformat        (cached)
FAIL    github.com/reviewdog/errorformat/cmd/errorformat [build failed]
ok      github.com/reviewdog/errorformat/fmts   0.282s
ok      github.com/reviewdog/errorformat/writer (cached)
FAIL

This test works in my env, so the failure may be dependent on you env.
my env
❯ go version
go version go1.17.7 darwin/amd64

test
❯ gh pr checkout arahatashun:arahata/protolint
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 8 (delta 5), reused 8 (delta 5), pack-reused 0
Unpacking objects: 100% (8/8), 1.01 KiB | 129.00 KiB/s, done.
From ssh://github.com/reviewdog/errorformat
 * [new ref]         refs/pull/117/head -> arahata/protolint
Switched to branch 'arahata/protolint'

❯ go generate ./...
go: downloading github.com/haya14busa/go-checkstyle v0.0.0-20170303121022-5e9d09f51fa1
go: downloading github.com/haya14busa/go-sarif v0.0.0-20210102043135-e2c5fed2fa3d

❯ go test ./...
ok  	github.com/reviewdog/errorformat	0.629s
ok  	github.com/reviewdog/errorformat/cmd/errorformat	0.806s
ok  	github.com/reviewdog/errorformat/fmts	0.410s
ok  	github.com/reviewdog/errorformat/writer	0.412s

Hi, @arahatashun! We merged your PR to reviewdog! 🐶
Thank you for your contribution! ✨
We just invited you to join the @reviewdog organization on GitHub.
Accept the invite by visiting https://github.com/orgs/reviewdog/invitation.
By joining the team, you'll be a part of reviewdog community and can help the maintenance of reviewdog.
Thanks again!


Proposal: NetVC Context

Goal 1st:
In the NetVConnection, we have get_local_addr() and get_remote_addr() methods.
Also have members local_addr, remote_addr and netvc->con.addr.
Thus, we should using netvc->con.addr or remote_addr to replace member server_addr in UnixNetVConnection.
Goal 2nd:
SSLNetVConnection has member sslClientConnection with 2 methods setSSLClientConnection() and getSSLClientConnection() to indictor ATS is a client or server in a SSL session.
To abstract above two goals, I'm design the netvc context function.
As a proxy, there has two side: client side ( Client <-> Proxy ) and server side ( Proxy <-> Server ). With the netvc context funtion to indicate which side the NetVC working on.
Goal 3rd:
Fix a minor bug in NetAccept::do_blocking_accept, call to check_emergency_throttle(con) first then allocate vc.
Goal 4th:
NetAccept Optimize, remove dup code, etc...

This is a rebase version of #642

[approve ci].

Linux build failed! See https://ci.trafficserver.apache.org/job/Github-Linux/263/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/368/ for details.

Overall I like this idea.  Unifying the multiple copies of addresses is great.  They have only been a source of inconsistencies and pain for me.  Adding the general Context type also seems good.
My only concern is that the diffs in UnixNetAccept are kind of noisy.  I'll take another more care pass later to make sure everything lines up.

@shinrich the "noisy" in UnixNetAccept, let me explain, there are 3 area to create a new netvc and init its members but disorder, I'm try to make it ordered as below in these 3 area.
NET_SUM_GLOBAL_DYN_STAT(net_connections_currently_open_stat, 1);
vc->id = net_next_connection_number();
vc->con.move(con);
vc->submit_time = Thread::get_hrtime();
vc->mutex  = new_ProxyMutex();
// no need to set vc->action_
vc->set_is_transparent(server.f_inbound_transparent);
vc->options.packet_mark = packet_mark;
vc->options.packet_tos  = packet_tos;
vc->apply_options();
vc->set_context(Net_VConnection_C2P);
SET_CONTINUATION_HANDLER(vc, (NetVConnHandler)&UnixNetVConnection::mainEvent);

// set thread and nh as acceptEvent does
vc->thread = e->ethread;
vc->nh = get_NetHandler(e->ethread);

@shinrich  Should we continue with this PR? @oknet there are now merge conflicts, can you please rebase (and remember to re-run clang-format too :).

@zwoop rebase & clang-format

[approve ci]

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/482/ for details.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/379/ for details.

BTW, which is JIRA ticket for this? And would you use the ticket number in commit message?
Our commit log format requires it.
https://cwiki.apache.org/confluence/display/TS/CommitPolicies

@masaori335 JIRA issue created.
BTW what is the proposal review progress ?
Is it same as the bug report progress ? create JIRA issue then create PR ?

@oknet AFAIK, it's same. Please set type of JIRA 'improvement'. Currently all code changes are tracked by JIRA.

@bryancall update the enums.
  NET_VCONNECTION_UNSET,
  NET_VCONNECTION_IN, // Client <--> ATS, Client-Side
  NET_VCONNECTION_OUT, // ATS <--> Server, Server-Side

Looks good to me!

rebase after TS-4779

Depend on @jpeach's suggestion:

the return type of set_context is void now.
add ink_assert inside set_context()

Also:

set NET_VCONNECTION_UNSET to 0 in the enum definition.
add comments for set_context() and get_context().

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/673/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/777/ for details.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/726/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/830/ for details.

bugfix: In do_blocking_accept(), we should check the con.fd == NO_FD while we get return from check_emergency_throttle().

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/739/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/844/ for details.


Enhance Reproxy Support for X-Forwarded Headers

In certain applications, it is crucial to be aware of the complete request URL, including the host, port, and scheme. These details are typically relayed via the headers X-Forwarded-Host, X-Forwarded-Port, and X-Forwarded-Proto. While Reproxy currently handles the X-Forwarded-Host header effectively, passing the original hostname, it does not accommodate for the port and scheme, which are essential in mixed protocol scenarios.
Use Case:
Our scenario involves deploying a Keycloak service with Reproxy. Internally, the Keycloak container exposes port 8080 and operates over HTTP. However, the public URL is configured as https://idp.example.com/, with Reproxy directing traffic to the Keycloak service. Keycloak is utilized for user authentication, with the frontend URL passing through Reproxy, while client authentication occurs directly via the container's hostname.
Observed Issue:
When attempting to access the Keycloak admin page, users are incorrectly redirected to http://idp.example.com:8080/. This behavior indicates a mismatch in the scheme and port handling between the internal service (Keycloak) and the external access method (Reproxy).
Posible Solutions:

Automatic Header Handling: Implement functionality in Reproxy to automatically append X-Forwarded-Port: 443 and X-Forwarded-Proto: https headers when SSL is in use. This would ensure that services behind Reproxy are aware of the original request's protocol and port, even when the internal service operates over a different protocol or port.

Custom Header Configuration: Introduce a new parameter in Reproxy's configuration to allow the addition of custom request headers. This would provide users with the flexibility to specify any necessary headers based on their unique deployment scenarios.

Appending X-Forwarded-Port and  X-Forwarded-Proto is the right thing to do regardless to the second point.
Regarding custom headers - it is fine with me, too; we already have the ProxyHeaders param, allowing us to set custom "outgoing" headers. Having a similar one for incoming headers makes sense.
Let me know if you want to deal with this and provide a PR with the change(s)

Thanks for the report. I don't think appending additional values in the comma-separated list is appropriate in this case. I believe the right thing to do is to skip setting those headers if they are already present.

fixed in v1.1.1, pls check it out

Thanks for the prompt fix, switched to v1.1.1 and things are back to normal!


Benchmark

@RelicOfTesla Thanks for your PR!
Please write descriptions what do you want to achieve with this PR? If you don't, I will close PR.

benchmark testing code helps to compare the performance of different versions of library code... Just like how I found out #55 requires more time

@RelicOfTesla I understand your purpose
I fixed at https://github.com/Code-Hex/go-generics-cache/pull/56
close this PR. Thanks!


fixed Text overflow in mobile view in qna section #1372

closes #1372
Earlier:
https://github.com/user-attachments/assets/d1bee7c7-0f0c-4505-8718-d411361bde61
Now:
https://github.com/user-attachments/assets/995e320e-8d28-4bd7-afc0-99de6e6fa98a

section

As you can see in the second video, user can scroll from left to right in order to read the content

@ShivanshPlays This will be a bit hard for the user, hope you understand!

Okay, so do you want me to remove the scroll and just keep the content as is available for sliding and seeing?

@ShivanshPlays exactly 💯

Now it is like this:

@ShivanshPlays Yes, that's nice, but send me the screen recording of the desktop view and mobile responsiveness as well, just to confirm that it looks the same on both.

https://github.com/user-attachments/assets/9db31e07-7a76-4d70-befe-70f6fdd0ff5c


net/http: A performance issue of sending http request with bytes.Reader

What version of Go are you using (go version)?

$ go version
go version go1.16 linux/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
go env
...
GOARCH="amd64"
GOOS="linux"
...

What did you do?
Sending a HTTP PUT request with bytes.Reader
        url := "http://IP:Port/xxxx/yyy"
	data := make([]byte, 1<<20)
	// write something into data
	r, err := http.NewRequest(http.MethodPut, url, bytes.NewReader(data))
	if err != nil {
		return err
	}
        res, err := http.DefaultClient.Do(r)
	if err != nil {
		return err
	}
       // do something more

There is a significant performance degradation due to some problems with the net/http.
Simple analysis:
The http.DefaultClient.Do call will eventually go to io.Copy.
func Copy(dst Writer, src Reader) (written int64, err error) {
	return copyBuffer(dst, src, nil)
}

In this case, dst is a *bufio.Writer, and src is an ioutil.nopCloser. And, in the copyBuffer, bufio.Writer.ReadFrom will be called. In bufio.Writer.ReadFrom, becasue some headers have been written to b.buf and not been Flush,  the for loop will be executed. In this loop, it will only copy 4KiB to b.buf each time, resulting in useless memory copies and a large number of system calls, which in turn leads to performance degradation.
func (b *Writer) ReadFrom(r io.Reader) (n int64, err error) {
	if b.err != nil {
		return 0, b.err
	}
	if b.Buffered() == 0 { //  b.Buffered() > 0, becasue some headers have been written here and not been `Flush`
		if w, ok := b.wr.(io.ReaderFrom); ok {
			n, err = w.ReadFrom(r)
			b.err = err
			return n, err
		}
	}
	var m int
	for {
		if b.Available() == 0 {
			if err1 := b.Flush(); err1 != nil {
				return n, err1
			}
		}
		nr := 0
		for nr < maxConsecutiveEmptyReads {
			m, err = r.Read(b.buf[b.n:])
			if m != 0 || err != nil {
				break
			}
			nr++
		}
		// ...
	}
      // ...
}

Suggested fix
use
// src/net/http/transfer.go
func (t *transferWriter) unwrapBody() io.Reader {
	if reflect.TypeOf(t.Body) == nopCloserType {
		return reflect.ValueOf(t.Body).Field(0).Interface().(io.Reader)
	}
	if r, ok := t.Body.(*readTrackingBody); ok {
		r.didRead = true
		if reflect.TypeOf(r.ReadCloser) == nopCloserType {
			return reflect.ValueOf(r.ReadCloser).Field(0).Interface().(io.Reader)
		}
		return r.ReadCloser
	}
	return t.Body
}

instead of
func (t *transferWriter) unwrapBody() io.Reader {
	if reflect.TypeOf(t.Body) == nopCloserType {
		return reflect.ValueOf(t.Body).Field(0).Interface().(io.Reader)
	}
	if r, ok := t.Body.(*readTrackingBody); ok {
		r.didRead = true
		return r.ReadCloser
	}
	return t.Body
}

.

cc @fraenkel @neild @bradfitz

I don't believe the suggested fix is sufficient. The problem isn't that the io.Reader is wrapping the wrong type, it's that the bufio.Writer has had unflushed headers written to it by the time the io.Copy happens.
I'm not certain what the correct behavior is here.
I wonder if bufio.Writer should fall back to ReadFrom (when available) after filling and flushing a partially-full buffer.

cc @tombergan @empijei

Filed #44815 to propose the bufio.Writer change.


Unable to deploy 3.1.8

The pipeline failed in the last stage, and we got this error in stack env-aws-sso-extensions-for-enterprise-deploySolutionArtefacts
Resource handler returned message: "The runtime parameter of nodejs14.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use a supported runtime while creating or updating functions. (Service: Lambda, Status Code: 400)"
We see one of the lambda in the cf template (env-aws-sso-extensions-for-enterprise-preSolutionArtefactsStack) is mapped to runtime nodejs14.x and AWS does not support it.

@DivyaKK-Pfizer Thank you for raising. I will be releasing a maintenance update to upgrade the Lambda runtime by mid September.

@jmejco ...Any update for us on this and by when the release will be available.

@DivyaKK-Pfizer Apologies for the delay. I have released v3.1.9 that updates the NodeJS runtime to v20. For the changelog, see https://github.com/aws-samples/aws-iam-identity-center-extensions/releases/tag/v3.1.9


Gowa2017/issue726

Delete codes which is not expected by meta lib, and use markdown link other than direct url.

You don't need to open a new PR, you can continue to push to the original PR

You don't need to open a new PR, you can continue to push to the original PR

Ah, not so


How to remove /views/ from path?

I have global views in views\About.vue
And page views in entrypoints\newtab\views\index.vue
entrypoints\options\views\index.vue
Depending on the chrome extension view path.
How can I make it be /newtab/index.vue or /options/index.vue instead?
Here is my config:
VueRouter({
        routesFolder: [
          {
            src: 'entrypoints',
            filePatterns: ['*/views/**/*'],
          },
          {
            src: 'views',
          },
        ],
        extensions: ['.vue'],
        exclude: ['**/components/**'],
        dts: './types/typed-router.d.ts',
      }),

Output results in:
  Array(5)
0
:
{path: '/About', name: '/About', component: ƒ}
1
:
children
:
Array(1)
0
:
children
:
Array(2)
0
:
{path: '', name: '/newtab/views/', component: ƒ}
1
:
{path: 'SetupStep', name: '/newtab/views/SetupStep', component: ƒ}
length
:
2
[[Prototype]]
:
Array(0)
path
:
"views"
[[Prototype]]
:
Object
length
:
1
[[Prototype]]
:
Array(0)
path
:
"/newtab"
[[Prototype]]
:
Object
2
:
{path: '/Settings', name: '/Settings', component: ƒ}
3
:
{path: '/Setup', name: '/Setup', component: ƒ}
4
:
{path: '/', redirect: '/newtab'}

How can I make it become /newtab/ instead? How can I remove the /views/ from the path?
In my main.ts I have:
routes.push({
  path: '/',
  redirect: '/newtab',
});

I did
VueRouter({
        routesFolder: [
          {
            src: 'entrypoints',
            filePatterns: ['*/views/**/*'],
            path: (file) => {
              // Remove sub path /views/
              return file.slice(file.lastIndexOf('views/') + 'views/'.length);
            },
          },
          {
            src: 'views',
          },
        ],
        extensions: ['.vue'],
        exclude: ['**/components/**'],
        dts: './types/typed-router.d.ts',
      }),
      ```

      And it seems to work. Please comment if this is not the correct way to do this.

Here si final version I did:
path: (file) => {
              // Keep entrypoint and strip out /views/
              const entrypoint = file.split('/entrypoints/')[1].split('/')[0];
              const viewPath = file.slice(
                file.lastIndexOf('/views/') + '/views/'.length
              );
              return `${entrypoint}/${viewPath}`;
            },


Release 1.0.0

1.0.0 (2017-06-20)
Compatibility

Kuzzle
Proxy

rc.x
rc.x

Bug fixes

[ #85 ] Deny to activate a new backend if another one is already active.   (ballinette)
[ #83 ] Close client connection when no backend left   (stafyniaksacha)
[ #75 ] Add an error message when there is no kuzzle instance   (dbengsch)
[ #74 ] Filter volatile instead of metadata in access logs   (dbengsch)
[ #68 ] Fix http client connection leak   (stafyniaksacha)
[ #63 ] Fixes #62 - empty errors coming from proxy   (benoitvidis)

New features

[ #72 ] Add support for Kuzzle graceful shutdown   (scottinet)

Enhancements

[ #77 ] Add request headers to request.context   (ballinette)
[ #69 ] Remove stack from error   (AnthonySendra)

Others

[ #79 ] Fix 836 ghost rooms   (benoitvidis)
[ #71 ] Improve debug function to allow toggle one/multiple lines   (stafyniaksacha)
[ #58 ] Update node prerequisite in package.json   (scottinet)
[ #57 ] Remove unused bluebird dependency   (scottinet)

Codecov Report

Merging #88 into master will decrease coverage by 1.2%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #88      +/-   ##
==========================================
- Coverage   98.98%   97.78%   -1.21%
==========================================
  Files          16       17       +1
  Lines         690      677      -13
==========================================
- Hits          683      662      -21
- Misses          7       15       +8

Impacted Files
Coverage Δ

var/app/lib/service/Router.js
94.73% <0%> (-5.27%)
:arrow_down:

var/app/lib/service/Backend.js
96.93% <0%> (-3.07%)
:arrow_down:

var/app/lib/service/protocol/SocketIo.js
98.46% <0%> (-0.24%)
:arrow_down:

var/app/lib/service/protocol/Websocket.js
98.98% <0%> (-0.11%)
:arrow_down:

var/app/lib/core/clientConnection.js
100% <0%> (ø)
:arrow_up:

var/app/lib/service/Broker.js
100% <0%> (ø)
:arrow_up:

var/app/lib/core/Context.js
100% <0%> (ø)
:arrow_up:

var/app/lib/store/PendingRequest.js
100% <0%> (ø)
:arrow_up:

var/app/lib/store/PendingItem.js
100% <0%> (ø)
:arrow_up:

var/app/lib/core/config.js
100% <0%> (ø)
:arrow_up:

... and 7 more

Continue to review full report at Codecov.

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


tini now in alpine aports

http://git.alpinelinux.org/cgit/aports/commit/testing?id=894f561562b47fc67e496800fe6a04261a7613a0
I will be closing my repository and maintain the aport in the official repository. Just an fyi here.

This looks great; thanks @danilobuerger!
I'd like to add it to the README since a package manager is a better installation method than curl (!), but I'm not too familiar with Alpine Linux. How would one go about using Alpine's package manager to install Tini now that it's in the repos?
Cheers,

Sure. The simplest one liner would probably be
# apk add --update --repository http://dl-4.alpinelinux.org/alpine/edge/testing/ tini

apk is the package manager
add installs a package
--update updates the index before installing to actually find packages
--repository <url> adds the url as repository to index (in this case edge testing)
tini installs the package tini

Another solution would be:
# echo "@testing http://dl-4.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories
# apk add --update tini@testing

Updated the README; thanks again for packaging Tini @danilobuerger! : )

No problem :-)


While running testcases using icetea getting below error

Traceback (most recent call last):
File "c:\python27\lib\site-packages\icetea_lib\bench.py", line 1119, in run
self.__setup_bench()
File "c:\python27\lib\site-packages\icetea_lib\bench.py", line 1360, in __setup_bench
self.__init_duts()
File "c:\python27\lib\site-packages\icetea_lib\bench.py", line 823, in __init_duts
raise DutConnectionError("Dut cli failed to initialize within set timeout!")
DutConnectionError: Dut cli failed to initialize within set timeout!
Reproducible Steps:
1.Import ble_beacon example
2.And run Icetea test using below command:

mbed test -m DISCO_L475VG_IOT01A -t GCC_ARM --icetea -n test_cmdline -DICETEA_EXAMPLE_ENABLED

@Vanireddy6 Are you able to follow @OPpuolitaival's instructions?

No feedback. Closing


Add Current.option_map

On the diagrams, this is shown as a dotted box, indicating that the sub-pipeline can be grey even though the input is ready.
This is a bit simpler than using a list: we don't need to label the items (because there is only even one) and the caller doesn't have to worry about getting multiple items back.
/cc @CraigFe

The test case doesn't currently expose the behaviour in the None case, which I think should probably be tested.

Also, I think the solution of surrounding the option pipeline with a dashed box is confusing. In particular because the map can take on dependencies that will be executed:

This will happen in the case of the linting step in OCaml-CI, since that requires pulling a Docker image.
I suggest using a dashed arrow to denote a transition that was not taken, and then visually distinguish any deselected blocks from those awaiting the results of prior computations (perhaps using a lighter shade of gray and/or a dotted border).

Using dotted arrows (which the previous version of this PR did) is a bit tricky because there are lots of places where we simplify the diagrams by combining arrows. The rule here is that arrows going into a dotted group might not activate their target even though the source is green, and arrows leaving a dotted group can activate their target even though the group wasn't taken. It should be quite easy to colour the group box to indicate whether it was selected or not.

My issues with the box solution are that arrows in and out have ambiguous behaviour -- they may be direct dependencies / pre-requisites for other steps or not. This seems like quite a brittle approach; what will happen when there are multiple arrows going into such a block? My attempt to produce such an example very quickly deteriorates:
let lint src ~dep ~linter =
  Current.component "lint" |>
  let** _ = src
  and* _ = dep
  and* _ = linter in
  Current.return ()

let v6 commit =
  (* ... *)
  let dep = Current.return ~label:"dep" () in
  let+ _ = Current.option_map (fun linter -> lint src ~dep ~linter) analysis
  and+ _ = Current.option_map (fun linter -> lint src ~dep ~linter) analysis

Can you give an example in which collapsing of arrows is problematic in this case?

It didn't work in the case of your linting PR (https://github.com/ocaml-ci/ocaml-ci/pull/49), because "build OCamlformat" takes its input from a hidden pair node, which groups the arrows from the pull and Analyse, so they ended up with the same style. That could be fixed with a bit more work, I expect. Feel free to experiment!
The dotted box is currently more of a warning that there's something unusual going on here, but in general the diagrams won't convey all the information that's in the source code.


(maint) Remove orphaned execution header

Remove a header that's not used anywhere. Related code was moved to
Leatherman long ago.

CLA signed by all contributors.


Provide better documentation for connection string vs. instrumentation key

Apparently using application insights instrumentation key can lead to sampling of data, whereas using a connection string does not. I can't find any docs on this, so let's dig deeper and update the docs.

I don't see a better explanation of connection string vs. instrumentation key except a recommendation to use connection strings, which is consistent with our implementation now. No mention of sampling in the docs.


Make devcontainer install gh

CC @devtomio

Yup

alr ill work on this

Can you please provide more information on why this should be added.

The GH CLI is really useful and can automate a lot of tasks

Ah I just realized that this is not meant to be added to the base image and instead the GH devcontainer. That makes sense then.


About slice of NII images

Thanks for you sharing and past work.
I saw your code within datasets.py:
img = torch.from_numpy(img)  # 将图像数据转换为PyTorch张量 img = img.squeeze()  # 去除张量中维数为1的维度 img = img.reshape(1, -1, 256, 256)  # 根据torch.nn.Conv3d的输入要求(C, D, H, W)，对数据进行reshape img = img[:, 0:160, :, :].float()  # 对数据进行裁剪和类型转换
Could you help to clarify why you img[:, 0:160, :, :]? How did you set the parameter 160? what is the meaning of that?

This involves a straightforward cropping process, specifically targeting the edges of images to ensure uniform dimensions across all of them. The rationale behind this lies in the fact that the edge areas of images often contain considerable empty space, and a visual analysis from the heatmap indicates that the contribution from these regions is relatively minor.
I chose the parameter 160 because it is a size that most images can accommodate. The majority of images have a height greater than 160, so by using this parameter, we can maintain compatibility with the majority of datasets without losing too much information from the edges of the images.
Additionally, I would like to highlight that if there are more optimal solutions, I welcome any suggestions.

请问你获取了adni数据集吗？是怎么检索的


D7 > WP Migration Mapping

Here's a start https://docs.google.com/spreadsheets/d/10b6bA1-RHGuNgPtczYhJJWorjS5_kvnsIBscqeJi_Qw/edit#gid=0
Initial thoughts:
Node Types:
Node types needing to be programmatically migrated

[ ] Story > Post
[ ] Episode > Custom Post type: Episode
[ ] Page > Page
[ ] Program > Custom Taxonomy type: Program
[ ] Person > (I think they need to be Wordpress Users)

Manual migrations for:

[ ] Newsletter sign up > Custom Post type: Newsletter Sign up (there are two pages)
[ ] Call to Action (The World) > Widgets (Simpler I think to manually reset these)

That means the following node types will NOT be making the journey to Wordpress:

CTA Message
Donation Form (hosted off site)
Entity Embed Parameter
Feeds Story (was never made live)
Free form content
homepage
Live Stream
Live Stream Item
Music Heard on Air
Newsletter Signup
Playlist
Story Act (all html fragments in story bodies)
User Audio
Vertical
Webform

Taxonomy:
There are so many taxonomies in Drupal. I'll capture these in the spreadsheet. The idea will be to merge Open Calais created volcabs into tags. Keep categories. And introduce programs as a custom taxonomy type.
There will also be taxonomy volcabs we will need to migrate for internal editor tracking of content "format type", RD tags, etc.
Files:

Audio (audio title, audio type, etc)
Images (ensure we keep caption data, license, etc)

This spreadsheet is ready for review, pending a few questions on how we implement things in Wordpress.
https://docs.google.com/spreadsheets/d/10b6bA1-RHGuNgPtczYhJJWorjS5_kvnsIBscqeJi_Qw/edit#gid=1902376962


[MLIR][XLA] Add ConcatenateOp to LHLO/HLO emitters

This is a PR from JIZHI, the AI platform in Tencent.
@sherhut @pifon2a
We work on TensorFlow/MLIR to make mlir_gpu enable.

Thanks. Could you add a test?

The test is added. Please help to review it. Thanks.

Do I need to squash the two commits?

Do I need to squash the two commits?

That should not be needed.


cairo-lang installation error on macos m1 chips

$ pip install cairo-lang
output:-
Collecting cairo-lang
Using cached cairo-lang-0.10.2.zip (1.1 MB)
Preparing metadata (setup.py) ... done
Collecting aiohttp
Using cached aiohttp-3.8.3-cp39-cp39-macosx_11_0_arm64.whl (337 kB)
Collecting cachetools
Using cached cachetools-5.2.0-py3-none-any.whl (9.3 kB)
Collecting ecdsa
Using cached ecdsa-0.18.0-py2.py3-none-any.whl (142 kB)
Collecting eth-hash[pycryptodome]
Using cached eth_hash-0.5.1-py3-none-any.whl (9.0 kB)
Collecting fastecdsa
Using cached fastecdsa-2.2.3.tar.gz (48 kB)
Preparing metadata (setup.py) ... done
Requirement already satisfied: frozendict==1.2 in ./cairo_venv/lib/python3.9/site-packages (from cairo-lang) (1.2)
Requirement already satisfied: lark in ./cairo_venv/lib/python3.9/site-packages (from cairo-lang) (1.1.4)
Collecting marshmallow-dataclass>=7.1.0
Using cached marshmallow_dataclass-8.5.10-py3-none-any.whl (17 kB)
Collecting marshmallow-enum
Using cached marshmallow_enum-1.5.1-py2.py3-none-any.whl (4.2 kB)
Collecting marshmallow-oneofschema
Using cached marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl (5.8 kB)
Collecting marshmallow>=3.2.1
Using cached marshmallow-3.19.0-py3-none-any.whl (49 kB)
Requirement already satisfied: mpmath in ./cairo_venv/lib/python3.9/site-packages (from cairo-lang) (1.2.1)
Collecting numpy
Using cached numpy-1.23.5-cp39-cp39-macosx_11_0_arm64.whl (13.4 MB)
Collecting pipdeptree
Using cached pipdeptree-2.3.3-py3-none-any.whl (16 kB)
Collecting prometheus-client
Using cached prometheus_client-0.15.0-py3-none-any.whl (60 kB)
Collecting pytest
Using cached pytest-7.2.0-py3-none-any.whl (316 kB)
Collecting pytest-asyncio
Using cached pytest_asyncio-0.20.2-py3-none-any.whl (14 kB)
Collecting PyYAML
Using cached PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl (173 kB)
Collecting sympy
Using cached sympy-1.11.1-py3-none-any.whl (6.5 MB)
Collecting typeguard
Using cached typeguard-2.13.3-py3-none-any.whl (17 kB)
Collecting Web3
Using cached web3-5.31.1-py3-none-any.whl (501 kB)
Collecting packaging>=17.0
Using cached packaging-21.3-py3-none-any.whl (40 kB)
Collecting typing-inspect>=0.7.1
Using cached typing_inspect-0.8.0-py3-none-any.whl (8.7 kB)
Collecting attrs>=17.3.0
Using cached attrs-22.1.0-py2.py3-none-any.whl (58 kB)
Collecting frozenlist>=1.1.1
Using cached frozenlist-1.3.3-cp39-cp39-macosx_11_0_arm64.whl (35 kB)
Collecting multidict<7.0,>=4.5
Using cached multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl (29 kB)
Collecting async-timeout<5.0,>=4.0.0a3
Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting charset-normalizer<3.0,>=2.0
Using cached charset_normalizer-2.1.1-py3-none-any.whl (39 kB)
Collecting yarl<2.0,>=1.0
Using cached yarl-1.8.1-cp39-cp39-macosx_11_0_arm64.whl (57 kB)
Collecting aiosignal>=1.1.2
Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting six>=1.9.0
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting pycryptodome<4,>=3.6.6
Using cached pycryptodome-3.16.0.tar.gz (4.5 MB)
Preparing metadata (setup.py) ... done
Collecting tomli>=1.0.0
Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting pluggy<2.0,>=0.12
Using cached pluggy-1.0.0-py2.py3-none-any.whl (13 kB)
Collecting exceptiongroup>=1.0.0rc8
Using cached exceptiongroup-1.0.4-py3-none-any.whl (14 kB)
Requirement already satisfied: iniconfig in ./cairo_venv/lib/python3.9/site-packages (from pytest->cairo-lang) (1.1.1)
Collecting jsonschema<5,>=3.2.0
Using cached jsonschema-4.17.3-py3-none-any.whl (90 kB)
Collecting eth-abi<3.0.0,>=2.0.0b6
Using cached eth_abi-2.2.0-py3-none-any.whl (28 kB)
Collecting ipfshttpclient==0.8.0a2
Using cached ipfshttpclient-0.8.0a2-py3-none-any.whl (82 kB)
Collecting eth-account<0.6.0,>=0.5.9
Using cached eth_account-0.5.9-py3-none-any.whl (101 kB)
Collecting requests<3.0.0,>=2.16.0
Using cached requests-2.28.1-py3-none-any.whl (62 kB)
Collecting websockets<10,>=9.1
Using cached websockets-9.1.tar.gz (76 kB)
Preparing metadata (setup.py) ... done
Requirement already satisfied: lru-dict<2.0.0,>=1.1.6 in ./cairo_venv/lib/python3.9/site-packages (from Web3->cairo-lang) (1.1.8)
Collecting eth-typing<3.0.0,>=2.0.0
Using cached eth_typing-2.3.0-py3-none-any.whl (6.2 kB)
Collecting eth-rlp<0.3
Using cached eth_rlp-0.2.1-py3-none-any.whl (5.0 kB)
Collecting eth-utils<2.0.0,>=1.9.5
Using cached eth_utils-1.10.0-py3-none-any.whl (24 kB)
Collecting protobuf==3.19.5
Using cached protobuf-3.19.5-py2.py3-none-any.whl (162 kB)
Collecting hexbytes<1.0.0,>=0.1.0
Using cached hexbytes-0.3.0-py3-none-any.whl (6.4 kB)
Collecting multiaddr>=0.0.7
Using cached multiaddr-0.0.9-py2.py3-none-any.whl (16 kB)
Collecting parsimonious<0.9.0,>=0.8.0
Using cached parsimonious-0.8.1.tar.gz (45 kB)
Preparing metadata (setup.py) ... done
Collecting rlp<3,>=1.0.0
Using cached rlp-2.0.1-py2.py3-none-any.whl (20 kB)
Collecting bitarray<3,>=1.2.1
Using cached bitarray-2.6.0-cp39-cp39-macosx_11_0_arm64.whl (104 kB)
Collecting eth-keys<0.4.0,>=0.3.4
Using cached eth_keys-0.3.4-py3-none-any.whl (21 kB)
Collecting eth-keyfile<0.6.0,>=0.5.0
Using cached eth_keyfile-0.5.1-py3-none-any.whl (8.3 kB)
Collecting eth-utils<2.0.0,>=1.9.5
Using cached eth_utils-1.9.5-py3-none-any.whl (23 kB)
Collecting cytoolz<1.0.0,>=0.10.1
Using cached cytoolz-0.12.0-cp39-cp39-macosx_11_0_arm64.whl (367 kB)
Collecting pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0
Using cached pyrsistent-0.19.2-cp39-cp39-macosx_10_9_universal2.whl (82 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB)
Collecting idna<4,>=2.5
Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting certifi>=2017.4.17
Using cached certifi-2022.9.24-py3-none-any.whl (161 kB)
Collecting urllib3<1.27,>=1.21.1
Using cached urllib3-1.26.13-py2.py3-none-any.whl (140 kB)
Requirement already satisfied: mypy-extensions>=0.3.0 in ./cairo_venv/lib/python3.9/site-packages (from typing-inspect>=0.7.1->marshmallow-dataclass>=7.1.0->cairo-lang) (0.4.3)
Collecting typing-extensions>=3.7.4
Using cached typing_extensions-4.4.0-py3-none-any.whl (26 kB)
Collecting toolz>=0.8.0
Using cached toolz-0.12.0-py3-none-any.whl (55 kB)
Requirement already satisfied: varint in ./cairo_venv/lib/python3.9/site-packages (from multiaddr>=0.0.7->ipfshttpclient==0.8.0a2->Web3->cairo-lang) (1.0.2)
Requirement already satisfied: netaddr in ./cairo_venv/lib/python3.9/site-packages (from multiaddr>=0.0.7->ipfshttpclient==0.8.0a2->Web3->cairo-lang) (0.8.0)
Collecting base58
Using cached base58-2.1.1-py3-none-any.whl (5.6 kB)
Using legacy 'setup.py install' for cairo-lang, since package 'wheel' is not installed.
Using legacy 'setup.py install' for fastecdsa, since package 'wheel' is not installed.
Using legacy 'setup.py install' for pycryptodome, since package 'wheel' is not installed.
Using legacy 'setup.py install' for websockets, since package 'wheel' is not installed.
Using legacy 'setup.py install' for parsimonious, since package 'wheel' is not installed.
Installing collected packages: fastecdsa, bitarray, websockets, urllib3, typing-extensions, typeguard, toolz, tomli, sympy, six, PyYAML, pyrsistent, pyparsing, pycryptodome, protobuf, prometheus-client, pluggy, pipdeptree, numpy, multidict, idna, hexbytes, frozenlist, exceptiongroup, eth-typing, eth-hash, charset-normalizer, certifi, cachetools, base58, attrs, async-timeout, yarl, typing-inspect, requests, parsimonious, packaging, multiaddr, jsonschema, ecdsa, cytoolz, aiosignal, pytest, marshmallow, ipfshttpclient, eth-utils, aiohttp, rlp, pytest-asyncio, marshmallow-oneofschema, marshmallow-enum, marshmallow-dataclass, eth-keys, eth-abi, eth-rlp, eth-keyfile, eth-account, Web3, cairo-lang
Running setup.py install for fastecdsa ... error
error: subprocess-exited-with-error
× Running setup.py install for fastecdsa did not run successfully.
│ exit code: 1
╰─> [51 lines of output]
running install
/Users/samridhsingh/cairo_venv/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
warnings.warn(
running build
running build_py
creating build
creating build/lib.macosx-13-arm64-cpython-39
creating build/lib.macosx-13-arm64-cpython-39/fastecdsa
copying fastecdsa/benchmark.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa
copying fastecdsa/util.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa
copying fastecdsa/init.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa
copying fastecdsa/keys.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa
copying fastecdsa/curve.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa
copying fastecdsa/point.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa
copying fastecdsa/ecdsa.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa
creating build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_point.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_keygen.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_nonce_generation.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_key_recovery.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_key_export_import.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_whycheproof_vectors.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/init.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_prehashed.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_brainpool_ecdh.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_rfc6979_ecdsa.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_whitespace_parsing.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_prime_field_curve_math.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
copying fastecdsa/tests/test_p256_ecdsa.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests
creating build/lib.macosx-13-arm64-cpython-39/fastecdsa/encoding
copying fastecdsa/encoding/pem.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/encoding
copying fastecdsa/encoding/util.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/encoding
copying fastecdsa/encoding/init.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/encoding
copying fastecdsa/encoding/sec1.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/encoding
copying fastecdsa/encoding/der.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/encoding
copying fastecdsa/encoding/asn1.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/encoding
creating build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests/encoding
copying fastecdsa/tests/encoding/test_sec1.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests/encoding
copying fastecdsa/tests/encoding/init.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests/encoding
copying fastecdsa/tests/encoding/test_der.py -> build/lib.macosx-13-arm64-cpython-39/fastecdsa/tests/encoding
running build_ext
building 'fastecdsa.curvemath' extension
creating build/temp.macosx-13-arm64-cpython-39
creating build/temp.macosx-13-arm64-cpython-39/src
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk -Isrc/ -I/Users/samridhsingh/cairo_venv/include<EMAIL_ADDRESS>-c src/curve.c -o build/temp.macosx-13-arm64-cpython-39/src/curve.o -O2
In file included from src/curve.c:1:
src/curve.h:4:10: fatal error: 'gmp.h' file not found
#include "gmp.h"
^~~~~~~
1 error generated.
error: command '/usr/bin/clang' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure
× Encountered error while trying to install package.
╰─> fastecdsa
note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

Have a look at the solutions presented here


docs: update info.description

Problem description

L9 - info.description: the description is quite short and less concrete then the tag description in line 28/29. Might make sense to mention that there are future extensions planned. The mandatory text about Authorization and Authentication from ICM is missing
Expected action

Expand description as above
Additional context

fixed in f064bfe


ci(gh-actions): adds github action workflows

removes travis.yml
fix #69

:tada: This PR is included in version 1.2.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket: