Add custom properties to CZML files

Includes and replaces #3548.  See #3548 for additional commentary.  Thanks to @RacingTadpole and @kring for starting this, and sorry for the lengthy delay.
This builds on their work to add detection of the type of custom properties, which enables sampled custom properties that work just like built-in properties.  I also added custom properties to the validation document.
Related czml-writer PR (I will merge that after this goes in) - AnalyticalGraphicsInc/czml-writer#129

One outstanding item to consider - the change mentioned in #3548 which makes GeoJSON properties into ConstantProperty instances.  I am still considering whether we should add valueOf and toString to ConstantProperty to hide their property nature.

Thanks heaps @shunter. I've checked this in TerriaJS and it all works, so I'm very happy with your updates! :-)

@kring or @mramato do you want to look at this?

I plan on looking at this ASAP.

Note that this PR includes #5118 to fix deployment on this branch.  Merge that PR first.

Awesome work here @shunter.  I knew I'd win that war of attrition if I held out long enough 😈
I did an initial look over the code and nothing jumps out at me except for the GeoJSON/KML issue (but I'll do another pass). I don't have a good answer yet so this is just me thinking out loud.
The GeoJSON change, while minimal, seems to be a fairly significant breaking change.  In isolation, I am okay with it, but it brings up an issue regarding KML.  KML currently dumps some properties into Entity.kml as an instance of KmlFeatureData, it seems odd to have GeoJSON properties be ConstantProperty while KML properties retain their raw values.  Ultimately I'm okay with this inconsistency because because they are two different data sources and the KmlFeatureData stuff is not really part of the spec like GeoJSON properties are and instead is a custom object used to just avoid losing data that was in the kml doc.  Do you think it's okay to just leave KML as is for now?  I'm leaning towards yes.
I guess the fundamental question is, did we change the GeoJSON behavior just because it was using properties or do we feel that any custom data should be in Entity properties now?  What does this mean for KML?
As for valueOf and toString.  I go back and forth on it.  My concern with valueOf is that it can lead developers to write "lazy" code that works for constant values but not for anything else, which ultimately leads to weird problems down the line. (leaving the time parameter off of getValue for constant property does the same thing and we definitely do that in a few examples). On the other hand, introducing valueOf would probably eliminate much of the breakage this change would introduce and would be useful in cases where devs are using ConstantProperty exclusively (which I'm guessing is a lot of use cases).  It also makes the properties more symetrical, since you can define a ConstantProperty value by assigning the primitive type anyway.  So I think my answer here is yes, let's add valueOf and toString.

OK, I added valueOf and toString to ConstantProperty.  valueOf is really only useful for number-valued properties, but it's better than nothing.
I also added a sandcastle example that shows some ideas for how custom properties, specifically time-varying ones, can be useful.  Unsurprisingly, it starts to look a bit like Scalars in STK Components.

Also, I know we've discussed this for years, but to make a note of it for the future - custom properties will be a key part of computed time-varying strings, using some kind of interpolation syntax, e.g. for data display-like labels, such as showing the speed of an object as a label attached to it.

Spoke to @shunter offline and he agrees that keeping KML the way it is is the right choice for now.
The Sandcastle example could probably be a little better from a viz standpoint, but that can be improved in future PRs.
Thanks @RacingTadpole and @shunter and sorry again for this taking so long to get in.

Awesome, thanks guys!

Nice!  This is Cesium forum post worthy.  Can someone post it?


Implement BigQuery Watermark Extractor for extracting partition ranges

Summary of Changes
Initial working implementation of a BigQuery watermark extractor. As discussed in Slack, there is a fair bit of code duplication with the other BigQuery extractors, so there will be some refactoring still to do. I've also implemented handling for tables sharded by date suffix (e.g. my_table_20190101), the tests are good but we don't use sharded tables so I haven't tested it on a real dataset.
Tests
New unit test covering the logic in the new extractor.
Documentation
What documentation did you add or modify and why? Add any relevant links then remove this line
CheckList
Make sure you have checked all steps below to ensure a timely review.

[ ] PR title addresses the issue accurately and concisely. Example: "Updates the version of Flask to v1.0.2"

In case you are adding a dependency, check if the license complies with the ASF 3rd Party License Policy.

[ ] PR includes a summary of changes.
[ ] PR adds unit tests, updates existing unit tests, OR documents why no test additions or modifications are needed.
[ ] In case of new functionality, my PR adds documentation that describes how to use it.

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

[ ] PR passes make test

Codecov Report

Merging #171 into master will increase coverage by 0.13%.
The diff coverage is 93.1%.

@@            Coverage Diff             @@
##           master     #171      +/-   ##
==========================================
+ Coverage   82.99%   83.13%   +0.13%
==========================================
  Files          59       61       +2
  Lines        2917     2970      +53
  Branches      316      316
==========================================
+ Hits         2421     2469      +48
- Misses        402      404       +2
- Partials       94       97       +3

Impacted Files
Coverage Δ

...tabuilder/extractor/bigquery_metadata_extractor.py
100% <100%> (+6.14%)
:arrow_up:

databuilder/extractor/bigquery_usage_extractor.py
79.72% <100%> (-1.91%)
:arrow_down:

databuilder/extractor/base_bigquery_extractor.py
89.33% <89.33%> (ø)

...abuilder/extractor/bigquery_watermark_extractor.py
96.87% <96.87%> (ø)

...ilder/transformer/regex_str_replace_transformer.py
95.83% <0%> (-4.17%)
:arrow_down:

...tabuilder/extractor/postgres_metadata_extractor.py
93.44% <0%> (-1.64%)
:arrow_down:

...abuilder/extractor/snowflake_metadata_extractor.py
93.44% <0%> (-1.64%)
:arrow_down:

databuilder/publisher/neo4j_csv_publisher.py
84.07% <0%> (-1%)
:arrow_down:

databuilder/task/neo4j_staleness_removal_task.py
56.98% <0%> (ø)
:arrow_up:

... and 1 more

Continue to review full report at Codecov.

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

cc @gtoonstra
Hey @gtoonstra , would you mind taking a look? Thanks :)

will take a look

@lsimoneau let me know once you update the branch and we are good to go.

@feng-tao updated to address your comments

I don't understand what happened to coverage. It was fine before that last commit but nothing significant changed?

no worry, coverage sometimes is a bit weird :(

merged, thanks @lsimoneau , when you have a chance, could you also update the readme to include a doc for the extractor? Thanks.


Mirror Tree

Would like to add an algorithm for converting a binary tree into its mirror tree in C++.
Please assign this to me under gssoc2021.

I want to work on this issue. Please assign to me.


Directus is not a PHP CMS anymore

Since version 9, Directus is based on Node.JS
See https://docs.directus.io/guides/installation/manual/

updated, thanks @ondrakoupil!


footer and contact us page

In website footer has nothing  that much  and also it has missing contact us section
@MAVRICK-1 assign this issue to me i can design both things for website.

@NitinChakrawarti Please assign me this issue. I can complete it.


Adding the focusableWhenDisabled parameter on aria:Button widgets

Blind users often navigate in a page with tab, which means they cannot notice disabled widgets, which are not focusable.
When those widgets are essential to understand the page, this is a problem, especially for buttons. This commit allows important buttons to be focusable when they are disabled, by setting the focusableWhenDisabled parameter to true.

@fbasso Thank you for your review.


Anonymous session tokens?

Does the Python client have any way to create anonymous session tokens? It could be useful for demo code where I didn't want to expose the token associated with my account and I didn't need the list operations I was performing to persist, long-term.
I couldn't see one, and ended up writing something like this (it's probably awful, given my python skills... ;)
service_url = "http://www.humanmine.org/humanmine/"
token = requests.get(url=service_url + "/service/session")
token = token.json()["token"]
service = Service(service_url, token=token)

Hi @yochannah , yes its possible but only for 24 hours.
You are using the sessions tab of InterMine API in your code : "http://iodocs.apps.intermine.org/flymine/docs#/ws-session/GET/session"
Maybe we can make a function for this, say get_random_token() ?

fixed as part of #47


Docs on usage of Web.GetFileByUrl method in SharePoint REST API?

Hi,
I see that there are docs for using GetFolderByServerRelativeUrl and GetFileByServerRelativeUrl methods in the SharePoint REST API, however, I couldn't find any docs on using GetFileByUrl method with SharePoint REST API.
Could that information be added please?
Thanks,

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

ID: da51381a-7a39-8c31-8af8-b05ecafc377a
Version Independent ID: 693ecf1c-8e75-1f61-0264-fbdefaff0968
Content: Working with folders and files with REST
Content Source: docs/sp-add-ins/working-with-folders-and-files-with-rest.md
Product: sharepoint
GitHub Login: @spdevdocs
Microsoft Alias: spdevdocs

Actually, Official document didn't list the usage of GetFileByUrl.
This is the sample to use this method, actually it's using the absolute file url like this:
https://tenant.sharepoint.com/_api/web/GetFileByUrl(@url)?@url='https://tenant.sharepoint.com/Shared Documents/0 (7).jpg'
This is the difference with GetFileByServerRelativeUrl

Thanks @Jerry0527
I've given it a shot and I'm getting either the FileNotFound or "fileURL" is missing error, I've tried different combinations.
What am I doing wrong here, here's my example:
https://contoso.sharepoint.com/_api/web/GetFileByUrl(@url)?@url='https://contoso.sharepoint.com/teams/TechTeam-Contoso-/Shared Documents/General/Email Messages/FW Phase 1 Migration  to affected users_123456.eml'

Hi @haneef95,
It seems the file is located at the site url:
https://contoso.sharepoint.com/teams/TechTeam-Contoso-/
Then should like this:
https://contoso.sharepoint.com/teams/TechTeam-Contoso-/_api/web/GetFileByUrl(@url)?@url='https://contoso.sharepoint.com/teams/TechTeam-Contoso-/Shared Documents/General/Email Messages/FW Phase 1 Migration  to affected users_123456.eml'


Commands not executing correctly when there are more than 3 enemies per wave?

Is FGA bugged with the CCC event, specifically, with the battles that generates more enemies?
The issue: I would enter my commands, (h,#,c4,#,eig25) and essentially my goal is to facetank battle 1, np battle 2 and facetank the rest, np battle 3 and facetank the rest. The problem is the script is executing battle 2 commands on battle 1, wave 2.
 Dont see anyone talking about this.
I can provide more detail if needed.

Duplicate of #462
It's either that the background moves or that you have to adjust the stage counter similarity setting.

Ah I see what you mean. Yea the background moves and even at 100% it doesnt work. Thanks for the help.

100 % only leads to the error happening in any quest, since the Stage 1/3 part of the screen must be 100 % the same without any pixel of difference.
Reducing it might help.


"Player" embed option tries to embed wrong url

**TL;DR: in the "player" embed code, the attribute id="asciicast-23535" is incorrect. it should be id="asciicast-<id-of-cast>". example:

Long version:
the js embedded with the "player" embed option:

quick test page

which, when run, turns into:

the iframe src is https://asciinema.org/api/asciicasts/23535 which shows me:

this is because the code 23535 is wrong. it should be https://asciinema.org/api/asciicasts/8pgmezlut3880svafm3880vzl

Looks like a bug indeed, It's a problem with private asciicasts embedding. It's a quick fix.


fix for larger matrices

will now correctly handle setPattern() with delimiters. Lack of
delimiters on matrices with > 9 dots means that dot '10' will be
interpreted as two dots: '1' and '0'. This fixes that.
Mind that you need to set the correct delimiter in the lock that gets
setPattern().

Can't merge as its showing all the lines are committed. Will be hard to track later. I will fix the issue as a separate commit.

Also we should support both array  and string for the pattern passed . Will add that check too.

Good points. Yes I think using Git's Windows program messed up the line
endings.
--
Sander Van de Moortel
Communication consultant
NL - EN - SV - FR - DE - ZH
+886 978 068 409 (Taiwan)
skype: sandervdm
On Sun, Jul 17, 2016 at 6:54 AM, Sudhanshu Yadav<EMAIL_ADDRESS>wrote:

Also we should support both array and string for the pattern passed . Will
add that check too.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/s-yadav/patternLock/pull/17#issuecomment-233165185,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFdVNHGYL8CyxdMiuLVSoqpFP2KF_vkkks5qWbWAgaJpZM4JGH_n
.


Component- Buttons

Figma frame with color and button styles

@isaacpearl
This one is pretty straight forward. Use the ThemeUI Button. If there are certain styles missing implement them into our theme file index.js file.
I imagine that most if not all buttons on our site will actually be links to other pages. This means you can most likely make a Button component that actually implements the Link component.
Composition Example:
Default
<Button to={"/en/whatever"}>
Button Text
</Button>

Secondary
<Button secondary to={"/en/whatever"}>
Button Text
</Button>

Outline
NOTE: Support outline styles for both primary button and secondary style.
<Button outline to={"/en/whatever"}>
Button Text
</Button>

<Button secondary outline to={"/en/whatever"}>
Button Text
</Button>

After some tweaks, I can confirm this is completed.


Unit test "framework" is weak

Originally reported on Google Code with ID 121
There, I said it. :) It's much better than no tests, but we really should
be using SimpleTest.

Feeling out the server environment (e.g. ability to write files, detect
auto-compression) needs to be easier to run on first "install". Maybe /min/
setup/ could run a little suite.

For now it seems reasonable to require devs running units to have
SimpleTest be in the include_path, but maybe there's a way to link this in
with svn without adding it all to our repo.

Reported by mrclay.org on 2009-06-29 02:03:28

@mrclay what was your opinion to add phpunit based testing?
i would like to add new processor using nailgun to launch closure compiler.
i would like to add unit test there, but i find phpunit test setup more stright forward than the webpased tests you have now.
the current tests can stay, as still need to test with browser.
but  the new test i plan to add, would be just testing the new class.
so, if you say +1, would be appropriate to add second unit test tree?:

/phpunit.xml
/tests/FooTest.php
/tests/Foo2Test.php

or mix with current /min_unit_tests/ ?

unit tests were ported to phpunit in #486


The styles are not being applied for non-p tags

The styles are not being applied for non-p tags.

I deal with it by explicit style changes using useEffect, but I believe it's not so effective:

Oh let's check it out!

@altmshfkgudtjr is this issue fixed?

@altmshfkgudtjr is this issue fixed?

Not Yet

@hero9991
I need more information.
Is there a value to set font-size among the  tag styles in the photo shown as an example?

@altmshfkgudtjr
Sorry I haven't been online for a while.
Yes, I found that there is a class which applies some styles, as shown below:
.text_1 {
font-size: 1.33333em; // when I disable this option, the font size is corrected
line-height: 1.2;
}

This is the part I have been thinking about since making the library!
In fact, tags such as <p>, <span>, <h1>, and <h2> vary depending on how they are made, so it is difficult to apply the font size to all tags at once.
So, currently, it is applied only to the p tag, but I am thinking about applying the style to the HTML document.
However, if you do that, you can usually adjust the font size in %, em, or rem units, but it will be difficult to adjust it to exactly a few px.
Which one is the better choice?

If I understand correctly, you propose as a solution to set the main font-size to HTML document and adjust it for different tags in relative units.
Sounds good to me, but I have one concern. I'm not so familiar with EPUB books and don't know how they are made (what kind of tags are used and for what purposes). So, if we could apply the correct font-size for text, title and so onб it would be excellentб even if it would be in relative units.

I agree. 👍
In my opinion, it is ideal to specify the main font size in the HTML document, and each tag has a relative font size!
I think there's a reason Epub creators use absolute units like px. However, I am still confused. It is necessary to discuss how the policy of react-epub-viewer should be set.
For example, it is currently implemented so that the px value can be adjusted, but in the future, it may be necessary to allow the font size to be adjusted with a relative value rather than the px value.
We need your opinion on which one will give the user a more optimal experience.

I agree as well.
The option with relative font sizes is totally fine. 👌


refactor header helpers

 pub fn get_as_str<T: Into<HeaderName>>(&self, key: T) -> Option<&str> {
        self.get(key).map(|v| v.as_str())
    }

I think we should just get rid of the variants of this methods and only have the variants which return a crate::Result. If you need an option, you can just call .ok() on the Result.
And of course, then we just use the simpler naming convention and not the or_err names.
https://github.com/Azure/azure-sdk-for-rust/pull/833#pullrequestreview-1013829560

    pub fn get_as_enum<T: Into<HeaderName>, V: FromStr<Err = E>, E>(

This is a bit more general than for enums. Can we call this get_as_parsed or something like that? I think get_as_u64_or_err  can be implemented using this function.

get_as_parsed sounds good. I'm not sure about removing the variants. Right now:

Option is used if the header is optional
or_err variants are a shortcut for unwrap_or_err for when the header is required, if return a Result::Err.
the get_as_u64 and get_as_enum may fail parsing, and thus return a Result::Err

Some options I'd like to explore:

keep fallible conversions separate and remove get_as_u64 and get_as_enum
renaming or_err functions

may be require, require_str and require_string

The last thing to consider is renaming some of the methods. I'll take a look at that tomorrow.

This was finished in #864


Add assembly version and label

Creating a revision:

Add/edit labels of existing revisions (only available for revision/review owner):

Creating a review:

Fixes https://github.com/Azure/azure-sdk-tools/issues/367, https://github.com/Azure/azure-sdk-tools/issues/782, and https://github.com/Azure/azure-sdk-tools/issues/476

I wonder if it's worth simplifying and only allow editing names when creating a revision.

I wonder if it's worth simplifying and only allow editing names when creating a revision.

If this were a brand new tool, I would agree it would be fine to start with just creation. But given the amount of clean up that will be needed for existing reviews, I think this is a nice feature. It will only show up for revision owners so most users of the tool will not see it.

What problem are we solving by having revision labels?

What problem are we solving by having revision labels?

Without this, reviewers have to use trial and error to find the revision that they want to compare with or review when looking at old revisions. It also gives a quick indication of the purpose behind new revisions - revision owners can label it to give reviewers a heads up as to why there is a new revision.

Is it worth aligning modification date to the right?

Is it worth aligning modification date to the right?

Actually, I think this isn't needed as there should be plenty of room for the edit label box.

@JoshLove-msft is it possible to generate and supply labels as part of the initial upload process? For example, I have just worked on a PR (here: https://github.com/Azure/azure-sdk-tools/pull/889) that removes the version number from Java uploaded artifacts (e.g. we would not see a review named azure-core-3.1.1.jar, we would now see it azure-core.jar). This means it might be interesting when we upload reviews to have a label automatically generated for the version number.

Alternatively, maybe we should consider introducing a new field in the uploaded json file to represent the version of the library.

@JoshLove-msft is it possible to generate and supply labels as part of the initial upload process? For example, I have just worked on a PR (here: #889) that removes the version number from Java uploaded artifacts (e.g. we would not see a review named azure-core-3.1.1.jar, we would now see it azure-core.jar). This means it might be interesting when we upload reviews to have a label automatically generated for the version number.

Yes, we do this for .NET currently - the version number is not included in the review name (so it doesn't appear on the main reviews page), but it is included in each revision name. My understanding is that the review name will always be based off of the file name that is uploaded. The revision name is based on the Name from the CodeFile (which I think is what can be specified in the JSON - though .NET doesn't use JSON here). Is the goal to have the version numbers in the revision names, but not in the review name? If so, I would think that including the version number as part of the JSON along with making an adjustment to the file name logic (referenced above) when the uploaded file ends with sources.jar might work.

I'm not completely following what you're recommending. My change in the PR referenced above seems like the first step - getting the version number out of the review name (even though the java jar file name includes the version number - I strip that out now). I guess the thing I'm not clear on is how to set the revision name? Is it just the same 'Name' field that is used in both cases? If so, I'm not sure how I can generate different JSON output depending on if it is a new review or a revision to an existing review?

I'm not completely following what you're recommending. My change in the PR referenced above seems like the first step - getting the version number out of the review name (even though the java jar file name includes the version number - I strip that out now). I guess the thing I'm not clear on is how to set the revision name? Is it just the same 'Name' field that is used in both cases? If so, I'm not sure how I can generate different JSON output depending on if it is a new review or a revision to an existing review?

My understanding is that the review name isn't based on the JSON output at all, but rather solely on the name of the jar file that you upload. If this is the case, you wouldn't need to strip out the version in your JSON, but rather would need to strip out the version in the file name here. The revision name, is based on the JSON Name field, so leaving in the version there should be what we want.

Ah - perhaps my understanding was incorrect then - I had assumed the review name was based on the name field in the json also. I will test that now with a hand-edited json file.

You were right - it is based on the uploaded file name rather than the name in the json.

I will update my PR to change the Name field to be something like azure-core (Version x.y.z). How best should we introduce the removal of the version from the uploaded file name for Java?

PR updated to use the following form in the 'Name' field: azure-core (version 1.7.0-beta.1).

In my naivety, it feels like it would be better to separate the file name that is uploaded from the display name, and to have the preferred display name as something that is recorded in the json file itself?

I will update my PR to change the Name field to be something like azure-core (Version x.y.z). How best should we introduce the removal of the version from the uploaded file name for Java?

I think we can probably tie this into the existing languageServices stuff in ReviewManager.
We can add:
 public virtual string GetReviewName(string originalName) => originalName;

And then override this in JavaLanguageService.
And call it from ReviewManager.CreateReview.

Here is the Java code for how I would rename the uploaded file for the overall review (i.e. stripping off the version and .jar text): https://github.com/Azure/azure-sdk-tools/pull/889/files#diff-ba2340773c9f412f826d3d2c8ca0cc28R107-R113
Although maybe .jar is required....unless we use my new 'Language' field in the Json :-)

In my naivety, it feels like it would be better to separate the file name that is uploaded from the display name, and to have the preferred display name as something that is recorded in the json file itself?

Yeah that is fair. Now that we have the ability to label reviews, I don't think users need the flexibility of renaming the file (nor do I think anyone was actually aware of this "feature" 😄). I would be fine with using the name returned from the first revision as the base for the review name, as opposed to the file name.

Although maybe .jar is required....unless we use my new 'Language' field in the Json :-)

Jar is required to be the extension of the file name that is uploaded as it is used to determine the language service to use. It shouldn't matter if it is stripped off of the Name that comes back in the Json.

I think we need to clean up the semantics around names reading the name from JSON seems the right thing we just need to double-check all generators produce something useful.
We can also have Name and RevisionName properties in JSON where one can be used for review and other for revision.

It's a chicken and egg problem. We need to know which generator to call before we can read the language off JSON otuput.

Could we perhaps have a front-end to the generator that takes a given file and determines how to proceed. I can see very simple heuristics that would probably work in many cases - e.g. if the uploaded file is a jar, 'my' generator would likely say "it's mine!".

Could we perhaps have a front-end to the generator that takes a given file and determines how to proceed. I can see very simple heuristics that would probably work in many cases - e.g. if the uploaded file is a jar, 'my' generator would likely say "it's mine!".

Yeah, I thought about it but invoking 7 external tools per upload is a bit too much. We can still write it in C# thought.


⚠ Bofrost.be has degraded performance

In 5e512be, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 852 ms

Resolved: Bofrost.be performance has improved in 424c7ea after 6 minutes.


[alpaka] Fix Boost version constraints

When I proposed to include the alpaka library in #26812 I added version constraints for alpaka's Boost dependencies. However, it seems that the format for the version I entered was not correct. At least, if I use alpaka as a dependency in a project in manifest mode, I get the following error:
$ cmake -DCMAKE_TOOLCHAIN_FILE=~/dev/vcpkg/scripts/buildsystems/vcpkg.cmake ..
-- Running vcpkg install
Error: No version entry for boost-core at version 1.74. This may be fixed by updating vcpkg to the latest master via `git pull`.
Available versions:
    1.80.0#1
    1.80.0
    1.79.0
    1.78.0
    1.77.0
    1.76.0
    1.75.0
    1.74.0
    1.73.0
    1.72.0
    1.71.0
    1.70.0
    1.69.0
    1.68.0
    1.67.0
    1.66.0

See `vcpkg help versioning` for more information.

Notice that vcpkg says that there is no version 1.74 but the version 1.74.0 is available.

What does your PR fix?

It (tries to) fix the version constraints for Boost in the alpaka port. Please tell me if it is correct now!

Which triplets are supported/not supported?

Yes.

Yes

Thanks for the fix!


BIG-IQ Licensing Documentation needs more examples

The documentation for BIG-IQ licensing needs better examples.
We need an explicit example for each license pool type BIG-IQ support:

Purchased Pool
Registration Key (where you can specify the RegKey if you want)
Utility Pool

The example terms (words used to describe each pool attribute) MUST match the BIG-IQ documentation.
In addition, the section on non-routable declarations, where the BIG-IQ does not have a route to the BIG-IP, should describe the license interaction with a graphic diagram and why a hypervisor attribute is required.

Tracking with internal issue 246

DO supports registration key pools, but does not support allowing you to specify the registration key to use from that pool.

DO does not currently support specifying the reg key to use from a reg key pool.
Hypervisor is required for unreachable devices because it is required in this API and DO cannot guess the value for this.

Examples of using BIG-IQ for licensing from a Declarative Onboarding declaration can be found here: https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest/bigiq-examples.html
If there is something missing from those examples, please open a new issue describing the specific piece that is missing.


dns: destroy/reinitialize c-ares channel on ARES_ECONNREFUSED

Description: this PR adds logic to the DnsResolverImpl to destroy and re-initialize its c-ares channel under certain circumstances. A better option would require work in c-ares https://github.com/c-ares/c-ares/issues/301.
Risk Level: med changes in low-level DNS resolution.
Testing: pending (need to leave early today, but will get back to it next week)
Fixes #4543
Signed-off-by: Jose Nino<EMAIL_ADDRESS>

Whoops did not mean for you to review my half baked code. Thanks for the comments though, I agree with all of them @mattklein123. Will update and write tests Monday.


[Enhancement] Analyze job support exclude properties

What type of PR is this：

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[x] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
Add statistics job properties: statistic_exclude_pattern, a regex, to forbidden some table to collect in a job. Example, don't collect td.a1 table in analyze job
MySQL td> create analyze all properties ('statistic_exclude_pattern' ='td.a1');
Query OK, 0 rows affected
Time: 0.015s
MySQL td> show analyze;
+---------+----------+-------+---------+--------+----------+-----------------------------------+---------+---------------------+--------+
| Id      | Database | Table | Columns | Type   | Schedule | Properties                        | Status  | LastWorkTime        | Reason |
+---------+----------+-------+---------+--------+----------+-----------------------------------+---------+---------------------+--------+
| 2558263 | ALL      | ALL   | ALL     | SAMPLE | SCHEDULE | {}                                | PENDING | None                |        |
| 7109666 | ALL      | ALL   | ALL     | SAMPLE | SCHEDULE | {statistic_exclude_pattern=td.a1} | FAILED  | 2023-02-20 10:45:37 |        |
+---------+----------+-------+---------+--------+----------+-----------------------------------+---------+---------------------+--------+
2 rows in set
Time: 0.007s

Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[ ] 2.5
[ ] 2.4
[ ] 2.3
[ ] 2.2

[FE PR Coverage Check]
:disappointed: fail : 7 / 13 (53.85%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/sql/analyzer/AnalyzeStmtAnalyzer.java
1
7
14.29%
[167, 170, 171, 172, 173, 174]

:large_blue_circle:
com/starrocks/statistic/StatisticsCollectJobFactory.java
6
6
100.00%
[]

run starrocks_admit_test

run starrocks_admit_test

run starrocks_fe_unittest

[FE PR Coverage Check]
:disappointed: fail : 7 / 13 (53.85%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/sql/analyzer/AnalyzeStmtAnalyzer.java
1
7
14.29%
[167, 170, 171, 172, 173, 174]

:large_blue_circle:
com/starrocks/statistic/StatisticsCollectJobFactory.java
6
6
100.00%
[]


--cookies option, get cookies dynamically

Checklist

[x] I'm reporting a site feature request
[x] I've verified that I'm running youtube-dl version 2021.12.17
[x] I've searched the bugtracker for similar site feature requests including closed ones

Description
When having to use the --cookies option for sites with cloud fare protection:

rather than having users install a third party extension (stated in guide) then manually run it each time they need to download

Suggestion

get the cookies dynamically, use curl as it gets cookies in netscape format, otherwise you have to convert to netscape which takes some work
capture the cookie in a variable or something, don't write to file (more work)

I done this for a script I use, using curl here is a module from it:
IFS=$'\n'

getCookies() {
    curl $site \
      --silent \
      --output /dev/null \
      --user-agent $userAgent \
      --cookie-jar ~/cookies.txt
}

ytdl() {
    youtube-dl \
      --no-part \
      --no-check-certificate \
      --cookies ~/cookies.txt \
      --user-agent $userAgent \
     --download-archive arc.txt \
      ${urlArray[@]}
}

downloadSimultaneously() {
    local userAgent site urlArray
    IFS=$'\n'
    userAgent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0'
    site=$1
    urlArray=(${@:2})

    getCookies $site

    parallel -j 0 \
      ytdl ::: ${urlArray[@]}
}

export -f ytdl

For Python something like this:
from requests import *

headers = {
    "User-Agent": #site from download url
}

cookies = get('site from download url', headers=headers)

When yt-dl receives a Set-Cookie header from the site the cookie is stashed in a Python cookielib/http.cookiejar CookieJar accessible to extractor code as the cookiejar attribute of the extractor. The file specified by --cookies ... is updated with the received cookie, and could be passed to a subsequent yt-dl invocation. So yt-dl already includes the same functionality that curl offers (it doesn't have a --download-archive ... option, does it?).
Sometimes a site that rejects requests or redirects requests to a captcha page will send authorisation cookies to bypass this blockage if a specific site page or API URL is visited. An extractor for the site can do that as part of its _real_initialize() method.

cookies.txt starts as you wrote it and is updated by yt-dl as new cookies and values are set by the site.
yt-dl doesn't support the syntax/library modules needed for parallel execution but   but there is some support for it in yt-dlp.

Running multiple instances of yt-dl in parallel using the same output directory or download archive (etc) is not really supported. See #350 and the yt-dlp thread linked there.


Include MythX in CI

What does this PR introduce?
Adding MythX audit to analyse security vulnerabilities in smart contracts 🔐  🛠
MythX audit is now part of the CI, and will run on every PR to the branches "main" and "develop"
MythX Settings

run in deep mode: explore a larger space (x90) of program states and execution paths 👀  + faster computing time 🚀

use solc version 0.8.7

Run for the following contracts:

UniversalProfile.sol, Keymanager.sol, UniversalReceiverDelegate.sol, LSP7.sol, LSP8.sol x 5
their proxy version x 5
Create2Factory.sol

Run asynchronously with the async flag.

More informations about the deep mode can be found in this MythX blog post: MythX Pro Security Analysis Explained

@frozeman @Hugoo
Not sure about the following. Would be good to test with async: false
For the async mode, I wonder if we should keep it to:

true: this will make the CI to always pass, and just submit the contracts to MythX. The analysis reports can then be examined afterwards.

false: this will make the CI to keep running, until all the analysis are complete. It might take a while for each CI to run, but the CI would fail if High Vulnerabilities are detected.

Not sure about the following. Would be good to test with async: false For the async mode, I wonder if we should keep it to:

true: this will make the CI to always pass, and just submit the contracts to MythX. The analysis reports can then be examined afterwards.
false: this will make the CI to keep running, until all the analysis are complete. It might take a while for each CI to run, but the CI would fail if High Vulnerabilities are detected.

I'm in favour of the async false so it can really block the PR from being merged in case of issues.
If not, can we add a bot or something that add the security audit report in the PR discussion? (Similar to Codecov?)
@CJ42

@CallumGrindle what is your opinion on this?

Not sure about the following. Would be good to test with async: false For the async mode, I wonder if we should keep it to:

true: this will make the CI to always pass, and just submit the contracts to MythX. The analysis reports can then be examined afterwards.
false: this will make the CI to keep running, until all the analysis are complete. It might take a while for each CI to run, but the CI would fail if High Vulnerabilities are detected.

I'm in favour of the async false so it can really block the PR from being merged in case of issues.
If not, can we add a bot or something that add the security audit report in the PR discussion? (Similar to Codecov?)
@CJ42

I am in favour of a bot. If that could add that automatically as a comment to the PR, it would be really great.
As mentioned by @CallumGrindle , we could even write a script that call the MythX API and push a comment in the PR.


contributor

@all-contributors please add @newbe36524  for blog, code, doc and tutorial

@all-contributors please add @kotoneme for design

@all-contributors please add @EventHorizon1024 for idea


Create a Preview for each PR

Right now we have to test a PR locally that it works. Our CI should create a preview of each PR, so that we can simply see it right away. Typically that is achieved by pushing the PR into some review github pages as a branch with a url prefix so each PR has its own prefix and we can check that the page looks good.

We had to revert the fix, so I am reopening the issue also.

I think this needs re-opening unfortunately,
Test PR #55 failed to push the preview build to the repo.
There's a permissions problem.

I don't see any failure in that link. What kind of permission is needed?

I don't see any failure in that link.

Yeah it's a bit annoying, the marketplace action for pushing to the repo completes successfully even if the push failed.
Look under  > Commit and push to gh-pages /  > Internal logs.
It seems the github action for pull requests from forks only has read-only access.
I think a solution can be to have the preview build triggered explicitly when someone with write access comments #build_pr or something. I will look into this.

If we add you as collaborator with permissions on this repo, would you know how to set it up?

If we add you as collaborator with permissions on this repo, would you know how to set it up?

Yes I believe so


540/cleanup single location calls

Issue Number: 540
Summary
Cleanup Controller APIs, Aggregator Methods, DataSource methods, that expect "a collection of 1 Location"
Changes

Added new CarbonAwareConstant SingleLocation and renamed Location to MultipleLocations for clarity
Removed extra array wrapping in Controller and aggregator for location (wrapping a single location into an array so that we can later pull out the first element of that array in the aggregator/datasource)
Cleaned up error handling for checking the location property exists and added separate paths for single/multiple location functions

Checklist

[X] Local Tests Passing?
[X] CICD and Pipeline Tests Passing?
[ ] Added any new Tests?
[ ] Documentation Updates Made?
[ ] Are there any API Changes? If yes, please describe below.
[X] This is not a breaking change. If it is, please describe it below.

Are there API Changes?
No
Is this a breaking change?
No
Anything else?
Other comments, collaborators, etc.
This PR Closes Issue #

Codecov Report

Merging #123 (5ee02ae) into dev (a753dc5) will decrease coverage by 0.08%.
The diff coverage is 93.97%.

:exclamation: Current head 5ee02ae differs from pull request most recent head 14e71b6. Consider uploading reports for the commit 14e71b6 to get more accurate results

@@            Coverage Diff             @@
##              dev     #123      +/-   ##
==========================================
- Coverage   85.48%   85.40%   -0.09%
==========================================
  Files          52       52
  Lines        1688     1692       +4
  Branches      177      176       -1
==========================================
+ Hits         1443     1445       +2
- Misses        187      189       +2
  Partials       58       58

Impacted Files
Coverage Δ

src/CarbonAware.CLI/src/CarbonAwareCLI.cs
62.50% <0.00%> (ø)

...are.DataSources.WattTime/src/WattTimeDataSource.cs
89.70% <85.18%> (+0.15%)
:arrow_up:

...gregators/src/CarbonAware/CarbonAwareAggregator.cs
91.36% <100.00%> (-1.00%)
:arrow_down:

...CarbonAware.DataSources.Json/src/JsonDataSource.cs
76.19% <100.00%> (+1.19%)
:arrow_up:

...re.WebApi/src/Controllers/CarbonAwareController.cs
98.36% <100.00%> (-0.12%)
:arrow_down:

...Aware.WebApi/src/Controllers/SciScoreController.cs
75.92% <100.00%> (ø)


git checkout in windows machine

Hello, I got stuck when trying to create a git branch for my repository called lesson1. After adding git checkout -b lesson1, I got an error that says "not a git repository (or any of the parent directories): .git. Any advice? Thanks!
I am attaching a screenshot

You need move inside folder web-basics-1-week-1-********
type 'cd web' then push tab for autocomplete and hit enter.

@smykserhi That's correct! I forgot to open that folder. Thank you for your reply! :)


[BUG?] Inconsistent value while doing conditional rendering.

I am doing conditional rendering. So when the data is not ready I don't show children.
Expected behavior:
Consistent value across components regardless of conditional rendering.
Current behavior:
Value update is not synchronized, previous value is shown in Children.
Minimal reproduction:
https://codesandbox.io/s/swr-mutate-bug-uryb6
When you click into the mutate button twice, you see inconsistent values in the console.

Is this issue confirmed and going to be touched in some near future?
Or do you recommend migrating to react-query, seriously?

additional context repro version
seems this issue is been resolved with

this issue is reproed with v0.2.1-beta.2. seems to be resolved in the new versions. @0xkoffee you can upgrade to latest version of swr to solve this issue.


[Feature Request] New Poster Attributes

If you use popular or filter by rate, popular or other criteria, can pick in local the poster of the first result like this:
data[0].poster

For example:
collections:
  Most Popular Movies (30 Days):
    sync_mode: sync
    tautulli_popular:
      list_days: 30
      list_size: 10

Maybe for other API like Anilist:

anilist_popular

TMDB and other:

tmdb_popular
tmdb_top_rated

An option to get the first popular movie and set her poster.

I can probably do that it just idk doesn't seem useful to me but ill see what I can do. Personally I just use these but I can add it if you want

I can probably do that it just idk doesn't seem useful to me but ill see what I can do. Personally I just use these but I can add it if you want

No, after thinking about it I think it would be useless to add it, the user could confuse it with the series/movie in question, you can close the exit if you wish.


GSD Request

--- GSD JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from  to before v5.4.180",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c6a7077144ed291cfbf736875ad0fe89e6291f02"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "c6a7077144ed291cfbf736875ad0fe89e6291f02",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "scsi: target: iscsi: Make sure the np under each tpg is unique\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v5.4.180 by commit c6a7077144ed291cfbf736875ad0fe89e6291f02. For more details please see the references link."
}
--- GSD JSON ---

This issue has been assigned GSD-2022-1000333


Pending flag is not triggered when setting as a global in config

Fiddle: https://jsfiddle.net/718msvfo/
when setting a delay as config option when initializing vee-validate, the pending flag never triggers.

Pending does not include the delay time, it only indicates the status of the pending validation once it started.
Including the delay time would make your users confused as they are typing in the fields and the field would appear in perpetual "pending" state until they stop typing. So this is by design and not a bug.
Feel free to make a case for it and we can discuss it.


Update example project

This PR fixes #2636 by updating the pinned Plutus library commits to the most recent version and fixing a template-haskell dependency issue. Also updated the development image to a GHC 8.10.2 version. Building the VSCode devcontainer configuration locally with these fixes revealed no problems!
Pinging @j-mueller for review since he reviewed my previous example project update 😃  Thank you!
Pre-submit checklist:

Branch

[x] Commit sequence broadly makes sense
[x] Key commits have useful messages
[x] Relevant tickets are mentioned in commit messages

PR

[x] Self-reviewed the diff
[x] Useful pull request description
[ ] Reviewer requested

If you updated any cabal files or added Haskell packages:

[ ] $(nix-build default.nix -A plutus.updateMaterialized) to update the materialized Nix files
[ ] Update hie-*.yaml files if needed

If you changed any Haskell files:

[ ] $(nix-shell shell.nix --run fix-stylish-haskell) to fix any formatting issues

If you changed any Purescript files:

[ ] $(nix-shell shell.nix --run fix-purty) to fix any formatting issues

Pre-merge checklist:

[ ] Someone approved it
[x] Commits have useful messages
[ ] Review clarifications made it into the code
[x] History is moderately tidy; or going to squash-merge

Added another commit that fixes the shell.nix configuration for these updates.

Added another commit that fixes the shell.nix configuration for these updates.

Thank you! Generally looks good, I'd like to try it out before merging it, I think I can do it this afternoon.

Thank you! Generally looks good, I'd like to try it out before merging it, I think I can do it this afternoon.

@j-mueller That sounds great, actually! I can move it over there. I can also make the example a little more "full-fledged" so it actually demonstrates basic use of the libraries.

@j-mueller That sounds great, actually! I can move it over there. I can also make the example a little more "full-fledged" so it actually demonstrates basic use of the libraries.

That would be great, thank you!

That would be great, thank you!


Text("", ...) raising an error

When trying to display a text object without any content, an error is raised instead of it working.

A possible workaround is to just ignore empty strings just like text outside the display is ignored.

Was this fixed on the latest release?

Yes, this one is good now: "" is simply ignored.


Shift key inserts extra unwanted character

What steps will reproduce the problem?
1. Close keyboard by swiping down.
2. Click to bring up the keyboard for typing.
3. When the shift key is FIRST pressed an unwanted character is inserted.
(whether it is the first key pressed or later on in the text entry)

What is the expected behavior? What do you see instead?
The shift key by itself should not enter a character.
It can be a repeat of the last letter entered, or the last letter passed when
last closing by swiping down.
It only happens once i.e. for the first press of the shift key, and then only
if the keyboard was previously closed by swiping. Subsequent use of the shift
key is normal for that typing session.

What version of Hacker's Keyboard are you using, for example "1.37"? (See
"Debug" section at the bottom of the app's Settings menu.)
It happens in version 1.37 (tried 1.33 and had the same problem too)

On what phone or tablet?
Samsung Galaxy Tab S 10.5

If applicable, does this affect the 4-row or 5-row layout, or both? Which
language(s)?
It affects both 4 and 5 row layouts (English language)

Please provide any additional information below.
It seems as if a character is sitting on a "clipboard" and is inserted with the
first shift key press.
It causes passwords to be rejected as invalid if they require the use of the
shift key. It happens with the default Hackers Keyboard settings.
I don't think I ever had the problem on an older Asus tablet.
Thanks

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 10 Jun 2015 at 8:47

Confirmed here. It looks like it's a pending key-up from when the keyboard was closed.


Project dependencies should work in builds run using GradleBuild task

The changes in https://github.com/gradle/gradle/pull/5173 completely broke dependency resolution for builds run using GradleBuild, so that project dependencies cannot be resolved for these builds.
Expected Behavior
Project dependencies should work regardless of how a build is run.
Current Behavior
Project dependencies don't work in builds run using GradleBuild.

This is fixed.


Update schedule to signal converter handling of phase accumulation

The schedule -> signal converter currently ensures that the output signals satisfy Equation (1) of this paper, with the frequency interpreted as the current channel frequency value given by SetFrequency/ShiftFrequency instructions, and the phase interpreted as being the value given purely by SetPhase/ShiftPhase instructions.
As pointed out by @nkanazawa1989 in this notebook however, frequency changes result in phase accumulation on real IBM backends. Hence, the phase in Equation (1) should actually be a function of the SetPhase/ShiftPhase instructions, as well as the SetFrequency/ShiftFrequency instructions (and the times at which they occur).
We should update the behaviour of the pulse -> signal converter to be consistent with this.

I guess the mathematical condition is to keep exp(i(2 * pi * f * t + phi)) continuous under frequency changes? So if f is shifted phi needs to be shifted to preserve continuity?
Is it enough to change lines 137-138 to also shift the phase (and similarly lines 143-144 for the SetFrequency instruction?).
E.g. something like:
    if isinstance(inst, ShiftFrequency):
        phases[chan] += (frequency_shifts[chan] - inst.frequency) * start_time * self._dt
        frequency_shifts[chan] += inst.frequency

Not sure I have the exact correct time or signs, but I think something along these lines should work.

Thank you for your response.
Exaclty, your idea is much similar to my first idea. The only difference is whether the phase accumulation term is explicit or embedded in the phase. Of course, I think that this is easier to implement.
Only my concern is that the adding term to phase becomes ssomewhat complex. However the implementation is very simple, so if you don't mind, I want to choose this method.
And let me add one more thing. I think that t is t is different from start_time. It is necessary to keep the time of shifting frequency because you need to accumulate for  $\Delta$ t.

Hmm interesting - can you write down what the mathematical formula should be in this case?
It's a good point though that it should maybe be tracked separately from the phase, as if phase is accumulated due to ShiftFrequency/SetFrequency, and we store it in the phase, this information could be accidentally erased by a SetPhase instruction. This is maybe another thing to check: what is the expected interaction between ShiftFrequency/SetFrequency and SetPhase.

The below code doesn't represent a methematical fomula but you maybe understand the phase accumulation if you read it.
The point is that 2 * pi * $\Delta$ f *  $\Delta$ t is phase-accumalated when shifting frequency.
import numpy as np
import matplotlib.pyplot as plt
import random
X = np.linspace(0,3,601)

# prepare for shift frequency times and two frequencies
sf1 = random.randint(101,200)/100
sf2 = random.randint(201,300)/100
f1 = 1
f2 = 0.7
x_f1 = []
x_f2 = []
y_f1 = []
y_f2 = []
for x in X:
    if x < sf1:
        x_f1.append(x)
        y_f1.append(np.sin(2 * np.pi * f1 * x))
    elif x < sf2:
        x_f2.append(x)
        # phase accumulation 2 * pi * (f1-f2)*(sf1 -0)
        y_f2.append(np.sin(2 * np.pi * (f2 * x + (f1-f2)*sf1)))
    else:
        x_f1.append(x)
        # phase accumulation 2 * pi * (f2-f1)*(sf2 -sf1)
        y_f1.append(np.sin(2 * np.pi * (f1 * x + (f2-f1)*(sf2-sf1))))

plt.scatter(x_f1,y_f1,color = "red")
plt.scatter(x_f2,y_f2,color = "blue")

Thank you, I think I understand. Can you slightly modify your example so that the second SetFrequency is to a third frequency f3, just to make it fully general?
So just to confirm what you've said: The phase accumulation due to SetFrequency/ShiftFrequency, call it freq_phase, needs to be tracked separately from the phase being set by SetPhase/ShiftPhase, as otherwise SetPhase could accidentally erase the phase accumulation. Is this correct?
That seems reasonable, but I think we may need to create an example, similar to @nkanazawa1989 's original example that includes SetFrequency/ShiftFrequency instructions, AND a SetPhase instruction, to confirm how real backends interpret combinations of these instructions. What do you think?

ASAIK the SetPhase is not supported by IBM hardware (only ShiftPhase is available).

But I agree we need some test case that include both commands. I guess shift phase command will introduce phase discontinuity, but at this point it is natural to assume amp=0 because we cannot interleave the frame moderation command during the pulse and pulse usually starts and ends with amp=0. Otherwise, such discontinuity cannot be perfectly reproduced on hardware because of the transient phenomenon, and it could also cause issue in simulator because the master equation might diverge.

The current frame in the dynamics is semi-stateful because it only knows the current phase and frequency value. To consider the phase accumulation it must need to know the time at which the frame was previously modulated.

Thank you, I think I understand. Can you slightly modify your example so that the second SetFrequency is to a third frequency f3, just to make it fully general?

This is good question. We would naively reference to f2, but I'm not sure if this is really expected behavior.

I updated my example.
As a code, it is enough to add $\Delta$ f *  $\Delta$ t to freq_phases[chan] every time SetFrequency/ShiftFrequency.

I updated my example. As a code, it is enough to add Δ f * Δ t to freq_phases[chan] every time SetFrequency/ShiftFrequency.

Is it Δ f * Δ t or just Δ f * t, where t is the time at which the shift is happening? Your code above seems to be this latter one. Either way seems like you've got it figured out now!

Sorry for confusion. As a result, it is Ok to use $\Delta$ f *  t , which corresponds to start_time * self._dt  you showed.
It will be resolved among us. I would like to show the demo about this in order to confirm whether this behavior is consistent with that of readl device  in the pulse meeting (https://ibm-quantumcomputing.slack.com/archives/GFHBSC3EY/p1668997127965569).

Closed by #164


🔁 PyTest and coverage workflow

Prepare the GitHub action to complete the unit tests of STGraph upon any pushes. Also setup the code coverage after each test

PyTest and Code coverage has been added to the PyTest GitHub Actions


[gha] fail on failed sccache unit test runs.

Motivation
Clean up things I forgot
Have you read the [Contributing Guidelines on pull requests]
Yes
Test Plan
CI
Related PRs
None
If targeting a release branch, please fill the below out as well

Justification and breaking nature (who does it affect? validators, full nodes, tooling, operators, AOS, etc.)
Comprehensive test results that demonstrate the fix working and not breaking existing workflows.
Why we must have it for V1 launch.
What workarounds and alternative we have if we do not push the PR.

/priority high

:exclamation: Land has been canceled due to this PR being updated with new commits. Please issue another Land command if you want to requeue this PR.

/land

:broken_heart: Test Failed - ci-test-success

/land

:exclamation: Land has been canceled due to this PR being updated with new commits. Please issue another Land command if you want to requeue this PR.

/land

:exclamation: Land has been canceled due to this PR being updated with new commits. Please issue another Land command if you want to requeue this PR.

/land

:broken_heart: Test Failed - ci-test-success

/land

:exclamation: Land has been canceled due to this PR being updated with new commits. Please issue another Land command if you want to requeue this PR.

release binaries dependency change summary:
target packages:
  R boogie-backend-exp 0.1.0 (workspace, path 'language/move-prover/boogie-backend-exp')
    * (old features: [none])

/land

:exclamation: Land has been canceled due to this PR being updated with new commits. Please issue another Land command if you want to requeue this PR.

/land

release binaries dependency change summary:
target packages:
  R boogie-backend-exp 0.1.0 (workspace, path 'language/move-prover/boogie-backend-exp')
    * (old features: [none])

:exclamation: Land has been canceled due to this PR being updated with new commits. Please issue another Land command if you want to requeue this PR.

/land

release binaries dependency change summary:
target packages:
  R boogie-backend-exp 0.1.0 (workspace, path 'language/move-prover/boogie-backend-exp')
    * (old features: [none])

:broken_heart: Test Failed - ci-test-success

/land

/cancel

/land

:broken_heart: Test Failed - ci-test-success

/land

/cancel docker-compose-tests failed.  non deterministic.

/land


feat: change the behavior of CloudStoragePath#toString()

Codecov Report

Merging #5 into master will increase coverage by 0.34%.
The diff coverage is 89.47%.

@@             Coverage Diff              @@
##             master       #5      +/-   ##
============================================
+ Coverage     71.13%   71.48%   +0.34%
- Complexity      481      493      +12
============================================
  Files            29       29
  Lines          1642     1655      +13
  Branches        265      268       +3
============================================
+ Hits           1168     1183      +15
+ Misses          348      345       -3
- Partials        126      127       +1

Impacted Files
Coverage Δ
Complexity Δ

...ud/storage/contrib/nio/CloudStorageFileSystem.java
72.60% <88.23%> (+6.50%)
36.00 <9.00> (+9.00)

...d/storage/contrib/nio/CloudStorageReadChannel.java
79.51% <100.00%> (-0.25%)
18.00 <0.00> (ø)

...ge/contrib/nio/CloudStorageFileSystemProvider.java
62.91% <0.00%> (+0.46%)
76.00% <0.00%> (+3.00%)

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 fd6de38...db74524. Read the comment docs.


Feature/dss11 sc 103170 mea use model contextual code env

Use contextual code env instead of a dedicated code environment.
This consists in 2 changes:

Update of webapp.json -> useContextualCodeEnv parameter to true.
Pull kneed and mealy dependencies locally.

Therefore the plugin now works with the contextual code with python >= 2.7 versions

Therefore the plugin now works with the contextual code with python > 2.7 versions

Why does it not work in py2?

My bad, I updated. I meant >= 2.7.

Plus indeed the imports should be updated for the unit tests

The imports for the unit tests should probably be updated as well (and mealy can be removed from the requirements.txt of tests/python/unit)


Preserving SQL Whitespace in "Create View"

When making new views, the SQL logic may get extensively long. For improved visibility, is it possible to adjust/preserve the whitespace between writing?
https://user-images.githubusercontent.com/59004211/176968162-26ad4a4e-df7c-4ced-ab02-1b5658eec69a.mp4

Thanks @Zwky26, currently we working on updating "Create View" element.
We going to add formatter for SQL statements, as well as fix for https://github.com/SoftwareCountry/Perseus/issues/627

@Zwky26 done

Tested and confirmed working


I cant save module configuration

Hello, I installed this plugin by your instructions. However, if I go to Administration/plugins, and choose appropriate points, configuration don't save. Log files are empty.

Unfortunately I am not actively maintaining this plugin - but I'd love to accept a Pull Request if you happen to figure out this one!

+1


Jagged index array raises FIXME

Version of Awkward Array
1.4.0
Description and code to reproduce
The following code
array = ak.layout.ListOffsetArray64(
    ak.layout.Index64(np.r_[0, 2]),
    ak.layout.NumpyArray(np.random.uniform(size=(2, 4)))
)
t = ak.argmax(array, axis=-1, keepdims=True)
y = array[t]

raises this traceback
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
/tmp/ipykernel_46426/3125939061.py in <module>
      1 t = ak.argmax(y, axis=-1, keepdims=True)
----> 2 q = y[t]

RuntimeError: FIXME ListArrayOf<T>::SliceVarNewAxis. 2021-02-10 Was this left over from development? If so, it's not getting tested. If anyone out there encounters this error, please report it so that we can properly validate this code path and include it in the tests. https://github.com/scikit-hep/awkward-1.0/issues/new?assignees=&labels=bug+%28unverified%29&template=bug-report.md&title=

At a glance, it looks like this is being triggered from
https://github.com/scikit-hep/awkward-1.0/blob/e258f4f2a252e599c48549f1d294e05b2b65b020/src/libawkward/array/ListOffsetArray.cpp#L796-L812

The history of that exception was that I was reviewing some of @nsmith-'s corrections to jagged slicing, and I came upon this function that didn't look to me like it could ever be reached. (I couldn't construct an example that would trigger it.) I thought it might be dead code, but instead of removing it, I put this FIXME error message in, so that an example that triggers it would be reported and we can use that example to understand how that code path is reached.
If it were Python, we could just put an exception at that point and look at the stack trace. Since it's C++, we'll have to do a bit more work, but it's still possible.
Thanks!

I will look into debugging this with Valgrind / gdb; I've not touched any of the compilation code yet, so it will be interesting to see whether CLion can handle the CMake project.

This code is slated for conversion into Python (which is why I have Python stack traces in mind), but if this is a common enough case—that I somehow wasn't able to make up—then waiting for v2 may be too long.
If it depends crucially on the "list-of-IndexedArray-of-X" and not, for instance, on "list-of-IndexedOptionArray-of-X", then that point in the code could simply project() the IndexedArray.

I can also trigger this with a more conventional layout:
y = ak.Array([
    [
        [1,2,3,4],
        [5,6,7,8],
    ]
])
y = ak.to_regular(y,axis=-1)

Could you help me to understand what this particular overload is supposed to do? By name, SliceVarNewAxis seems like np.newaxis, but there is also SliceNewAxis, so there is clearly more going on here.

SliceVarNewAxis had to be added later, as an alternate form of SliceNewAxis. They're very similar, made to distinguish between np.newaxis applied to a regular axis vs a variable axis? I'll have to look it up.

SliceNewAxis and SliceVarNewAxis shouldn't be relevant because none of these slices involve any np.newaxis.
But there's definitely something murky here.
>>> y = ak.to_regular(ak.Array([[[1, 2, 3, 4], [5, 6, 7, 8]]]), axis=-1)
>>> y
<Array [[[1, 2, 3, 4], [5, 6, 7, 8]]] type='1 * var * 4 * int64'>
>>> y.layout
<ListOffsetArray64>
    <offsets><Index64 i="[0 2]" offset="0" length="2" at="0x56448d7a6940"/></offsets>
    <content><RegularArray size="4">
        <content><NumpyArray format="l" shape="8" data="1 2 3 4 5 6 7 8" at="0x56448d7aa960"/></content>
    </RegularArray></content>
</ListOffsetArray64>

and
>>> t = ak.argmax(y, axis=-1, keepdims=True)
>>> t
<Array [[[3], [3]]] type='1 * var * 1 * ?int64'>
>>> t.layout
<ListOffsetArray64>
    <offsets><Index64 i="[0 2]" offset="0" length="2" at="0x56448d7a9b30"/></offsets>
    <content><RegularArray size="1">
        <content><ByteMaskedArray valid_when="false">
            <mask><Index8 i="[0 0]" offset="0" length="2" at="0x56448d7a9bb0"/></mask>
            <content><NumpyArray format="l" shape="2" data="3 3" at="0x56448d7a9ab0"/></content>
        </ByteMaskedArray></content>
    </RegularArray></content>
</ListOffsetArray64>

First of all, this is the simplest and most natural example that triggers the bug:
>>> y[t]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/jpivarski/irishep/awkward-1.0/awkward/highlevel.py", line 996, in __getitem__
    tmp = ak._util.wrap(self.layout[where], self._behavior)
RuntimeError: FIXME ListArrayOf<T>::SliceVarNewAxis. 2021-02-10 Was this left over from development? If so, it's not getting tested. If anyone out there encounters this error, please report it so that we can properly validate this code path and include it in the tests. https://github.com/scikit-hep/awkward-1.0/issues/new?assignees=&labels=bug+%28unverified%29&template=bug-report.md&title=

Is it the fact that t has an option-type? No.
>>> t2 = ak.fill_none(t, 999, axis=-1)
>>> t2
<Array [[[3], [3]]] type='1 * var * 1 * int64'>
>>> t2.layout
<ListOffsetArray64>
    <offsets><Index64 i="[0 2]" offset="0" length="2" at="0x56448d7a9b30"/></offsets>
    <content><RegularArray size="1">
        <content><NumpyArray format="l" shape="2" data="3 3" at="0x56448d7ad660"/></content>
    </RegularArray></content>
</ListOffsetArray64>
>>> y[t2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/jpivarski/irishep/awkward-1.0/awkward/highlevel.py", line 996, in __getitem__
    tmp = ak._util.wrap(self.layout[where], self._behavior)
RuntimeError: FIXME ListArrayOf<T>::SliceVarNewAxis. 2021-02-10 Was this left over from development? If so, it's not getting tested. If anyone out there encounters this error, please report it so that we can properly validate this code path and include it in the tests. https://github.com/scikit-hep/awkward-1.0/issues/new?assignees=&labels=bug+%28unverified%29&template=bug-report.md&title=

Does it depend on this depth of nesting? Yes.
>>> y[0]
<Array [[1, 2, 3, 4], [5, 6, 7, 8]] type='2 * 4 * int64'>
>>> t[0]
<Array [[3], [3]] type='2 * 1 * ?int64'>
>>> y[0][t[0]]
<Array [[4, 4, 4, 4], [8, 8, 8, 8]] type='2 * var * ?int64'>

But—murkiness—it's not okay if the slicer (t) does not have potentially missing values.
>>> y[0][t2[0]]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/jpivarski/irishep/awkward-1.0/awkward/highlevel.py", line 996, in __getitem__
    tmp = ak._util.wrap(self.layout[where], self._behavior)
ValueError: in RegularArray attempting to get 3, index out of range

(https://github.com/scikit-hep/awkward-1.0/blob/1.4.0/src/cpu-kernels/awkward_RegularArray_getitem_next_array_regularize.cpp#L19)

Oh, but I guess that's because this has become a strictly regular array problem, and it's deferring to NumPy rules.
>>> y0 = ak.to_numpy(y[0])
>>> t20 = ak.to_numpy(t2[0])
>>> y0
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
>>> t20
array([[3],
       [3]])
>>> y0[t20]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: index 3 is out of bounds for axis 0 with size 2

That's the design—the potentially missing values makes the slicer be interpreted as a nested slice—but a bit counter-intuitive because it looks like a small change from the case in which the values are not formally nullable. But NumPy does not ever do nested slices; each dimension has to be a separate array in a tuple, and any multidimensionalness in the slicer is taken to reshape the output. Both of those considerations presuppose rectilinear data.
So this "murkiness," at least, is understood. It's a poor fit to advanced NumPy slicing features and the idea of variable-length data. But the FIXME error message should not be encountered. y[t2] may be the simplest case that demonstrates it, and the fact that y[0][t[0]] doesn't demonstrate it seems like a major clue.

Yes, it seems that this code path is indeed coming from ListOffsetArrayOf<T>, given this call stack:
awkward::ListArrayOf<long>::getitem_next_jagged ListArray.cpp:2016
awkward::Content::getitem_next_jagged Content.cpp:1480
awkward::ListOffsetArrayOf<long>::getitem_next_jagged ListOffsetArray.cpp:811
awkward::RegularArray::getitem_next RegularArray.cpp:1554
awkward::Content::getitem_next Content.cpp:1449
awkward::Content::getitem Content.cpp:1398
getitem<awkward::ListOffsetArrayOf<long> > content.cpp:819
pybind11::detail::argument_loader<awkward::ListOffsetArrayOf<long> const&, pybind11::object const&>::call_impl<pybind11::object, pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), 0ul, 1ul, pybind11::detail::void_type>(pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), std::integer_sequence<unsigned long, 0ul, 1ul>, pybind11::detail::void_type&&) && cast.h:2042
pybind11::detail::argument_loader<awkward::ListOffsetArrayOf<long> const&, pybind11::object const&>::call<pybind11::object, pybind11::detail::void_type, pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&)>(pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&)) && cast.h:2014
pybind11::cpp_function::initialize<pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), pybind11::object, awkward::ListOffsetArrayOf<long> const&, pybind11::object const&, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), pybind11::object (*)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(pybind11::detail::function_call&)#3}::operator()(pybind11::detail::function_call&) const pybind11.h:192
pybind11::cpp_function::initialize<pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), pybind11::object, awkward::ListOffsetArrayOf<long> const&, pybind11::object const&, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::object (*&)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), pybind11::object (*)(awkward::ListOffsetArrayOf<long> const&, pybind11::object const&), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call&) pybind11.h:170
pybind11::cpp_function::dispatcher pybind11.h:767
cfunction_call 0x0000564ccb04b145
_PyObject_MakeTpCall 0x0000564ccb031bb6
_PyObject_VectorcallTstate abstract.h:116
_PyObject_VectorcallTstate abstract.h:103
method_vectorcall 0x0000564ccb08bfda
_PyObject_VectorcallTstate abstract.h:118
vectorcall_unbound 0x0000564ccb098359
vectorcall_method 0x0000564ccb098359
slot_mp_subscript 0x0000564ccb098359
PyObject_GetItem 0x0000564ccb073987
_PyEval_EvalFrameDefault 0x0000564ccb0ca7e6
_PyEval_EvalFrame pycore_ceval.h:40
function_code_fastcall 0x0000564ccb09803b
_PyFunction_Vectorcall 0x0000564ccb09803b
_PyObject_VectorcallTstate abstract.h:118
vectorcall_unbound 0x0000564ccb09803b
vectorcall_method 0x0000564ccb09803b
slot_mp_subscript 0x0000564ccb09803b
PyObject_GetItem 0x0000564ccb073987
_PyEval_EvalFrameDefault 0x0000564ccb0ca7e6
_PyEval_EvalFrame pycore_ceval.h:40
_PyEval_EvalCode 0x0000564ccb024560
_PyEval_EvalCodeWithName 0x0000564ccb109227
PyEval_EvalCodeEx 0x0000564ccb109269
PyEval_EvalCode 0x0000564ccb10928b
run_eval_code_obj 0x0000564ccb13bdc9
run_mod 0x0000564ccb176894
pyrun_file 0x0000564ccafffe4a
pyrun_simple_file 0x0000564ccb17ca02
PyRun_SimpleFileExFlags 0x0000564ccb17ca02
pymain_run_file 0x0000564ccb17d0d5
pymain_run_python 0x0000564ccb17d0d5
Py_RunMain 0x0000564ccb17d0d5
Py_BytesMain 0x0000564ccb17d229
__libc_start_main 0x00007ff2ed7ed565
_start 0x0000564ccb0f63a1

The line that introduces the SliceVarNewAxis is https://github.com/scikit-hep/awkward-1.0/blob/eb61e07f52e06708d6c6d4238014218fd5288eb7/src/libawkward/array/RegularArray.cpp#L971
This is called from ListOffsetArray::asslice for my toy layout y in
https://github.com/scikit-hep/awkward-1.0/blob/eb61e07f52e06708d6c6d4238014218fd5288eb7/src/libawkward/array/ListOffsetArray.cpp#L1189

So, as per Gitter, I determined that SliceVarNewAxis is an undocumented (unsurprising given how much has been added recently!) feature that supports broadcasting 1-size dimensions in jagged advanced indices.
This is being raised for my test case because t is derived from a RegularArray, and so its size=1 dimension (from keepdims=True) is also regular. This is why the bug is not triggered when the keepdims=True dimension is irregular.

If removing the exception altogether returns the right result, then that's the best way to resolve this issue. The FIXME was added because I wasn't sure whether the whole function could ever be reached. If it can be reached and it does the right thing, then the function should stay and the exception should be removed. If it can be reached and it does the wrong thing, then it will unfortunately require more scrutiny.

In disabling this exception, the result fails with
ValueError: cannot fit jagged slice with length 1 into ListArray64 of size 2

(https://github.com/scikit-hep/awkward-1.0/blob/1.4.0/src/libawkward/array/ListArray.cpp#L1827)

The simplest reproducer for this is now

y = ak.Array(
    ak.layout.ListOffsetArray64(
        ak.layout.Index64(np.r_[0, 2]),
        ak.layout.ListOffsetArray64(
            ak.layout.Index64(np.r_[0, 4, 8]),
            ak.layout.NumpyArray(
                np.arange(8)
            )
        )
    )
)
t = ak.to_regular(ak.argmax(y, axis=-1, keepdims=True, mask_identity=False), axis=-1)

y[t]

@agoose77  I've been investigating this issue. Normally, the mixed variable and regular slicer that you made would be declared invalid: all-variable dimensions triggers Awkward advanced indexing and all-regular triggers NumPy advanced indexing; a mixture would be confusing, so it's not allowed.
However, it sneaks through because length-1 regular arrays in a slice are interpreted as SliceVarNewAxis: https://github.com/scikit-hep/awkward-1.0/pull/694/files#diff-a63810de74c2520ec41382cece2d156993c47ba9eb69772ce6b10a8262536e22
The use of the word "newaxis" is a little misleading; this is not representing a np.newaxis object in a slice, but a length-1 regular axis that was probably made by a np.newaxis. These tests demonstrate its use: https://github.com/scikit-hep/awkward-1.0/pull/694/files#diff-822ebabcc1ec64f9f91037a24a786bc869db7a9ebd334cf14189f5d8c0149988 (the np.newaxis modifies the slicer, which is then used to slice the array. SliceVarNewAxis objects are created when slicing array, not when slicing slicer.
This feature was added in a rush to prepare a tutorial that never happened (https://github.com/jpivarski-talks/2021-02-09-propose-scipy2021-tutorial/blob/main/prep/million-song.ipynb). It was the most minimal way I could see to add features that were necessary to do the analysis in that tutorial. The idea was that this is replicating a NumPy feature—boradcasting length-1 dimensions in slices—in Awkward advanced indexing. But Awkward advanced indexing fits a nested structure in the slicer to the nested structure that you're slicing, whereas NumPy advanced indexing slices each dimension by a different array, and all of those arrays in the tuple are broadcasted. NumPy advanced indexing is truly broadcasting because there are multiple arrays in the slicer; Awkward advanced indexing has only one array in the slicer, so it's not really broadcasting.
Treating a length-1 dimension differently from any other length makes this rule hard to predict. The idea was that you'd get the length-1 dimension from a np.newaxis, but in your case, you got it from a reducer with keepdims=True. I'm thinking this was a bad rule to have introduced: it has unforeseen consequences.
In the test suite, the rule is only triggered in the tests that were added to check it. The rule was never advertised (after all, that tutorial was never presented), and it is unlikely to have made its way into any analyses other than yours, since it's rather easy to trigger the FIXME (which is much older, and may yet be unreachable without the new SliceVarNewAxis rule). Slices that are enabled by the rule can still be performed without it—for instance, this test using the rule:
    array = ak.Array(
        [
            [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]],
            [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]],
        ]
    )
    slicer = ak.Array([[3, 4], [0, 1, 2, 3]])
    assert array[slicer[:, np.newaxis]].tolist() == [
        [[3, 4], [8, 9], [13, 14]],
        [[15, 16, 17, 18], [20, 21, 22, 23], [25, 26, 27, 28]],
    ]

can be replaced by the following, without the new rule:
    assert array[[[[3, 4], [3, 4], [3, 4]], [[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]]].tolist() == [
        [[3, 4], [8, 9], [13, 14]],
        [[15, 16, 17, 18], [20, 21, 22, 23], [25, 26, 27, 28]],
    ]

Your use-case is also possible, but only if the slicer is all-variable (in keeping with the rule to avoid confusion between Awkward advanced indexing and NumPy advanced indexing):
>>> y = ak.Array([[[1, 2, 3, 4], [5, 6, 7, 8]]])
>>> t = ak.argmax(y, axis=-1, keepdims=True)
>>> y[t]
<Array [[[4], [8]]] type='1 * var * var * ?int64'>

(y is allowed to have regular dimensions, but t can't mix regular with irregular. You could keep y irregular or make t regular.)
So I think I'm going to remove it, which reverts only PR: https://github.com/scikit-hep/awkward-1.0/pull/694.

I will be removing it: https://github.com/scikit-hep/awkward-1.0/discussions/1027


Apply appropriate alternatives for previous @readonly annotation usages in standard libraries

Description:
$Subject.
Relevant PR: https://github.com/ballerina-platform/ballerina-lang/pull/11890

Duplicates https://github.com/ballerina-platform/ballerina-spec/issues/189, Will use spec issue to track this.


Is there any way to set an 'empty' message for conversation without any messages yet?

I'd like to show a message like "Start a conversation with John. Send your first message." if the conversation doesn't have any messages. Does the AtlasMessagesRecyclerView or anything else have any kind of setEmptyMessage method or something?

For technical assistance please reach out to us via support.layer.com.

I would also like to know how to achieve this.
Some combination of a LayerChangeEventListener listening for new messages, and a query to see if there are any active conversations?

Hello @timusus
We are working on a main version of Atlas-Android, we will ship this feature along side with it. For now, a simple work around will be to create an object of RecyclerView.AdapterDataObserver and register it on the Adapter, call onChanged on the dataObserver. That way, you can display an EmptyView and when there is data remove it.
Please let me know if this is still an issue.
Thanks


Updated delete method

The delete method now takes another argument for 'data' like its sibling methods do and uses the 'send' prototype to pass the data.

Thanks @cashhh.  Nice to have this consistent with the other methods. 👍

Awesome. Glad I could help.


Research: nnet integration to support message broadcast to all nodes

Description
This is a research project.  The goal is to explore the integration of nnet
(https://github.com/nknorg/nnet) into harmony nodes to replace the global pubsub interface.
Context
Currently, Harmony node is using pubsub module of libp2p (https://github.com/libp2p/go-libp2p-pubsub) to send messages within shard and cross-shard.  pubsub in libp2p is chosen to ensure the network resiliency and robustness against network partition.  However, global pubsub may not be efficient to deliver messages across different shards, especially beacon chain block broadcasting (https://github.com/harmony-one/harmony/blob/1a8494c069dc3f708fdf690456713a2411465199/node/node_handler.go#L139)
This project is to explore to integrate nnet library as a way to broadcast the beacon chain block. nnet is being developed as the networking layer of NKN blockchain (https://nkn.org/).
The goal of this project is to support two ways of broadcast support using either pubsub of libp2p or nnet.
You will need to work with both Harmony and NKN engineers to enable the support.
Acceptance Criteria

[ ] integrate nnet library into harmony node
[ ] unit test to cover at least 85% of new code
[ ] design an interface to support both pubsub of libp2p and nnet
[ ] support nnet discovery and global broadcast support
[ ] enable an option to use nnet library to broadcast the beacon chain block
[ ] testing using testnet (please contact team for support)
[ ] end to end test report with comparison of the two libraries, in terms of latency, bandwidth, amount of traffic

Reward
USD $15,000 equivalent of Harmony ONE token.

Let me provide some information on the nnet side.
The first thing I would recommend is to check nnet repo https://github.com/nknorg/nnet and get a feeling of what nnet does.
Then I would recommend taking a look at example directory, especially efficient-broadcast example showing how to use tree broadcasting to efficiently broadcast messages.
A few caveats I can think of:

nnet requires node to accepting incoming connections as it's using Chord DHT. This usually requires public IP address or port forwarding set up on node. If a node cannot accept incoming connections, he can still broadcast out messages, but won't be able to receive broadcasted messages sent by other nodes.
For reliability, it's recommended to have another mechanism to pull block from neighbors together with tree broadcasting. So basically tree broadcasting will deliver the block to like 99% nodes, and the rest 1% (e.g. the ones that cannot accept incoming connections) will pull it from its neighbors.

Feel free to let me know if you have any questions.

Sorry to see this one de-funded; it actually looks pretty interesting to me.

@LeoHChen Ahh.  Good... I'll see what I can do with it :)

Issue Status: 1. Open 2. Started 3. Submitted 4. Done
This issue now has a funding of<PHONE_NUMBER> ONE (14976.98 USD @ $0.15/ONE) attached to it.

If you would like to work on this issue you can 'start work' on the Gitcoin Issue Details page.
Want to chip in? Add your own contribution here.
Questions? Checkout Gitcoin Help or the Gitcoin's Discord
$1,973,934.71 more funded OSS Work available on the Gitcoin Issue Explorer

sdfsd

@KevinKelley are you still working on this? We are aiming to close out this bounty this week if not.

@givp I'm still here, still interested, still wanting (and needing) to work.
This one... it seems like a good thing, I'd love to get it working.  But I'm scared away by the scope.
I haven't done much, in terms of actual time working.  I've been thinking about it, reading, research, trying to get a plan going, but not a lot of productive work.  So... If you cancel, no harm no foul, deadline is past, and nothing produced.
Maybe better to put the money into other challenges?  I'll be watching, trying to get in, lol.
If this one is important?  Then, for me... I need to ...I don't know.  Maybe reduce the scope, have a couple phases, proof of concept and follow with actual integration...
This cuts across the whole system, far as I can tell... I'm not seeing much way for a single developer to manage that.  Switching the comm... yeah, okay, but then there's gonna be a whole lot of issues with the whole network, testing across sharding, across all nodes, how am I gonna manage that?
Thoughts?  I really do want to get involved, some way.

@KevinKelley No worries. I'll have to let @LeoHChen decide on changing the scope of this bounty.
Either way, I'm sure we can get you involved in other projects. Are you participating in the current Hackathon?
Feel free to DM me on Discord so we can go deeper. [Giv | Harmony#5499]

hi, @KevinKelley are you still interested in working on this project. We can discuss about the scope further, maybe split it into smaller bounties to start with.  Please reach out to me on twitter @leo_hao or discord. #lc4331


stdin = false together with cwd = (some other dir) produces invalid tempfile path for executable

When an executable is configured in formatter.nvim with stdin = false and at the same time with a cwd = that differs from nvim's current working directory, and the current buffer was opened with a relative file path, the resulting temporary file name will also be relative, but relative to the current working directory, not to the working directory of the spawned formatter.
Example configuration for clang-format
require("formatter").setup(
    {
        filetype = {
            cpp = {
                function()
                    return {
                        exe = "clang-format",
                        args = {},
                        stdin = false,
                        cwd = vim.fn.expand("%:p:h")
                    }
                end
            }
        }
    }
)

Reproduction

nvim subdirectory/test.cpp
:Format

Expected result
The file is formatted.
Actual result
The formatter throws an error: File or directory not found.
When the formatter is run, cwd will be /path/to/subdirectory/, but the temporary file passed to clang-format will be subdirectory/~some-filename.cpp instead of just ~some-filename.cpp.
Suggested solution
In format.lua, replace local bufname = vim.fn.bufname(bufnr) with local bufname = api.nvim_buf_get_name(bufnr), which apparently always returns an absolute path of the buffer instead of a relative path. This way, the temporary file will also be created with an absolute path.

Oh interesting. Thanks for the suggestion!