[SPARK-27096][SQL][FOLLOWUP] Do the correct validation of join types in R side and fix join docs for scala, python and r

What changes were proposed in this pull request?
This is a minor follow-up PR for SPARK-27096. The original PR reconciled the join types supported between dataset and sql interface. In case of R, we do the join type validation in the R side. In this PR we do the correct validation and adds tests in R to test all the join types along with the error condition. Along with this, i made the necessary doc correction.
How was this patch tested?
Add R tests.

Test build #103474 has started for PR 24087 at commit d33eef1.

@cloud-fan Very sorry. i wasn't aware that we do the join type validation in the R side. I have addressed this in this follow-up. Could you please kindly check when you have a chance.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/8891/
Test PASSed.

Test build #103474 has finished for PR 24087 at commit d33eef1.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/103474/
Test FAILed.

retest this please

Test build #103481 has started for PR 24087 at commit d33eef1.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/8898/
Test PASSed.

Test build #103481 has finished for PR 24087 at commit d33eef1.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/103481/
Test PASSed.

this is https://github.com/apache/spark/pull/24087#discussion_r265847681 we need to fix

@felixcheung

I would prefer expect_error as well

Yeah.. i had already made the change after @HyukjinKwon 's comment :-). I was running the test to make sure.

so personally my preference is not have the hardcoded list of join type and checks in R, as you imagine it's problematic to keep it up to date. problem is often time an error in SQL is not readable in R.

@felixcheung I see.. Ok..

@felixcheung @HyukjinKwon I have addressed the comments. I have kept the added tests for now. Please let me know if that is okay.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/8947/
Test PASSed.

Test build #103536 has started for PR 24087 at commit 72332e3.

Test build #103536 has finished for PR 24087 at commit 72332e3.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/103536/
Test PASSed.

that's fine. I assume these joins are super fast.
LGTM.

Merged to master.

Thank you very much @HyukjinKwon @felixcheung @srowen


Please update releases

I'm not familiar with building c++ dll's and stuff, but I see a lot of useful changes in latest commits, so could you please make them available for me and other dumbs

It would also be great to add some "rotation" field, where the orientation of OBB is stored as a quaternion


contrib.sites incompatibility?

Hi,
I been using django-google-sso in my project for a small site and a help desk,  before add the help desk the SSO works perfect!
But for the correct use of the models in the HelpDesk i need to use :
INSTALLED_APPS= [ ....     'django.contrib.sites',   .... ]
App that generate these on the library at the moment of making the callback with Google:
redirect_uri=http://example.com/google_sso/callback/
Making an error in the Google Console.
It's not taking the http://localhost:8000/, http://<IP_ADDRESS>:8000/ or the URL of the site.
I really dont know how to go around this issue.
I really appreciate that someone can help me with this!

Hi @julian998-dot ,
Thanks for the contact. The example.com domain is created when django starts the Django Sites Framework. For the callback, Django-Google-SSO will look, at this order:

The value from GOOGLE_SSO_CALLBACK_DOMAIN
The value from get_current_site as per Django Sites Framework

Probably the helpdesk package you mentioned starts the Django Sites Framework in your Project. That's why you have the default site (example.com) generated in your database.
You can try use the option GOOGLE_SSO_CALLBACK_DOMAIN to manually set the redirect URL:
# settings.py

GOOGLE_SSO_CALLBACK_DOMAIN="localhost:8000" # or env.MY_SSO_DOMAIN or something similar using dotenv files

But this can resolve only your local development. I suggest you read the helpdesk package on why it uses the Django Sites Framework, to correct config this option, if need it.

how can i insert google sign in icon in html ?

Hi, @umerghayaz ,
Thanks for the contact. If you need to change the icon shown on the button, you can use the GOOGLE_SSO_LOGO_URL option:
# settings.py

GOOGLE_SSO_LOGO_URL="https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/512px-Google_%22G%22_Logo.svg.png"  # default value


Adjust code logic in push_context.go

Adjust code logic in push_context.go
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[X] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Pull Request Attributes
Please check any characteristics that apply to this pull request.
[X] Does not have any changes that may affect Istio users.

@sniperking1234: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
9b32ce0b85f53d8ee15c2a79f98478b8bfac87a5
link
/test integ-pilot-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn In the previous version, if the length of matchedEnvoyFilters is equal to 0, there is no need to enter the following for loop. So I put this code in the above if judgment statement. This change will not affect other functions.

/retest

@howardjohn In the previous version, if the length of matchedEnvoyFilters is equal to 0, there is no need to enter the following for loop. So I put this loop in the above if judgment statement. This change will not affect other functions.

See https://github.com/istio/istio/wiki/Development-Conventions#superfluous-changes. I am not sure what benefit this has

In my IDE this code has warnings. So I changed the code order and did not affect the function.
If this is superfluous, please close this PR.


Ability to specify a name when defining a fixed palette index

You should be able to specify a name when defining a fixed palette value, which would be added to the group header as a define for that index. This would prevent the need for magic values when using fixed palette indexes.
For example, adding #FixedIndexColor: 2, 255, 255, 255, WHITE to a group named "gfx_group" in convpng.ini would add the line #define GFX_GROUP_WHITE 2 to gfx_group.h. You could then use gfx_SetColor(GFX_GROUP_WHITE); or similar.

I think that the user should probably do this themselves in their own header files actually. Otherwise they'll just end up doing #define THIS_IS_WHITE GFX_GROUP_WHITE when they could just do #define THIS_IS_WHITE 2

Maybe if it didn't prepend the group name to the user-specified one, then?
So doing #FixedIndexColor: 2, 255, 255, 255, THIS_IS_WHITE would just be THIS_IS_WHITE rather than GFX_GROUP_THIS_IS_WHITE.

But why add that feature when they can just do it themselves?

It eliminates the need for magic numbers
It makes the config file more readable because the name that is used in the program is used there too
It reduces the possibility that something gets broken while changing indexes around
It reduces the number of lines that need to be changed while changing indexes around
It reduces the amount of header files that need to be included, since most of the time the group header is going to be included anyway
Logically, the enum/defines that contain the meanings of palette values should be in the same header file as the definition of the palette

Fine.

Done :)


Example Dataset - Notebook 2

nb1 dataset download test fixed. Added new tests
dataset tests: nb2 support
dataset works for nb1
pycodestyle
nb2: notebook tests fix
nb2: notebook tests fix part 2

If you haven't already, please read through our contributing guidelines before opening your PR
What is the purpose of this PR?
Addresses Part 1 of #692. Adds downloading the minimum datasets required for Notebook 2. Adds a flexible testing suite for downloading the tests.
How did you implement your changes
Updates the process for Notebook 1. Wrote tests for checking that the correct data has downloaded, and that it has moved to the proper location.
Remaining issues

[x] Missed some small bits of documentation here and there.
[x] Need to run through the notebooks on the Docker to make sure everything is working properly.

This approach is beneficial in a few ways:

A user can run an arbitrary notebook with only the minimum data required, so they don't necessarily have to download the whole thing. For example, feather files can get pretty large, but they are not needed if someone just wants to run the first notebook.
In terms of test complexity, it's already as complex as it should be. For each new dataset, it will just need another function which will make sure that those files exist.
Keeping it this granular is good for adjusting the datasets incase there are incorrect files, updates or additions that we need to make.

With respect to overwriting previously generated files, this is a bit tricky. We could add an option to toggle overwriting data, and when it's set to false, it'll check to see if a folder already exists with the dataset name (like segmentation/deepcell_output, or segmentation/example_pixel_output_dir. Open to any other ideas too.

Got it. How long does it currently take to download the notebook 1 dataset? Given that the user will only have to do it once, I think it's okay if we trade some user-download time for making our life easier.
I think what might make sense is to have one set of example files for notebooks 1,2,3,4 and 4, and a different set for everything else.
We can decide at the end though. Let's merge each subsequent notebook update PR into this branch, and keep it off of main, until we see what all 4 four notebook datasets look like working together.

Will you add a section to the readme in this PR with a description of the example dataset? Maybe a tree-diagram of the raw image data, a list of channels, some information about how it's downloaded, etc


Context Deadline Should Be Respected

Exec should complete when a context deadline is exceeded or the context is cancelled. Resolve methods that haven't been started should not be started after a context has already expired.

This is already implemented: https://github.com/neelance/graphql-go/commit/e8590a10d5acadaa06f4655d877544677d6983bb


SOLR-15385 RawTypes Part IV, solr-core

https://issues.apache.org/jira/browse/SOLR-15385
This one is slightly bigger than the others, but I think the median change is also lower complexity. There were a lot of thornier issues that I decided to skip over completely for now in solr-core.

This one is slightly bigger than the others, but I think the median change is also lower complexity. There were a lot of thornier issues that I decided to skip over completely for now in solr-core.

Wow, I admire your stamina and patience with this cleanup effort! Thank you.
The sheer "Files changed 352" number made me wonder about a script to somehow split the review and tool assisted reviewing. And so I hacked up a script to help me, specifically looking for files that had only removals and/or relocations of @SuppressWarnings and/or additions of <Object> or <?> or <> i.e. easily reviewed low complexity changes.
On the assumption that no one else has yet started to review here I'd like to add two commits to remove 254+5 files from the scope of this pull request (i.e. defer them to Part V) leaving 93 files here to review on the github UI whilst the tests are running locally.

@cpoerschke so this is the "easy" changes left in here, right? Do you want me to open a new PR for the remaining 254+5 files or did you mean to add them back here once you were done with the first batch?


Optional, elasticsearch-powered full-text search

This is not top priority as rolling your own seach is quite easy to do but ideally we want to support this inside the codebase.
Searchly provides a free tier of two indices and 5MB of storage to play with so we can support full text even on Heroku.

Talked to Honza, his opinion is to require elasticsearch and provide vagrant + salt provisioning config for running everything locally as this will also help Windows users.

IMHO, search is must have feature and it would allow to implement more user-friendly navigation through category tree.
What do you think about elasticsearch in docker image instead of vagrant and separate catalog app, based on django-haystack? I think it will be more cheap in terms of development hours, also more flexible and SOA-way.

We've agreed to start with Haystack and the project already uses Docker so the plan to use Vagrant is no longer relevant.


Main navbar links to castle-nathria from the pvp page, but links to raid on all other pages.

Expected behavior, when on mplus.subcreation.net:

Incorrect behavior, when on pvp.subcreation.net:

Thanks! Will fix with tomorrow's update.

Fixed now.


Install managed package as unmanaged package

I've been having some issues with dynamically setting my callbackUrl in a connected app in a scratch org. I've reported the issue because I don't think it's working as intended, but I'm wondering if there's another way to work around the problem.
Is it possible to use cumulus to install a managed package as an unmanaged package. I updated my flow to use deploy with unmanaged: True, 'namespace_tokenize: True, and my path as src, but it failed looking for a package.xmlin the sub-directories undersrc`.
Am I missing something? Is it possible to do this currently? If not I can certainly code this up and submit a PR.

I'm cleaning out some older issues -- sorry for the lack of response last year.
This is what the dev_org flow is for in CumulusCI 2.


[Question] What's the difference between Preserve Gravity Vector and normal space pin behaviour?

The 1.5.7 release notes mention a new option to 'preserve gravity vector'.
The default Orienter behaviour is to retain the model up (Y) vector as gravity up (as opposed to OrienterThreeBody which allows 6dof repositioning). Is there a difference between how these work, and is one methodology preferred over the other?
Thanks!

This is a very welcome option. For example in my testing setup I have 2 spacepins on qr codes positioned opposite the room, but not straight in front of each other. A small error in the qr code scanning tilts my entire coordinate system. And then all the content positioned horizontally in the application, is also tilted.
However since activating this option I at one run where the coordinate system was still tilted. In fact it was tilted in a direction that I hadn't seen before. Maybe there's still a bug in some edge case? But I haven't been able to reproduce yet.

@zantiu but isn't this also resolved by using a regular Orienter (instead of an Orienter3Body) and using SpacePin.SetFrozenPosition() instead of SpacePin.SetFrozenPose()? Though with SetFrozenPosition the orientation will not be correct until both codes are scanned.

@camnewnham , that is correct, the difference between the Orienter and Orienter3Body is exactly that. The Orienter infers an implied rotation about the Y-axis from the different positions of the SpacePins projected onto the horizontal plane. The Orienter3Body allows a full 6-dof rotation to be inferred, once 3 or more space pins have been established.
The new option has no effect on space pins. It only affects the camera correction transform computed by the FrozenWorldEngine based on the internal graph of spatial anchors.
So referring to the teminology on this page:
No Pitch And Roll - If enabled, zero out pitch and roll from the transform from Playspace to Locked space, forcing it to be yaw only correction. Default is NOT enabled.
Orienter/Orienter3Body - If using Orienter, transform from Locked space to Pinned space will have a rotation about Y-axis (yaw only) as inferred from relative positions of space pins projected onto horizontal plane. If using Orienter3Body, rotation from Locked space to Pinned space inferred from relative positions of 3 or more space pins has 3 degrees of freedom.

The new option has no effect on space pins. It only affects the camera correction transform computed by the FrozenWorldEngine based on the internal graph of spatial anchors.

Ah, I see. I haven't noticed the pitch and roll being introduced to the camera from noisy tracking in prior versions of WLT.  If I am understanding correctly the No Pitch and Roll feature is error correction and shouldn't affect how space pins function - only the underlying anchor graph - in this case is there a reason why it's not enabled by default?

The reason it is not default is that when tracking is good, you actually want to use that information to slightly adjust the gravity vector. So I would not recommend using this on HoloLens, which has excellent anchor stability.
On mobile, we have seen some situations where anchor error introduces a slight tilt to the gravity vector. In these cases, the new option lets you override that bias. I would recommend that you do not use the "No Pitch And Roll" option unless you are seeing a problem with the gravity vector as computed by the Frozen World Engine.
You are correct that the "No Pitch And Roll" option does not directly affect how space pins operate.

That makes a lot of sense with the relationship between anchor stability (mobile devices vs. HoloLens) and this option. Thanks for the explanation!


Breadcrumb emphasis in treemap has no effect

Version
5.1.2
Reproduction link
https://echarts.apache.org/examples/en/editor.html?c=treemap-simple
Steps to reproduce
In your example, see link above, insert as option:
option = {
    series: [{
        type: 'treemap',
        breadcrumb: {
                        itemStyle: {
                            color: 'red'
                        },
                        emphasis: {
                            itemStyle: {
                                color: 'blue',
                                opacity: 0.6
                            },
                        }
                    },
        data: [{
            name: 'nodeA',            // First tree
            value: 10,
            children: [{
                name: 'nodeAa',       // First leaf of first tree
                value: 4
            }, {
                name: 'nodeAb',       // Second leaf of first tree
                value: 6
            }]
        }, {
            name: 'nodeB',            // Second tree
            value: 20,
            children: [{
                name: 'nodeBa',       // Son of first tree
                value: 20,
                children: [{
                    name: 'nodeBa1',  // Granson of first tree
                    value: 20
                }]
            }]
        }]
    }]
};

What is expected?
When moving the mouse over the breadcrumbs, the color should change from red to blue. (See https://echarts.apache.org/en/option.html#series-treemap.breadcrumb.emphasis.itemStyle.color)
What is actually happening?
The color stays red.

I check the code, this would be a new feature, breadcrumb doesn't support emphasis

In the meantime it would make sense to adapt the documentation then:
https://echarts.apache.org/en/option.html#series-treemap.breadcrumb.emphasis.itemStyle.color

Reproduction link
https://echarts.apache.org/examples/en/editor.html?c=treemap-simple
Steps to reproduce
In your example, see link above, insert as option:
option = {
series: [
{
type: 'treemap',
data: [
{
name: 'nodeA',
value: 10,
children: [
{
name: 'nodeAa',
value: 4
},
{
name: 'nodeAfddffd fdgdfg dgdgb dffvdfdvdfvfdvdb',
value: 6
}
]
},
{
name: ' nodeB7777777777777777777<PHONE_NUMBER>7777777777777<PHONE_NUMBER>7777777',
value: 20,
children: [
{
name: 'nodeBa',
value: 20,
children: [
{
name: 'nodeBa1',
value: 20
}
]
}
]
}
]
}
]
};
What is expected?
without overlaping the name should be shown in breadcrumb .
What is actually happening?
the name inside the breadcrumb is overlaping

@rakshith1997 Did you click the top right one?

yes , it happens for all the label and second breadcrumb

@rakshith1997 Did you click the top right one?

yes , it happens for all the label and second breadcrumb

By design

@rakshith1997 Did you click the top right one?

yes , it happens for all the label and second breadcrumb

By design

yes that's the bug


Added default tag for lana logs, changed existing tags

Resolves: MWPW-138029
This PR will provide default tag for lana logs, in cases where tag is not explicitly defined. Also, existing tag names have been changed in order to be more true to its source.
Before: https://main--dc--adobecom.hlx.page/acrobat/online/pdf-to-ppt?lanadebug&martech=off
After: https://mwpw-138029-default-tag-lana-logs--dc--adobecom.hlx.page/acrobat/online/pdf-to-ppt?lanadebug&martech=off

@saragajic11 Looks good, and please fix the linting issues.


MySQL

Please make it into mysqli or PDO. mysql_connect doesn't work anymore.

Could you please explain what the purpose of this pull request is? It looks like you're just replacing PDO with the older, less-secure mysqli library.

This already uses PDO, it doesn’t use mysql_connect... where are you getting that idea?

On Sep 7, 2019 at 5:41 PM,  <Manal Shaikh (mailto:notifications@github.com)>  wrote:
Please make it into mysqli or PDO. mysql_connect doesn't work anymore.
You can view, comment on, or merge this pull request online at:
https://github.com/therecluse26/PHP-Login/pull/238

Commit Summary
Adding Register functionality
Switching back to mysql functions
Using password hashing
Minor change
Updating readme.MD
Updating readme
File Changes
M   README.md (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-0)  (55)
A   adduser.php (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-1)  (42)
M   checklogin.php (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-2)  (90)
M   config.php (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-3)  (3)
A   createuser.php (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-4)  (44)
M   images/screenshot.png (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-5)  (0)
M   index.php (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-6)  (3)
A   js/create.js (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-7)  (45)
M   main_login.php (https://github.com/therecluse26/PHP-Login/pull/238/files#diff-8)  (91)
Patch Links:
https://github.com/therecluse26/PHP-Login/pull/238.patch
https://github.com/therecluse26/PHP-Login/pull/238.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly,   view it on GitHub (https://github.com/therecluse26/PHP-Login/pull/238?email_source=notifications&email_token=AB63QARLB2BE3N2R53PFKQDQIQNY3A5CNFSM4IURLYP2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HJ7HMGQ), or   mute the thread (https://github.com/notifications/unsubscribe-auth/AB63QAU3C24JETKYXYVF7DTQIQNY3ANCNFSM4IURLYPQ).

I'll need to recheck. The last time I saw was Mysql_connect
On Sun 8 Sep, 2019, 3:18 AM therecluse26<EMAIL_ADDRESS>wrote:

This already uses PDO, it doesn’t use mysql_connect... where are you
getting that idea?

On Sep 7, 2019 at 5:41 PM, <Manal Shaikh (mailto:
notifications@github.com)> wrote:
Please make it into mysqli or PDO. mysql_connect doesn't work anymore.
You can view, comment on, or merge this pull request online at:
https://github.com/therecluse26/PHP-Login/pull/238
Commit Summary
Adding Register functionality
Switching back to mysql functions
Using password hashing
Minor change
Updating readme.MD
Updating readme
File Changes
M README.md (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-0) (55)
A adduser.php (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-1) (42)
M checklogin.php (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-2) (90)
M config.php (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-3) (3)
A createuser.php (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-4) (44)
M images/screenshot.png (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-5) (0)
M index.php (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-6) (3)
A js/create.js (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-7) (45)
M main_login.php (
https://github.com/therecluse26/PHP-Login/pull/238/files#diff-8) (91)
Patch Links:
https://github.com/therecluse26/PHP-Login/pull/238.patch
https://github.com/therecluse26/PHP-Login/pull/238.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub (
https://github.com/therecluse26/PHP-Login/pull/238?email_source=notifications&email_token=AB63QARLB2BE3N2R53PFKQDQIQNY3A5CNFSM4IURLYP2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HJ7HMGQ),
or mute the thread (
https://github.com/notifications/unsubscribe-auth/AB63QAU3C24JETKYXYVF7DTQIQNY3ANCNFSM4IURLYPQ
).

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/therecluse26/PHP-Login/pull/238?email_source=notifications&email_token=AEZ7HSCDTKGLUS4EZJHV7UTQIQOUPA5CNFSM4IURLYP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6FC4UI#issuecomment-529149521,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEZ7HSHJHKHJQUBUGO5IQN3QIQOUPANCNFSM4IURLYPQ
.

It's not, but thank you.


remove old media type compat for plugins

Signed-off-by: Victor Vieux<EMAIL_ADDRESS>

LGMT (if tests pass)

A few test failures.

@riyazdf : We have finalized the mediaType for plugins in 1.13. As a result, riyaz/authz-no-volume-plugin needs to be repushed using latest master. Can you please take care of this ASAP?

@anusha-ragunathan: sure, just re-pushed!  Please let me know if I need to change anything else on the plugin

Thanks much for the quick response @riyazdf

@riyazdf : https://hub.docker.com/r/riyaz/authz-plugin-bad-manifest/ needs to be updated as well. Else TestAuthZPluginBadManifestFailsDaemonStart fails.

repushed and got it (and the entire suite) passing locally - please let me know if there other issues!
PASS: docker_cli_authz_plugin_v2_test.go:45: DockerAuthzV2Suite.TestAuthZPluginAllowNonVolumeRequest	10.428s
PASS: docker_cli_authz_plugin_v2_test.go:115: DockerAuthzV2Suite.TestAuthZPluginBadManifestFailsDaemonStart	8.825s
PASS: docker_cli_authz_plugin_v2_test.go:75: DockerAuthzV2Suite.TestAuthZPluginRejectVolumeRequests	9.359s
PASS: docker_cli_authz_plugin_v2_test.go:127: DockerAuthzV2Suite.TestNonexistentAuthZPluginFailsDaemonStart	15.996s

Looks like there's a failing test; https://jenkins.dockerproject.org/job/Docker-PRs-experimental/28110/console
22:12:35
22:12:35 ----------------------------------------------------------------------
22:12:35 FAIL: docker_cli_authz_plugin_v2_test.go:115: DockerAuthzV2Suite.TestAuthZPluginBadManifestFailsDaemonStart
22:12:35
22:12:35 [d64203c27e267] waiting for daemon to start
22:12:35 [d64203c27e267] daemon started
22:12:35 docker_cli_authz_plugin_v2_test.go:118:
22:12:35     c.Assert(err, checker.IsNil)
22:12:35 ... value *exec.ExitError = &exec.ExitError{ProcessState:(*os.ProcessState)(0xc423322a20), Stderr:[]uint8(nil)} ("exit status 1")
22:12:35
22:12:35 [d64203c27e267] exiting daemon

Also this test is failing, probably not related, so may be flaky;
22:08:08 ----------------------------------------------------------------------
22:08:08 FAIL: docker_cli_prune_unix_test.go:26: DockerSwarmSuite.TestPruneNetwork
22:08:08
22:08:08 [d763491403a44] waiting for daemon to start
22:08:08 [d763491403a44] daemon started
22:08:08 docker_cli_prune_unix_test.go:29:
22:08:08     c.Assert(err, checker.IsNil)
22:08:08 ... value *exec.ExitError = &exec.ExitError{ProcessState:(*os.ProcessState)(0xc42352a180), Stderr:[]uint8(nil)} ("exit status 1")
22:08:08
22:08:08 [d763491403a44] exiting daemon
22:08:11

ping @AkihiroSuda ^^

LGTM again

LGTM


Object comparison works different than function comparison

Hi there!
I'm trying to use object comparison but I'm not getting the expected results:
>>> import semver

>>> v1 = '0.10.4'
>>> v2 = '0.10.4-beta.1'

"""
from: semver#compare
The return value is negative if ver1 < ver2,
zero if ver1 == ver2 and strictly positive if ver1 > ver2
"""
>>> semver.compare(v1, v2) > 0
True
>>> semver.compare(v2, v1) < 0
True

# until here, everythings works as expected

>>> v1o = semver.parse_version_info(v1)
>>> v2o = semver.parse_version_info(v2)

>>> v1o
VersionInfo(major=0, minor=10, patch=4, prerelease=None, build=None)
>>> v2o
VersionInfo(major=0, minor=10, patch=4, prerelease='beta.1', build=None)

# this is where things go wrong:
>>> v1o > v2o
False
>>> v2o < v1o
False

Fixed by #55


PNM Tests

Coverage remained the same at 85.674% when pulling 3c62c28011cd58f1417e6ac9ed0b737d754e06c7 on pnm-tests into e99e8bb7d23a928242d8470b0c4c3ef3fb77da27 on master.


Want Energy-Efficient Mining ? Build It Underwater

As we are one doge Holder and Elon inspired 19-year-old twin inventors  .we are pleased to work with Elon and to the moon.
We are doing various R & D in underwater data centres and Crypto mining Rigs .we have developed an underwater Data Centre POC. And working towards a patent filling works for Underwater Minings.
The Data centres and mining consume over 70 % of its power for cooling systems. While doing Underwater crypto mining it dramatically reduces power consumption and is 100% sustainable.
In fact, we are doing a heat-exchange process commonly used for cooling submarines to the underwater data centre/minings. The system pipes seawater directly through the radiators on the back of each server or mining racks and backs out into the ocean.
All our underwater mining is powered by 100% sustainable energy like floating solar panels systems or wind energy.
To know more details and work with us kindly reach us  Backayardceators I Backyard creators Linkedin

Hi! Sounds interesting. I think you can do this without changes to Dogecoin Core!

Hi! Sounds interesting. I think you can do this without changes to Dogecoin Core!

Absolutely,we can use this technology for any mining like doge


Typo Error

Typo Error
@ https://learn.microsoft.com/en-us/azure/search/vector-search-ranking
+ When to use exhaustive KNN

- Typo : seconary
+ Replaced with : secondary

A seconary use case is to build a dataset to evaluate approximate nearest neighbor algorithm recall. Exhaustive KNN can be used to build the ground truth set of nearest neighbors.

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

ID: 13fee0b4-2020-ae5e-68db-740c872024df
Version Independent ID: 41fd063d-22e6-e814-6534-240cfb06214e
Content: Vector relevance and ranking - Azure AI Search
Content Source: articles/search/vector-search-ranking.md
Service: cognitive-search
GitHub Login: @Yahnoosh
Microsoft Alias: jlembicz

@BobbyAxelrods
Thanks for your feedback! We will investigate and update as appropriate.

@BobbyAxelrods, thanks for the heads up, this is fixed in the docs and the update will be posted on the next publish.
#please-close


added imprint and data protection to toc

I am closing the PR, since the changes were already merged into dev from another source.


Retrieving appDetails for multiple appIds fails

I tried to call appDetails with an array of app IDs as parameter, e.g:
$appDetails = Steam::app()->appDetails([730, 32330]);

Result:
Client error: `GET http://store.steampowered.com/api/appdetails/?appids%5B0%5D=730&appids%5B1%5D=32330&key=*REMOVED*&format=json` resulted in a `400 Bad Request` response

A call that works:
http://store.steampowered.com/api/appdetails/?appids=730,32330&filters=price_overview

Note that it only works when appending filters=price_overview.

Okay, I checked again and as it seems the correct usage would be:
$appDetails = Steam::app()->appDetails('730,32330');

The issue is probably on Steam's side because the request still fails:
Client error: `GET http://store.steampowered.com/api/appdetails/?appids=730%2C32330&key=*REMOVED*&format=json` resulted in a `400 Bad Request` response

Still, the request works when appending filters=price_overview to the query. Would it be possible to add an optional second $filters parameter to the appDetails method?

This is possible, but I wont have time to add this for a while.  If you would like to do a pull request, that would be great!

Does this request actually return anything meaningful when it does work? As far as I can see it only returns pricing details for one of the appIDs

Does this request actually return anything meaningful when it does work? As far as I can see it only returns pricing details for one of the appIDs

When it's easy enough to loop the apps you want data from I don't think providing it intenrally is useful. Plus I can't get any useful data out for both apps.

When it's easy enough to loop the apps you want data from I don't think providing it intenrally is useful. Plus I can't get any useful data out for both apps.


Area chart on dynamicAnimation show line before area color

Hello my friend.
Firstly, congrats for your plugin, thats awesome.
The problem:
When i try to make a realtime Area chart, i get a behavior interesting.
This is my code:
var lastDate = 0;
        var data = [];
        var data2 = [];
        function getDayWiseTimeSeries(baseval, count, yrange) {
            var i = 0;
            while (i < count) {
                var x = baseval;
                var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
                var y2 = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;

                data.push({
                    x, y
                });
                data2.push({
                    x, y: y2
                });
                lastDate = baseval
                baseval += 86400000;
                i++;
            }
        }

        getDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 20, {
            min: 10,
            max: 90
        })

        function getNewSeries(baseval, yrange) {
            var newDate = baseval + 86400000;
            lastDate = newDate
            data.push({
                x: newDate,
                y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min
            })
            data2.push({
                x: newDate,
                y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min
            })
        }

        var options = {
            chart: {
                height: 350,
                type: 'area',
                animations: {
                    enabled: true,
                    easing: 'linear',
                    speed: 800,
                    animateGradually: {
                        enabled: true,
                        delay: 100
                    },
                    dynamicAnimation: {
                        enabled: true,
                        speed: 150
                    }
                }
            },
            dataLabels: {
                enabled: false
            },
            series: [{
                name: 'RX',
                data: data
            }, {
                name: 'TX',
                data: data2
            }],
            xaxis: {
                type: 'datetime',
                range: 977600000,
            },
            yaxis: {
                max: 200
            },
            stroke: {
                curve: 'smooth'
            },
            tooltip: {
                x: {
                    format: 'dd/MM/yy HH:mm'
                },
            }
        }

        var chart3 = new ApexCharts(
            document.querySelector("#chart3"),
            options
        );

        chart3.render();

        window.setInterval(function () {
            getNewSeries(lastDate, {
                min: 10,
                max: 90
            })

            chart3.updateSeries([{
                data: data
            }, {
                data: data2
            }])
        }, 2000)

Explanation

What is happening instead?
The line of area is going to next point before the area color.

What is the behavior you expect?
Both, line and Area color go together to next point.

What error message are you getting?
None.

An the last one
Am i using correctly your plugin?

Can you please create a working codepen example?
So, I can look quickly and get to the issue?

Of course, give me a minute..

Here we go:
My CodePen
https://codepen.io/marciosalinodias/pen/PLrwRK
I have 500 error sometimes on codepen, so i created a jsfiddle to:
https://jsfiddle.net/marciosalinodias/3rwdbptx/
I put this values to 300 and 200 to make more visible:
animateGradually: {
    enabled: true,
    delay: 300
},
dynamicAnimation: {
    enabled: true,
    speed: 200
}

The original values are 100 and 150;
If i set to less values the line continue goes before the area color.

I understood your point.
Both the line and area paths are drawn separately as both have different calculations. Now, to animate the previous path with the next path, I morph it using SVG.js morphing functions. These morphing functions are difficult to sync paths which have different shapes (in this case, line and area have different shapes although they look similar).
So, I won't be able to help much as I rely on 3rd party SVG.js for morphing animation.

Alright my friend, im so glad for your quickly answer.
I will try to talk with them (SVG.js team) to find a way, and if exists, i come back.
If they have the solution can i try to make this feature and make a pull request?
Just to help everyone
Thanks for now.

Sure, a pull request is always welcome.

Was there ever a solution to this? I am having a similar issue, except much more pronounced due to a 1000ms animation.


Fix for gitlab URL

This is needed for some deployments that dont have gitlab.url configured

This is needed for some deployments that dont have gitlab.url configured

Yes, but let's fix it here nevertheless. Thanks!


Update/Adds Guide Card Component

👀 Overview
Adds a <GuideCard /> component
💬 Description
Adds a <GuideCard /> component to be used in the new Setup Guide.
I didn't add any tests as I didn't think they would provide any value. You would probably end up testing something like "that the passed title prop is displayed", which to me feels like implementation detail.
This component is covered in the apps <ProjectOverview /> tests.
🔗 Links
https://www.figma.com/file/ZEusAc1WLpCh313S0vrCdeFU/Setup-guide?node-id=0%3A1
📹 GIF (optional)

🚪 Start Points

lib/GuideCard/README.md
then
lib/GuideCard/index.js

👫 Related PRs (optional)
https://github.com/gathercontent/app/pull/1956
✅ Checklist

[ ] Tests written
[ ] Browser tested
[x] Added to documentation
[x] Added to storybook

 New project creation experience


Additional information about starter projects

In a devfile that is being used to define a stack, there could be multiple starter projects, each providing a separate starter application (simple app, app integrated with Kafka, reactive app etc.)
Today we only have a name field to distinguish between them. But for developer to make a choice between these starter applications, having more details information on the capabilities you get with each project will be necessary.
If we can add description to the project definition, devfile creators will be able to explain when to use which starter project and developers will be able to make a better decision.
projects:
  - name: "kafka-project"
    description: "Use this app to get a nodejs application for working with kafka"
  - name: "simple-project"
    description: "Use this app to get a simple "hello world" nodejs application"

We could also include this information and other relevant bits of information under a metadata section within the project.

Alternative 1: using 2 devfiles that reference the same parent devfile:
projects:
  - name: "kafka-project"
    description: "Use this app to get a nodejs application for working with kafka"
parent:
  - id: nodejs-stack

projects:
  - name: "simple-project"
    description: "Use this app to get a simple "hello world" nodejs application"
parent:
  - id: nodejs-stack

Alternative 2: using starterProjectOnly field only:
projects:
  - name: "kafka-project"
    description: "Use this app to get a nodejs application for working with kafka"
    starterProjectOnly: true
  - name: "simple-project"
    description: "Use this app to get a simple "hello world" nodejs application"

Discussed and agreed on alternative 3 because it's more straightforward for stack authors: projects will all be cloned, starterProject are supposed to be used in interactive mode only (user pick one) and the git repo get not be cloned but only source code get copied (kind of what git archive --remote=<repository URL> | tar -t would do).

@neeraj-laad I have updated the description to reflect our discussions


[WIP][RFC] Hyperlink Refactor - Registry Version

This pull request achieves most of the same goals as https://github.com/nvim-orgmode/orgmode/pull/790, but is structured in a similar way to orgmode.org.autocompletion.
This PR superseeds https://github.com/nvim-orgmode/orgmode/pull/790.
TODO: unit tests

Thanks for the review @kristijanhusak!
I've been processing a lot of the comments, but I'm left with a couple of questions:

maybe have a follow on the top links class.
Assuming you mean OrgLinks, How do you imagine this working?
Should the function signature be fun(link: OrgLinkHandler), and just call link:follow()?
OrgLinks doesn't really have anything it can follow, it's just a parser for a generic link.

And I'm currently of half a mind to split up each handler into a LinkFactory and a Link, so like:
local Id = Link:new('id')

function Id:new(id, target, files)
  -- Returns instance of Id
end

function Id:follow()
  -- Follows this instance
end

function Id:__tostring()
  -- Converts to link
end

local IdFactory = {}

function IdFactory:init(files)
  self.files = files
end

function IdFactory:new(id, target)
  return Id:new(id, target, self.files)
end

---@param input string
function IdFactory:parse(input)
  -- Parse id and target
  return self:new(id, target)
end

---@param lead string
function IdFactory:complete(lead)
  -- Find and return the completions
end

return IdFactory

This has the benefit of separating the link's functionality from the functionality to parse the link,
and ensures the files are always injected properly. Is this a structure that's desired?
If yes, should these two classes be split into separate files, or are they so interlinked they should live in the same file?
And how does this impact the structure for custom handlers?
(The complete function can be omitted from the factories for this PR as you suggested, but it's included here to illustrate the responsibilities of the Factory VS the responsibilities of the Link itself.)

I'll attempt to answer both of your comments with an example. This is what I have in mind:
Top level OrgLinks would look something like this:
local OrgLinks = {}

function OrgLinks:new(opts)
  local this = setmetatable({
    files = opts.files,
    sources = {},
    sources_by_name = {},
  }, OrgLinks)
  this:setup_builtin_sources()
end

function OrgLinks:setup_builtin_sources()
  self:add_source(require('orgmode.org.links.sources.headline'):new({ files = self.files }))
  self:add_source(require('orgmode.org.links.sources.custom_id'):new({ files = self.files }))
  --- etc
end

function OrgLinks:add_source(source)
  if self.sources_by_name[source:get_name()] then
    error('Link source ' .. source:get_name() .. ' already exists')
  end
  self.sources_by_name[source:get_name()] = source
  table.insert(self.sources, source)
end

---@param link string
function OrgLinks:follow(link)
  -- For example, link = 'file:~/Documents/notes.org::headline'

  for _, source in ipairs(self.sources) do
    -- I named this `can_handle`, but we can think of a better name, maybe `source:matches` or `source:handles`
    if source:can_handle(link) then
      return source:follow(link)
    end

    -- Alternative is to atempt to follow immediately and return boolean if it was successful or not
    if source:follow(link) then
      return true
    end
  end
end

return OrgLinks

And then the headline link example would look like this:
local OrgLinkHeadline = {}

function OrgLinkHeadline:new(opts)
  local this = setmetatable({
    files = opts.files,
  }, OrgLinkHeadline)
end

---@param link string
function OrgLinkHeadline:can_handle(link)
  -- check if link have any of these formats
  -- * file:~/Documents/notes.org::*headline
  -- * *headline

  if 'matches_above_checks' then
    return true
  end

  return false
end

function OrgLinkHeadline:follow(link)
  local link_parts = self:parse_link_parts(link)
  -- if se use the altnerative approach to follow immediately in the for loop, we can just check if parsing parts was successful or not
  local headlines = self.files:find_headlines_by_title(link_parts.headline)
  return utils.goto_oenof(headlines)
end

return OrgLinkHeadline

And the custom id source would look like this:
local OrgLinkCustomId = {}

function OrgLinkCustomId:new(opts)
  local this = setmetatable({
    files = opts.files,
  }, OrgLinkCustomId)
end

---@param link string
function OrgLinkCustomId:can_handle(link)
  -- check if link have any of these formats
  -- * file:~/Documents/notes.org::#custom-id
  -- * #custom-id

  if 'matches_above_checks' then
    return true
  end

  return false
end

function OrgLinkCustomId:follow(link)
  local link_parts = self:parse_link_parts(link)
  -- if se use the altnerative approach to follow immediately in the for loop, we can just check if parsing parts was successful or not
  local headlines = self.files:find_headlines_with_property_matching('CUSTOM_ID', link_parts.custom_id)
  return utils.goto_oenof(headlines)
end

return OrgCustomId

We should not use factories since it complicates things additionally.

It seemed redundant to me to repeat the : prefix handling in each of the LinkHandlers individually, so I put this logic in OrgLinks, but these five cases are special in the fact that they don't have prefixes.

We should extract the parsing of it to a util or something and reuse it where necessary. In the top 2 examples we do need it to check if it's a file protocol. Note that /path/to/file::*headline is also a valid link for a headline (without a protocol), so there's more to it.
Hope this helps clearing up some of the misunderstandings.

Thanks for the response @kristijanhusak.
I'm willing to concede on parsing the protocol prefix within their own handler.
It's sensible enough, and the logic for it can indeed be fit into a reused utility function.
I do have a concern about the example you provided however.
It seems to suggest that links will be passed around as strings, and parsed any time it's accessed.
Is this actually what you would suggest, or is this just for terseness of the example?

It seems to suggest that links will be passed around as strings, and parsed any time it's accessed.
Is this actually what you would suggest, or is this just for terseness of the example?

It's just an example. It can be an instance of something, like what currently is OrgLink.

I'm not really liking the idea of modifying the handlers in that way.
I think this is mostly to simplify custom sources that we will add later, but we can address those differently.

Eliminates the Factory components

I don't think we need this anyway.

Allows custom link handles to be defined as a single table

I believe it will be only a single table. We just need to inject the files somehow. I gave some options at the end.

Only requires a link handler's parse function to return an object that contains its own data. The functions are attached automatically.

I'm not sure what we would share besides files, since each source would need to implement their own parse and follow (and later autocompletion). Even if there's something, we can just expose a helper class that users can use to extend their own.

Gives the objects returned by parse access to the LinkHandler's internal fields (such as self.files in this case).

For giving access to the files for custom sources, we can do 2 things:

Not provide anything, and let user manually reference require('orgmode').files
Assign the files manually when adding the source. Thankfully, it's just a table so we can assign things

local OrgLinks = {
    files = {},
    handlers = {},
    handlers_by_name = {},
}

function OrgLinks:setup_builtin_handlers()
    -- Note that I removed `files` here.
    self:add_handler(require('orgmode.org.links.handlers.file'):new())
end

---@param handler OrgLinkHandler
function OrgLinks:add_handler(handler)
    if self.handlers_by_name[handler.protocol] then
        error('Completion handler ' .. handler.protocol .. ' already exists')
    end

    --- assign files to the handler so they can use it
    handler.files = self.files

    self.handlers_by_name[handler.protocol] = handler
    table.insert(self.handlers, handler)
end

Let me know if I misunderstood what you are trying to solve here.

The problem I'm trying to solve is a certain combination of requirements, some self-imposed, some imposed in the review. I will try to enumerate them here.
For examples I will use a handler for id:

Have OrgLinkHandler:parse(input: string) return an object (OrgLink) that

Contains all the fields it needs (id, files)
Contains all the actions that can be executed on that link (follow, __tostring, insert_description)

Have fields that are the same between different OrgLink instances of the same type be automatically inserted (files)

Would normally do this through require('orgmode').files, as you've suggested for custom handlers, but you've also expressed a desire for these dependencies to be passed down from the top
This is usually done through a factory pattern, but you've rejected this for complexity reasons.

Treat user-defined hyperlinks in the same way as internal hyperlinks.

Reduces complexity

Not require the user to manually add the functions to the object returned from their OrgLinkHandler:parse.

Not nice if you want to just define your custom hyperlink as a table.

I don't think just adding files to the handlers is a great solution, as different types of links have different requirements. For example: The way I currently envision OrgLinkId, is having a field target: OrgLink, which stores the OrgLink associated with the part after ::. Thus
id:some-file::*some-title
would be parsed to
{
  id: 'some-file',
  files: OrgFiles,
  target: {
    headline: 'some-title',
    files: OrgFiles,
  },
}

To be able to parse it to something like that, OrgLinkHandlerId needs a reference to OrgLinks, so it can use that to parse *some-title, but OrgLinkHandlerHeadline does not need this.
Let me know if anything is unclear, or if you think I missed or misunderstood anything.

I agree with first 3 points.
Regarding the 4th point:

Not require the user to manually add the functions to the object returned from their OrgLinkHandler:parse.

Not nice if you want to just define your custom hyperlink as a table.

I think we have misunderstanding on what parse should do. In my example I didn't actually create a parse method, but can_handle. Parsing the input should be internal to each handler. With my example, can_handle would call an internal parse method, and if it's able to parse it, would return true. Then follow would do same thing and actually execute follow with the parsed value.
There is some double parsing here to avoid creating factories, and that's why I suggested to immediately attempt to follow. I'll put a more detailed example below.

I don't think just adding files to the handlers is a great solution, as different types of links have different requirements.

That's true, but I think we can pass files to all of them and have that as part of the interface they are implementing. If some source does not use it, that's fine. There's no overhead in that.

For example: The way I currently envision OrgLinkId, is having a field target: OrgLink, which stores the OrgLink associated with the part after ::. Thus
id:some-file::*some-title
To be able to parse it to something like that, OrgLinkHandlerId needs a reference to OrgLinks, so it can use that to parse *some-title, but OrgLinkHandlerHeadline does not need this.

We should not reference the "parent" class in the handlers. We can have some helpers in another utils file.
So if a specific handler needs a target, we can have a util helper parse_target('url with double colon::*something')
id format does not actually support target, since it points to a very specific entry. This is a good example why each handler should have their own parsing.
Here's a more concrete example of how I envisioned it. Mostly copied from my previous comment, with more details around parsing:
Top level OrgLinks would look something like this:
local OrgLinks = {}

function OrgLinks:new(opts)
  local this = setmetatable({
    files = opts.files,
    sources = {},
    sources_by_name = {},
  }, OrgLinks)
  this:setup_builtin_sources()
end

function OrgLinks:setup_builtin_sources()
  self:add_source(require('orgmode.org.links.sources.id'):new({ files = self.files }))
  self:add_source(require('orgmode.org.links.sources.custom_id'):new({ files = self.files }))
  --- etc
end

function OrgLinks:add_source(source)
  if self.sources_by_name[source:get_name()] then
    error('Link source ' .. source:get_name() .. ' already exists')
  end
  self.sources_by_name[source:get_name()] = source
  table.insert(self.sources, source)
end

---@param link string
function OrgLinks:follow(link)
  for _, source in ipairs(self.sources) do
    if source:follow(link) then
      return true
    end
  end
end

return OrgLinks

And then the id handler example would look like this:
local OrgLinkId = {}

function OrgLinkId:new(opts)
  local this = setmetatable({
    files = opts.files,
  }, OrgLinkId)
end

---@param link string
---@return boolean
function OrgLinkId:follow(link)
  local link_info = self:_parse(link)
  if not link_info then
    return false
  end
  local id = link_info.id
  -- Part below copied from `mappings:open_at_point`
  local files = self.files:find_files_with_property('id', id)
  if #files > 0 then
    if #files > 1 then
      utils.echo_warning(string.format('Multiple files found with id: %s, jumping to first one found', id))
    end
    vim.cmd(('edit %s'):format(files[1].filename))
    return
  end

  local headlines = self.files:find_headlines_with_property('id', id)
  if #headlines == 0 then
    return utils.echo_warning(string.format('No headline found with id: %s', id))
  end
  if #headlines > 1 then
    return utils.echo_warning(string.format('Multiple headlines found with id: %s', id))
  end
  local headline = headlines[1]
end

---Note that this is an internal method and should not be part of interface that handlers need to implement
---@private
---@param link string
---@return { id: string } | nil
function OrgLinkId:_parse(link)
  local id = link:match('^id:(.+)$')
  if not id then
    return nil
  end
  return { id = id }
end

return OrgLinkId

It's ok if we need to duplicate some of the code, as long as is scoped within a single handler. Once everything is finished, we can easily extract reusable parts.
Hope this clarifies things a bit.

I am sorry, but the structure you propose is not something I would enjoy writing. I do not have the time, nor the energy, to continue pushing this PR anymore. Feel free to use what I have made here as a basis for your own implementation of this.

I very much appreciate all the time you put into this, and I'm sorry that it became a burden because of my strict guidelines.
Once I do the implementation, I'll definitely consult you about the custom sources, since you seem eager to start using them.
Thanks!


Minor bugs

During the update to 2.0.0, some minor bugs were identified and this PR fix them

Test passed and lines have been removed @yihming


Update shouldComponentUpdate verification

As discussed in #112 I've used the following strategy:

store the previousVisibility value under previousVisibility
updated the shouldComponentUpdate with the following verification:

  shouldComponentUpdate(nextProps) {
    return this.visible &&
        this.visible !== this.previousVisibility &&
        isEqual(this.props, nextProps);
  }

We have one small issue related to this.props !== nextProps, as I stated in the issue this should be deepEqual, because offset can be an array as well. But writing an util for it it's a bit of code.
Maybe we can use the debounce, throttle, isEqual from lodash with tree shaking? (Meaning we will only add those to our final bundle size). This way we can remove debounce and throttle from the source code. (I've done it this way in this PR)
I'd like some help visually testing the component to make sure it is working, I've looked at the demo and it seems to be working fine. But who knows!

Coverage remained the same at 78.313% when pulling 790cbc42d1b1cee5dc559d20d0fa100accf56305 on fernandofleury:master into b06c646750d7822d89eeeb120ae2a94fbfcd727d on jasonslyvia:master.

I'm gonna close this for now, cause I suppose you guys are busy with the react 16 stuff. I can get back to it once the dust settles 😄

@jasonslyvia don't worry! please let me know if I can be of any help.


[DOC] documentation

This PR will focus on readying the project's documentation properly
MUST-FIX

#35
#44

@codecov-ai-reviewer review

@codecov-ai-reviewer review


Reset selected item is not working, How to reset selected item?

Report

The more information you provide, the faster we can help you.

⚠ Select what you want - a feature request or report a bug. Please remove the section you aren't interested in.
A feature request
What do you want to add?

Please describe what you want to add to the component.

How should it look like?

Please add images.

Report a bug
What did you do?

Please replace this with what you did.

What did you expect to happen?

Please replace this with what you expected to happen.

What happened instead?

Please replace this with what happened instead.

Your Environment

Version of the component: insert here
Swift version: insert here
iOS version: insert here
Device: insert here
Xcode version: insert here
If you use Cocoapods: run pod env | pbcopy and insert here
If you use Carthage: run carthage version | pbcopy and insert here

Project that demonstrates the bug

Please add a link to a project we can download that reproduces the bug.

Please fill report according to guide. Thanks

Hello, @iNicson
I'm not quite sure what you mean by "reset". Could you please share your thoughts and some code?

If this issue is still happening please let us know.


Failed to export spans. Error message: UNAVAILABLE: io exception

Started seeing this error message in our logs about 12 hours ago. Nothing has changed in our setup, so we're not quite sure why it started.
[opentelemetry.auto.trace 2021-09-15 12:30:06:799 +0000] [grpc-default-executor-21] WARN io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter - Failed to export spans. Error message: UNAVAILABLE: io exception

Anyone has any ideas what the problem might be?

I believe this error is thrown by your Java application. The error says that your Java application is unable to send traces to the remote endpoint it is configured with because it's not responding. Please check that the remote endpoint is live and accessible from the Java application.

The default port was changed to 4317. Started working again after changing the port.

@baasbank looks like the issue is resolved with the updated port, I'm closing the issue. Feel free to reopen


Fix tqdm MLPerf dataloader script

Overview
This fixes an issue where a tqdm context manager style isn't supported when this file got migrated over to use tinygrad's tqdm and throws the following error:

For now, this PR uses the iterative approach to update the progress bar.
Here is the result for UNet3D:

And here is the result for ResNet:

Notes

I've also updated the total to be divided by the default batch sizes of these dataloaders so that it shows the proper progress bar length.

Was anything wrong with the code I proposed. tqdm(range( is frowned upon

Was anything wrong with the code I proposed? tqdm(range( is frowned upon

@geohot - i tried your changes and it's actually exceeding the range of the progress bar since the __iter__ implementation inside tqdm updates the progress bar by 1 unit already because it's used inside of the for loop. so the call to pbar.update(x.shape[0]) is an extra update.

tqdm(range( is frowned upon
i can switch to trange instead but do let me know if i missed something here from my reply above.

Oh yea, that's not great. I mean you could subtract one...
What would it take to make our tqdm support this style and match real tqdm?

Looking at the current code, probably a few lines to support that context manager version to match real tqdm. I think that one can be a separate PR and this one can be closed since it should just work as is.

Closing this since #7770 adds context manager support to tqdm.


Fix generating URL Rewrites with slash as URL suffix

Right now in admin  >> Stores >> Configuration >> Catalog >> Catalog for "Product URL Suffix" could be selected "/". In this case all products should have slash at the end of URL. But this module generates URL rewrites without slack at the end.
This PR fixes issue.

Merged.


Please add git lense to extensions marketplace

This extension is very, very nice for quickly understanding the history of the code you are looking at:
https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

This is currently in our marketplace. Search for gitlens

Interesting. I think the vscode marketplace has a slightly fuzzier search than the one for code-server. I was misspelling it :)


Update index.html

Apologies but I had copied and pasted the markdown format from https://github.com/dataprotocols/schemas#json-schemas-for-data-protocol-formats not realizing that the index.html uses HTML. This fixes that.

Thanks and I could have done a better review!


Call either gtmOnSucces or gtmOnFailure exactly once every time your template is run

When reviewing your template, we've noticed that gtmOnSuccess or gtmOnFailure are not always called. Calling one of these functions every time the template runs is required so that users can sequence their tags correctly. Please update your template to ensure that either gtmOnSuccess or gtmOnFailure is always called.

ase update your template to ensure that eit

Hi @julianhsu8 ,According to the documentation, creating templated variables does not require using such methods.

Instead of calling data['gtmOnSuccess'] to indicate completion, variables return a value directly.


[Feature] Add eslint-loader

now we're doing eslint separately from the build process, would be great that it's integrated into webpack.
one benefit I could see is that eslint would error out during development and showup as an error overlay in browser.

the nextjs team claimed that they might add it: https://github.com/zeit/next.js/issues/7936#issuecomment-568910990

@grez96 is gonna reach out to Iran to ask for his opinion about adding this feature.

https://github.com/Jam3/nyg-nextjs/pull/44

merged https://github.com/Jam3/nyg-nextjs/pull/44


lexicon adapter is missing the provider

the lexicon adapter is missing the provider property. It prevents the provider from showing in the credits in the popup.

qa-<IP_ADDRESS>/components 1.2.17

that's what I see

and in panel:

in FF I have the following

do you have lemma translations enabled in ff but not in chrome?

might also be better to test this in greek, where the definitions come from a different source than the morphology.

investigating. something with the build

you are right. Chrome had lemma set to English which is like not having lemma. is this ok??
in Greek panel I have: From A Greek-English Lexicon (Henry George Liddell, Robert Scott, Oxford, Clarendon Press, 1940), in  pop-up Morpheus and same Greek-English Lexicon

Chrome had lemma set to English which is like not having lemma. @balmas, is this ok??
I think so.  We could remove English there I suppose but this setting was eventually supposed to apply to the rest of the UI too whenever we get it localized. Let's just leave it.


feat(demo): Interactive Demo Proposal #2

This pr resolves #2

Preview

Nice work @xosnrdev
Can you please explain how to use the demo?

Nice work @xosnrdev
Can you please explain how to use the demo?

The demo lets you try out different settings for the OTPInput and see the changes instantly. It also shows the code for the current setup, which you can copy and use.
How to use:
There are two main tabs:

Preview Tab:
You can change the OTPInput settings using the control panel, and the input will update right away.

Code Tab:
This shows the code for the current settings from the Preview tab. You can copy the code and use it in your project.

@xosnrdev While I fully understand what the PR is about, I would need you to write a step by step on how the demo can be utilized.
Things like how to start the demo, where can it be run etc

@xosnrdev While I fully understand what the PR is about, I would need you to write a step by step on how the demo can be utilized.
Things like how to start the demo, where can it be run etc

There's no need to start anything here. This demo is just an example of how to use the library, similar to what you'd find with most libraries on NPM. They provide an interactive web page where you can explore and learn more about the library and its API. It could be hosted on GitHub Pages or Cloudflare Pages and linked in the README for easy access.
Example reference: https://uiwjs.github.io/react-split/
I can see you've published a new version I'll update the demo types/index.ts

Oh nevermind you already made your example I just saw it now

I'll be closing shortly


Remove duplicate

🚀 Feature
Problem Statement: Remove Duplicates
Problem Level: EASY
Problem Description:
Given a string S, remove consecutive duplicates from it recursively.
Input Format :
String S
Output Format :
Output string
Constraints :
1 <= |S| <= 10^3
where |S| represents the length of string
Sample Input 1 :
aabccba
Sample Output 1 :
abcba
(A clear and concise description of what the feature is.)
Have you read the Contributing Guidelines on Pull Requests?
Yes
(Write your answer here.)
Motivation
(Please outline the motivation for the proposal.)
Pitch
I think it's a basic question from recursion which can used to understand recursion
(Please explain why this feature should be implemented and how it would be used.)

/assign

@smv1999 please review my pr!

Always mention the language in which you want to contribute.

Always mention the language in which you want to contribute.

I have made a pr plzz review it.

Yeah, that is being done. Generally, always make sure you mention the language in the issue.


AWS Classic OpenSearch Serverless Collection shows update when none have been made on pulumi up.

What happened?
I am experiencing an issue, when using OpenSearch Serverless Collection in AWS Classic, where I cannot run pulumi up without the preview showing updates to the resources I am using with the serverless collection. It shows updates even if none have been made.
Example
This code block below is my typical usage. when i run pulumi up, initially, the resources are created. Then, when I work on other resources and run pulumi up, updates shows up for the resources below. I include the pulumi preview --diff below the code block to lend insight.

const openSearchServerlessEncryptionPolicy = new aws.opensearch.ServerlessSecurityPolicy("encryption-policy", {
    type: "encryption",
    description: "encryption for member search data",
    policy: JSON.stringify({
        Rules: [{
            Resource: ["collection/member-search*"],
            ResourceType: "collection",
        }],
        AWSOwnedKey: true,
    }),
}, {provider: stack_acct});

const openSearchServerlessNetworkPolicy = new aws.opensearch.ServerlessSecurityPolicy("network-policy", {
    type: "network",
    description: "network policy for endpoint access",
    policy: JSON.stringify([
        {
            Rules: [
                {
                    ResourceType: "collection",
                    Resource: ["collection/member-search*"]
                },
                {
                    ResourceType: "dashboard",
                    Resource: ["collection/member-search*"]
                }
            ],
            AllowFromPublic: true,
        }
    ])
}, {provider: stack_acct})

const current = aws.getCallerIdentity({});
const openSearchServerlessAccessPolicy = new aws.opensearch.ServerlessAccessPolicy('open-search-access', {
    type: 'data',
    policy: current.arn.apply(current => JSON.stringify([{
        Rules: [
            {
                ResourceType: "index",
                Resource: ["index/member-search/*"],
                Permission: [
                    "aoss:ReadDocument",
                    "aoss:WriteDocument",
                    "aoss:CreateIndex",
                    "aoss:DeleteIndex",
                    "aoss:UpdateIndex",
                    "aoss:DescribeIndex"
                ]
            },
            {
                ResourceType: "collection",
                Resource: ["collection/member-search*"],
                Permission: [
                    "aoss:CreateCollectionItems",
                    "aoss:DeleteCollectionItems",
                    "aoss:UpdateCollectionItems",
                    "aoss:DescribeCollectionItems"
                ]
            }
        ],
        Principal: [current.arn]
    }]))
}, {provider: stack_acct});

const memberSearchService = new aws.opensearch.ServerlessCollection("member-search", {
    type: 'SEARCH',
    tags,
}, {dependsOn: [openSearchServerlessEncryptionPolicy], provider: stack_acct})

pulumi:pulumi:Stack: (same)
    [urn=urn:pulumi:member-search-api::member-search-api::pulumi:pulumi:Stack::member-search-api-member-search-api]
    > pulumi:pulumi:StackReference: (read)
        [id=event-distrib-prod]
        [urn=urn:pulumi:member-search-api::member-search-api::pulumi:pulumi:StackReference::event-distrib-prod]
        name: "event-distrib-prod"
    ~ aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy: (update)
        [id=network-policy-d108f6c]
        [urn=urn:pulumi:member-search-api::member-search-api::aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy::network-policy]
        [provider=urn:pulumi:member-search-api::member-search-api::pulumi:providers:aws::stack::9cde4391-403e-49a5-8053-8417073f8c40]
        description: "network policy for endpoint access"
        name       : "network-policy-d108f6c"
        policy     : (json) [
            [0]: {
                AllowFromPublic: true
                Rules          : [
                    [0]: {
                        Resource    : [
                            [0]: "collection/member-search*"
                        ]
                        ResourceType: "collection"
                    }
                    [1]: {
                        Resource    : [
                            [0]: "collection/member-search*"
                        ]
                        ResourceType: "dashboard"
                    }
                ]
            }
        ]

        type       : "network"
    ~ aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy: (update)
        [id=encryption-policy-9b616ba]
        [urn=urn:pulumi:member-search-api::member-search-api::aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy::encryption-policy]
        [provider=urn:pulumi:member-search-api::member-search-api::pulumi:providers:aws::stack::9cde4391-403e-49a5-8053-8417073f8c40]
        description: "encryption for member search data"
        name       : "encryption-policy-9b616ba"
        policy     : (json) {
            AWSOwnedKey: true
            Rules      : [
                [0]: {
                    Resource    : [
                        [0]: "collection/member-search*"
                    ]
                    ResourceType: "collection"
                }
            ]
        }

        type       : "encryption"
    ~ aws:opensearch/serverlessAccessPolicy:ServerlessAccessPolicy: (update)
        [id=open-search-access-6806895]
        [urn=urn:pulumi:member-search-api::member-search-api::aws:opensearch/serverlessAccessPolicy:ServerlessAccessPolicy::open-search-access]
        [provider=urn:pulumi:member-search-api::member-search-api::pulumi:providers:aws::stack::9cde4391-403e-49a5-8053-8417073f8c40]
        name  : "open-search-access-6806895"
        policy: (json) [
            [0]: {
                Principal: [
                    [0]: "arn:aws:iam::941966628158:role/member-search-api-pipeline-role-0850f6a"
                ]
                Rules    : [
                    [0]: {
                        Permission  : [
                            [0]: "aoss:ReadDocument"
                            [1]: "aoss:WriteDocument"
                            [2]: "aoss:CreateIndex"
                            [3]: "aoss:DeleteIndex"
                            [4]: "aoss:UpdateIndex"
                            [5]: "aoss:DescribeIndex"
                        ]
                        Resource    : [
                            [0]: "index/member-search/*"
                        ]
                        ResourceType: "index"
                    }
                    [1]: {
                        Permission  : [
                            [0]: "aoss:CreateCollectionItems"
                            [1]: "aoss:DeleteCollectionItems"
                            [2]: "aoss:UpdateCollectionItems"
                            [3]: "aoss:DescribeCollectionItems"
                        ]
                        Resource    : [
                            [0]: "collection/member-search*"
                        ]
                        ResourceType: "collection"
                    }
                ]
            }
        ]

        type  : "data"
Resources:
    ~ 3 to update

Output of pulumi about
Dependencies:
NAME                VERSION
@pulumi/aws-native  0.94.0
@pulumi/aws         6.18.2
@pulumi/awsx        2.4.0
@pulumi/pulumi      3.102.0
@types/node         18.19.9
Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

Hi @martinpsz. Thanks for reporting this issue.
I was able to reproduce with the following program:
import * as aws from "@pulumi/aws";

new aws.opensearch.ServerlessSecurityPolicy("encryption-policy", {
    type: "encryption",
    policy: JSON.stringify({
        Rules: [{
            Resource: ["collection/member-search*"],
            ResourceType: "collection",
        }],
        AWSOwnedKey: true,
    }),
});

It looks like the diff might be caused by the ordering of the keys in the policy JSON document. Can you try to order the keys alphabetically and see if the diff goes away?
We are still investigating what is causing this ordering issue, but it may be a workaround in the meantime.

It looks like this is technically an upstream issue.
If you are interested in the details
Even with Terraform if you try and create a security_policy using a string you will get an error message if the keys are not ordered.
resource "aws_opensearchserverless_security_policy" "example" {
  name   = "encryption-policy-023672f"
  type   = "encryption"
  policy = "{\"Rules\":[{\"Resource\":[\"collection/member-search*\"],\"ResourceType\":\"collection\"}],\"AWSOwnedKey\":true}"
}

aws_opensearchserverless_security_policy.example: Creating...
╷
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to aws_opensearchserverless_security_policy.example, provider "provider[\"registry.terraform.io/hashicorp/aws\"]" produced an unexpected new value: .policy: was
│ cty.StringVal("{\"Rules\":[{\"Resource\":[\"collection/member-search*\"],\"ResourceType\":\"collection\"}],\"AWSOwnedKey\":true}"), but now
│ cty.StringVal("{\"AWSOwnedKey\":true,\"Rules\":[{\"Resource\":[\"collection/member-search*\"],\"ResourceType\":\"collection\"}]}").
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.
╵

This is because the way that Terraform parses the json response from the CreateSecurityPolicy API call and stores the policy in state with ordered keys.
https://github.com/hashicorp/terraform-provider-aws/blob/961823a2be27dc1c943f8721962d189a0b4a8ca2/internal/service/opensearchserverless/security_policy.go#L264
The difference is that in Terraform you can use the jsonencode utility which produces a json object with ordered keys. In pulumi we rely on the language utilities like JSON.stringify() which does not order keys.

I think we may be able to fix this on our side by using a PreCheckCallback to order the keys before passing to create.

It is common to have JSON-valued attributes that need to ignore whitespace and reordering changes. The common way to handle it in the AWS provider for SDKv2 based resources is using something like this:
DiffSuppressFunc: verify.SuppressEquivalentJSONDiffs,
StateFunc: func(v interface{}) string {
    json, _ := structure.NormalizeJsonString(v)
    return json
},

For example, consider: https://github.com/hashicorp/terraform-provider-aws/blob/master/internal/service/networkmanager/core_network_policy_attachment.go#L57
I've searched briefly but couldn't find authoritative guidance on how to accomplish the same result for Plugin Framework based resources. It appears there was an idea to use custom types that redefine the equality operation (https://github.com/hashicorp/terraform-plugin-framework/issues/803) that led to the creation of https://github.com/hashicorp/terraform-plugin-framework-jsontypes repository.
Looking further, there seems to be a precedent of using this:
https://github.com/hashicorp/terraform-provider-aws/blob/master/internal/service/opensearchserverless/access_policy.go#L42

Unlike access_policy, security_policy uses the String type and not jsontypes.Normalized:
Policy        jsontypes.Normalized                          `tfsdk:"policy"

This makes me suspect that:

the upstream provider may not be handling changes to security_policy in the desired way (that is, it may not be ignoring whitespace and reordering changes as the users might expect)

a possible fix could be editing upstream to transition to jsontypes.Normalized.

Created an issue upstream https://github.com/hashicorp/terraform-provider-aws/issues/38603

My fix was merged upstream so we should be able to pull it in next release.

v6.48.0 was just released and included the fix.


uaEFI CAN failure to communicate

somewhere under 10% of units I have WBO module not communicating with main MCU when I am using attached bin
yet "update firmware" somehow resolves the issue? I would love to understand what's different between different versions of the firmware

Wideband f0_module 2023-dec.zip

Download
https://www.mediafire.com/file/3hzk77cxvxc9nq2/fix.zip/file
password: changeme
In the installer menu, select "gcc."

status update: we've decided to blame border line spec power supply which causes unstable CAN bus transceiver
USB, diode etc all that


data: Provide a local repo configuration

This allows for the easy (and standardised) set up for using local
packages with solbuild.
So as discussed I see this as 3 simple steps (which I can handle):

Repackage solbuild with this profile + tmpfiles.d 'solbuild-local.conf' to create the dir (both in solbuild-config-local-unstable).
Create a 'make local' in common to cover a make replacement i.e.
local:
sudo solbuild build $(SPECFILE) -p local-unstable-x86_64;
make abireport
Document this is the Help Center
i.e. to use non repo eopkg's in solbuild, install solbuild-config-local-unstable, put your eopkg's in /var/lib/solbuild/local, run make local instead of make

Think that would cover #4 well

LGTM - ty!


Add Apache license from root to HNC

This will need to be done as a prerequisite before moving HNC into its
own repository

/assign @adrianludwin


Unhandled Exception: HiveError: Cannot write, unknown type: _$Orange. Did you forget to register an adapter?

I am using hydrated_bloc with Freezed package.
State is:
@freezed
abstract class ThemeState with _$ThemeState {
  const factory ThemeState({
    @required ThemeScheme theme,
    @required ThemeBrightness brightness,
  }) = _ThemeState;

  factory ThemeState.fromJson(Map<String, dynamic> json) =>
      _$ThemeStateFromJson(json);
}

ThemeScheme is:
@freezed
abstract class ThemeScheme with _$ThemeScheme {
  const factory ThemeScheme.orange() = Orange;
  const factory ThemeScheme.blue() = Blue;

  factory ThemeScheme.fromJson(Map<String, dynamic> json) =>
      _$ThemeSchemeFromJson(json);
}

ThemeBrightness  is:
@freezed
abstract class ThemeBrightness with _$ThemeBrightness {
  const factory ThemeBrightness.light() = Light;
  const factory ThemeBrightness.dark() = Dark;

  factory ThemeBrightness.fromJson(Map<String, dynamic> json) =>
      _$ThemeBrightnessFromJson(json);
}

and:
@override
  ThemeState fromJson(Map<String, dynamic> json) {
    try {
      final state = ThemeState.fromJson(json);
      return state;
    } catch (_) {
      return null;
    }
  }

  @override
  Map<String, dynamic> toJson(ThemeState state) {
    return state.toJson();
  }

but I get :
E/flutter (22951): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: HiveError: Cannot write, unknown type: _$Orange. Did you forget to register an adapter?
E/flutter (22951): #0      BinaryWriterImpl.write
package:hive/…/binary/binary_writer_impl.dart:310
E/flutter (22951): #1      BinaryWriterImpl.writeMap
package:hive/…/binary/binary_writer_impl.dart:215
E/flutter (22951): #2      BinaryWriterImpl.write
package:hive/…/binary/binary_writer_impl.dart:306
E/flutter (22951): #3      BinaryWriterImpl.writeFrame
package:hive/…/binary/binary_writer_impl.dart:254
E/flutter (22951): #4      StorageBackendVm.writeFrames.<anonymous closure>
package:hive/…/vm/storage_backend_vm.dart:123
E/flutter (22951): #5      ReadWriteSync.syncWrite.<anonymous closure>
package:hive/…/vm/read_write_sync.dart:26
E/flutter (22951): #6      _rootRunUnary  (dart:async/zone.dart:1192:38)
E/flutter (22951): #7      _CustomZone.runUnary  (dart:async/zone.dart:1085:19)
E/flutter (22951): #8      _FutureListener.handleValue  (dart:async/future_impl.dart:141:18)
E/flutter (22951): #9      Future._propagateToListeners.handleValueCallback  (dart:async/future_impl.dart:686:45)
E/flutter (22951): #10     Future._propagateToListeners  (dart:async/future_impl.dart:715:32)
E/flutter (22951): #11     Future._addListener.<anonymous closure>  (dart:async/future_impl.dart:391:9)
E/flutter (22951): #12     _rootRun  (dart:async/zone.dart:1184:13)
E/flutter (22951): #13     _CustomZone.run  (dart:async/zone.dart:1077:19)
E/flutter (22951): #14     _CustomZone.runGuarded  (dart:async/zone.dart:979:7)
E/flutter (22951): #15     _CustomZone.bindCallbackGuarded.<anonymous closure>  (dart:async/zone.dart:1019:23)
E/flutter (22951): #16     _microtaskLoop  (dart:async/schedule_microtask.dart:43:21)
E/flutter (22951): #17     _startMicrotaskLoop  (dart:async/schedule_microtask.dart:52:5)
E/flutter (22951):

any suggestion ?

This is clearly an error on Hive side, as you can see 'cause it's a HiveError... :D
Take a look at this https://github.com/hivedb/hive/issues/241 or something similar.

I don't know about hive.
can I should do sth about it ?

@mohammadne try to
const factory ThemeState({
    @required @JsonKey(toJson: _toS) ThemeScheme theme,
    @required @JsonKey(toJson: _toB) ThemeBrightness brightness,
  }) = _ThemeState;

and outside ThemeScheme class put
Map<String, dynamic> _toS(ThemeScheme s) => s?.toJson();
Map<String, dynamic> _toB(ThemeBrightness b) => b?.toJson();

hope this will help😛

@mohammadne try to
const factory ThemeState({
    @required @JsonKey(toJson: _toS) ThemeScheme theme,
    @required @JsonKey(toJson: _toB) ThemeBrightness brightness,
  }) = _ThemeState;

and outside ThemeScheme class put
Map<String, dynamic> _toS(ThemeScheme s) => s?.toJson();
Map<String, dynamic> _toB(ThemeBrightness b) => b?.toJson();

hope this will help😛

Perfect , That was the answer.


AGP upgrading from 7.4.2 to 8.0.1 error "Namespace not specified. Please specify a namespace in the module's build.gradle file."

Hello,
I have Android Studio Flamingo 2022.2.1 Patch 1, Gradle version 7.5, AGP 7.4. If I open Androidx media 1.0.1 project and run configuration Demo - it works correctly.
The Studio offered changes in namespace in effect and extractor libraries for androidTest. I deleted the namespace parameter in lib-effect - AndroidManifest.xml (androidTest) and writed text "namespace androidx.media3.effect" in android { ... } section into builde.gradle (Module :lib-effect). I did the same for extractor library. It works correctly too.
Now AGP Upgrade Assistant offeres upgrade project's Android Gradle Plugin from 7.4.2 to 8.0.1. But during upgrading there is the error Sync Failed. The error message from sync is:
`Namespace not specified. Please specify a namespace in the module's build.gradle file like so:
android {
namespace 'com.example.namespace'
}
How do I upgrade succesfully? Is there any bug in AGP 8.0.1? I would like use new Androidx Exoplayer 1.0.1, not older version ExoPlayer v 2.
Thank you for you replay.

Can you provide a bit more context about why you need to upgrade this project to AGP 8.0.1? If you want to use media3 1.0.1, you can probably just use the artifacts from maven rather than building the library yourself?

Can you provide a bit more context about why you need to upgrade this project to AGP 8.0.1? If you want to use media3 1.0.1, you can probably just use the artifacts from maven rather than building the library yourself?

Personally, I have to vendor media3 to add some rejected changes like automatic FFMPEG decoder assembly, among other patches. Relying on the artifacts really isn't feasible for me.

@OxygenCobalt Thanks for sharing - would your use-case be solved if you could build a local version of this project with it's currently defined AGP version (7.2.2) and use something like PublishToMavenLocal to share those locally-built artifacts with your app development project?
(I'm cribbing from a similar comment from @bubenheimer in https://github.com/androidx/media/issues/346#issuecomment-1540112184, who points out that PublishToMavenLocal doesn't currently work, but maybe we could fix that)
I'm aware our current instructions tell you to put everything in one Android Studio project, I'm just wondering if we should revisit those instructions.

@icbaker
"Can you provide a bit more context about why you need to upgrade this project to AGP 8.0.1? If you want to use media3 1.0.1, you can probably just use the artifacts from maven rather than building the library yourself?"
Thank you for your replay. My context:
I would like to create and implement my own UI interface of media3 ExoPlayer. I think when I use maven I can not make changes in Exoplayer library, that yes? I must make my own library. As I am a new one in android programming I want to start from some project with UI of Exoplayer which works correctly. Then I would like to delete redundancy parts from it and change UI parts by me. I selected Media3 project as I want to use the newest version of ExoPlayer. Standalone ExoPlayer2 library will be deprecated in favour of the Media3 implementation.
I want to my downloaded Media3 project upgrade to AGP 8.0.1 because my Android Studio recommends it.

Thanks for sharing - would your use-case be solved if you could build a local version of this project with its currently defined AGP version (7.2.2) and use something like PublishToMavenLocal to share those locally-built artifacts with your app development project?

Can this be automated by gradle in some way @icbaker? One of the reasons I still vendor is that I can make all build steps be 100% executed by gradle with no extra scripting.

@OxygenCobalt That's a good question. I did a bit of digging and it seems there isn't currently a good way with Gradle for one project to depend on another, with different Gradle/AGP versions, but with 'synchronized' re-building. Given that, I think we will stick with our current recommendation of putting everything into a single AS project (and unfortunately therefore requiring the same AGP version).
I'm also looking into upgrading us to AGP 8.0.1, but it requires quite a lot of changes.
@D7766 if you just want to experiment then I would not try and upgrade to AGP 8.0.1, just leave it on 7.2.2 and ignore Android Studio's recommendation for now.
I will keep this issue open to track my efforts to upgrade to AGP 8.0.1.

@icbaker Would you still be able to look into why "publishToMavenLocal" does not work? The media3 project looks set up to publish to a repo via standard Gradle & AGP mechanisms, which generally means that it will publish to local as well; there is no extra setup required to make this work. It is puzzling that it is not working.

I just pushed some commits (linked above) that update the main branch to AGP 8.0.1. If you're cherrypicking these somewhere elsewhere you'll probably need to take all of them, since there was quite a lot of pre-work before the actual Android Assistant was able to do its 'magic'.
I'm going to close this, since I think the question has been answered and we've also now updated.

"...@D7766 if you just want to experiment then I would not try and upgrade to AGP 8.0.1, just leave it on 7.4.2 and ignore Android Studio's recommendation for now.
I will keep this issue open to track my efforts to upgrade to AGP 8.0.1. ..."
@icbaker Thank you for your replay very much :-)

@icbaker I tried what you did with publishToMavenLocal on the commit you referenced, but it did not put any artifacts in my local .m2 folders. I suspect there is something private in your build setup that I don't have. I remember that it also does not even seem to build the desired artifacts if I just do ./gradlew clean publishToMavenLocal. I'm on Intel Mac.


FAQ: add more frequently asked questions

Update FAQ:

Add Table Of Contents for easier navigation
OKD-OCP relations
Update improvements
Troubleshooting

Fixes #26
Fixes #45

Hi Vadim,
I would like to see this questions answered:
Some OCP/OKD 4 functionality is provided with Operators from the Operator Hub. This matrix provides useful information about differences between OCP and OKD 4:
---------------------------------------- OCP --------------------- OKD ----------------------------- Repositories -------------
OperatorHub catalogs                 Red Hat Operators             community
                                     Certified Operators           upstream-community (?)
                                     Red Hat Marketplace

Usage                                needs OCP subscription        free to use

Support                              Red Hat                       community

Operators (w. subscription/free)     OpenShift Service Mesh        Maistra                              github.com/maistra
                                     ElasticSearch                 <where is the community version?>    ?
                                     OpenShift Serverless          <is a community version available?>  ?
                                     Kiali                         Kiali                                ?
                                     Jaeger                        Jaeger                               ?

Lets describe these differences in a new section - "How OKD cluster is different from an OCP cluster"?

More Questions:

how often will new minor versions of OKD 4 being released? (bi weekly)
do I have to update from a rather old version to a newer version minor version after minor version or can I directly update to a destination version in one step?
which Kubernetes Version is inside?
how to install/update without the cluster having an internet connection (but an image mirror)

mirror images in private registry (oc adm mirror ...)
use ImageContentSourcePolicy CR or write a MachineConfig that directly sets mirrors in /etc/containers/registries.conf

how to use OperatorHub / 3rd party images without rewriting manifests if my cluster has no internet connection (but an image mirror)

mirror images to private registry (docker pull / docker tag / docker push)
set mirrors in /etc/containers/registries.conf for docker.io/quay.io/... You can't use ImageContentSourcePolicy with images that are referenced by tag. Because of that we directly write to registries.conf.

Upgrade / Backup / Restore:

Which backup/restore strategy do you recommend? (current docs are not sufficient)
What can I do if operators are degraded during an update and I must urgently get it working again?
How can I revert an upgrade (not only images but also config files on the host and etcd) ?

how to revert rendered MachineConfigs, ... ?
in which directories on FCOS are files saved persistently?

Updates of operators in the OperatorHub. Community operators not always are built regularily. Can I build and publish them on my own (private registry or official OperatorHub) ?

Let keep FAQ sections short. Disconnnected install and upgrades are described at docs.okd.io. If possible we should extend those. Same goes for backup/restore - that would be best described in the guide / blog post instead.
OperatorHub questions are out of scope for OKD really, we merely follow their updates

Support:

Is it allowed to use OKD 4 in production environments and can you recommend that (if the own team provides the support) ?
Will it be possible to upgrade a cluster thats running on OKD 4 to OCP 4 and get support afterwards? (a constraint that OCP must support a special ignition version is ok, so everybody understands what to wait for)

Let keep FAQ sections short. Disconnnected install and upgrades are described at docs.okd.io. If possible we should extend those. Same goes for backup/restore - that would be best described in the guide / blog post instead.
OperatorHub questions are out of scope for OKD really, we merely follow their updates

To improve the official docs is ok.
Because some features that are tightly integrated in OCP 4 are only available with the OperatorHub we should lose a few words about that, too. The user experience of OCP/OKD is tightly coupled with this external ecosystem. I invested weeks for that! Don't want other users to suffer from that.

how often will new minor versions of OKD 4 being released? (bi weekly)

Addressed in b824d1e18a0d76ce48fa979d08e9ec374742c475

do I have to update from a rather old version to a newer version minor version after minor version or can I directly update to a destination version in one step?

Addressed in f537eb39b7512190e05848c4c9228470a76f7008

which Kubernetes Version is inside?

That's already in How can I find out what's inside of a (CI) release and which commit id each component has?. There is no static map right now anyway, say, 4.6 is currently 1.18-based but soon would be rebased on k8s 1.19

What can I do if operators are degraded during an update and I must urgently get the system working again?

I don't think it fits FAQ, as there is no answer to such general question (depends on operator really)

Will OKD 4 get an automatic backup/restore/rollback feature

"Will OKD4 have x feature" might be a good one - in general the answer is https://github.com/openshift/enhancement PRs

Is it allowed to use OKD 4 in production environments and can you recommend that (if the own team provides the support) ?

Addressed in 4e6aa5ebe5fc46bc0c1261d6322a3d1974db99fa. Not sure if that addresses "allowed to use" - there are no direct restrictions (but plenty of indirect ones, coming from Fedora)

Will it be possible to upgrade a cluster thats running on OKD 4 to OCP 4 and get support afterwards?

That is not yet determined

Maybe a few words about what "degraded" on an operator means, what "updating" means, makes sense.
"Updating" means that an operator tries to set its desired state (config has changed and it tries to recover it, it tries to update itself).
"Degraded" means (and happens during updates) not always that there is a real problem but after an update it can happen.
Operators that are in "Updating" state without currently updating OKD can confuse people. "Degraded" is the worst thing that can happen to you in an OKD 4 cluster. So it should definitely being addressed somewhere and how to recover from that.
A table with the names of the operators and what their purpose is and a link to typical error patterns would be awesome. I'm sure that you have something like that in your docs.

Maybe a few words about what "degraded" on an operator means, what "updating" means, makes sense.

Guess we could add this later. This however is not really OKD specific, so docs would be a better place for this

A table with the names of the operators and what their purpose is and a link to typical error patterns would be awesome. I'm sure that you have something like that in your docs.

https://docs.okd.io/latest/operators/operator-reference.html?

I'll go ahead and merge this as it adds a few useful hints for new users - and we can expand FAQ later