Off canavs multi level

Is it possible to display sub menu items in the mobile menu using the multi level feature?

As of now, this is not supported. I've considered adding support for multi-level in the off-canvas menu, but it has been postponed due to lack of time.

This actually isn't that hard to fix, jw86. You have to change the /library/navigation.php first. Find the third walker in that file, the one that says "Mobile off-canvas" as title.
Change line 76 'walker' to this:
'walker' => new FoundationPress_offcanvas_walker()

After you've done that, copy the 'menu-walker.php' en rename it to 'offcanvas-walker.php'
<?php
/**
 * Customize the output of menus for Foundation top bar
 */
if (!class_exists('FoundationPress_offcanvas_walker')) :
class FoundationPress_offcanvas_walker extends Walker_Nav_Menu {

    function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
        $element->has_children = !empty( $children_elements[$element->ID] );
        $element->classes[] = ( $element->current || $element->current_item_ancestor ) ? 'active' : '';
        $element->classes[] = ( $element->has_children && $max_depth !== 1 ) ? 'has-submenu' : '';

        parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    }

    function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) {
        $item_html = '';
        parent::start_el( $item_html, $object, $depth, $args );

        $output .= ( $depth == 0 ) ? '

' : '';

        $classes = empty( $object->classes ) ? array() : (array) $object->classes;

        if( in_array('label', $classes) ) {
            $output .= '

';
            $item_html = preg_replace( '/]*>(.*)<\/a>/iU', '$1', $item_html );
        }

    if ( in_array('divider', $classes) ) {
        $item_html = preg_replace( '/]*>( .* )<\/a>/iU', '', $item_html );
    }

        $output .= $item_html;
    }

    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $output .= "\n
\n
Terug
\n";
    }

}
endif;
?>

Now, the last step is 'functions.php'. We have to add a line there. First, find the line that says:
require_once('library/menu-walker.php');

Add your new walker under that line:
require_once('library/offcanvas-walker.php');

That's it, the off-canvas menu for FoundationPress is now multi-level. I found this out for myself and it works fine, but Ole, please correct me if you think it's wrong.

@Tralapo, thanks a lot! it works!

@Tralapo, thanks a bunch for your offcanvas-walker! Very helpful.
In the start_lvl function where you configure the ...-submenu and .back elements which prefix each sub-navigation level, is there anyway to access the parent object for that sub-level? I'd like to add the parent link as a label preceding the list of links.
Also, in the start_el function, I can see there is some sort of logic for outputting the label element, e.g. if( in_array('label', $classes) ) { ..., but I don't quite understand it. Is that function creating the ability to add labels to the off-canvas-lists? If so, how does it work?
Thank you in advance for any assistance.

@adaptifyDesigns Nice to hear it works. To be honest: I don't understand the walker very well either.
I looked for the classes that had to be changed and changed them. I do like your suggestion with that label. So maybe someone else can help us here.

One other thing, @olefredrik and others: In the off-canvas walker,  is included just like in the top-bar walker. But the off-canvas doesn't need and doesn't do anything with a divider. So these can (and should) be removed in a new version?
And @adaptifyDesigns I just today found out how the 'label' part works (I hadn't used it before today). In library/navigation.php you can find the following comment:
/**
 * Add support for buttons in the top-bar menu:
 * 1) In WordPress admin, go to Apperance -> Menus.
 * 2) Click 'Screen Options' from the top panel and enable 'CSS CLasses' and 'Link Relationship (XFN)'
 * 3) On your menu item, type 'has-form' in the CSS-classes field. Type 'button' in the XFN field
 * 4) Save Menu. Your menu item will now appear as a button in your top-menu
*/

The part about the labels should maybe been added here. But if you enable 'CSS Classes' in the Screen Options, you have to add 'label' as class to a menu-item. The walker then automaticly strips that item from  and adds , making it an label.

Wow, awesome! Thanks for the tip! Much appreciated.

Merged. https://github.com/olefredrik/FoundationPress/pull/282


Reverse release notes order

Current order means scrolling to the bottom to find the latest changes. Would be handy to sort by date descending so most recent changes are more apparent.

good idea.  Do you want to do that?

NP, will wrap it up for tomorrow.


New package: Mex v0.1.0

Registering package: Mex
Repository: https://github.com/byuflowlab/Mex.jl
Created by: @taylormcd
Version: v0.1.0
Commit: 03e2773ac4b1d63a21a9395b8422f7471adb86e9
Reviewed by: @taylormcd
Reference: https://github.com/byuflowlab/Mex.jl/issues/9#issuecomment-957955448
Description: Embedding Julia in the MATLAB process.

This package is named after MATLAB's Mex file functions, so I think the current name is appropriate, because it describes the manner by which Julia is embedded in the MATLAB process.


chemical-plant sparql query

Dear EMIKG team,
Since I have limited SPARQL query formulation skills, I was wondering if you or the community could assist me in building one to extract chemical-plant relations from the graph.
Additionally, on looking into the underlying schema of the graph, it looked like these edges come from WikiData. Is that correct?
Thank You.
Regards,
Yojana

Hi @YojanaGadiya,
Thanks for getting in touch.
The Examples section of the Wikidata Query Service https://query.wikidata.org/ is an excellent ressource to start learning SPARQL.
More specifically if you want to query the ENPKG a good starting point would be for you to explore the queries presented in Table 1 of the preprint (https://doi.org/10.26434/chemrxiv-2023-sljbt-v2). Do let us know if you need help in adapting some of them.
Some nodes correspond indeed to Wikidata objects. E.g. for a taxon https://enpkg.commons-lab.org/graphdb/graphs-visualizations?saved=763f2599add54363b4fdcfe4830ac63a or a molecule https://enpkg.commons-lab.org/graphdb/graphs-visualizations?saved=ac772b1f386a42b69b7786d632c12a7a.

Hi @oolonek,
These are great pointers! Just one last question. Were there any stats on the difference between the EMIKG and LOTUS specifically on the taxon-molecule edges?
Regards,
Yojana Gadiya

Hi @YojanaGadiya ,
At the moment the EMIKG is under construction. I define here these acronyms as I understand they can be misleading.

ENPKG (Experimental Natural Products Knowledge Graph) is the name of a KG that has been build as a first pilot in order to explore the conversion of untargeted metabolomics datasets acquired from plant extracts in Linked Open Data. This KG currently contains data acquired from :

1600 tropical plant extracts (a datset previously described at https://doi.org/10.1093/gigascience/giac124)
3 additional Waltheria indica extract (a plant profiled in our lab under different conditions and with different extraction methods)
337 Korean plant extracts (a dataset acquired by Kyo Bin Kang's team, described at https://doi.org/10.1038/s41597-022-01662-2 and publicly available at https://doi.org/doi:10.25345/C5SB50. So profiled under different conditions and with different extraction methods, by a different team. This was to showcase the potential to align datasets from different sources.

EMIKG (Earth Metabolome Initiative Knowledge Graph) is the name of the KG we are currently constructing in the frame of the Earth Metabolome Initiative. Currently we are building the data transformation portal (https://github.com/earth-metabolome-initiative/emi-monorepo) which will allow users to convert metabolomics datasets and the associated metadata in a graph. At the moment this KG is not populated.

LOTUS is the name of an Open electronic ressource describing natural products occurences. It is fully described here (https://doi.org/10.7554/eLife.70780) and available through the Wikidata graph. Do not rely on the https://lotus.naturalproducts.net/ website as it is not maintained anymore. The https://search.nprod.net/ portal is beeing build at the moment by @bjonnh and @adafede and will gradually replace the https://lotus.naturalproducts.net/ website. In any cases, Wikidata is the reference source for LOTUS data.

I hope this helps. Also to keep in mind, the objective of ENPKG/EMIKG is to gather and organize massive amount of putative biological source - chemical structures links established through mass spectrometry based metabolomics experiments. The purpose of LOTUS is to gather biological source - chemical structures links supported by a scientific publication and usually obtained through a physical isolation of the molecule from the biological source.
Regarding current stats here are some figures:

LOTUS : Table 3, Figure 4 and 5 should give and overview of the situation at the time of publication. SPARQL queries at Wikidata should be used to retrieve the current stats. E.g. https://w.wiki/8wqq returns 650,955 distinct chemical structure / taxon / refs as of today.

ENPKG : You can run similar queries on the graph. E.g. Return distinct wd_taxon wd_chemical pairs annotated through Sirius
Currently this returns 901,352 distinct wd_taxon wd_chemical pairs annotated through Sirius. Note that these is overevaluated since here we link all possible 3D structures to the 2D structures (the latter beeing the best we can reach with mass spec annotations). If you run the query for distinct 2D structures (Return distinct wd_taxon IK2D pairs annotated through Sirius) you will get 368,327 distinct wd_taxon wd_chemical pairs annotated through Sirius.

I hope this helps.
Let us know if you have any further question.


Missing btFinish.php file

Made it through all the config steps only to find this on the final page. Looks like btFinish is missing from the repo?
Warning: require(/var/www/MantisBT-2-Phabricator/template/btFinish.php): failed to open stream: No such file or directory in /var/www/MantisBT-2-Phabricator/m2p_core.php on line 687

Fatal error: require(): Failed opening required '/var/www/MantisBT-2-Phabricator/template/btFinish.php' (include_path='.:/usr/share/php') in /var/www/MantisBT-2-Phabricator/m2p_core.php on line 687

This is because I have not finished writing the code. I'll see if i can get the second half done this weekend (phab side)

Ah, the readme gave me the impression that it was at one point functional but rough around the edges and maybe not up to date. If you want to write up an outline of what needs to happen in btFinish I wouldn't mind doing some of the coding.

@ctrladel see if you can get this param array syntax to work and create a project (fix your include, url and token at the top of the file and it will run standalone).
https://github.com/Alofoxx/MantisBT-2-Phabricator/commit/762d2f556791210c9c6ecef6a4f653e14fbb5c7c#diff-51a2199d284fbbfbc453cc97a15b67a0R102

Was able to get it to work with this syntax
    $api_parameters = [
      'transactions' => [
        [
            "type" => "name",
            "value" => "Test2",
        ],
        [
            "type" => "icon",
            "value" => "project",
        ],
        [
            "type" => "color",
            "value" => "blue",
        ],
      ]
    ];

This page on my local phabricator instance was extremely helpful https://secure.phabricator.com/conduit/method/project.edit/


Doesn't work in Internet Explorer 11

When using Internet Explorer 11, routing crashed with the following message:
"Unable to process binding "component: function(){return i}"\nMessage: Unable to process binding "component: function(){return i}"\nMessage: 'Symbol' is undefined"
Practically, it looks like ko-component-router calls Symbol event though it set canUseSymbol=false.
The error can be seen browsing to the documentation page with IE11 or IE10: https://caseywebb.github.io/ko-component-router

Add babel-polyfill to your project
Closing via f0206a1787f4adc6e9ecb8ffe0252a775e34c26d

Thank you! That worked for IE10 and 11, you just made my day!


Fix: Correct Display of Mathematical Equations in Documentation

Fix issue #480

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (614293e) to head (b0d9ee3).
Report is 824 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff             @@
##            master      #562     +/-   ##
===========================================
  Coverage   100.00%   100.00%
===========================================
  Files           39        62     +23
  Lines         4616      5997   +1381
  Branches       487       352    -135
===========================================
+ Hits          4616      5997   +1381

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


MRT Update Dump Vs Kafka Live Stream

Hi All,
Thanks to @alistairking i am able to bringup pybgpstream over kafka stream "stream.routeviews.org:9092" and "topic": "routeviews.linx.6830.bmp_raw".
I observed one strange behavior where none of the BGP-UPDATES in KAFKA-STREAM contain multiple prefixes under ANNOUNCEMENTS and WITHDRAWLS messages. This is quite strange as BGP can send single WITHDRAWL message with multiple prefixes.
U|W|1674087346.913545|routeviews-stream|is-ah-bmp1|fortaleza|<IP_ADDRESS>|268011|2001:12f8:0:9::145:237|2a0e:b105:6af::/48||||||
U|W|1674087346.913753|routeviews-stream|is-ah-bmp1|fortaleza|<IP_ADDRESS>|268011|2001:12f8:0:9::145:237|2405:3740::/32||||||

As you can see in above example, i can see separate WITHDRAWLs containing different prefixes. I am not sure if this is an expected behavior ? If YES, then there is a difference between MRT update dumps Vs accessing the live stream over Kafka Stream.

Can you provide an example of what these updates look like in the corresponding MRT file?
The timestamps may be different between BMP and MRT but the content of the updates should be identical.

@alistairking .. let me work on it and share results ...
Since I am only picking BGP updates with ASN 6830 when compared to MRT files it is taking some time to share the comparison.
Is there a way to dump live stream into a MRT file in a sequential order based on timestamp ?
Currently looks like if I try topic as  "routeviews.linx.*.bmp_raw" it tries to get all BGP updates for LINX but as routeview adds BGP updates across different Kafka partitions these entries are getting scattered across and creating non-sequential flow.

Oh maybe I misunderstood then.
How do you know that these updates are different to MRT if you don't have the corresponding updates from the MRT yet?


Update to libuast 1.5.0

Signed-off-by: Juanjo Alvarez<EMAIL_ADDRESS>

Yeah, I'm not tagging until we have iterators, just wanted to have a build-able version with the latest libuast.


[AMD] Enable reordering across ops with nested regions

Re-enable reordering across ops with nested regions.

This PR reverts the changes in PR5203 that prevents reordering across scf ops
Passes  omitUsesFromAbove=false  to mlir::getBackwardSlice(). This ensures that the backward slice captures the values used from above, in ops with nested regions, like scf ops.

New contributor declaration

[x] I am not making a trivial change, such as fixing a typo in a comment.

[x] I have written a PR description following these
rules.

[x] I have run pre-commit run --from-ref origin/main --to-ref HEAD.

Select one of the following.

[ ] I have added tests.

/test for lit tests
/unittest for C++ tests
/python/test for end-to-end tests

[x] This PR does not need a test because the lit test added in PR5203 already makes sure that we don't hoist scf ops above its dependencies

Select one of the following.

[x ] I have not added any lit tests.
[ ] The lit tests I have added follow these best practices,
including the "tests should be minimal" section. (Usually running Python code
and using the instructions it generates is not minimal.)

@antiagainst @sjw36 This is the fix we discussed in PR5203. Kindly let me know if it looks good.

Thanks @karthik-man ! This feature does the right thing!
FYI, it does however enable more reorders, so it may cause changes that affect performance.

Thanks for the review. I don't think that this enables more reorders when compared to the state of this pass before PR5203.
Prior to PR5203, ops with regions were being reordered without taking into consideration the values flowing into the regions.    This change only allows reorderings that respect the data dependencies, including nested regions.

Thanks for the review. I don't think that this enables more reorders when compared to the state of this pass before PR5203. Prior to PR5203, ops with regions were being reordered without taking into consideration the values flowing into the regions. This change only allows reorderings that respect the data dependencies, including nested regions.

Right, just the cases that used to crash, now will pass and reorder those cases.


Add GOVUK.ShowHideContent JavaScript

Add GOVUK.ShowHideContent to toolkit, this is copied from #305.
This PR is rebased against master and has  the conflicts from #305 resolved.
A link is added to the README to the documentation.
Standard JS has been used to lint the JS.
cc. @tombye, @nickcolley.

This seems mostly there. I have one question for @gemmaleigh @robinwhittleton @nickcolley @tvararu. I'd like to change data-target to data-controls so it's obvious that it's copied across into an aria-controls attribute.
Be interested in your thoughts on this.

@tombye I think if we want to keep the first release backwards compatible we should leave as is, otherwise there's a lot we could do to improve these and would be better thought about separately?

@gemmaleigh I'm done on my changes. It would be worth getting another pair of eyes on it before merging now we've both worked on it but it's 👍  by me.

Hi @tombye, thanks for these.
I've updated the JavaScript in a test branch for GOV.UK elements - so if anyone else would like to preview this working - it can be seen here.
I'm keen that we don't change the data-target attribute for now, it appears in quite a few places.
Happy for this to be merged, then I'll bump the toolkit and update govuk_elements and the govuk_prototype kit.


feat(config): add support for Zooz ZEN71

Adds support for the Zooz ZEN71.
Config was imported from OpenHAB entry, and compared against the existing similar ZEN76 switch already in zwavejs.

Thanks!


bugfix: Use patched edc version (0.0.1-20220922.1-SNAPSHOT)

@ndr-brt could you maybe add some notes to this PR what the patched EDC version contains and maybe also link to the branch/commit/what ever you have done in the upstream, so that we have this also documented here?

@florianrusch-zf I add a documentation in a form of "release note" file, don't know if that's the right approach and if we're still following it (there's no file for 0.2.0)


show hat image preview in vscode extension settings where hats are enabled/disabled

Can hat image previews be shown in the settings screen in the vscode extension settings where hats are enabled/disabled?
This seems like a better option than going to the help/docs link and trying to cross reference the docs.

That would be great but I'd be really surprised if it's possible. We can have a look


yum install -y tini not working

On CentOS 7, yum install -y tini not actually installing the tini.
Checked /usr/bin/tini and /usr/sbin/tini.
Tried with rpm install as well. Same issue.

Try this: yum install -y epel-release tini
Because tini is belong to epel


Make debug log easier to structurally ingest into a logging system like Logstash/Elasticsearch

I'd really like to ingest the debug log into my ELK (Elasticsearch, Logstash & Kibana) stack so that I can more easily analyze it for anomalies and graph how often issues occur in my Z-Wave mesh. For this to be possible, the information in the logs must be separated into more atomic units so that it can be parsed in a simple way.
For the logs to be easy to ingest with a log parser they must be structured in a way that makes it possible to know where one value starts and ends and the next value begins. In the current log this is mostly implemented by using indenting with space. It is also vital to know what the value represents. This is currently implemented with fixed line character offsets, and the message part always start at a certain offset of the line. Unfortunately this only means the message key begins there, the message value is still just opaque text with no inherent structure. Some long sentences are also split over multiple lines, although they technically don't need to be. This seems to have been done to keep the log max line length to a fixed number. I'm assuming this is to accommodate easier human consumption on a screen with limited width.
Introducing a structured logging format would still make it possible to read for humans and also ingestable by automatic tools. It would also make it easier to search using grep(1) and filter with tools like sed(1). My suggestion is to use the logfmt format championed by Heroku. There is even an npm package available for it.
Here are some examples of how log data from my own log could be represented using logfmt fully structured:
20:23:02.101 SERIAL » 0x01030015e9                                                         (5 bytes)
ts=2021-03-01T20:23:02.101Z c=SERIAL dir=tx msg="Transmit payload" payload="0x01030015e9" length=5

20:23:02.101 DRIVER » [REQ] [GetControllerVersion]
ts=2021-03-01T20:23:02.101Z c=DRIVER dir=tx msg="GetControllerVersion" cmd="REQ"

20:23:02.102 SERIAL « [ACK]                                                                   (0x06)
ts=2021-03-01T20:23:02.102Z c=SERIAL dir=rx msg="Payload received" payload="0x06" length=1 cmd="ACK"

20:23:02.103 SERIAL « 0x011001155a2d5761766520332e3935000199                              (18 bytes)
ts=2021-03-01T20:23:02.103Z c=SERIAL dir=rx msg="Payload received" payload="0x011001155a2d5761766520332e3935000199" length=18

20:23:02.104 DRIVER « [RES] [GetControllerVersion]
                        payload: 0x5a2d5761766520332e39350001
ts=2021-03-01T20:23:02.104Z c=DRIVER dir=rx msg="GetControllerVersion" payload="0x5a2d5761766520332e39350001" cmd="RES"

20:23:02.105 CNTRLR   received version info:
                        controller type: Static Controller
                        library version: Z-Wave 3.95
ts=2021-03-01T20:23:02.105Z c=CNTRLR msg="received version info" controller_type="Static Controller" library_version="Z-Wave 3.95"

20:23:02.122 CNTRLR   received API capabilities:
                        serial API version:  1.0
                        manufacturer ID:     0x86
                        product type:        0x01
                        product ID:          0x5a
                        supported functions:
                        · GetSerialApiInitData (0x02)
                        · FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION (0x03)
                        · ApplicationCommand (0x04)
                        · GetControllerCapabilities (0x05)
ts=2021-03-01T20:23:02.122Z c=CNTRLR msg="received API capabilities" serial_api_version=1.0 manufacturer_id=0x86 product_type=0x01 product_id=0x5a
ts=2021-03-01T20:23:02.122Z c=CNTRLR msg="received API capabilities" supported_function_id=0x02 supported_function_name=GetSerialApiInitData
ts=2021-03-01T20:23:02.122Z c=CNTRLR msg="received API capabilities" supported_function_id=0x03 supported_function_name=FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION"
ts=2021-03-01T20:23:02.122Z c=CNTRLR msg="received API capabilities" supported_function_id=0x04 supported_function_name=ApplicationCommand
ts=2021-03-01T20:23:02.122Z c=CNTRLR msg="received API capabilities" supported_function_id=0x05 supported_function_name=GetControllerCapabilities

20:23:02.286 DRIVER   Cache file for homeId 0xdc364e03 found, attempting to restore the network from
                       cache...
ts=2021-03-01T20:23:02.286Z c=DRIVER msg="Cache file for home identifier found, attempting to restore the network from cache" home_id=0xdc364e03

20:23:02.275 CNTRLR   received node information:
                        controller role:            primary
                        controller is a SUC:        true
                        controller is a slave:      false
                        controller supports timers: false
                        nodes in the network:       1, 3, 15, 17, 18, 22, 23, 24, 26, 30, 31
ts=2021-03-01T20:23:02.275Z c=CNTRLR msg="received node information" controller_role=primary controller_is_a_suc=true controller_is_a_slave=false controller_supports_timers=false nodes_in_network="1,3,15,17,18,22,23,24,26,30,31"

20:23:02.287 CNTRLR   [Node 001] trying to load device config
ts=2021-03-01T20:23:02.287Z c=CNTRLR node_id=1 msg="trying to load device config"

20:23:02.330 CNTRLR   [Node 001] [Manufacturer Specific] manufacturerId: metadata updated
20:23:02.330 CNTRLR   [Node 001] [~] [Manufacturer Specific] manufacturerId: 134 => 134
ts=2021-03-01T20:23:02.330Z c=CNTRLR node_id=1 msg="metadata updated" cc="Manufacturer Specific" key=manufacturerId value=134 old_value=134

If going full-blown with structured logging is too much to bite over in one go, you could start simple by encoding the existing message with the use of indent, but add some structure to make it easier to parse. Under you can see an example of this half-way approach shown on the same messages:
20:23:02.101 SERIAL » 0x01030015e9                                                         (5 bytes)
ts=2021-03-01T20:23:02.101Z c=SERIAL dir=tx msg="Transmit payload" payload="0x01030015e9" length=5

20:23:02.101 DRIVER » [REQ] [GetControllerVersion]
ts=2021-03-01T20:23:02.101Z c=DRIVER dir=tx msg="GetControllerVersion" cmd="REQ"

20:23:02.102 SERIAL « [ACK]                                                                   (0x06)
ts=2021-03-01T20:23:02.102Z c=SERIAL dir=rx msg="[ACK]" payload="0x06" length=1

20:23:02.103 SERIAL « 0x011001155a2d5761766520332e3935000199                              (18 bytes)
ts=2021-03-01T20:23:02.103Z c=SERIAL dir=rx msg="0x011001155a2d5761766520332e3935000199" length=18

20:23:02.104 DRIVER « [RES] [GetControllerVersion]
                        payload: 0x5a2d5761766520332e39350001
ts=2021-03-01T20:23:02.104Z c=DRIVER dir=rx part=1/2 msg="[RES] [GetControllerVersion]"
ts=2021-03-01T20:23:02.104Z c=DRIVER dir=rx part=2/2 msg="  payload: 0x5a2d5761766520332e39350001"

20:23:02.105 CNTRLR   received version info:
                        controller type: Static Controller
                        library version: Z-Wave 3.95
ts=2021-03-01T20:23:02.105Z c=CNTRLR part=1/3 msg="received version info:"
ts=2021-03-01T20:23:02.105Z c=CNTRLR part=2/3 msg="  controller type: Static Controller"
ts=2021-03-01T20:23:02.105Z c=CNTRLR part=3/3 msg="  library version: Z-Wave 3.95"

20:23:02.122 CNTRLR   received API capabilities:
                        serial API version:  1.0
                        manufacturer ID:     0x86
                        product type:        0x01
                        product ID:          0x5a
                        supported functions:
                        · GetSerialApiInitData (0x02)
                        · FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION (0x03)
                        · ApplicationCommand (0x04)
                        · GetControllerCapabilities (0x05)
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=1/10 msg="received API capabilities:"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=2/10 msg="  serial API version:  1.0"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=3/10 msg="  manufacturer ID:     0x86"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=4/10 msg="  product type:        0x01"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=5/10 msg="  product ID:          0x5a"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=6/10 msg="  supported functions:"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=7/10 msg="  · GetSerialApiInitData (0x02)"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=8/10 msg="  · FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION (0x03)"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=9/10 msg="  · ApplicationCommand (0x04)"
ts=2021-03-01T20:23:02.122Z c=CNTRLR part=10/10 msg="  · GetControllerCapabilities (0x05)"

20:23:02.286 DRIVER   Cache file for homeId 0xdc364e03 found, attempting to restore the network from
                       cache...
ts=2021-03-01T20:23:02.286Z c=DRIVER msg="Cache file for homeId 0xdc364e03 found found, attempting to restore the network from cache"

20:23:02.287 CNTRLR   [Node 001] trying to load device config
ts=2021-03-01T20:23:02.287Z c=CNTRLR node_id=1 msg="trying to load device config"

20:23:02.330 CNTRLR   [Node 001] [Manufacturer Specific] manufacturerId: metadata updated
20:23:02.330 CNTRLR   [Node 001] [~] [Manufacturer Specific] manufacturerId: 134 => 134
ts=2021-03-01T20:23:02.330Z c=CNTRLR node_id=1 part=1/2 msg="[Manufacturer Specific] manufacturerId: metadata updated"
ts=2021-03-01T20:23:02.330Z c=CNTRLR node_id=1 part=2/2 msg="[~] [Manufacturer Specific] manufacturerId: 134 => 134"

The lines that start with ts= are logfmt format. With this halfway approach you could most likely convert existing logging to use this new format with not too much effort, and then you could slowly move over to the fully structured format as time permits on individual pieces of code as you work on them.
I don't know what all the log information represents, so I've taken liberties with naming the keys in the logfmt syntax. The only one that is commonly referred to in the logfmt documentation is msg, and it should be kept named as is. I've also seen ts being used in lots of places to represents the timestamp, other then that it is up to you if you'd prefer to go with short 1, 2 or 3-character keys or fully named for what they represent. I think the logfmt format generally use underscores, but if everything is already in camelCase I don't see a reason why you can't use that. I tried to come up with ways to represent both key/value maps and arrays in the log syntax, as that can be a point of challenge when you're trying to dump complex structures to simple lines.
I hope this hasn't been too much of a rambling mess and that it makes sense to you. I hope you will consider it.

My thoughts:
Full-blown structured logging is too much at the moment. I've certain locations where the base exists for the messages (e.g. toLogEntry in CCs), but that needs to be expanded on, for example in lists.
The latter part should just be a matter of a custom winston transport. Most of that structure already exists as JSON.

So, I was interested in testing out #1981 and built a little LogfmtTransport on that basis:
import type { ZWaveLogInfo } from "@zwave-js/core";
import { padStart } from "alcalzone-shared/strings";
import Transport from "winston-transport";

export class LogfmtTransport extends Transport {
	public constructor() {
		super({
			level: "silly",
		});
	}

	private logOnce(info: ZWaveLogInfo & { message: string; part?: string }) {
		const dir =
			info.direction === "  "
				? ""
				: info.direction === "« "
				? "dir=RX"
				: "dir=TX";
		const tags = info.primaryTags ? `tags="${info.primaryTags}"` : "";
		const tags2 = info.secondaryTags ? `info="${info.secondaryTags}"` : "";
		const part = info.part ? `part=${info.part}` : "";
		const msg = [
			`ts=${info.timestamp}`,
			`lbl=${info.label}`,
			dir,
			tags,
			part,
			!!info.message ? `msg="${info.message.replace(/"/g, "'")}"` : "",
			tags2,
		]
			.filter((blob) => !!blob)
			.join(" ");
		console.log(msg);
	}

	public log(info: ZWaveLogInfo, next: () => void): any {
		if (typeof info.message === "string" && info.message.includes("\n")) {
			info.message = info.message.split("\n");
		}

		if (typeof info.message === "string") {
			this.logOnce(info as any);
		} else {
			let part = 0;
			const partLength = 1 + Math.floor(Math.log10(info.message.length));
			for (const msg of info.message) {
				part++;
				this.logOnce({
					...info,
					message: msg,
					part: `${padStart(
						part.toString(),
						partLength,
						"0",
					)}/${padStart(
						info.message.length.toString(),
						partLength,
						"0",
					)}`,
				});
			}
		}
		next();
	}
}

Put that into the driver options:
const driver = new Driver("COM4", {
	// ...
	logConfig: {
		transports: [new LogfmtTransport()],
	},
})
//...

ts=2021-03-02T17:06:33.589Z lbl=DRIVER msg="opening serial port COM4"
ts=2021-03-02T17:06:33.605Z lbl=DRIVER msg="serial port opened"
ts=2021-03-02T17:06:33.605Z lbl=SERIAL dir=TX tags="[NAK]" info="(0x15)"
ts=2021-03-02T17:06:35.126Z lbl=DRIVER msg="loading configuration..."
ts=2021-03-02T17:06:35.447Z lbl=DRIVER msg="beginning interview..."
ts=2021-03-02T17:06:35.448Z lbl=DRIVER part=1/2 msg="added request handler for AddNodeToNetwork (0x4a)..."
ts=2021-03-02T17:06:35.448Z lbl=DRIVER part=2/2 msg="1 registered"
ts=2021-03-02T17:06:35.448Z lbl=DRIVER part=1/2 msg="added request handler for RemoveNodeFromNetwork (0x4b)..."
ts=2021-03-02T17:06:35.448Z lbl=DRIVER part=2/2 msg="1 registered"
ts=2021-03-02T17:06:35.448Z lbl=DRIVER part=1/2 msg="added request handler for ReplaceFailedNode (0x63)..."
ts=2021-03-02T17:06:35.448Z lbl=DRIVER part=2/2 msg="1 registered"
ts=2021-03-02T17:06:35.449Z lbl=CNTRLR msg="beginning interview..."
ts=2021-03-02T17:06:35.449Z lbl=CNTRLR msg="querying version info..."
ts=2021-03-02T17:06:35.497Z lbl=SERIAL dir=TX msg="0x01030015e9" info="(5 bytes)"
ts=2021-03-02T17:06:35.498Z lbl=DRIVER dir=TX part=1/1 msg="[REQ] [GetControllerVersion]"
ts=2021-03-02T17:06:35.500Z lbl=SERIAL dir=RX tags="[ACK]" info="(0x06)"
ts=2021-03-02T17:06:35.501Z lbl=SERIAL dir=RX msg="0x011001155a2d5761766520362e3032000192" info="(18 bytes)"
ts=2021-03-02T17:06:35.502Z lbl=SERIAL dir=TX tags="[ACK]" info="(0x06)"
ts=2021-03-02T17:06:35.502Z lbl=DRIVER dir=RX part=1/2 msg="[RES] [GetControllerVersion]"
ts=2021-03-02T17:06:35.502Z lbl=DRIVER dir=RX part=2/2 msg="  payload: 0x5a2d5761766520362e30320001"
ts=2021-03-02T17:06:35.505Z lbl=CNTRLR part=1/3 msg="received version info:"
ts=2021-03-02T17:06:35.505Z lbl=CNTRLR part=2/3 msg="  controller type: Static Controller"
ts=2021-03-02T17:06:35.505Z lbl=CNTRLR part=3/3 msg="  library version: Z-Wave 6.02"

@AlCalzone That looks like a really neat result! Very close or exactly like my halfway suggestion. If I might just suggest a few more additions:

The severity level should really be a part of the log line (either severity=info or lvl=4 depending on how verbose you'd prefer to go). This makes it so much easier to always log at max verbosity and let the ingest software deal with filtering during analysis. The only reason to not log at maximum is that it generates a lot of data, but that is a segway into log rotation, which we don't need to talk about now.
If you want to make it more readable to humans, include the fields that are always present first and always in the same order (ts,lbl,lvl,msg) and then the optional ones (part,dir,tags,info)

👍🏻
dir is pretty important to understand the following message and tags contain which node a message is from/to, so that needs to go first IMO
I didn't want to add more dependencies to the repo for the test. My plan is to shell this out into a separate repo that just contains custom log transports. There we can use node-logfmt for correct encoding.

@AlCalzone I'm good with all that and can understand the reasoning for both 2 and 3. This already looks so much better from a log ingestion perspective, while also being much friendlier to grep and still human-readable. Go for it!

This will be handled in a separate repo once zwave-js@7 has landed:
https://github.com/zwave-js/log-transports


ReDriver2 port to 3DS and PSP???

This is only a question. It Is porting to 3ds and psp??????.

I don't have time and devices to port it to those platfroms. If you consider it porting by yourself, Pull requests are welcome.


Drop Python 2.7 support

Drop support for all outdated Python versions. The oldest officially supported Python version is 3.6 which reaches EoL on 26 December 2021 (which is quite soon).
Add in tox and CI checks Python versions 3.6 - 3.9. I've checked it with 3.9 locally, it works.

No changes in the code have been made. Still, this is an important step that will simplify #146 and #149. Python 2.7 is out of support for almost a year, It's time to make this step.

Eventually please consider to drop mock dependency, or make it optional at least.


⚠ Bofrost.de has degraded performance

In 75767d9, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 754 ms

Resolved: Bofrost.de performance has improved in 7d7a322.


TimeBlock wont accept value from timepicker

I would like to say that I am excited about this project and can't wait for it to be merged into Wagtail. It is a much needed improvement over the current StreamField backend. Great work! I have a couple of bugs to report that I am submitting as two separate issues.
Version: 0.8.5
Steps to reproduce:

Create a new page and add a TimeBlock
Selecting time from the time picker and then saving will trigger a validation error on the field and empty it.
If “:00” is added to the end of the time that is selected from the picker then the page will save fine.
The issue seems to be in the way time values are recognized in the javascript.

Here is a sample of the code used to recreate this issue:
class TestStreamBlock(StreamBlock):
    NUMBERS = (('one', 'one'), ('two', 'two'),)

    time = TimeBlock()
    name = CharBlock(default='Test Name 1')
    number = ChoiceBlock(max_length=3, choices=NUMBERS, default=NUMBERS[0])

class TestPage(Page):
    content = StreamField(TestStreamBlock(required=False),blank=True)

    content_panels = Page.content_panels + [
        StreamFieldPanel('content'),
    ]

I cannot reproduce the issue on my setup. Could you tell me which version of Wagtail you are using?
Now that #9 is merged, this project only supports Wagtail >= 2.2.

Solved the problem, turns out it was an issue with the ordering of the installed_apps on our end.


Can't get a decent output with step_response.

I have a question. Here i have a problem with plotting step response. My graphic looks like this and i have no idea whats wrong here.
import control
import numpy as np
import matplotlib.pyplot as plt
Ts = 1
G1 = control.tf([60], [1,0.1])
G2 = control.tf([0.5, 3], [1, 5, 12])
G3 = control.tf([1], [1, 5])
Gs= G1*G2*G3
Gz = control.c2d(Gs,Ts, method= 'zoh')
control.root_locus(Gz)
control.root_locus(Gs)
print(Gz)
print(Gs)

cltf=(Gs/(1+Gs))
Zcltf=(Gz/(1+Gz))

T = np.arange(0, 10)
za = control.step_response(cltf, T)

zb = control.step_response(Zcltf, T)
plt.plot(zb)
plt.plot(za)

plt.plot expects the output in a different shape. You provide a list of two arrays with shape (10,), but it is casted by matplotlib into the wrong 2D array representing 10 curves with data from shape (2, ) each. Try to separate the time vector and response time series into different variables and call plt.plot with 2 parameters. Getting used to that will help you when you deal with systems with more than one output, where you have a time vector of length n and a response vector of (m, n): https://python-control.readthedocs.io/en/latest/conventions.html#time-series-data applies.
General note: It is not wrong to ask questions here, but this is the issue tracker for the source code. There are other platforms like StackOverflow which might be better suited for questions about matplotlib, numpy or Python programming in general. Try to follow a matplotlib or numpy tutorial for the basic concepts.


 I can't figure out what I might be doing wrong, is there some missing information?

I think what actually happened is that ContentLength is compulsory. Is this bug then that aws-sdk-go doesn't check that the header is provided?
Is there a way of doing an upload when the size isn't known in advance?

@pwaller ContentLength will be calculated automatically by the SDK when it can (there is code for this in develop), but note that it is a required field and cannot be omitted by the SDK (whether it's automatically filled or not).
One trick you can use to get around this restriction is to use multipart uploads, which allows you to send an object as multiple arbitrary sized parts (though you must know the size of each individual part). You can see the multipart upload overview documentation for more information on this technique.
Note that a multipart upload has to be at minimum 5mb, so you would have to buffer that much into memory and determine if you can use this technique before actually initiating the request.


[in progress] new route /:slug/expenses/:id/approve

Related to https://github.com/OpenCollective/opencollective-api/pull/551

@carlosascari when you have a chance next week, can you take a look at this?
We can do something nicer than using the default notify that shows a top bar (design wise)
Basically, we should convey 3 states:

Approving expense (processing)
Expense approved
Error while approving expense (with message, typically forbidden)

Old. Closing.


BGDIINF_SB-2021: remove '/shortlinks'

Removing '/shortlinks' to have as little character as possible and to simplify backwards compatibility

I won't approve, as I contributed here, too ;-)


[google-cloud-cpp] add missing dependency

Otherwise:
CMake Error at /Users/leanderSchulten/git_projekte/Lichtsteuerung/vcpkg/buildtrees/google-cloud-cpp/arm64-osx-dbg/CMakeFiles/CMakeTmp/CMakeLists.txt:21 (target_link_libraries):
  Target "cmTC_f2859" links to:

    gRPC::grpc++

  but the target was not found.

Upstream has its own findGRPC: https://github.com/googleapis/google-cloud-cpp/blob/v2.5.0/cmake/FindgRPC.cmake
I think this needs to be removed.


feature request: Add support for actions without conditions.

Discussed in https://github.com/alexfertel/bulloak/discussions/18

Originally posted by mds1 August 28, 2023
Bulloak looks really nice and I'm excited to try it out. I have a function like this OZ function:
function _efficientHash(bytes32 a, bytes32 b) internal pure returns (bytes32 hash) {
    assembly ("memory-safe") {
        mstore(0x00, a)
        mstore(0x20, b)
        hash := keccak256(0x00, 0x40)
    }
}

There's no branching or conditionals here so I expected my .tree file to look very simple:
MyContract._efficientHash.sol
├── it should match the output of a high-level hash
└── it should never revert

But running bulloak against this errors with:
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
bulloak error: found an action without conditions

├── it should match the output of a high-level hash
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

--- (line 2, column 1) ---•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
bulloak error: found an action without conditions

└── it should never revert
^^^^^^^^^^^^^^^^^^^^^^^^^^

I could add a "when called" condition, but this would add unnecessary clutter to the tree and tests since there's no conditions or paths in this method.
Should bulloak/BTT support specs of this style, or should I be doing things differently here? I think a good approach might be to only allow this IF all requirements (it should lines) are at the shallowest level and not preceded by any given's or when's.
Related, I'd like to see a bit more info in the README on the requirements around .tree files, e.g. when are when and given required, can you only have one of the two, can their order be flipped or must it be when > given, etc. The reason I ask here is I want to mirror the given > when > then flow of cucumber vs. the when > given > it should of BTT (perhaps both can be supported?)
cc @PaulRBerg for thoughts too
Instructions:

Stop erroring in the semantic analysis phase when we find an Ast::Action while visiting the root. https://github.com/alexfertel/bulloak/blob/3b4c0dcccf4e6e9341b9eb65e886fa7eefc5d99f/src/semantics.rs#L157-L160
Add support for emitting a test that has no parent condition.

This one probably requires a non-trivial refactor. https://github.com/alexfertel/bulloak/blob/3b4c0dcccf4e6e9341b9eb65e886fa7eefc5d99f/src/emitter.rs#L271-L280

Add tests for both of the above points.
Add it to the docs in https://github.com/alexfertel/bulloak/blob/main/src/lib.rs and https://github.com/alexfertel/bulloak/blob/main/README.md

@mds1 should be supported in https://crates.io/crates/bulloak/0.4.3!

Amazing! Testing it out now and have two comments. Given:
MyContract._efficientHash.sol
├── It should never revert.
└── It should match the output of a high-level hash.

Then run bulloak ./**/*.tree  and get:
pragma solidity 0.8.0;

contract CreateXTest {
  function test_ItShouldNeverRevert.() external {
    // It should never revert.
  }

  function test_ItShouldMatchTheOutputOfAHigh_levelHash.() external {
    // It should match the output of a high-level hash.
  }
}

So two observations:

The trailing period should be stripped to get a valid test name
I'd have thought this would result in a single test_Requirements, but it results in two separate tests (expectation shown in the solidity block below)

pragma solidity 0.8.0;

contract MyContractTest {
  function test_Requirements() external {
    // It should never revert.
    // It should match the output of a high-level hash.
  }
}

The trailing period should be stripped to get a valid test name

Ah, yes, I need to handle the period as well, good catch!

I'd have thought this would result in a single test_Requirements, but it results in two separate tests (expectation shown in the solidity block below)

Yes, after thinking about it for a bit, I decided to go 1 test per action (https://github.com/alexfertel/bulloak/pull/26#issue-1875710960). Even though this is inconsistent with how actions behave when they have parent conditions, I think it is less surprising, since actions without conditions suggest unrelated function invariants. That is, if they relate somehow, then they would be children of a condition. So, it is best to separate the test functions. Wdyt?

Even though this is inconsistent with how actions behave when they have parent conditions, I think it is less surprising, since actions without conditions suggest unrelated function invariants. That is, if they relate somehow, then they would be children of a condition.

Interesting, I'd argue it's actually more surprising, since now the structure of your tests depends on the function being tested: if it's a simple branchless method you have one test per requirement, and if it's more complex you have one test per set of preconditions. So now my test architecture also changes as my function gets more complex.

actions without conditions suggest unrelated function invariants. That is, if they relate somehow, then they would be children of a condition.

A simple counterexample in the efficientHash test I've been using: The two requirements (must not revert and must match high-level hash) are related by being children of a condition, and the condition is simply "valid inputs" where all inputs of the correct type are valid inputs. Solidity automatically generates the code to validate function inputs, so we always ignore that implicit condition, both in our spec and in tests (i.e. no one writes tests to verify the checks solidity automatically adds, there are many other examples)
In the linked PR:
file.sol
└── it should do stuff
└── when something happens
    └── it should revert
└── it does everything

is an interesting edge case. My reaction is this should not be allowed: The presence of "when something happens" implies the inverse of that should contain the other two conditions
Might be good to pull @PaulRBerg in here for an additional opinion on the

since now the structure of your tests depends on the function being tested: if it's a simple branchless method you have one test per requirement, and if it's more complex you have one test per set of preconditions.

I'm not sure I fully understand since I believe the structure of the tests depends on the function being tested in the previous implementation. Let's say we start with:
MyContract._efficientHash.sol
├── it should match the output of a high-level hash
└── it should never revert

Which gets us:
contract MyContractTest {
  function test_ShouldNeverRevert() external {
    // It should never revert.
  }

  function test_ShouldMatchTheOutputOfAHigh_levelHash() external {
    // It should match the output of a high-level hash.
  }
}

And then we decide to update the function a bit to handle some precondition, which we now describe in our .tree like this:
MyContract._efficientHash.sol
├── it should match the output of a high-level hash
├── it should never revert
└── when some precondition occurs
		├── it should do an action
		└── it should do another action

with output:
pragma solidity 0.8.0;

contract MyContractTest {
  function test_ShouldMatchTheOutputOfAHigh_levelHash() external {
    // It should match the output of a high-level hash.
  }

  function test_ShouldNeverRevert() external {
    // It should never revert.
  }

  modifier whenSomePreconditionOccurs() {
    _;
  }

  function test_WhenSomePreconditionOccurs()
    external
    whenSomePreconditionOccurs
  {
    // it should do an action.
    // it should do another action.
  }
}

The hypothesis is that the output above is more surprising than:
pragma solidity 0.8.0;

contract MyContractTest {
  function test_Requirements() external {
    // It should match the output of a high-level hash.
    // It should never revert.
  }

  modifier whenSomePreconditionOccurs() {
    _;
  }

  function test_WhenSomePreconditionOccurs()
    external
    whenSomePreconditionOccurs
  {
    // it should do an action.
    // it should do another action.
  }
}

because the structure of the tests depends on the function being tested.
The only change to the tree above that wouldn't change the structure of the tests is adding an action as a child of the condition, like so:
MyContract._efficientHash.sol
├── it should match the output of a high-level hash
├── it should never revert
└── when some precondition occurs
		├── it should do stuff // This one is new.
		├── it should do an action
		└── it should do another action

But you would say it'd be less surprising if the following change didn't change the structure either:
MyContract._efficientHash.sol
├── it should match the output of a high-level hash
├── it should do stuff // This one is new.
├── it should never revert
└── when some precondition occurs
		├── it should do an action
		└── it should do another action

After laying it out, I'm less confident in either implementation haha, both make sense to me, so I'm happy to implement it the other way. Will wait for Paul to chime in before updating the implementation. One argument I can think of against the current one is that it'd be more work in bulloak check.

My reaction is this should not be allowed: The presence of "when something happens" implies the inverse of that should contain the other two conditions

I thought testing function invariants + possible scenarios would be a totally normal use case, so I didn't want to restrict it.
Let's take the function that calls _efficientHash:
    function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {
        return a < b ? _efficientHash(a, b) : _efficientHash(b, a);
    }

A dummy (but reasonable) tree for this function might be:
MyContract._hashPair.sol
├── It should match the output of a high-level hash.
├── It should hash both args.
├── It should never revert.
└── when first arg is bigger than second arg
		└── it should hash the pair swapped

wdyt?

Sorry for the long post, I just want to get this right.

No worries at all, this is a valuable discussion and I appreciate it!

Let's take the function that calls _efficientHash:
MyContract._hashPair.sol

├── It should match the output of a high-level hash.
├── It should hash both args.
├── It should never revert.
└── when first arg is bigger than second arg
		└── it should hash the pair swapped

A dummy (but reasonable) tree for this function might be:

This is a great example. It's made me realize that my spec (and consequently this spec) are poorly specified. Given that there are two arguments, It should match the output of a high-level hash is not sufficient enough to know the expected result—should it match the output of keccak256(a,b) or keccak256(b,a)? But, to your point we do have It should never revert as always being true. So the spec should be:
MyContract._hashPair.sol
├── It should never revert.
├── When first arg is smaller than second arg
│       └── It should match the result of `keccak256(abi.encodePacked(a,b))`.
└── When first arg is bigger than second arg
        └── It should match the result of `keccak256(abi.encodePacked(b,a))`.

Given that, we can ask:

What should our solidity test structure be, and
How does the answer to (1) change if new conditions are introduced such that "It should never revert" is conditional?

For (1), I think having all root-level it statements within a test_RootRequirements seems reasonable, as it's a single test for parts of your function that should always be true. Then the remaining it statements follow the usual pattern.
Now let's say we add an arbitrary restriction that zero values are not allowed. This gives a new spec:
MyContract._hashPair.sol
├── When either input is 0
│    └── It should revert.
└── When both inputs are nonzero
     ├── It should never revert.
     └── When first arg is smaller than second arg
     │   └── It should match the result of `keccak256(abi.encodePacked(a,b))`.
     └── When first arg is bigger than second arg
         └── It should match the result of `keccak256(abi.encodePacked(b,a))`.

First off, I'll note this currently generates invalid solidity code—function test_WhenBothInputsAreNonzero contains everything else, e.g. other modifiers and functions.
But now it makes less sense to have a test_RootRequirements since it implies each when or given branch can have it's own root requirements. I am ok with that framing, just not convinced it's idea, and would need to think on how to name things there too. Honestly not sure of the best approaches now 😅 will to think on this more and wait for @PaulRBerg + sablier team's opinion too :)

For (1), I think having all root-level it statements within a test_RootRequirements seems reasonable, as it's a single test for parts of your function that should always be true

Yeah, I think that is reasonable. My argument was that one would want to test the parts of the function that should always be true separately, but I am not confident in this + it would be more work later in bulloak check.

First off, I'll note this currently generates invalid solidity code—function test_WhenBothInputsAreNonzero contains everything else, e.g. other modifiers and functions.

Argh, I really need to improve the tests.
If it were not broken (I probably introduced a bug recently), the implementation idea was to generate When both inputs are nonzero as a modifier and a test test_WhenBothInputsAreNonzero with the // It should never revert. action. If the condition had more than one child action, it just grouped them under the same test, as if it were a single test_Requirements. If we change the current implementation, then the treatment of the actions would be consistent across the tree.

But now it makes less sense to have a test_RootRequirements since it implies each when or given branch can have its own root requirements.

I think this makes sense! When something happens, we might want to assert something and then just explore the rest of the function paths with other conditions. However, I don't think this occurs in the Sablier codebase. They usually have:
               └── when the segment amounts sum does not overflow
                  ├── when the start time is greater than the first segment milestone
                  │  └── it should revert
                  ├── when the start time is equal to the first segment milestone
                  │  └── it should revert
                  └── when the start time is less than the first segment milestone
                     ├── when the segment milestones are not ordered
                     │  └── it should revert

i.e. they nest conditions, which may inform us. Yet another ping @PaulRBerg 🙈

Hmm @PaulRBerg @alexfertel what do you think about the current repetitiveness? For example:
function test_WhenFirstArgIsSmallerThanSecondArg()
  external
  whenFirstArgIsSmallerThanSecondArg
{
  // It should match the result of `keccak256(abi.encodePacked(a,b))`.
}

We have whenFirstArgIsSmallerThanSecondArg appear in both the test name and the modifier name, which feels wasteful/clunky. But, assuming we keep the modifiers which I think makes sense, I'm not sure of a good alternative here. Naming everything test_RequirementsX where X is just some incrementing number doesn't feel much better

Yes @mds1 , this is being discussed here https://github.com/alexfertel/bulloak/discussions/7. I am trying to capture exactly what the Sablier team does, but can't quite figure it out. My latest understanding is:

If it is a leaf and it's the only child of a condition node, then we don't generate a modifier and only include it in the name of the test.

However, as you can see in my answer, that is not entirely accurate.
Btw, I'm currently working on bulloak check, hopefully I have some time this weekend to finish it.

Ah thanks, will check out that discussion!


Ship Appdata file in Linux packages

The github repository of vscode does include appdata.xml file which ensures integration with Linux app stores, but it's not shipped in Linux packages. It's easy, you just need to install the file into this path: /usr/share/metainfo/%{id}.appdata.xml.
Upstream docs: https://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html#sect-Quickstart-DesktopApps
Fedora guidelines: https://fedoraproject.org/wiki/Packaging:AppData
Without this, we can't nicely integrate vscode with our app store in Fedora and it will help users on all other distributions as well since AppStream format is nowadays de facto standard for desktop app metadata.

VSCode Version: 1.17.2
OS Version: Fedora 27

@hughsie and his blog post seem relevent

Yup, every application needs an AppData file to be installed if it wants to be shown in the software center. If you have any questions I'm happy to help.

We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.
If you wonder what we are up to, please see our roadmap and issue reporting guidelines.
Thanks for your understanding, and happy coding!


Announcement: this repo is moving

Ownership of the SeisFlows repository is being transferred to:
https://github.com/adjtomo
Related Issue: https://github.com/adjtomo/seisflows3/issues/2
Transfer will take place in one week (planned for May 17, 2022). All new development to the SeisFlows package will be focused on the future page: github.com/adjtomo/seisflows (note: this link will not work until the transfer is completed)
During this transition period, we will merging and deleting an existing fork, SeisFlows3 (announced in #111). All future development will be focused into SeisFlows. During the transfer we will perform the following tasks:

Merge the active fork SeisFlows3 back into this repository as the main development branch. The SeisFlows3 fork will be deleted.
Transfer the documentation of SeisFlows3 to: seisflows.readthedocs.io; all future documentation will be hosted under SeisFlows.
Delete the SeisFlows organization page. Please direct all future SeisFlows related traffic to the adjtomo organization page

The version of SeisFlows that currently resides in this repository will be accessible as v1.1 (at commit 46a9604). All changes made after the SeisFlows3 merge will begin versioning at V2.0.0.
Thanks for your patience as we make this transition.

This merger has just taken place.
The current 'master' branch now represents all of the changes made within the SeisFlows3 fork and has been officially pre-released as v2.0.0.
The previous master branch has been renamed 'legacy' and has been released/archived as SeisFlows Legacy (v1.1.0). All branches of SeisFlows legacy have now been marked accordingly (e.g., devel is now legacy_devel).
Next steps are to re-build the documentation, which will be hosted at: seisflows.readthedocs.io and to delete the SeisFlows organization page.


wip #116 allow a custom content_for name

Added an option to control the name used in the content_for call.
The name defaults to :render_async.
A custom name may be used to better control the placement of injected Javascript especially when rendering nested async views.

Thanks for this PR, @vanboom! BTW, is it still work in progress or we can review it?

It is ready to go - and working great in my application.

Thanks, @vanboom, I'll review it and we can include it in the next version 🍰


feature/SKOOP-124

The to-dos that were dealt with are deleted from the database.
The declined community user registrations are removed immediately.
The accepted community user registrations are still in the database (it is planned to remove them as soon as AcceptanceToCommunityNotification is deleted).
Tests.
@svetivanova could you please take a look?

Codecov Report

Merging #69 into master will increase coverage by 0.04%.
The diff coverage is 80%.

@@             Coverage Diff              @@
##             master      #69      +/-   ##
============================================
+ Coverage      76.8%   76.84%   +0.04%
- Complexity      478      483       +5
============================================
  Files           132      132
  Lines          2186     2203      +17
  Branches         73       75       +2
============================================
+ Hits           1679     1693      +14
- Misses          451      455       +4
+ Partials         56       55       -1

Impacted Files
Coverage Δ
Complexity Δ

...tification/command/NotificationCommandService.java
50% <0%> (-50%)
2 <0> (ø)

...p/notification/query/NotificationQueryService.java
100% <100%> (ø)
3 <1> (+1)
:arrow_up:

...mmand/CommunityUserRegistrationCommandService.java
94.18% <95%> (+2.29%)
23 <2> (+4)
:arrow_up:

Continue to review full report at Codecov.

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


[Decommission Hub] snowex.uwhackweek

Summary
It was a hack event that is now over.
Info

Community Representative: @scottyhq
Link to New Hub issue: https://github.com/2i2c-org/infrastructure/issues/1309
Proposed end date: Now on request from @scottyhq via freshdesk support ticket

Task List
Phase I

[x] Confirm with Community Representative that the hub is no longer in use and it's safe to decommission
[x] Confirm if there is any data to migrate from the hub before decommissioning
UPDATE: Erik asked Scott via freshdesk ticket about this

[ ] If yes, confirm where the data should be migrated to

[ ] Confirm a 2i2c Engineer has access to the destination in order to complete the data migration

[x] If no, confirm it is ok to delete all the data stored in the user home directories

Phase II - Hub Removal
(These steps are described in more detail in the docs at https://infrastructure.2i2c.org/en/latest/hub-deployment-guide/hubs/other-hub-ops/delete-hub.html)

[x] Manage existing data (migrate data from the hub or delete it)
[x] Remove the appropriate config/clusters/<cluster_name>/<hub_name>.values.yaml files. A complete list of relevant files can be found under the appropriate entry in the associated cluster.yaml file.
[x] Remove the associated hub entry from the config/clusters/<cluster_name>/cluster.yaml file.
[x] Remove the hub deployment

helm --namespace HUB_NAME delete HUB_NAME
kubectl delete namespace HUB_NAME

[x] Delete the hub's authentication application on auth0, GitHub or CILogon

Phase III - Cluster Removal
This phase is only necessary for single hub clusters.

[ ] Run terraform plan -destroy and terraform apply from the appropriate workspace, to destroy the cluster
[ ] Delete the terraform workspace: terraform workspace delete <NAME>
[ ] Remove the associated config/clusters/<cluster_name> directory and all its contents
Remove the cluster from CI:

[ ] deploy-hubs.yaml
[ ] validate-clusters.yaml

[ ] Remove the cluster from the list of grafana datasources at https://grafana.pilot.2i2c.cloud/datasources
[ ] Remove A record from Namecheap account

Thanks @consideRatio !

Confirm if there is any data to migrate from the hub before decommissioning

No. You can go ahead and wipe everything.
Out of curiosity though, what is the general procedure for this? Are there docs with recommended options (e.g. an S3 bucket, lab server with a big usb-mounted hard drive, etc.) It could be something we want to do in the future.

@scottyhq for now it seems we don't have such policies for migrating data well defined, see this documentation: https://infrastructure.2i2c.org/en/latest/hub-deployment-guide/hubs/other-hub-ops/delete-hub.html#migrate-data
I recall Yuvi has done some work to package things into s3 buckets and provide links for users though.

@scottyhq I see a S3 snowex-scratch bucket, is this fine to remove as well?

@scottyhq there is still https://staging.uwhackweeks.2i2c.cloud up and running as I haven't worked to tear everything down, but only the snowex hub part of the uwhacksweek cluster.
If everything uwhackweeks related should be cleaned up, there are further actions to take for us. Let us know if that is the case!

@scottyhq I see a S3 snowex-scratch bucket, is this fine to remove as well?

Yes!

If everything uwhackweeks related should be cleaned up

Yes, we're not anticipating any events in the near future so everything can be removed.
Thanks @consideRatio !


num-macros 0.1.25 not on crates.io

num 0.1.25 is on crates.io, but I don't see num-macros 0.1.25 there. 0.1.24 is the latest version of num-macros on crates.io.

Oops, published!


Status bar not changing with SystemChrome.setSystemUIOverlayStyle

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce

Make dummy project
Call SystemChrome.setSystemUIOverlayStyle in main before runApp
In my app I change statusBarColor, statusBarBrightness & statusBarIconBrightness, but they now don't work anymore

Expected results
Changes the color of the status bar
Actual results
Doesn't change the color of the status bar
Code sample
Code sample
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light.copyWith(
    statusBarColor: const Color(0xFFFFFFFF),
    statusBarBrightness: Brightness.light,
    statusBarIconBrightness: Brightness.dark,
  ));

Screenshots or Video
N/A
Logs
N/A
Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.16.0, on macOS 14.1.1 23B81 darwin-arm64, locale en-NL)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0-rc2)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.84.2)
[✓] Connected device (3 available)
[✓] Network resources

• No issues found!

This issue. 138671

@appcapsergen I checked this on both Flutter 3.13.9 and 3.16.1 but the status bar is the same. Which previous Flutter version was this working?

Demo

3.13.9
3.16.1

Sample code
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
	  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light.copyWith(
    statusBarColor: const Color(0xFFFFFFFF),
    statusBarBrightness: Brightness.light,
    statusBarIconBrightness: Brightness.dark,
  ));
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    View.of(context).devicePixelRatio;
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // TRY THIS: Try running your application with "flutter run". You'll see
        // the application has a blue toolbar. Then, without quitting the app,
        // try changing the seedColor in the colorScheme below to Colors.green
        // and then invoke "hot reload" (save your changes or press the "hot
        // reload" button in a Flutter-supported IDE, or press "r" if you used
        // the command line to start the app).
        //
        // Notice that the counter didn't reset back to zero; the application
        // state is not lost during the reload. To reset the state, use hot
        // restart instead.
        //
        // This works for code too, not just values: Most code changes can be
        // tested with just a hot reload.
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        // useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      _counter++;
    });
  }

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return Scaffold(
      appBar: AppBar(
        // TRY THIS: Try changing the color here to a specific color (to
        // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar
        // change color while the other colors stay the same.
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child: Column(
          // Column is also a layout widget. It takes a list of children and
          // arranges them vertically. By default, it sizes itself to fit its
          // children horizontally, and tries to be as tall as its parent.
          //
          // Column has various properties to control how it sizes itself and
          // how it positions its children. Here we use mainAxisAlignment to
          // center the children vertically; the main axis here is the vertical
          // axis because Columns are vertical (the cross axis would be
          // horizontal).
          //
          // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint"
          // action in the IDE, or press "p" in the console), to see the
          // wireframe for each widget.
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => _incrementCounter(),
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.16.1, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.16.1 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 7f20e5d18c (9 hours ago), 2023-11-27 09:47:30 -0800
    • Engine revision 22b600f240
    • Dart version 3.2.1
    • DevTools version 2.28.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.13.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version unknown)
    • Android Studio at /Applications/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to determine Android Studio version.
    • Java version OpenJDK Runtime Environment (build 17.0.8+0-17.0.8b1000.22-10799086)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio Giraffe Patch 3.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.84.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.76.0

[✓] Connected device (3 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64  • Android 11 (API 30)
    • macOS (desktop)  • macos            • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 119.0.6045.159

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.17.0-18.0.pre.59, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.17.0-18.0.pre.59 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision cae47c4641 (66 minutes ago), 2023-11-29 18:19:30 -0800
    • Engine revision 35939ca853
    • Dart version 3.3.0 (build 3.3.0-170.0.dev)
    • DevTools version 2.30.0-dev.4
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.13.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version unknown)
    • Android Studio at /Applications/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to determine Android Studio version.
    • Java version OpenJDK Runtime Environment (build 17.0.8+0-17.0.8b1000.22-10799086)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio Giraffe Patch 3.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.84.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.76.0

[✓] Connected device (3 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64  • Android 11 (API 30)
    • macOS (desktop)  • macos            • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 119.0.6045.159

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 2 categories.

But using sample code at https://github.com/flutter/flutter/issues/138671#issuecomment-1824221320 can make this work on the latest master channel (it's landed on master recently and has an open CP there).

For me either updating to 3.16.1 (from 3.16.0) or removing the following from Info.plist
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

android same problem


fixed annealing

Comments on pull requests will not trigger Registrator, as it is disabled. Please try commenting on a commit or issue.


rtc_iram implementation

Hello Guys,
Have you implemented rtc_iram.
Error says : "Unsure what to do with segment:  rtc_iram"
Please help.
Thanks

Did you found a solution to this problem?
I think It's causing problems on my elf output and happens also with RTC_DATA for me.

Also having a similar problem :/

may be you have the ESP32 RISC-V based https://github.com/tenable/esp32_image_parser/pull/12


Support for Outlook.com

[ ] The dialog doesn't work on Outlook.com (CTRL+Space doesn't trigger the dialog). On first sight it's the frames.
[ ] Show the G Quick Access button


Add a clarifying TESTING.md document to the repo.

As similarly stated for the wildfly-cekit-modules repository:
I feel there is a need to clarify the scope and extent of testing carried out in this repo, so that people are clear on what exactly is being tested and why.
I have put together a sketch of what might be included in such a document, based on my limited knowledge of the testing framework and approach, please correct as necessary.
I have called this type of testing "configurational integrity" testing, to emphasize that the focus is on testing the effects that these cekit modules have on the configuration of an image that includes them, and not on testing of the functional behavior of the image when running in the cloud.

@rachmatowicz merged. Thank-you!


Reachability analysis cannot see through FFI

See https://github.com/model-checking/kani/pull/3253#discussion_r1635382569 for an example of a test that fails when we don't directly use in Rust the function that is otherwise only invoked from C code. We might consider marking all functions with attribute no_mangle reachable.

We should only do that if -Z c-ffi is enabled though.


RHEL 9.4 Requires [2.03.23(2)]

:speaking_head: Foreword
Thank for taking the time to fill this bug report fully. Without it we may not be able to fix the bug, and the issue may be closed without resolution.
👻
RHEL 9.4 Requires [2.03.23(2)]
Installed latest gem 0.3.15 but creating group failing because of missing attribute for LVM
[2024-05-28T12:59:57-07:00] FATAL: ArgumentError: lvm_volume_group[vgapp] (nix_server::alloc line 14) had an error: ArgumentError: Unable to load lvm attributes [lvs.yaml] for version [2.03.23(2)]. The version/object may not be supported or you may need to upgrade the chef-ruby-lvm-attrib gem. Error [No such file or directory @ rb_sysopen - /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-ruby-lvm-attrib-0.3.15/lib/lvm/attributes/2.03.23(2)/lvs.yaml]
1055time="2024-05-28T12:59:57-07:00" level=fatal msg="Error running chef: exit status 1" source="chef.go:404"
:pancakes: Cookbook version
lvm (5.03)
Version of the cookbook where you are encountering the issue.
:woman_cook:  Chef-Infra Version
18.3.0
Version of chef-client in your environment.
:tophat: Platform details
RHEL 9.4
Operating system distribution and release version. Cloud provider if running in the cloud.
Steps To Reproduce
Steps to reproduce the behavior:
lvm_volume_group("vgapp01") do
provider Chef::Provider::LvmVolumeGroup
action [:create]
default_guard_interpreter :default
declared_type :lvm_volume_group
cookbook_name "nix_server"
recipe_name "alloc"
physical_volumes ["/dev/sdd"]
not_if { #code block }
end
:police_car: Expected behavior
Volume group and volume created
A clear and concise description of what you expected to happen.
:heavy_plus_sign: Additional context
Add any other context about the problem here. e.g. related issues or existing pull requests.

Same issue we face as well:
5.14.0-427.16.1.el9_4.x86_64
Unable to load lvm attributes [lvs.yaml] for version [2.03.23(2)]. The version/object may not be supported or you may need to upgrade the chef-ruby-lvm-attrib gem. Error [No such file or directory @ rb_sysopen - /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-ruby-lvm-attrib-0.3.15/lib/lvm/attributes/2.03.23(2)/lvs.yaml]

override['lvm']['chef-ruby-lvm-attrib']['version'] = '0.4.0'

Chef Client, version 14.15.6  (el7 package on el9 with the rocky patch)
lvm (5.0.5)

Chef Client finished, 65/138 resources updated in 03 minutes 01 seconds


Add compatibility with graylog 2.5+

As per http://docs.graylog.org/en/2.5/pages/configuration/rest_api.html, graylog 2.5+ needs a header called X-Requested-By to provide CSRF protection.
This is a tiny change to add that header on to the POST request in check-graylog-buffers.rb, which fails under graylog 2.5+.
This change is backwards compatible - graylog 2.4 and below will just ignore the extra header.
I'm not a ruby programmer, so please feel free to correct the syntax or suggest a better way. This works for me.
Pull Request Checklist
Is this in reference to an existing issue?
General

[x] Update Changelog following the conventions laid out here

[ ] Update README with any necessary configuration snippets

[ ] Binstubs are created if needed

[x] RuboCop passes

[ ] Existing tests pass

New Plugins

[ ] Tests

[ ] Add the plugin to the README

[ ] Does it have a complete header as outlined here

Purpose
Bugfix
Known Compatibility Issues
None

Thanks for your contribution to Sensu plugins! Without people like you submitting PRs we couldn't run the project. I will review it shortly.

@adam-bishop just checking if you had plans to come back to this and get it over the line. It's acceptable as is but you indicated you would come back and tweak it.

Should be good to go - I had to tweak the tests to make sure that client -> name gets mocked. The header now gets set as "sensu-client on NAME".

released: https://rubygems.org/gems/sensu-plugins-graylog/versions/1.4.0


Added area path and iteration migration

Added area path and iteration migration.

 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.:x: akanieski sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

This will need a little more work from me.


OBB Collision response

Find MTV from axis overlap. Can be found within the againstOBB method, so that the axis do not need to be all tested again
https://github.com/tomaspietravallo/sparkar-volts/blob/7983ce36995540d0b53e95f0aa5a4238cb591037/volts.ts#L2087-L2094

Idea. This is just going from vibes, proof that this is correct for most situations remains to be found. From visual tests within Spark AR Studio it seems to hold for collisions in two axis.
const { overlap, axis } = obbA.againstOBB(obbA);

objA.pos.add(objA.vel.copy().mul(objA.vel.copy().normalize().dot(axis) * -overlap));
objB.pos.add(objB.vel.copy().mul(objB.vel.copy().normalize().dot(axis) * -overlap));

The idea above works well enough, but the current methods for solveCollision don't look realistic. Whether the overlap correction is needed after fixing this COR issue remains to be seen
https://en.wikipedia.org/wiki/Coefficient_of_restitution#Derivation


Fix major doc typo

When cfg(debug_assertions) is enabled/true, DebugDropBomb is a RealBomb. When cfg(debug_assertions) is disabled/false, DebugDropBomb is a FakeBomb.
Given the potential confusion here, it might be better to use "When debug assertions are disabled (e.g. in release mode)" than "When #[cfg(debug_assertions)] is disabled", but I stuck with the existing verbiage initially.

Oh yeah, that was one clunky phrasing, thanks!


Mix of multiple company tables and common tables

Hi Bert
When running the consolidation notebook, I get an error, when it is processing the data from common tables that does not contain the $Company field. Common tables are e.g. AccessControl, Company and User.
I have modified the notebook, so that it checks whether a delta table contains the $Company field. If yes, it does the current processing, if no, it does the same processing, but not using the $Company field.
This updated notebook is attached. The extension is changed from .ipynb to .json in order to upload the file to Github, so you need to rename it back to .ipynb.
CopyBusinessCentral.json

Really thanks for the help @lhammerbh!
Indeed that part was missing in the script. Thanks for providing the solution.
I have added it to the main branche.


Intellisense not working

Issue Type: Bug
Follow a first time tutorial that just create a simple project and start typing with no Intellisense.  How to activate Intellisense??
VS Code version: Code 1.41.1 (26076a4de974ead31f97692a0d32f90d735645c0, 2019-12-18T14:58:56.166Z)
OS version: Windows_NT x64 10.0.18363

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz (4 x 2394)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_renderer: disabled_offsurface_control: disabled_offsurface_synchronization: enabled_onvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
11.92GB (7.84GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions: none

@GolfMan2000 can you please add a link to the tutorial? Thank you.

/needsMoreInfo

I start vscode
Create a new folder then new file and start typing and no intellisense guiding me!!!!

@GolfMan2000 can you please add a link to the tutorial? Thank you.

https://m.youtube.com/watch?v=https://m.youtube.com/watch?v=xDhsz5AdLZ8xDhsz5AdLZ8https://m.youtube.com/watch?v=xDhsz5AdLZ8
My failure is that I don't see suggestions as I type...
Get Outlook for Androidhttps://aka.ms/ghei36

From: Kai Maetzel<EMAIL_ADDRESS>Sent: Friday, December 27, 2019 11:12:44 AM
To: microsoft/vscode<EMAIL_ADDRESS>Cc: GolfMan2000<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [microsoft/vscode] Intellisense not working (#87667)
@GolfMan2000https://github.com/GolfMan2000 can you please add a link to the tutorial? Thank you.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vscode/issues/87667?email_source=notifications&email_token=AEJIKY5D7BHV4ZEGUXBKNJLQ2ZHSZA5CNFSM4J7BAEC2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHXUIHI#issuecomment-569328669, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEJIKYYNJFUMHYMCTBRGQL3Q2ZHSZANCNFSM4J7BAECQ.

@GolfMan2000 the video shows editing java code. You either need to install the Java extension  from the marketplace, or if you already have the extension, please file the issue against the Java extension here.


Fixing MSVC build breaks in transform dialect code from PR #11738.

Note that ll is the suffix for int64_t, not l. When forward declaring the types must match (AbstractReductionStrategy was defined as struct but declared elsewhere as class).

Can we make a win build github action ?

Yeah: https://github.com/iree-org/iree/pull/11745

That was broken for a while, appears to be fixed now
That was postsubmit only but we might be able to run it on presubmit soon too


[Bug]: corrosion breaks due to new rustup toolchain list format in rustup v1.28.0

Current Behavior
Hi! @rami3l from the rustup team here.
After announcing rustup v1.28.0 beta, we have received a bug report that goes like so:
(After upgrading rustup from v1.27.1 to v1.28.0, corrosion is no longer able to find the toolchain it needs:)

CMake Warning (dev) at build/_deps/corrosion-src/cmake/FindRust.cmake:363 (message):
  Unexpected output from `rustc --version` for Toolchain
  `stable-x86_64-unknown-linux-gnu`: ``.

  Ignoring this toolchain.
Call Stack (most recent call first):
  build/_deps/corrosion-src/cmake/Corrosion.cmake:63 (find_package)
  build/_deps/corrosion-src/CMakeLists.txt:73 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Rust Toolchain:
CMake Error at build/_deps/corrosion-src/cmake/FindRust.cmake:23 (message):
  Could not find toolchain ''

  Available toolchains:

    `nightly-x86_64-unknown-linux-gnu`
    `nightly-2024-03-10-x86_64-unknown-linux-gnu`
    `1.70-x86_64-unknown-linux-gnu`
    `1.77-x86_64-unknown-linux-gnu`

Call Stack (most recent call first):
  build/_deps/corrosion-src/cmake/FindRust.cmake:469 (_findrust_failed)
  build/_deps/corrosion-src/cmake/Corrosion.cmake:63 (find_package)
  build/_deps/corrosion-src/CMakeLists.txt:73 (include)

_https://github.com/rust-lang/rustup/issues/4127_
Expected Behavior
The project builds correctly.
Steps To Reproduce
Build any corrosion project with rustup v1.28.0.
The direct cause of this issue is the interaction between https://github.com/rust-lang/rustup/pull/3225 and the following section of corrosion:
https://github.com/corrosion-rs/corrosion/blob/b88ec09915a6b12d1aaec7e451ecf0e41a831030/cmake/FindRust.cmake#L337-L350
Environment
- OS: Fedora 41

(However, this error should be platform-independent.)

Remarks
We can do a silent fix on our side, however, we would prefer informing you of this issue in advance so that we can figure out the best way forward together. I will be happy to work on a patch to corrosion if you'd like.
The original motivation of https://github.com/rust-lang/rustup/pull/3225 is that it might not be immediately clear to the end user what the active toolchain is, I wonder if you have the same issue in this project in that respect.
Also, we are interested in providing a machine-facing output mode. Please feel free to provide suggestions WRT how you'd expect this to be done.
Many thanks in advance, and happy holidays :)

Thanks for the heads-up!
Corrosion parses the rustup output to resolve the rustup proxy to a specific toolchain, so that the selected toolchain doesn't change between the CMake configure and build phase (Environment variables could be different).
A --json option (JSON is basically the only machine-readable format supported by CMake) would be great, but I guess we need a more short-term fix.
We had a similar breakage with Rust 1.79 (see https://github.com/corrosion-rs/corrosion/issues/501), and I would also expect this change to break a couple of users.
Users can easily vendor corrosion, and the recommended approach is to pin a specific version, so fixes won't reach users automatically. How much time do we have until the release will be pushed?

@jschwe The good news is that the rustup project is not on Rust's release train; we are rather the rails supporting that train, if you'd like. Although we do with to ship a release soon, this time we should not be in a real hurry.

@jschwe Let me guess: you actually just want to get the active toolchain path with this snippet...
https://github.com/corrosion-rs/corrosion/blob/b88ec09915a6b12d1aaec7e451ecf0e41a831030/cmake/FindRust.cmake#L423-L428
... however you might have tried the following:

rustup show active-toolchain. This seems like the most obvious option, however it is somehow not willing to give you the toolchain path...
rustup toolchain list --verbose. This does give you the toolchain paths, but you have to manually deduce what the active toolchain is :|

if that happens to make your project work again; but I'm afraid this is not a very sustainable approach.

Ideally, rustup would provide the information we need via a stable JSON format. Maybe we could get a JSON output format before the human readable output is changed again?

you actually just want to get the active toolchain path with this snippet...

Yes, basically that. But we do need/want the whole list of toolchains (including paths), since we want the user to be able to select a toolchain via the Rust_TOOLCHAIN variable (e.g. Rust_TOOLCHAIN=nightly should select the nightly compiler).
Additionally when using a CMake TUI / GUI tool we want to be able to change the active Rust toolchain for corroson by cycling through a list of available toolchains (you can try this by e.g. running ccmake build and scrolling to the Rust_TOOLCHAIN variable and cycling through the available variables).
Upon thinking about this again, probably corrosion should delegate determining the active toolchain to rustup by using one of the override options when calling rustup toolchain list (would that work?).
Perhaps we should use rustup show active-toolchain to resolve the active toolchain and separately run rustup toolchain list --verbose to get a list of the paths, if this allows us to simplify the regex and make it more robust.

Ideally, rustup would provide the information we need via a stable JSON format. Maybe we could get a JSON output format before the human readable output is changed again?

@jschwe I wish something like that could happen, yes. But being a volunteer I can't give any words of guarantee at the moment, and I can't help worrying that something this will take quite a lot of bikeshedding...
As you can see right now, rather than providing what we are already providing you in some machine-readable format, it's more about cleaning up the overall output logic from our side to make sure that the output contents are satisfactory. That said, I believe a transliteration to JSON will be very easy once we have ironed out the sharp edges such as https://github.com/rust-lang/rustup/issues/4129.

But we do need/want the whole list of toolchains (including paths), since we want the user to be able to select a toolchain via the Rust_TOOLCHAIN variable (e.g. Rust_TOOLCHAIN=nightly should select the nightly compiler). Additionally when using a CMake TUI / GUI tool we want to be able to change the active Rust toolchain for corroson by cycling through a list of available toolchains

I see. Thanks for the details!

Upon thinking about this again, probably corrosion should delegate determining the active toolchain to rustup by using one of the override options when calling rustup toolchain list (would that work?).

I'm sorry but I'm not sure I have understood what you meant by this...

Perhaps we should use rustup show active-toolchain to resolve the active toolchain and separately run rustup toolchain list --verbose to get a list of the paths, if this allows us to simplify the regex and make it more robust.

This might be a more ideal approach indeed.


Use internal hostname for CF API in the security groups setup

Follows up on https://github.com/cloudfoundry-incubator/kubecf/pull/434/files#r387254146.

I think we should still find a way to not require access to the external name, though this would require more work and we shouldn't handle this before 1.0 (or any time soon).

@mook-as I would suggest to close this one and to create another card that would cover your last comment.

@fargozhu This issue is a follow-up of the PR merged. His comment only expands when we should fix this, now how.

@fargozhu I also don't believe this is a high priority. Only in rare cases the system_domain wouldn't be resolvable from within the cluster.