pyimport("numpy") difference between 0.3 and 0.4

PyPlot.jl doesn't work for me in Julia 0.4, and I think I've traced the problem to a difference between PyCall's behavior on 0.3 vs 0.4.
I created a new virtual environment for Python 2.7 and installed numpy inside it. Then I ran the following in Julia 0.3:
julia> using PyCall
julia> pyimport("numpy")
PyObject <module 'numpy' from '/home/jkersulis/.virtualenvs/notebook/local/lib/python2.7/site-packages/numpy/__init__.pyc'>

Here's what happened when I repeated the commands in Julia 0.4:
julia> using PyCall
julia> pyimport("numpy")
ERROR: PyError (:PyImport_ImportModule) <type 'exceptions.ImportError'>
ImportError('cannot import name scimath',)
  File "/home/jkersulis/.virtualenvs/notebook/local/lib/python2.7/site-packages/numpy/__init__.py", line 170, in <module>
    from . import add_newdocs
  File "/home/jkersulis/.virtualenvs/notebook/local/lib/python2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/jkersulis/.virtualenvs/notebook/local/lib/python2.7/site-packages/numpy/lib/__init__.py", line 17, in <module>
    from . import scimath as emath

 in pyerr_check at /home/jkersulis/.julia/v0.4/PyCall/src/PyCall.jl:58
 in pyimport at /home/jkersulis/.julia/v0.4/PyCall/src/PyCall.jl:91

I'm not much of a pythonista, so I haven't been able to figure out the cause. I did notice that PyCall imports from the .pyc in 0.3 but tries to import the .py version in 0.4.
This issue may be a duplicate of #108.

Are you using the same PyCall version on both?  e.g. on 0.4 are you using PyCall master, but on 0.3 you are using the tagged version?

Yes, Pkg.installed()["PyCall"] returns v"0.8.2" for both 0.3 and 0.4.

This is weird; it is presumably some path-related thing, but I'm not sure how the Julia version could possibly affect the Python paths...

I've been playing around in a virtualenv, and found that I can pyimport numpy 1.6 and 1.7, but not 1.8 or 1.9.

I just tried
using Interact, PyCall
pyinitialize("python3")
using PyPlot

And everything works fine. All I really needed was PyPlot in 0.4, so I'm good now.
There must be a problem with my Python 2.7 installation. Honestly I'm not surprised. I have had Anaconda on my machine, I've used aptitude, and sometimes I use virtualenvs. It's a miracle python2 even runs on my command line anymore.
I hope I haven't wasted too much of your time. I'll reach out if I figure out the exact cause, in case someone else has a similar problem.

No problem, I'm glad it works.  (It's frustrating that it's so hard to initialize libpython robustly given the desired python executable.)

Since my last comment here I have re-built Julia 0.3 and 0.4 from source, and I have virtual environments for Python 2 and Python 3. Regardless of which environment I activate or which version of Julia I run, I keep getting this error when I try to import numpy:
julia> Pkg.build("PyCall")
julia> using PyCall
julia> pyimport("numpy")
ERROR: PyError (:PyImport_ImportModule) <type 'exceptions.ImportError'>
ImportError('cannot import name scimath',)
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/numpy/__init__.py", line 170, in <module>
    from . import add_newdocs
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/numpy/lib/__init__.py", line 17, in <module>
    from . import scimath as emath

 in pyerr_check at /home/jkersulis/.julia/v0.3/PyCall/src/exception.jl:58
 in pyimport at /home/jkersulis/.julia/v0.3/PyCall/src/PyCall.jl:91

I can import other Python packages like nose, so there's something special about numpy here.
When I just run Python (in the same virtualenv), I can import numpy. Seeking to reproduce the error, I looked up line 17 in numpy/lib/__init__.py and tried to run it from the Python prompt (after cd-ing into the numpy/lib directory). Here's what I got:
>>> from . import scimath as emath
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Attempted relative import in non-package

I have looked around a bit, but I'm not sure this is really the problem PyCall is running into. This is just as far as I've searched.

Quick update: I installed numpy 1.7 instead of 1.9 in my Python 2 environment, and I was able to import numpy in both Julia 0.3 and 0.4.
Then I installed numpy 1.7 in my Python 3 environment, and again I was able to import it in both Julia 0.3 and 0.4.

@kersulis, can you  try Pkg.checkout("PyPlot")?

Sorry about the delay!
I used pip in my Python 2 & 3 envs to upgrade numpy and matplotlib back to 1.9.2 and 1.4.3 respectively. Then I ran
Pkg.checkout("PyPlot")
using PyPlot

Here's what I got:
Julia Version 0.3.12-pre+2
Warning: error initializing module PyPlot:
ErrorException("Failed to pyimport("matplotlib"): PyPlot will not work until you have a functioning matplotlib module.  PyError (:PyImport_ImportModule) <type 'exceptions.ImportError'>
ImportError('cannot import name scimath',)
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/matplotlib/__init__.py", line 180, in <module>
    from matplotlib.cbook import is_string_like
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/matplotlib/cbook.py", line 33, in <module>
    import numpy as np
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/numpy/__init__.py", line 170, in <module>
    from . import add_newdocs
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/jkersulis/.envs/py2/local/lib/python2.7/site-packages/numpy/lib/__init__.py", line 17, in <module>
    from . import scimath as emath
")

Julia Version 0.4.0-dev+6561
INFO: Precompiling module PyPlot...
WARNING: could not import Base.help into PyCall
WARNING: error initializing module PyPlot:
ErrorException("Failed to pyimport("matplotlib"): PyPlot will not work until you have a functioning matplotlib module.  PyError (:PyImport_ImportModule) <class 'ImportError'>
ImportError("cannot import name 'scimath'",)
  File "/home/jkersulis/.envs/py3/lib/python3.4/site-packages/matplotlib/__init__.py", line 180, in <module>
    from matplotlib.cbook import is_string_like
  File "/home/jkersulis/.envs/py3/lib/python3.4/site-packages/matplotlib/cbook.py", line 33, in <module>
    import numpy as np
  File "/home/jkersulis/.envs/py3/lib/python3.4/site-packages/numpy/__init__.py", line 170, in <module>
    from . import add_newdocs
  File "/home/jkersulis/.envs/py3/lib/python3.4/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/jkersulis/.envs/py3/lib/python3.4/site-packages/numpy/lib/__init__.py", line 17, in <module>
    from . import scimath as emath
")

I installed Anaconda to see if that would work. Turns out, it does. I can run ipython notebook, start a Julia kernel, run using PyPlot, and plot stuff.
Also,  conda list shows that numpy 1.9.2 and matplotlib 1.4.3 are installed, so the problem isn't inherent in numpy. I don't see a need to reopen this issue; I would guess that my Python installation is somehow messed up.


added my github link to readme file

What changes does this PR do?
Added my github link to the readme.md file

I have removed the space

Looks good 👍 Thanks for contributing
thnks


Assertion function error messages are unactionable and unclear

class Foo {
    bar?: Foo

    public setBar(): asserts this is Foo & {bar: Foo}  {
        this.bar = this;
    }

    public sayHi(): string {
        return 'Hi!';
    }
}

function test() {
    let foo = new Foo();

    foo.bar = undefined;

    foo.setBar();

    if (foo.bar) {
        console.log('This should be OK: ' + foo.bar.sayHi());
    }
}

Current error
Assertions require every name in the call target to be declared with an explicit type annotation.

'foo' is declared here.

foo is declared here but... but okay so what am I supposed to do now??

Is it possible this would make arrow function assertion errors even more confusing, given their use it marked as a design limitation in https://github.com/microsoft/TypeScript/issues/34523? This example would (I think?) result in the error constAssert requires an explicit type annotation, which is still unclear.
function funcAssert (condition: boolean): asserts condition {
    if (!condition) {
        throw new Error();
    }
}

const constAssert = (condition: boolean): asserts condition => {
    if (!condition) {
        throw new Error();
    }
}

(thing: number | null) => {
    funcAssert(!!thing); // this is fine
    thing;
}
(thing: number | null) => {
    constAssert(!!thing); // why doesn't this work, and what am I supposed to do?
    thing;
}

https://www.typescriptlang.org/play/?ssl=21&ssc=1&pln=1&pc=1#code/GYVwdgxgLglg9mABKSBBAzugpgJyogCggQBMZYEAuRAIzjgBssBDMASmuc1ynUWLBkKSAN4AoRJMQxghAIQCh8donFT1iKAAsccAO6IwWAwFEcunATYBuCVIC+Yx2IHp8rqBmx5EAXkKK5MrUdIws7JzceHyBwn4AfKp2kjLyscpsSRpS2roGRqbmcJY2yYiOzgTaMGAA5tRgIAC2NLiIAD6GIAwMmb6JalIoEF48BHJy1XU2iAD0s5paMHzLyDVYZVO1to5VS3UNza04HV09fQNlHqN445P7tTPziHpaAJ6IJHBY6GAA5Phqnw9MUANYAGkQrBILy0zHwzCaiAAkoh0CAAA4YuDYGFQOCfOAAfk2Dx2YiAA


[flutter_tools] remove fallback discovery and observatory timeout

Description
The flutter run failures are cause by the application occasionally taking a long time to start up. This caused the ios fallback discovery to kick in, which will always fail if the application hasn't started. Solution: remove the iOS fallback discovery and wait up to 30 seconds.
This has not proven to reduce the flakes, but it does at least remove one error case and removes code that will no longer work without the mDNS fallback.

Updated to remove globals and added a 30 second timeout to observatory discovery


How can I access the main scope from the registerApi method?

I have set up some event handlers in the registerApi method to handle clicking on tasks.  In the handlers I am unable to access the main scope of the page and update as 'this' just references the ganttTask div.  My code is shown below (I am using typescript)
 module MyModule {
   export class GanttController {

    static $inject = ['GanttActivitiesService', '$stateParams'];

    model: any;
    today = new Date();
    selectedTaskId: any;

    constructor(private GanttActivitiesService: GanttActivitiesService, private $stateParams: any) {
        this.model = GanttActivitiesService.model;
    }

    public registerApi(api) {
        api.directives.on.new(this, function(dName, dScope, dElement, dAttrs, dController) {
            if (dName === 'ganttTask') {

                 dElement.bind('dblclick', function (event) {

                       this.selectedTaskId = dScope.task.model.id; // cannot access selectedTaskId as this references ganttTask div
                });
            }
        });
    }

    static register() {
        angular.module("MyModule")
            .controller('GanttController', GanttController);
    }
}

GanttController.register();

`
Is there any way I can access the selectedTaskId field from within the event?

I don't know TypeScript sorry, but something like this should work.
// In main block
self = this;
// In event block
self.selectedTaskId = dScope.task.model.id;

Thanks for the advice @Toilal I have just worked out I can access the Parent scope from within the gantt.$scope
`// In event function block
this.gantt.$scope.$parent.GanttController.selectedTaskId = dScope.task.model.id;`


New version: deviceinsight.kafkactl-azure-plugin 1.0.4

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Automated with GoReleaser
Microsoft Reviewers: Open in CodeFlow

Hi @d-rk,
The package didn't pass a Defender or similar security scan. This might be a false positive and we can rescan tomorrow.
(Automated response - build 870.)

Automatic Validation ended with:

Executable C:\Users\validator\AppData\Local\Microsoft\WinGet\Packages\deviceinsight.kafkactl-azure-plugin__DefaultSource\kafkactl-azure-plugin.exe returned exit code: 1
Executable C:\Users\validator\AppData\Local\Microsoft\WinGet\Links\kafkactl-azure-plugin.exe returned exit code: 1
Installation failed with exit code -1978335187
2024-03-14 04:16:02.352 [FAIL] Installer failed security check. Url: https://github.com/deviceinsight/kafkactl-plugins/releases/download/v1.0.4/kafkactl-azure-plugin_1.0.4_windows_386.zip Result: 0x80004005

(Automated response - build 870.)

Hey @stephengillie ,
is this the same issue like my other PR which got merged recently?
Does the Pipeline also need to be retriggered?
Thank you for your help!

@wingetbot run

Automatic Validation ended with:

Executable C:\Users\validator\AppData\Local\Microsoft\WinGet\Packages\deviceinsight.kafkactl-azure-plugin__DefaultSource\kafkactl-azure-plugin.exe returned exit code: 1
Executable C:\Users\validator\AppData\Local\Microsoft\WinGet\Links\kafkactl-azure-plugin.exe returned exit code: 1
Executable C:\Users\Validator\AppData\Local\Microsoft\WinGet\Packages\deviceinsight.kafkactl-azure-plugin__DefaultSource\kafkactl-azure-plugin.exe returned exit code: 1
Executable C:\Users\Validator\AppData\Local\Microsoft\WinGet\Links\kafkactl-azure-plugin.exe returned exit code: 1

(Automated response - build 870.)

@wingetbot waivers Add Validation-Executable-Error

Manual Validation ended with:

2024-03-18 09:34:10.515 [FAIL] Installer failed security check. Url: https://github.com/deviceinsight/kafkactl-plugins/releases/download/v1.0.4/kafkactl-azure-plugin_1.0.4_windows_amd64.zip Result: 0x80004005

(Automated response - build 870.)

Hi @d-rk,
The package didn't pass a Defender or similar security scan. This might be a false positive and we can rescan tomorrow.
(Automated response - build 870.)

@wingetbot run

Manual Validation ended with:

2024-03-18 12:04:24.525 [FAIL] Installer failed security check. Url: https://github.com/deviceinsight/kafkactl-plugins/releases/download/v1.0.4/kafkactl-azure-plugin_1.0.4_windows_amd64.zip Result: 0x80004005

(Automated response - build 870.)

Hi @d-rk,
The package didn't pass a Defender or similar security scan. This might be a false positive and we can rescan tomorrow.
(Automated response - build 870.)

@wingetbot run

Verify:


Unexpected behavior with load/store alignment

Description
Current State
Output:<PHONE_NUMBER>4046110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Expected
An exception indicating that "alignment must not be larger than natural"
Environment

Code Version: git commit id fdc136f57d7cf3a0f184debe00bdf29e373f6326
Hardware Architecture: x86_64
Operating system: Ubuntu 20.04

Steps to Reproduce
wasmi.zip

build the wasmi
run the test case by wasmi <test_case_name> to_test

Hmmm as with the other issue running Wasmtime results in the same output without your expected exception. Can you elaborate what you used to verify that your expected output is as specified by the Wasm standard?

Hmmm as with the other issue running Wasmtime results in the same output without your expected exception. Can you elaborate what you used to verify that your expected output is as specified by the Wasm standard?

Thank you four your reply.
On Wasmedge, there is a validation error "alignment must not be larger than natural". On iwasm (from https://github.com/bytecodealliance/wasm-micro-runtime), there is an error "alignment must not be larger than natural". There is also an error on wasmer

But can you verify that Wasmtime also has this same behavior as wasmi?

Okay thanks for letting me know about all these other runtimes. Can you verify though that Wasmtime also has this same behavior as wasmi? (Just in case I did something wrong there.)

On my computer, the wasmtime can output the same thing. as wasmi·

I was reading about memory load and store operation alignment semantics in Wasm and found this explanation: https://rsms.me/wasm-intro#addressing-memory
So according to this source it seems to me that wasmi and Wasmtime behavior is actually correct.

@erxiaozhou it would be nice to know if you agree with my interpretation or disagree so we can either close this or find an agreement.

@erxiaozhou it would be nice to know if you agree with my interpretation or disagree so we can either close this or find an agreement.

Thank you for your nice reply. I'm reading the explanation link, and I'll decide my opinion in a few hours. So I wish you could wait for me for hours, thank you!

@erxiaozhou it would be nice to know if you agree with my interpretation or disagree so we can either close this or find an agreement.

reply_wasmi_570.zip
Thank you for your patient reply. I prepare a shorter test case in the zip.
The wat code corresponding to the function to_test in wasmi_unexpected.wasm is as followed. (The steps to generate this test case is also attached)
    (local i32 f32 i64 f64)
    f64.const 1.0
    br 0
    unreachable
    i64.store offset=0 align=0x40
    drop

There is no error when I execute  wasmi_cli wasmi_unexpected.wasm to_test. However, it seems there is supposed to be a error because the memarg.align of i64.store  is 0x40. Because according to the specification, the alignment must not be larger than the bit width of 𝑡 divided by 8 and 0x40 is greater than 64/8. https://webassembly.github.io/spec/core/valid/instructions.html#memory-instructions

Looking forward to your reply, thak you!

Hmmm, if this is true then it might imply a bug in the wasmparser crate with its Wasm validation infrastructure that we are also using in wasmi. Seems to be a check that should exist at Wasm validation time indeed.

Hmmm, if this is true then it might imply a bug in the wasmparser crate with its Wasm validation infrastructure that we are also using in wasmi. Seems to be a check that should exist at Wasm validation time indeed. Maybe it is not checked due to being unreachable? At least in wasmi we tend to ignore code that we know is unreachable. However, unreachable code is still validated.
For i64.store as in your example the maximum allowed value for the alignment parameter is 3 since alignment is given as 2^align therefore a value of 3 is 2^3 = 8. I just checked the wasmparser code and can verify that it looks as if they do not miss any alignment checks.

reply_wasmi_570_2.zip
Thank you for your insights and patient reply!  I have tried different values for the byte which represents memarg.align.  I found an interesting phenomenon when I set the value of this byte to 4 (i.e., the test case reply_570_2_expected_cannot_execution.wasm), the program throws an exception as expected and when I set the value of that byte to 0x40 (i.e., the test case replay_570_2_unexpected_execution.wasm), no exception is thrown.

Interestingly trying to turn the Wasm file into a .wat file is also not possible due to the following error:
> wasm2wat replay_570_2_unexpected_execution.wasm -o replay_570_2_unexpected_execution.wat
0000046: error: invalid store alignment: 64

This really looks like something in Wasm validation is wrong somewhere.

@erxiaozhou I just tried your provided wasmi_unexpected.wasm with the most recent version of wasmi_cli and now it properly fails as expected denying the invalid alignment value.
I guess the bug in wasmparser has been fixed and we updated to the fixed version in the meantime.
@erxiaozhou Can you confirm this so that we can close this issue?
I tested with
cargo install wasmi_cli

And also the current wasmi_cli on master.

Strongly connected to this Wasmtime issue: https://github.com/bytecodealliance/wasmtime/issues/5344

The linked Wasmtime issue was just triaged and found to be fixed.
Thus, once we update to the new wasmparser version we should have this fix ready for Wasmi as well. (if it isn't already fixed)


IE 11 Windows 10 not working 'JSON' is undefined

i'm using windows 10 and IE 11.576.14393.0
'JSON' is undefined
script.js (8,7)
'JSON' is undefined
script.js (155,7)
thanks

fix @ #221

Thank you @meta0102 , already merged.


added Module unittests

Current dependencies on/for this PR:

main

PR #167   👈

This stack of pull requests is managed by Graphite.


no_std support?

Thanks for creating this!
As a rust noob, slowly getting to grips with embedded systems, this is all still a bit confusing. Does the thiserror dependency mean that the library can't be used in a bare-metal, no_std environment? Thanks.

That is a very good question, my use case never thought about having no std in my crates. I will give it a look in the week to see if I can not only provide 100% support for this crate but for my other crates too.
You're also welcome to make a PR if you figure out a solution, thanks!

Many thanks. I have been digging into the code to see if I can make it work, but despite it all looking relatively straight-forward, I'm only very early into my journey into Rust, so am still somewhat floundering around at the moment.

Ill investigate into the libs, if thiserror is the culprit then ill look for alternative libs like derive_more which might have no_std support

I pushed an update, sorry it took so long


Experiment: With minimal modsec config, is phase 4 still broken?

Yes. https://crm457-1721-b-expl-nscc-provider-dev.cloud-platform.service.justice.gov.uk/assets/file-upload-a2e2c5e8.js.map triggers a false positive on rule 952100, and modsec thinks it is blocking it and replacing the status with a 403, but the body is still returned to the HTTP requester. The status code is coming across as either 200 or ERR_HTTP2_PROTOCOL_ERROR on the client-side, and the kibana logs list it as a 500.

This is to enable investigation of https://github.com/ministryofjustice/cloud-platform/issues/5906


Create CODEOWNERS

As part of our work to easily identify the maintainers of our open source projects, this PR adds a CODEOWNER file.
What it does:

Automatically include people as reviewers on pull requests
Provide a clear reference of who should be answering questions and making decisions
Make it easy to search for projects which need a new owner when somebody leaves

That's me! Happy to take codeownership of this project.

And I'm happy that you are happy to take codeownership of factory 🤖 🎉


Ignores uncovered mongodbURL

For the sake of keeping a good coverage, and because no particular tests were written for that vendor library, added the jasmine ignore on the methods in the file

Current coverage is 91.92%

Merging #1102 into master will increase coverage by +5.58% as of 356c17f

@@            master   #1102   diff @@
======================================
  Files           91      91
  Stmts         5749    5736    -13
  Branches      1240    1043   -197
  Methods          0       0
======================================
+ Hit           4964    5273   +309
+ Partial         13      11     -2
+ Missed         772     452   -320

Review entire Coverage Diff as of 356c17f

Powered by Codecov. Updated on successful CI builds.


go1.10 errors_test.go use errors_test with errors.go

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

$ go version
go1.10 linux/amd64

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/shawn/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/shawn/Workspaces"
GORACE=""
GOROOT="/usr/local/go1.10"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go1.10/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build983462816=/tmp/go-build -gno-record-gcc-switches"

What did you do?

What did you expect to see?
go files in errors package all use errors as package
What did you see instead?
errors.go use errors package, but test files use errors_test package

Duplicate of #25223


Generate support bundle for InPlace test in case the validations fail

Issue #, if available:
For the InPlace E2Es it so happens that sometimes the CRDs are left behind after a successful upgrade. In such scenarios, the test fails as the validations do not succeed but since the CLI in itself didn't fail we do not have access to support bundles, which makes it hard to investigate the failure. This change generates support bundle for InPlace tests in case the validations on the cluster fail.
Description of changes:
Testing (if applicable):
Tested locally by mocking a failed scenario.
Documentation added/planned (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/cherry-pick release-0.19


feat: use import.meta.url instead of self.location

Description
Use import.meta.url instead of replacing them with self.location.
fixes #10842
Additional context

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[x] Read the Contributing Guidelines.
[x] Read the Pull Request Guidelines and follow the PR Title Convention.
[x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[ ] Ideally, include relevant tests that fail without this PR but pass with it.

Yep, it works by that part.


fix mariadb typo error

fix mariadb typo error

Thank you for contributing to kubernetes/charts. Before you submit this PR we'd like to
make sure you are aware of our technical requirements and best practices:

https://github.com/kubernetes/charts/blob/master/CONTRIBUTING.md#technical-requirements
https://github.com/kubernetes/helm/tree/master/docs/chart_best_practices

For a quick overview across what we will look at reviewing your PR, please read
our review guidelines:

https://github.com/kubernetes/charts/blob/master/REVIEW_GUIDELINES.md

Following our best practices right from the start will accelerate the review process and
help get your PR merged quicker.
When updates to your PR are requested, please add new commits and do not squash the
history. This will make it easier to identify new changes. The PR will be squashed
anyways when it is merged. Thanks.

/ok-to-test
/lgtm

Please fix the linter errors. Thanks!
/lgtm cancel

Thanks for the change. We would need one PR per chart. Note that nginx-lego is deprecated and won't be updated.


Confirmation regarding XML file validation

Information

OS & version: Windows 10
Java version: 11.0.12

Other details
Could you please let me know when Update the latest Tool for converting XML, I want to validate it?
I want to validate XML file 2022.

@pratikshav13 I will update this once start accepting 2022 xml files. I don't know the exact timeline but it won't be worked on until at the earliest of June/July 2022.


[Windows] zk system command does not report zkapp-cli version

Martin's testing showed that envinfo's CLI reports it correctly:
npx envinfo --npmGlobalPackages

  npmGlobalPackages:
    zkapp-cli: 0.1.22

But when used programatically we get the following (even though it works on Mac & Linux):
  npmGlobalPackages:
    zkapp-cli: Not Found

Possibly due to an upstream bug in envinfo. Related:

https://github.com/tabrindle/envinfo/issues/143
https://github.com/tabrindle/envinfo/pull/144

@MartinMinkov Still an issue? We'll keep open if so. Can you check on Windows please

It seems still be the case on Windows (checked on 11 both CMD and PowerShell). Will take a look on the issue.


Fix Top margin of product items

@codervivek5, As a Gssoc'2023 contributor please assign me this issue
before changes -

After Changes -

@codervivek5  Can I create a PR for this issue


Languages and regions lived/visited

We need a way to choose languages consistently to be able to filter well (rather than allowing freeform choice).

Storing a list of ISO 639-2 three-letter codes in the backend sounds good, then frontend can deal with language names and localization thereof.

Agreed, one other thing though, we also need to save the fluency. Either A1-C2 and Mother Tongue or a list like Can say hello, Beginner, Intermediate, Advanced, Fluent, Mother tongue

Just three letters sounds like it runs the risk of a code corresponding to more than one language but I checked and they're all unique, huh.

I suppose we could have a list of dicts like so:
user.languages = [{
  language: 'aar'
  fluency: 1
  },
  ... and so on
]

A error would be raised if a request was made with more than 547 languages, as that is more than the number of existing languages in the ISO dataset.
@lucaslcode can you describe the specs for what you need from the backend, please? (API endpoint name, request params, response)

Actually maybe we should use ISO639-3 instead of ISO639-2? Version 2 just has one code for "sign languages", but there are multiple types of sign languages. I've never used ISO639 before though so maybe there is some major advantage to v2 i'm missing. @kalvdans thoughts?

Actually maybe we should use ISO639-3 instead of ISO639-2? Version 2 just has one code for "sign languages", but there are multiple types of sign languages. I've never used ISO639 before though so maybe there is some major advantage to v2 i'm missing. @kalvdans thoughts?

You are right, ISO639-3 is better. It also only allow one mnemonic for each language, for example ISO639-2 can spell German ger or deu, while ISO639-3 only allow deu.

fluency

For the sake of automatic host-guest matching based on languages, I think we should only put languages that we are comfortable to host/surf with in the list of languages. Further refinements such that fluency could be done in free text in the profile, not reachable of the search filter.

I think it's nice to include if it's not too much trouble. Maybe I'm fluent in French and I want to surf with subscribe learning French because I have something to offer.

@lucaslcode following up on this - just checking if you saw my comment asking for the specs. If yes no worries, take your time.

@Almenon sorry I did miss it.
How about this, replace the existing repeated string languages = 17; in api.proto with
repeated LanguageAbility languages = 17;

...

message LanguageAbility {
  enum Fluency {
      FLUENCY_UNSPECIFIED= 0;
      FLUENCY_SAY_HELLO = 1;
      FLUENCY_BEGINNER = 2;
      FLUENCY_INTERMEDIATE = 3;
      FLUENCY_ADVANCED = 4;
      FLUENCY_FLUENT = 5;
      FLUENCY_NATIVE = 6;
  }
  string code = 1; //ISO639-3
  Fluency fluency = 2;
}

If it's a standard, we can just implement the code->language table on the frontend. However I'm not convinced ISO639-3 is the right choice. Do we really need all these? I guess maybe it's fine...

I'd prefer ISO639-3 because it's more inclusive for mute people but it is 100KB larger (113KB vs 16KB). If the size is a concern I suppose we could use ISO639-2.
That format looks good - to confirm, when you call UpdateProfileReq you will be passing in that format for the languages param, right? That's the only API endpoint that needs updating?

I'd prefer ISO639-3 because it's more inclusive for mute people but it is 100KB larger (113KB vs 16KB). If the size is a concern I suppose we could use ISO639-2.
That format looks good - to confirm, when you call UpdateProfileReq you will be passing in that format for the languages param, right? That's the only API endpoint that needs updating?

We could use ISO639-3 and then just support a subset of the most common ones in the frontend.

That's the only API endpoint that needs updating?

Yes, UpdateProfileReq and User

We could use ISO639-3 and then just support a subset of the most common ones in the frontend.

That's the only API endpoint that needs updating?

Yes, UpdateProfileReq and User

We could use ISO639-3 and then just support a subset of the most common ones in the frontend.

That's the only API endpoint that needs updating?

Yes, UpdateProfileReq and User

We could use ISO639-3 and then just support a subset of the most common ones in the frontend.

That's the only API endpoint that needs updating?

Yes, UpdateProfileReq and User

I feel like embedding the whole ISO639-3 list is a bit overkill. Well, rather, I think it'll make something like an autocomplete box look a bit silly.
I'm thinking maybe we should just find some sensible subset of ISO639-3, and store that somewhere, then if there are languages we missed, I'm sure people will let us know and we can add them as we go. Using the ISO639-3 identifier looks like it would work very well though, I doubt we need to add languages outside it.
We can either store the subset as a JSON file, or create a fairly straightforward API call to retrieve the list (or even autocomplete results).
What do you think?

I feel like embedding the whole ISO639-3 list is a bit overkill. Well, rather, I think it'll make something like an autocomplete box look a bit silly.
I'm thinking maybe we should just find some sensible subset of ISO639-3, and store that somewhere, then if there are languages we missed, I'm sure people will let us know and we can add them as we go. Using the ISO639-3 identifier looks like it would work very well though, I doubt we need to add languages outside it.
We can either store the subset as a JSON file, or create a fairly straightforward API call to retrieve the list (or even autocomplete results).
What do you think?

I feel like embedding the whole ISO639-3 list is a bit overkill. Well, rather, I think it'll make something like an autocomplete box look a bit silly.

I'm thinking that a client should not include the whole list even if it was allowed. The primary language could be autofilled from the locale settings in the browser/OS.

Backend is now ready in #926 for frontend implementation, but we broke the API so the frontend broke too!

Done


add groupByLabel template function

When using groupByLabel in the query it returns the count of the original results grouped by the given label name.
ex. Given output of up:
up{instance="localhost:9101",job="a"}	1
up{instance="localhost:9101",job="a"}	1
up{instance="localhost:9101",job="b"}	1
up{instance="localhost:9101",job="b"}	1
up{instance="localhost:9101",job="b"}	1
{{ range query "up" | groupByLabel "job }} yields:
a: 2 b: 3

This is a duplicate of #622, which handles this via PromQL. I don't think this belongs in the template system.

What I'm trying to accomplish is a generic method of discovering unique label values returned for use in the console templates,
I'm trying to get one line returned per unique label values based on the given label, in my case to populate a table of those unique customer sites.
Example: console page sites.html gets called with sites.html?name=xyz and it populates this table with the unique nodes within the site:

Customer Nodes

{{ range query "up{customer_site='{{ .Params.name }}'} | groupByLabel "job" }}

{{ .Labels.job }}

{{ end }}

I just noticed this can be accomplished by:
count(up) by (job)
Closing branch


Drop Guava back to 18.0

This change is

@uschi2000 I think we probably want to take this change before we cut 2.1.0 for real. Thoughts?

Yep
On Fri, Mar 17, 2017 at 3:48 PM Mark Elliot<EMAIL_ADDRESS>wrote:

@uschi2000 https://github.com/uschi2000 I think we probably want to
take this change before we cut 2.1.0 for real. Thoughts?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/palantir/http-remoting/pull/374#issuecomment-287391808,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGOdwdLqR7KqQh_qGGCzF3AmKnw-xMt-ks5rmqtTgaJpZM4MeuJw
.

@markelliot Was upgrading to DW 1.1.0 (came out yesterday) which bumps to 21.0, and noticed this.  What was the rationale for the downgrade?


section 4 subsections

show subsection headers for section 4 (system features), visual change attached
escaping and line break changes

section 4 changes

closing, these commits will remain if anyone wants to pull them upstream


Lens position raw

Should we deprecate lensPosition and perhaps rename the new one to lensPositionNormalized?

We'll retain lensPosition or in future add a "distance based"/absolute lens position. So for now this change is okay


find terraria path properly

once #11 is fixed, this is easy:
mac/linux: appdirs.user_data_dir('Terraria')
windows; unchanged: Documents/My Games/Terraria
but worlds are also in os.path.join(appdirs.user_data_dir('Steam'), 'steam', 'userdata', user_id, '105600', 'remote', 'worlds')

offline world paths adjusted in cbeb3025c10d6216cac57b22fdeb02e6180359cf .
Note that this breaks compatibility with old monogame modded Terraria versions, which saved to ~/My Games/Terraria

As for the online world it may be required to sweep the entire dir tree, since I don't think it's easily possible to determine currently logged in steam user id.

wow, thanks, great!
btw., caches are usually in ´user_cache_dir´, but that’s not important. i’m leaving for the festival in some minutes, at sunday i’ll be able to contribute :smile:

it's not really a cache. it's settings and meta-info on processed worlds. Which in future might be useful to split into separate files.

Current implementation of getting Terraria online worlds broke somewhere along the line.
I fixed it for ubuntu in fe42b24ac8690efc9e43d4c6c0e077e630fa1f37
If that doesn't work in other linux' we'll need to start checking for multiple locations or react based on OS.

should work, but idk why you did the first change.
appdirs.user_data_dir('Steam'), i.e. ~/.local/share/Steam should be symlinked to by ~/.steam/steam

That's not how my ubuntu handled it - appdirs.user_data_dir('Steam') does exist, but only has a logs folder, nothing else.

Right, it appears to work. I'll close this last issue of the V18 milestone and start deploying.
Linux binaries don't exist yet, but there is no reason to have the windows users wait for that.
Will continue to work on linux binaries over the lifetime of V18. I tried Pyinstaller as freezer so far, but that does not handle any "from omnitool import ..." at all, and there's plenty of those. Admittedly an import from main is bad practice - which I did not know 3 years ago when that was first written ;)


Avoid shadowing labels from EaseStack

Codecov Report
Base: 75.43% // Head: 75.40% // Decreases project coverage by -0.03% :warning:

Coverage data is based on head (0dc0295) compared to base (bd6757a).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #149      +/-   ##
==========================================
- Coverage   75.43%   75.40%   -0.04%
==========================================
  Files          76       76
  Lines        6248     6248
==========================================
- Hits         4713     4711       -2
- Misses       1281     1284       +3
+ Partials      254      253       -1

Impacted Files
Coverage Δ

.../client/command/meshinstall/controlpanel/deploy.go
50.00% <0.00%> (-1.45%)
:arrow_down:

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add openai to requirements.txt

This PR adds openai to the requirements.txt file. It also pins the other packages in the requirements.txt.

@gengliangwang I just discovered this dependency does not exist when I try to run the code in the example notebook.
And also we are using peotry for setting up this repo? If so I think we should also add poetry.lock file.

I just discovered this dependency does not exist when I try to run the code in the example notebook.

OK, let's add the openai deps

And also we are using peotry for setting up this repo? If so I think we should also add poetry.lock file.

Yes, could you help it as well?


Feature/refactor with separated main

Merging refactored repo in main branch

Refactored repo structure
Yes code quality has to be adressed


Fix typo: boostrapping -> bootstrapping.

Could you change the commit title to docs/config: fix typo xxx? Ref: https://github.com/coreos/etcd/blob/master/CONTRIBUTING.md#format-of-the-commit-message

LGTM. Thanks for the contribution!


Task3

Issue: #3
Screenshot and code added

Your Task 3 script and output is incorrect. We require the list of files of each of the folders in the PATH environment variable.


Usage of CMake for build process

Using CMake (https://cmake.org/) enables the easy building of ColPack on supercomputers like Cray XC40. Tested on "Konrad" of HLRN/ZIB (http://www.zib.de/research_services/supercomputing).

Well, the checks must fail since all the files related to autotools have been removed.

The approach in pull request #16 is way better!


inventory: add missing inspira SPARC systems

As per slack discussion @gdams it would be good to understand if build machine -1 is supposed to be online as it is not currently.
Initial test system was added (commented out) under https://github.com/AdoptOpenJDK/openjdk-infrastructure/pull/1338
Signed-off-by: Stewart X Addison<EMAIL_ADDRESS>

@sxa Linter not happy

Linter issues resolved. Will merge once other checks complete

Checks appeared jammed in queueing state

Force pushing commit message change to re-queue

Happy @karianna ?


iOS CI "Waiting for observatory url" meta issue

Every benchmark and test that runs on iOS has the potential to hit this issue, but here are a few of the issues flagged by the flake bot:
https://github.com/flutter/flutter/issues/102663
https://github.com/flutter/flutter/issues/96401
https://github.com/flutter/flutter/issues/95582
https://github.com/flutter/flutter/issues/102230
In all of the flakes in the logs, before even attempting to install or run the app, it looks like xcrun xcdevice list --timeout 2(?) is reporting the device status with an error like:
"error" : {
  "code" : -10,
  "failureReason" : "",
  "description" : "iPhone is busy: Fetching debug symbols for iPhone",
  "recoverySuggestion" : "Xcode will continue when iPhone is finished.",
  "domain" : "com.apple.platform.iphoneos"
},

We should hoist this check out of flutter drive into an infra step, so that if the condition persists, jobs fail with an infra failure before trying to run test code. At that point, instead of flagging an infra failure, we might also reboot the deivce or host, or do some other sort of recovery in a scriptable way.
Marking this umbrella issue P1, and downgrading the sub-issues to P3 to make triage easier.
/cc @keyonghan

We should hoist this check out of flutter drive into an infra step, so that if the condition persists, jobs fail with an infra failure before trying to run test code. At that point, instead of flagging an infra failure, we might also reboot the deivce or host, or do some other sort of recovery in a scriptable way.

@keyonghan should this check live in the device_doctor?

@keyonghan should this check live in the device_doctor?

Is there any way to check this without xcode installed? The blocker of xcode is that it's not available when the bot does health checks.

@keyonghan should this check live in the device_doctor?

Is there any way to check this without xcode installed? The blocker of xcode is that it's not available when the bot does health checks.

Hmm, let me check if idevice_id will get it

@christopherfujino are there any updates on this issue?

@christopherfujino are there any updates on this issue?

My --uninstall-first PR was certainly not a fix, as it has flaked since: https://ci.chromium.org/ui/p/flutter/builders/staging/Mac_ios hot_mode_dev_cycle_ios__benchmark/1371/overview
I could not find a way to check for iPhone is busy: Fetching debug symbols for iPhone without Xcode
Jenn suggested updating iOS on the phones. I filed https://github.com/flutter/flutter/issues/103733 and added to the infra ticket queue.

@keyonghan @christopherfujino Can this be an infra step after Xcode is installed? Why does it have to be part of the health check?

@keyonghan @christopherfujino Can this be an infra step after Xcode is installed? Why does it have to be part of the health check?

This should be doable.
Updating iOS on the phones is an expensive process.
/cc @christopherfujino could you advise how to extract the error from the command line? From the log, xcrun steps return code 0:
executing: xcrun xcdevice list --timeout 2
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [   +7 ms] xcrun simctl list --json devices
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [        ] executing: xcrun simctl list --json devices
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [   +5 ms] executing: xcrun simctl list
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [ +106 ms] Exit code 0 from: xcrun simctl list

Is it enough to run xcrun xcdevice list --timeout 2 as an infra step to catch the issue?

@keyonghan @christopherfujino Can this be an infra step after Xcode is installed? Why does it have to be part of the health check?

This should be doable. Updating iOS on the phones is an expensive process. /cc @christopherfujino could you advise how to extract the error from the command line? From the log, xcrun steps return code 0:
executing: xcrun xcdevice list --timeout 2
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [   +7 ms] xcrun simctl list --json devices
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [        ] executing: xcrun simctl list --json devices
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [   +5 ms] executing: xcrun simctl list
[post_backdrop_filter_perf_ios__timeline_summary] [STDOUT] stdout: [ +106 ms] Exit code 0 from: xcrun simctl list

Is it enough to run xcrun xcdevice list --timeout 2 as an infra step to catch the issue?

I think we'd have to parse the JSON output, and check for the error field

I'm seeing a new backtrace in https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios microbenchmarks_ios/4563/overview
[microbenchmarks_ios] [STDOUT] [STDOUT] [  +90 ms] * thread #1, queue = 'com.apple.main-thread', stop reason = trace
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]   * frame #0: 0x00000001004545e4 dyld`dyld4::lldb_image_notifier(dyld_image_mode, unsigned int, dyld_image_info const*) + 184
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #1: 0x0000000100432ff0 dyld`dyld4::RuntimeState::notifyDebuggerLoad(dyld3::Array<dyld4::Loader const*> const&) + 332
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #2: 0x00000001004338fc dyld`invocation function for block in dyld4::APIs::dlopen_from(char const*, int, void*) + 628
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #3: 0x0000000100441274 dyld`dyld4::RuntimeState::withLoadersWriteLock(void () block_pointer) + 68
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #4: 0x000000010043528c dyld`dyld4::APIs::dlopen_from(char const*, int, void*) + 440
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #5: 0x00000001847d9cf0 CoreFoundation`<redacted> + 152
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #6: 0x00000001847da854 CoreFoundation`_CFBundleLoadExecutableAndReturnError + 340
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #7: 0x0000000185ed5010 Foundation`<redacted> + 424
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #8: 0x0000000187048328 UIKitCore`<redacted> + 112
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #9: 0x0000000187035fe8 UIKitCore`<redacted> + 24
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #10: 0x0000000186fbf448 UIKitCore`<redacted> + 120
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #11: 0x0000000186ed11c0 UIKitCore`_UIAccessibilityInitialize + 48
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #12: 0x0000000186f6bc74 UIKitCore`<redacted> + 80
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #13: 0x0000000186d01ce0 UIKitCore`UIApplicationMain + 2028
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #14: 0x000000010032fdd4 Runner`main(argc=<unavailable>, argv=<unavailable>) at main.m:10:16 [opt]
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #15: 0x0000000100444190 dyld`start + 444
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]   thread #2
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #0: 0x00000001de8299e8 libsystem_pthread.dylib`start_wqthread
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]   thread #3
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #0: 0x00000001be1ed0cc libsystem_kernel.dylib`__workq_kernreturn + 8
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]   thread #4
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #0: 0x00000001de8299e8 libsystem_pthread.dylib`start_wqthread
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]   thread #5, name = 'com.apple.uikit.eventfetch-thread'
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #0: 0x00000001be1ecb10 libsystem_kernel.dylib`mach_msg_trap + 8
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #1: 0x00000001be1ed134 libsystem_kernel.dylib`mach_msg + 72
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #2: 0x0000000184722ac0 CoreFoundation`<redacted> + 368
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #3: 0x0000000184726ba8 CoreFoundation`<redacted> + 1184
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #4: 0x0000000184739d7c CoreFoundation`CFRunLoopRunSpecific + 572
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #5: 0x0000000185e7200c Foundation`<redacted> + 232
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #6: 0x0000000185eb118c Foundation`<redacted> + 88
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #7: 0x0000000186ee9d58 UIKitCore`<redacted> + 512
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #8: 0x0000000185ebeefc Foundation`<redacted> + 792
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #9: 0x00000001de82b3a4 libsystem_pthread.dylib`_pthread_start + 116
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]   thread #6
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #0: 0x00000001de8299e8 libsystem_pthread.dylib`start_wqthread
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]   thread #7
[microbenchmarks_ios] [STDOUT] [STDOUT] [        ]     frame #0: 0x00000001de8299e8 libsystem_pthread.dylib`start_wqthread

Looking through top list of https://flutter-dashboard.appspot.com/#/build?taskFilter=Mac_ios post_backdrop_filter_perf_ios__timeline_summary, the error log exists in all green builds as well:
"error" : {
  "code" : -10,
  "failureReason" : "",
  "description" : "iPhone is busy: Fetching debug symbols for iPhone",
  "recoverySuggestion" : "Xcode will continue when iPhone is finished.",
  "domain" : "com.apple.platform.iphoneos"
},

The flake culprit sounds something else.

Looking through top list of https://flutter-dashboard.appspot.com/#/build?taskFilter=Mac_ios post_backdrop_filter_perf_ios__timeline_summary, the error log exists in all green builds as well:
"error" : {
  "code" : -10,
  "failureReason" : "",
  "description" : "iPhone is busy: Fetching debug symbols for iPhone",
  "recoverySuggestion" : "Xcode will continue when iPhone is finished.",
  "domain" : "com.apple.platform.iphoneos"
},

The flake culprit sounds something else.

A few things:

you're right, it always shows, so just making these purple would effectively make them all purple
even the green builds are NOT in a good state, the app essentially is starting paused for 30 seconds, and only when we hit that timeout, tell lldb to pause the app, dump the backtrace, and then RESUME, does the app actually start. the remaining flakes are because the app didn't respond to LLDB within LLDB's OWN 20 second timeout.
I suspect the debug symbol error is related, as I was seeing it when I could reproduce this locally, but now it is gone. I'm not sure exactly how I resolved it, I suspect that Xcode may have resolved it under the hood?

@keyonghan you might be right that the root cause is something else, however I don't think we should be trying to run apps on a device that is telling us that it's busy.

I will explore caching the iOS device support directory, which I suspect is getting blown away on each LUCI run:
https://developer.apple.com/forums/thread/683654
https://developer.apple.com/forums/thread/123068

Opened infra cl https://flutter-review.googlesource.com/c/infra/+/30210 to create the cache (will need a follow-up recipe change to use it)

I'm going to try deleting the .copying_lock file in that directory while setting up the build--i bet Xcode creates the lockfile, but then gets killed before it removes it

Deleting the lock file did not fix this. Maybe we should just open Xcode on these devices to unblock, since this gets persisted between runs.

Deleting the lock file did not fix this. Maybe we should just open Xcode on these devices to unblock, since this gets persisted between runs.

Is it simply to open the Xcode, or any other action is needed?
BTW: do you see this a one-time fix, or the issue may pop up again? Long term, an automatic way is more preferred though.

I stopped by the lab today. Most of the phones have the update dialog. Could this be what is causing the issues?

I stopped by the lab today. Most of the phones have the update dialog. Could this be what is causing the issues?

Historically, the update dialogs have caused test failures and benchmark regressions, so I'm pretty surprised that things have been working as well as they have been with dialogs up. Any idea how long they've been there?

@godofredoc I'm guessing you dismissed all the dialogs on Thursday, May 19? It looks like the observatory is still not showing within 30 seconds, and the debug symbol error is still showing. Next I will try connecting to the bots via VNC and opening Xcode to download the symbols.

Deleting the lock file did not fix this. Maybe we should just open Xcode on these devices to unblock, since this gets persisted between runs.

Is it simply to open the Xcode, or any other action is needed? BTW: do you see this a one-time fix, or the issue may pop up again? Long term, an automatic way is more preferred though.

I'm not sure if this will fix it, it might be a once per device per iOS update? I agree an automatic way is preferred, but I'm stumped as to how to do that.

I didn't let me update the staging phones to the new version

@godofredoc what version was it trying to update to? I thought we were suppressing minor version updates on those phones.

iOS-15.5

iOS-15.5

How does that work with .ci.yaml, how does that property stay in sync with the version on the phone?
https://github.com/flutter/flutter/blob/7b6ec2c82a4b56560bea626678e0197bccd86243/.ci.yaml#L89

We'll need to update the phones manually and then update the .ci.yaml with the new version.

good news: I connected to both of our mac_ios staging bots (https://chromium-swarm.appspot.com/bot?id=flutter-devicelab-mac-23 and https://chromium-swarm.appspot.com/bot?id=flutter-devicelab-mac-10) with VNC and manually opened up Xcode to let it fetch the debug symbols, and then manually ran the flutter gallery, and it seemed to work (and also no longer shows the error in flutter doctor). This confirms the theory that these were flaking because Xcode was getting stuck on downloading the debug symbols.

bad news: I don't know how to automate this.

good news: the directory where these symbols are saved is already persisted between runs, so I'm guessing we would only have to manually do this once per host per iOS version?

bad news: at least for mac-10, it's failing pretty much every time in the dismiss dialog step: https://chromium-swarm.appspot.com/bot?id=flutter-devicelab-mac-10. I suspect the problem is that the text of the dialog has changed, so someone will have to go to the devicelab, document the new dialog, and then update device_doctor https://cs.opensource.google/flutter/cocoon/+/main:device_doctor/tool/infra-dialog/

With regards to this bug, I don't think we actually need to update the iOS versions of the phones (we may want to for other reasons), I think fixing the device doctor dialog dismisser will get us into a good state.

@keyonghan Regarding (3) is there an infra playbook for updating the devices in the device lab that we can add this step to? Also, are you able to go to the lab to read the dialog text?

I filed https://github.com/flutter/flutter/issues/104672 for #4, where I noted that it's actually unclear from the logs why it's failing. Yusuf is going to the devicelab tomorrow to look at #4, I will try to tag along and manually get all the mac hosts into a good state.
I will also document the process upstream it to the infra playbook.

As for the playbooks, here they are: macOS host and iOS device

@yusuf-goog Did you learn anything from going to the lab?

I updated all phones to 15.5 and turned off auto update. @christopherfujino can provide details on the current effects.

Assigning to myself to close if justified by the report from the flaky bot tomorrow morning.

https://flutter-review.googlesource.com/c/recipes/+/31281 should resolve this issue and allow bots to self-recover

https://flutter-review.googlesource.com/c/recipes/+/31281 was reverted because the timeout wasn't long enough. I just merged https://flutter-review.googlesource.com/c/recipes/+/31420, which has exponential retry. I am monitoring the tree now, and especially mac-8, which just failed with this error: https://chromium-swarm.appspot.com/bot?id=flutter-devicelab-mac-8

Next run on mac-8 hit the recovery flow: https://luci-milo.appspot.com/ui/p/flutter/builders/prod/Mac_ios simple_animation_perf_ios/5083/overview

This is a huge improvement to the reliability of our CI. Thanks for sticking with this @christopherfujino!


Return as Result<JsValue, JsValue>

The docs say that a function can pass a value to javascript by returning as Result<JsValue, JsValue>, however the error type is serde_wasm_bindgen::Error
This can be worked around via map_err(|err| err.into()) but would be nice to have it be JsValue

Unfortunately, this isn't possible, because serde requires error type to implement serde::de::Error. Since JsValue, serde and serde-wasm-bindgen all live in different crates, we have to use a wrapper type here to implement that trait.

Just to note: another way this should work is if you use ? operator, which performs err.into() under the hood.


Assumptions/questions after a few days of reading

I'm really excited to be learning HHS, as I can see a lot of great, very intelligent, work has gone into it already.  From reading the documentation it sounds like it will work for the app I'm building.  Now I'm trying to understand how I would use HHS to implement the data model for my app.  I've used many different databases but nothing like p2p.  I'm very new to this space (no depth of knowledge of Merkle-DAG's, spanning trees, WebRTC etc...but I get graphs). I'm trying to bridge the gap between what I want to do and how HHC works.  Here's what I've been able to piece together after a few days with a fresh set of eyes. My apologies in advance if I missed anything obvious in the docs.  If anyone is able to confirm or correct my understanding and point me in the right direction I would really appreciate it!  Open source examples are always welcome.
High Level
I can put my static SPA app on a CDN and peers will sync app data among themselves.  A signaling server is needed to aid in this process, but load on the server is not high.  HHS is like a toolbox with tools to enable this.
A Store is an abstract for actual data persistence to a peer, for instance IndexedDB in the browser.  An app's data model is made up of many interlinked spaces.  Sync logic takes data in a 'Space' and updates the store on a peer using the verify function of each class.  The full graph of spaces is represented across the network of peers.  Individual peers only have the spaces they edited or requested.  Access is granted or revoked using the CausalSet.  The whitepaper says CapabilitySet but I think the API has changed since it was written.
Spaces
Spaces can be nested within other spaces by referencing those spaces. Spaces can be discovered independently (of any particular app) via a 3-word code.  A space is an abstract for exactly one grouping of data, "a chat room, an article, a blog, an ecommerce store, etc."  A class (written by a dev) defines that grouping of data, a potential combination of literals and references to other spaces/class instances, based on business logic.  A space is implemented when a class inherits from either an immutable HashedObject or a mutable abstract, ie MutableSet which is a MutableObject.
When to use one or the other, I'm not sure.  Seems like a good use-case for HashedObject would be an error log.  Or would an error log be represented as a HashedObject nested inside a MutableSet?  What are some good use-cases for an immutable space?  Will most app data be mutable?
"They can be universally looked up using 3-word codes, like suburb-suburb-awake."  If a space really is a class instance, does that mean every single class instance needs a 3-word code?  Is this what the Shuffle class is for?  If I code a BlogSet class and an Article class, and there are 3 articles in the blog, does that mean there must be 4 spaces total for the blog?  Is there ever a situation where the blog would be just one space?
Data Model
(my main question...how to model my app data?)
It seems like an application data model would represent a graph, with the application (for a particular user) pointing to some logical root.  Various spaces/classes would then be organized under the root in a way that makes sense according to the business logic.  Each user would have various access to all or parts of this node.  ie.
App Data (for Acme Employee: Bob) =>
Acme Corp {
  Meta: {orgSpace: "acme-corp-best"}
  EmployeeSet -> Employee: {name, startDate, title, boss...}
  CustomerSet -> Customer: {name, address...}
  OrderSet -> Order: {date, total, Lines -> LineItem: {product, qty, price, amount, total}, customer...}
  ProductSet -> Product: {name, priceSet...}
  OutsideMeetingSet -> Meeting: {mtgDateTime, discussion, Invites -> Invite:{orgSpace: "abc-corp-great"}}
}
*Bob may be granted access to all or parts of this graph depending on his role at Acme.
*This is not the app I want to build, just an example.
Peer Discovery
"Peers in the network form application-defined groups over which mutable objects are synchronized. The method for obtaining peers is also application defined..."  I'm not sure what this means.  Let's say both Acme Corp ("acme-corp-best") and ABC Corp ("abc-corp-great") are pointing to their respective Org graphs.  Does HHS have logic, or does the app need custom logic, to make sure Acme employees are primarily trying to sync with other Acme employees and not ABC employees, other than for shared data like an OutsideMeeting discussion Forum which both companies can access?  How does an app define peer groups?  Implicitly?  Or is there example code for this?
Other questions:

I'm not able to find this link.  Does it still exist somewhere?
How does HHS handle when a class is modified, ie. adding or removing an attribute on an existing Space/Class?
With the library being relatively new, are there abstracts I should avoid for now?  Any pitfalls to be aware of?
I'm at 984kb for the es module...very hefty for the type of app I want to build.  Uglify may be able to cut that in half.  Are there plans to reduce that or has anyone attempted tree-shaking?
Are users able to login seamlessly from any device?  If so, how secure is their password?
Besides the examples within the HHS github, are there any others that would serve as good examples?
"...the Hyper Hyper Space project proposes a framework for universal information access."  I think P2P is one way the little guy can compete with BigTech because of the potential for scalability.  But, ironically, completely open data gives that monopoly a warm welcome through the front door.   In the client/server model, companies can protect (some) data from competitors indefinitely.  But patents expire after a number of years.  Let's say the little guy builds a really great platform and corresponding graph.  Is there a way to protect that investment from a well-funded competitor?
Are there any performance benchmarks for HHS?
How many signaling servers are required for x number of users?
Gun uses a relay server to assist in data persistence and availability.  Does HHC factor this in?
Are there plans in the works for documentation of HHC classes and various use-cases or comparisons with other database models...something to help bridge that mental model gap?
From p2p-chat-cli "the chat room is lost forever"...Is this because the app is syncing but not persisting to a store?

Again, great work on HHC and thank you to anyone who can help confirm/deny assumptions and answer questions.  It looks very promising!

Hello @timsim00 ! That's an amazing summary and list of questions, thank you again for putting it together.
Even though this library is already a few years old, it's only now becoming a viable platform for apps. The truth is that we're still figuring out a set of generic primitives to base p2p, Byzantine fault tolerant apps on. I think we've got all the pieces by now, but as you hinted I feel we need a set of established patterns / recipes to make it easier.
Data model
Yeah, HashedObject is for data that won't change, but it may contain references to mutable stuff. For example, in the chat group example the root object would look something like
class ChatGroup extends HashedObject {

   moderators: MutableSet<Identity>;
   messages: MutableSet<Message>;

   ...
}

So the ChatGroup object is immutable, but contains references to the moderators and messages sets that are mutable.
Like you said, internally a MutableObject is represented as a HashedObject (this is the mutable object's initial state, in the case of the set that would be an empty set). Changes are implemented by creating operations, which are instances of MutationOp (another derivative of HashedObject). So say when you add an element to a set and then save it to the store, MutableSet will create an AddOp containing the new element, and referencing the object you're modifying. Hence a graph of derivatives of HashedObject referencing each other is formed, and it grows as you add or modify data (crucially these objects never change, if you remove that element from the set later, a DeleteOp referencing the set and the AddOpwill be appended to the graph).
So the data model can be seen as transforming mutable state into an append-only graph that can be streamed to other peers.
Spaces
In general, a Space defines the sharing boundary an app will use. In the chat example, it makes sense to use the ChatGroup class as our sharing boundary: folks can join a chat group (and hence get access to all its contents). In document-based apps, a document is a natural candidate for a Space. Usually, the methods startSync and stopSync will configure the mesh node they're on by:

Joining any necessary peer groups (may be just one per space)
Asking the mesh node to sync some objects with that peer group

As you mention, it is possible to use spaces as an inter-app integration method. For example, if you define types for something like Slack or Discord, you could have a space for your entire workspace, with all the threads, but you could also define a space per-channel, to make this channels available in other apps / contexts besides your workspace (for example, you may want to make a channel public and embed it into your website, or bridge a channel between two different workspaces to help to organizations collaborate). But this is rather advanced and I've never used spaces like that yet!
Access control
This data model makes access control especially challenging, because the graph we're using to represent data may be replicated un-evenly to peers. So folks may use their access rights concurrently with they being granted or revoked, and some peers may see their actions as valid or invalid initially, but may have to change their mind as more data is replicated. That's what the CausalSets are for: they attach additional information to object mutations, in order to allow all the peers to agree on a state once enough data has been replicated.
Here's an example, again from chat groups, about the rule for deleting messages:
    protected createDeleteAuthorizer(msg: Message, author: Identity): Authorizer {

        // any member may delete their own messages, but only moderators can delete other's

        const membershipReq = author.equals(msg.getAuthor()) ?
                                                                this.getMembers()
                                                             :
                                                                this.getAdmins();

        const membershipAuth = membershipReq.createMembershipAuthorizer(author);

        return Authorization.chain(super.createDeleteAuthorizer(msg, author), membershipAuth);
    }

That's saying that we will require a membership attestation (that's an object that serves as proof that something belonged to a given set at the time of this change), and if the author of the message is the same as the author doing the change, we will require an attestation of the author belonging to the members set of the chat group - but if the author of the change (the deletion) is not the same as the author of the message, then he needs to attest that they belong to the moderators set.
This API is not intuitive enough yet, we'll try to find better primitives for expressing this. But in this terms, upon adding an Order to the OrderSet in your example, OrderSet should derive from CausalSet, and its createAddAuthorizer method should return something like this.employeeSet.createMembershipAuthorizer(employee), where employee is the author of the order. This kind of relationships could in theory be nested arbitrarily, to represent the authorization patterns in your app. About CapabilitySet: you're right, we're leaning on just using CausalSets as the right primitive (and probably more types of the Causal... flavor).
Peer Discovery
The default behavior when you use the sync(object) method of the MeshNode is to create a peer group of all the nodes that are trying to sync object, using dynamic peer discovery. So following your example, if the members of AcmeCorp and ABCCorp are sync'ing different objects, they will end up in different peer groups by default. However, in this case it'd probably be better to use a peer group that cannot be freely joined by just knowing which objects to sync. The full signature of sync is sync(object, mode, peerGroup), where a peerGroup is:
type PeerGroupInfo = {
    id: string,            // a string identifying this peer group
    localPeer: PeerInfo,   // our local identity
    peerSource: PeerSource // a method that will give us random peers to connect
};

peerSource may pull peers from an external source, like a database, or use the local replica of an HHS object (like the members set in the chat group, for example). There are several PeerSource implementations here.
As things stabilize a bit more, we'll write a reference manual trying to iron out how to go about all this things. I'll go over your list of questions as soon as I got a bit more time, please just add more questions if the above is not clear.
If perchance you'd be interested in working with us to get the library in shape for app creation, or want to suggest features you feel are missing, or how to go about documenting all this stuff, all would be very welcome.
Thank you again for your analysis & questions, I feel this will help us already!

Hello @sbazerque,
Talking through the playground logic:
Any help confirming this would be appreciated.
a. Creator/first peer (peer1) (setup id/store/resources)
a1. create the type of store I want (default is memory), but we want Idb.
a2. create an Identity, from keypair
a3. save id and keypair in the store (why?)
a4. create a Resources, passing in peer1 id and store; use defaults for others (ie, LinkupServers, mesh)
b. Pulling that foundation into an app:
b1. create an instance of the app's data model, DocSpace, which is an immutable HashedObject (id, author, resources)
b2. create a space from DocSpace and Resources
b3. initialize the space (via entryPoint promise), which tries to connect to the store
b4. point the DocSpace resources to the Resources created in a4.
b5. tell DocSpace to start syncing; fn is local to DocSpace; validation, creates new MeshNode using resources.  Calls broadcast, sync, then loadAndWatchForChanges.
c. Second Peer (peer2)
(DocSpace already exists somewhere, we have the ID for it)
c1. repeat a1 - a4 (setup id/store/resources)
c2. get the reference to the space from 3 word code and resources.
c3. get the reference to the space's DocSpace
c4. attach peer2 resources (peer2 id and store) to DocSpace
c5. save DocSpace to peer2 store
c6. tell DocSpace to start syncing
Majors:  Resources, HashedObject, Space, app's data model DocSpace

Resources represent the user/peer combo...meaning the user id + client/browser the user is using for this session. Resources wrap the store, mesh, config/LinkupServers, aliasing/hash names.
Space is the sharing boundary, among peers, for an app's data model.  It wraps the app's data model and resources.
HashedObject is an immutable abstract the app's data model, DocSpace, is derived from.
DocSpace is immutable but contains a mutable 'contents' attribute

Identity: how to add register/login/logout functionality?

The key is to feed the correct Identity into Resources.create() to establish a session?
For register, an Identity needs to be created, as in this playground code.
For login, the username/pw/id can be encrypted, stored locally, as a list of users, retrieved as needed.
For logout, the username/pw/id needs to be removed from the app as the current Identity/User.
Expected: when logging users in/out, whichever Identity is passed to Resources.create(), HHS will treat users as distinct peers (user/client combos) and data will be stored/synced accordingly.
UNKOWN:

what's happening with store.save(key); store.save(id)?
Why are we persisting the keypair and id at the top level of IndexedDb?
Does HHS use it?
How does HHS use authorship?

Data Model / ACL
Starting to understand, but still not exactly sure how to model the orgSpace example above, or do ACL. Looks like the default mode for a space is everyone can read/write a mutable within a space. But ACL is implemented via CausalSet and membership, as in your createDeleteAuthorizer example above. I need to play around with that.

Hello @timsim00, thanks again for your insightful questions!

Talking through the playground logic:
a. Creator/first peer (peer1) (setup id/store/resources)
a1. create the type of store I want (default is memory), but we want Idb.
a2. create an Identity, from keypair
a3. save id and keypair in the store (why?)
a4. create a Resources, passing in peer1 id and store; use defaults for others (ie, LinkupServers, mesh)

Right now, the store is serving as a sort of identity store as well. If you want to save objects signed by a given identity, both the Identity object and its associated keypair must be present in the store. This is something that needs refinement: I've created a small issue with more details and that you can use to track when this is implemented if you want.

b. Pulling that foundation into an app:
b1. create an instance of the app's data model, DocSpace, which is an immutable HashedObject (id, author, resources)
b2. create a space from DocSpace and Resources
b3. initialize the space (via entryPoint promise), which tries to connect to the store
b4. point the DocSpace resources to the Resources created in a4.
b5. tell DocSpace to start syncing; fn is local to DocSpace; validation, creates new MeshNode using resources. Calls broadcast, sync, then loadAndWatchForChanges.

This looks good to me, it makes sense to use both sync (with mode=SyncMode.full) and loadAndWatchForChanges on an immutable object because some of the object fields may be mutable (yeah, it is counter-intuitive at first, if you have any suggestions about this API please send 'em along!). So in practice if you have say chat.messages and chat.moderators you can call node.sync(chat) and chat.loadAndWatchForChanges(), even though chat is itself immutable, and that'd be affecting the chat.messages and chat.moderator fields that do are mutable.

c. Second Peer (peer2)
(DocSpace already exists somewhere, we have the ID for it)
c1. repeat a1 - a4 (setup id/store/resources)
c2. get the reference to the space from 3 word code and resources.
c3. get the reference to the space's DocSpace
c4. attach peer2 resources (peer2 id and store) to DocSpace
c5. save DocSpace to peer2 store
c6. tell DocSpace to start syncing

Also looks good to me. The actual API for broadcasting / lookup supports either full or partial hashes (the 3 words encode 36 bits of the hash). But other forms of encoding either the full or a part of the hash could be used (e.g. QR codes).

Majors: Resources, HashedObject, Space, Store, app's data model DocSpace
Resources represent the user/peer combo...meaning the user id + client/browser the user is using for this session. Resources wrap the store, mesh, config/LinkupServers, aliasing/hash names and is responsible for syncing among peers.
Space is the sharing boundary, among peers, for an app's data model. It wraps the app's data model and resources.
HashedObject is an immutable abstract the app's data model, DocSpace, is derived from.
Store is responsible for persisting data to a client, retrieving data.
DocSpace is immutable but contains a mutable 'contents' attribute

I agree.

Identity: how to add register/login/logout functionality?

I'll try to frame this, I may be getting what you want wrong, but I'd say:
To login in a new device, you need to trust the device, since then it will be acting upon shared data on your behalf.

The key is to feed the correct Identity into Resources.create() to establish a session?

You need both the Identity object and the associated key pair object (of type RSAKeyPair at the moment). It's not like on a client-server app, where the client needs to prove to the server that it's being operated by you in order to log-in, here you actually need to move the private key unto the device so it can actually modify these shared data structures.

For register, an Identity needs to be created, as in this playground code.

Yes, if a new account is going to be used, you can just create a new Identity with whatever info is provided, and a freshly generated keypair!

For login, the username/pw/id can be encrypted, stored locally, as a list of users, retrieved as needed.
For logout, the username/pw/id needs to be removed from the app as the current Identity/User.

The way I view it, the private key should be securely moved to the device, and effectively erased to log out.

Not worried about logging in from another device atm.
Expected: when logging users in/out, whichever Identity is passed to Resources.create(), HHS will treat users as distinct peers (user/client combos) and data will be stored/synced accordingly. Need to test this theory.

OK I think maybe what you are aiming for is supporting several users on the same device, even if they don't trust each other? At this point I think you'd have to rely on the operating system's user system to provide real protection of each users data/keys from each other. I don't think we can use the browser for that ATM, since HHS doesn't use encryption at rest. You could always use a list of username / pwd to provide user switching, but the underlying data would still be accessible by all users if they poke in IndexedDB. More like a user-switching solution, without real protection from one another in the same browser.
Maybe what could be done to support something like user login on-device would be to have a new store, that wraps the IndexedDb but adds encryption-at-rest using a passphrase. It wouldn't be complete protections, since something may be inferred from the structure of the encrypted entries inside IndexedDb, but it would be pretty good still.
What do you think?

UNKOWN:

what's happening with store.save(key); store.save(id)?
Why are we persisting the keypair and id at the top level of IndexedDb?

It's really inside each store, and by doing it you enable the store to save objects signed by that identity, in practice enabling that identity to write to the store.

Does HHS use it?

Yes, the keypair is used automatically whenever an object authored by that identity is saved.

How does HHS use authorship here and here?

Good catch! The signing is done when you save the object in the store, and the signature verification is done right after receiving new objects during sync.

Data Model / ACL
Starting to understand, but still not exactly sure how to model the orgSpace example above, or do ACL. Looks like the default mode for a space is everyone can read/write a mutable within a space. But ACL is implemented via CausalSet and membership, as in your createDeleteAuthorizer example above. I need to play around with that.

Yes, static (immutable) permissions can be modeled passing a writers: HasedSet<Identity> upon creating sets, arrays, etc. but when the permissions can change, as in an ACL, CausalSets are necessary. Still looking for a friendly API for this.

Saving
DocSpace uses addDerivedField to create a 'contents' attribute derived from MutableReference.

The purpose of addDerivedField is to prevent an adversary  from created unwanted aliasing within the app's data.

setValue is used to update contents.
Because it's within a space, new values are synced across peers.
How would a nested object attribute be updated?

It would be the same, but the sync method needs to be called in the SpaceEntryPoint for this objects as well. I'm working on a new sync mode where the entry point will monitor its mutable contents and start and stop sync'ing them accordingly, it will be ready soon!

await resources.store.save(ds);

I'm somewhat confused by the pattern. From looking at the code, looks like Resources has a reference to store, Space, Store HashedObject have a reference to Resources. I'm wondering if all the references are needed and if the relationships between Resources, Store, Space and HashedObject can be simplified or made more explicit.

You may be right. What's in there is just all the environment that the object needs to work. Open to suggestions!

The Person example gives a different take on this.
The store and app data model, Person, are created, as in the playground, but the Space is not.
The new Person is saved directly to the new Store. So, the Person won't be synced across peers.
The example is just showing that store objects can be retrieved using a hash of their contents

Yes, sorry for the confusion. The example is meant to show how to save stuff to the store and retrieve it using its hash, but you're right, it wouldn't be syncrhonized.

Thanks for the feedback, much appreciated!  I will continue to digest and experiment.  The big thing for me right now is getting my understanding up to a level so I can model the data, do auth and basic CRUD.

You could always use a list of username / pwd to provide user switching, but the underlying data would still be accessible by all users if they poke in IndexedDB. More like a user-switching solution, without real protection from one another in the same browser.

Yes, good catch.  I can't rely on users having their own account on a device....ie. two different users login from the Guest account on a friends' device.  Just need to cover my bases.  I can always encrypt data if it needs to be protected; most likely just an edge case atm.  At the very least it sounds like I can do user switching and HHS can handle that.


640 Provide Vector( std::initializer_list ) constructor

Closes #226

not urgent, but already done hence flagging for v0.8 milestone

Review OK, waiting CIs OK.

CIs OK, will merge.

Review OK, all unit tests OK, will merge.


Extension host terminated unexpectedly

VSCode Version: 1.11.2
OS Version: Win 8.1

Below error is appearing every 10 mins.Can you please tell me how to get rid of this? I have installed only 4 extensions as shown below.Thanks.

I have disabled all extensions one by one for the workspace.But still, It has the same issue.In other words, this is not the problem of extensions which I have installed.Any idea?

I have worked so nicely with VS code last few months.This issue came after the latest update which I did. Can you please tell me how to rollback to the previous version until you'll give a solution for this annoying issue? I'm working on an Ionic / Angular project. When I reload the workspace I have to restart the live reload server too.This is a huge pain and time-consuming operation. please tell me how to go back to the previous version? @jrieken

Same problem. Latest update afaik

Can you reproduce the issue in our insider release?

Sure.I have installed the insider and 4 plugins which I use.I'll let you know the result.Thank you @joaomoreno

Version 1.12.0 also have this problem

Also, check the following:

Just had an awesome chat with @ddzmitry, and we figured out that his issue is that he had a folder open which wasn't a git repository while at the same time there was a git repository in his home folder. This caused Code to handle that git repository which had many many active changes.
This is definitely a dupe of #23976, I'll try to get a fix out today. The fix will try to catch these huge repository issues before they break the extension host.
The workaround for you guys is, which is the right fix:

Open the workspace folder in a shell and type git rev-parse --show-toplevel. This will tell you where the root of the git repository you have opened is.
Evaluate whether this repository should exist or not. In @ddzmitry's case it was his user's home, which made no sense. He fixed it by simply removing that .git folder.

Once again, thanks @ddzmitry for your help!

my workspace folder do not have .git folder,but have .svnfolder

@chenyeah You might have a separate issue then. Please create a new issue and provide as much detail as possible.

my di5chengfolder have four subfolder  , ach subfolder has a .svn

my di5chengfolder have five subfolder , each subfolder has a .svn

I am experiencing this issue too...
On a VMware VM running Win7 x64 the message appears every time I open a directory in a git repo which is located on a network share (-> host filesystem or fileserver).
If I copy the repo over to the VMs hdd I can open the directory without the error appearing. On my host pc (Win 10 x64) I can also open the directories without any problems (even if they are located on a network share).
I have uninstalled any extensions which changed nothing. I also completely reinstalled vs code using the currently available stable installer...

So in my case this seems to be related to opening a git repo on a network share in a virtual machine...

@rose-a Can you try out our insider release?
@Sampath-Lokuge Still waiting on your reply.

@joaomoreno Same thing...

Hi @joaomoreno
I have tested it more than 24 H and no issues for me. In other words, it is working perfectly without any errors.Thank you so much 👍

@rose-a if you add "git.enabled": false to your settings file, does the issue go away?

@jack-pallot Yep, that removes the error message. Re-enabling git and reloading the editor brings the error back.
Applies to both the stable and the insider version.

@joaomoreno same problem with the insider release

@rose-a @fiendish Open the devtools (F1, Developer Tools). Any errors there?

Thousands and growing in https://ticino.blob.core.windows.net/sourcemaps/6eaebe3b9c70406d67c97779468c324a7a95db0e/core/vs/workbench/electron-browser/vs/workbench/electron-browser/file:/Users/code/vsoagent/_work/2/s/src/vs/base/parts/ipc/node/ipc.cp.ts.

@fiendish Your issue is #7950

Will do. Is there a potential solution coming that doesn't require a system setting?

@fiendish  Let's go to #25304
Waiting on reply from @rose-a and @fiendish

I have this error too, looking forward to the next release

Sorry for the late reply...
In the devtools I get the following errors (using the stable version)

And this is the result from the insider version after pressing the "Reload this Window" button on the error message:

@rose-a Would you have time for a remote screen sharing session?

@joaomoreno Right at the moment I actually have time ;) How would you like to do that?

@rose-a Awesome: https://hangouts.google.com/hangouts/_/joaomoreno.com/vscode25175

I could easily reproduce in a VMWare VM by calling fs.watch(), giving it a shared path from the host. Electron just crashes. Created electron/electron#9416


Refactor setConnectionString definition in services

Currently we have it only for node services (and for db).
We should add it to stackable and service too.  (see: https://github.com/platformatic/platformatic/pull/3517#issuecomment-2486048636)
Also, optionally set it through a config (for node service).

Fixed here: https://github.com/platformatic/platformatic/pull/3577


feat(opendataset): add dataloader for VOC2012ActionClassification

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 83.075%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
5262

Relevant Lines:
6334

💛  - Coveralls


Native encoder fails to convert object decoded by DER

Hi. I would very much appreciate advice on how to move forward. When using the native encoder to obtain python built-ins from an object decoded with DER, I get the error: AttributeError: 'tuple' object has no attribute 'tagClass'. My use of pyasn1 is straightforward:
from pyasn1.codec.der.decoder import decode
from pyasn1.codec.native.encoder import encode

dictionary = encode(decode(der)[0])

Stepping through the source code as it executes reveals that the call to tag.TagSet, below, is where the AttributeError is raised.
class Encoder:

        try:
             concreteEncoder = self.__typeMap[value.typeId]
        except KeyError:
            # use base type for codec lookup to recover untagged types
            baseTagSet = tag.TagSet(value.tagSet.baseTag, value.tagSet.baseTag)

Below is the output from the pyasn1 debugger:
2018-06-06 17:10:48,558 pyasn1: decoder left scope , call completed
2018-06-06 17:10:48,558 pyasn1: encoder called for type SetOf <SetOf:
  Sequence:
    field-0=label1
    field-1=
  Sequence:
    field-0=label2
    field-1=0
  SequenceOf:
    key1  value1
  SequenceOf:
    key2  value2
  Sequence:
    field-0=birthdate
    field-1=19800704144437.149898Z
  SequenceOf:
    key3  value3
  Sequence:
    field-0=data
    field-1=0x000102030405060708090A0B0C0D0E0F
2018-06-06 17:10:48,558 pyasn1: using value codec SequenceOfEncoder chosen by <TagSet object at 0x7f221e7a3710 tags 0:32:17>
2018-06-06 17:10:48,558 pyasn1: encoder called for type Sequence <Sequence:
 field-0=label1
 field-1=
>
2018-06-06 17:10:48,558 pyasn1: using value codec SequenceEncoder chosen by <TagSet object at 0x7f221e7a1290 tags 0:32:16>
2018-06-06 17:10:48,558 pyasn1: encoder called for type UTF8String <label1>

That looks like a bug. Could you please give me a reproducer e.g. that DER blob causing this exception?

Thanks for the quick reply! A sample DER has been uploaded.

Is this helpful? Using this online decoder by OSS, I decoded one of the DER files i previously uploaded.
31 8201AE(430)   30 08     0C 04 6C626C31     04 00    30 09     0C 04 6C626C32     02 01 00   30 09     0C 04 6C626C33     02 01 00   30 0A     0C 04 6C626C34     0C 02 676D   30 0C     0C 04 6C626C35     02 04 6669744D   30 18     0C 04 6C626C36     0C 10 5A6F6E65466974206D65746164617461   30 18     0C 04 6C626C37     0C 10 5A6F6E65466974206D65746164617461   30 1E     0C 04 6C626C38     0C 16 636F6D2E6D7967796D2E6669742E6D65746164617461   30 1E     0C 04 73747274     18 16<PHONE_NUMBER>3431303137343334312E3032333831345A   30 1E     0C 04 73746F70     18 16<PHONE_NUMBER>3431303137343334312E3032333831345A   30 21     0C 04 64657363     0C 19 6970736F20666163746F2070726573746F206368616E67652E   30 2C     0C 04 6C626C61     0C 24<PHONE_NUMBER>4538452D423438362D344641452D414332372D393546453533414135...   30 818C(140)     0C 06<PHONE_NUMBER>73     04 8181(129)<PHONE_NUMBER>37393534303934333035626636303465323231343437393935...

Thank you for your samples! I think this is indeed a bug which should be fixed in #132 . It would be awesome if you could re-test your application with this fix applied.

... I fail to see the distinction made by pyASN to interpret some records as Sequence and others as SequenceOf.

Trouble is that on the wire BER Sequence is indistinguishable from SequenceOf. I'm not quite sure why BER serialization has been designed that way, but this is how it is.
The only solution I can immediately offer is to give a hint to BER decoder which is Sequence and which is SequenceOf in your ASN.1 structure (the same applies to Set/SetOf). You can do that by passing ASN.1 schema to decoder through asn1Spec parameter.

Nooo! That can't happen! Can you please make sure that you actually import the fixed pyasn1 version? Specifically, this patch to encoder.py should be present in /local/lib/python2.7/site-packages/pyasn1/codec/native/encoder.py.
Thanks!

Forgive me, I am no expert in python. i believe i have pulled your latest commit:
commit 939be5fabe8c8ed8fcb334b07c84349f99cb0e59
Author: Ilya Etingof<EMAIL_ADDRESS>Date:   Tue Jul 3 08:37:13 2018 +0200

To make this library available to my project, i ran these two commands in the pyasn1 project folder, which concluded with debugging output:
python setup.py build
python setup.py install

<output omitted>

Processing pyasn1-0.4.3-py2.7.egg
Copying pyasn1-0.4.3-py2.7.egg to /home/garym/Projects/venvs/polypy2/lib/python2.7/site-packages
Adding pyasn1 0.4.3 to easy-install.pth file

Installed /home/garym/Projects/venvs/polypy2/lib/python2.7/site-packages/pyasn1-0.4.3-py2.7.egg
Processing dependencies for pyasn1==0.4.3
Finished processing dependencies for pyasn1==0.4.3


Issue in voc_xml_to_txt module of xml_conversion, The class index should start from 0 instead of 1.

Problem solved, will be updated in the latest version


Present all organisation users in dropdowns

When picking colleagues from dropdowns, we currently only show users
with content allocated to them. This can make for a confusing user
experience when trying to - for example - allocate content to users
who have never had content allocated to them, or when trying to view
content allocated to that user.
This change removes that restriction. The users in our database are only
the users who have logged into the application, which will also be
restricted by Signon permissions. This will naturally limit the number
of other users presented in the dropdowns, so it is assumed that we
do not need to restrict users in this way.

 Show Info Message when there is no content to audit assigned to user

 Display all users in an organisation in dropdowns


cart function issue

Dear @Malith3019
please sole the cart function  calculation issue also change the currency to LKR
thank you
@kulasekara02

@Malith3019
plz    do it asap

Done
please check and let me know
know


feat: Closes #155

#155

🛠 Fixes Issue

👨💻 Changes proposed

✔ Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

📄 Note to reviewers

📷 Screenshots

PR Compliance Checks
Thank you for your Pull Request! We have run several checks on this pull request in order to make sure it's suitable for merging into this project.  The results are listed in the  following section.
Issue Reference In order to be considered for merging, the pull request description must refer to a specific issue number. This is described in our Contributing Guide. This check is looking for a phrase similar to: "Fixes #XYZ" or "Resolves #XYZ" where XYZ is the issue number that this PR is meant to address.

Won't merge until this message is gone

Your pull request is rejected, reason 👉🏾is here👈🏾
Thanks for contributing, I hope you continue to do so properly