Fix inconsistencies in protobuf-codegen-pure, part 1

Split out from #484.
The big piece of work is the testing infrastructure for verifying that protoc-rust and protobuf-codegen-pure have identical output.
Then, there are two commits that demonstrate the process of fixing inconsistencies. When fixing an inconsistency results in two test files producing identical output, those files can be removed from the except_fail list in test_diff.
If this looks good, after it merges I'll start opening PRs one-by-one for the more complicated bits of #484.

Ok, finally got the tests here passing! There was a latent bug in how module names were constructed on Windows for which I've included a fix.

Looks good.
Can I request two changes in this PR please?

move test into a separate, third crate, like protobuf-codegen-identical-test' or something. It is slightly inconvenient that we need to build protobuf-testto testprotobuf-codegen-pure-test`
mark inconsistent files inside the files instead of a list of files in the test

Something like, in a file test.proto:
// @skip-codegen-identical-test

message A { ... }

This way it will be much easier to maintain these files)
(although, third-party definitions — Google protobuf — should be filtered in the test description as in this PR)
And another issue: this test reads generated files from test crate sources. It would probably be better to invoke codegen directly from consistency test instead of depending on test crates. Although that would be a quite large change, we can do that later.

Can I request two changes in this PR please?

move test into a separate, third crate, like protobuf-codegen-identical-test or something. It is slightly inconvenient that we need to build protobuf-testto testprotobuf-codegen-pure-test

Done.

mark inconsistent files inside the files instead of a list of files in the test

Something like, in a file test.proto:
// @skip-codegen-identical-test

message A { ... }

Done. This turned out to be really hard, though, with the previous design of the test, as it is in general impossible to find the source .proto file based on the path of the generated .rs file. E.g., foo.proto generates foo.rs, but struct.proto generates struct_pb.rs and bad~name.proto generates bad_name.rs.
So I reworked the design of the test entirely, and as a side-effect addressed this issue as well:

And another issue: this test reads generated files from test crate sources. It would probably be better to invoke codegen directly from consistency test instead of depending on test crates. Although that would be a quite large change, we can do that later.

The new design doesn't bother running codegen, as codegen is a pure function from a FileDescriptorSet to generated Rust code. Instead we just check check that protoc-codegen-pure generates the same FileDescriptorSet as the protoc binary would.
Note that the new protobuf-codegen-identical-test crate still winds up depending on the protobuf-test crate, as the .proto files in test/common/v3 are generated by build.rs, and it didn't seem right to duplicate that logic.

The new design doesn't bother running codegen, as codegen is a pure function from a FileDescriptorSet

I took your stack and modified it back to what you did before: now the test compares generated .rs files, not descriptors.
There are many legitimate reasons why descriptors may not be equal but semantically equivalent

omitting the syntax field which you fixed in one of the commits is one of many possible reasons
potential descriptor extensions of descriptors with new fields in protoc command is another possibility

Note that the new protobuf-codegen-identical-test crate still winds up depending on the protobuf-test crate

I removed that dependency (because protobuf-test crate is slow to compile). protobuf-codegen-identical-test crate should generate it's own copy of v3 files using code from protobuf-test-common crate. I commented out common/v3 tests as TODO.
Also, I changed diff printer to invoke external diff command instead of using difference crate since difference is too slow when comparing generated .rs files.
I preserved your name in the commit author field since you did the largest part of the job. Thank you very much!

I commented out common/v3 tests as TODO.

Fixed in 9b17bb6de41ac1a6eaa991b7395974dc8b57b929

Awesome, thanks very much @stepancheg!


install.sh script does not work

Bug Report
What did you do?
Run the following command against a fresh kind cluster:
curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.18.2/install.sh | bash -s v0.18.2

following install instructions of: https://operatorhub.io/operator/qserv-operator
What did you expect to see?
Successful install of OLM tools.
What did you see instead? Under which circumstances?
The script stop without installing anything and printing any error message.
Environment

operator-lifecycle-manager version:
v0.18.2

Kubernetes version information:

kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:58:59Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-21T01:11:42Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

Kubernetes cluster kind:

kubectl get nodes
NAME                 STATUS   ROLES                  AGE   VERSION
kind-control-plane   Ready    control-plane,master   17m   v1.20.2

Possible Solution
Merge PR: https://github.com/operator-framework/operator-lifecycle-manager/pull/2218
Additional context
None

Potential duplicate of https://github.com/operator-framework/operator-lifecycle-manager/issues/2210 but I'm not sure whether a new tag was produced that contains those install script fixes.

@timflannagan the script proposed on qserv-operator operatorHub webpage has not been fixed: https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.18.2/install.sh (see https://operatorhub.io/operator/qserv-operator). Could you please do it?

@fjammes I'm still waiting for that backport PR that fixes the install script in the v0.18.x branch to be approved/merged. I can ping someone on the team today to get the ball rolling again.

@timflannagan, thanks so much for your help. FYI it does not seem to work yet. I'm waiting for it to work before closing the issue.

@timflannagan (ping @fritzm), this script has not been fixed yet: https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.18.2/install.sh? Could you please update it and let me know, this is blocking on my side, and this might also block other users.

I took a stab at getting the ball rolling by opening https://github.com/operator-framework/operator-lifecycle-manager/pull/2238. The current release process documents the need of bumping that file version first before we can cut a new z-stream release, so that PR needs to be merged.

@timflannagan when do you plan to release v0.18.3 so that this bug is fixed?

I imagine this bug blocks most of operatorHub's operator  install procedure because on operatorHub all install pages uses curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.18.2/install.sh | bash -s v0.18.2. So I am very surprised I am the only one to be blocked by this bug?

@fjammes I'm waiting on https://github.com/operator-framework/operator-lifecycle-manager/pull/2245 to be approved as it's blocking the v0.18.3 release https://github.com/operator-framework/operator-lifecycle-manager/pull/2244 PR.

For anyone else who was initially stumped by this, as was explained in #2210 before, the set -e at the top of the script causes it to abort and exit on error, because of this command:
kubectl get deployment olm-operator -n openshift-operator-lifecycle-manager -o=jsonpath='{.spec}' > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
    echo "OLM is already installed in a different configuration. This is common if you are not running a vanilla Kubernetes cluster. Exiting..."
    exit 1
fi

which results in an error returning from kubectl get; you can work around it until the new version is released, by changing the line to:
kubectl get deployment olm-operator -n openshift-operator-lifecycle-manager -o=jsonpath='{.spec}' || /bin/true > /dev/null 2>&1

or simply removing the set -e at the top of the script.

Apologies for the slow turn around on this - we ran into some issues with the upstream release process (#2118 tracks streamlining that process). Closing this out as the v0.18.3 release has been cut and contains the installation script fixes.

Thanks so much @timflannagan


Add '/icons' path

Add '/icons' path so that the Elements _icons.scss image references point to the right place. This makes the arrow appear on the Start now button for example.

So far, all resources (css, images, etc) are loaded using the /public path.
In your patch, you've added a /icons path
Where is this referenced exactly? I'm not sure where the 'start now' code is.
Theoretically I think the best thing would be to add '/public' to those references, to stay consistent with the rest of the kit.

@tombye @gemmaleigh seems to me we could lose /public/ from all resource paths? Might be a nicer solution?

I think this might be an issue with missing:
// Path to assets for use with file-url()
$path: "/public/images/";
in helpers.scss, I've just fixed this for elements so I can create a new PR here if that would help?

@gemmaleigh sounds good, but I'm not familiar with helpers.scss, how does the fix work?

It specifies a $path variable, which is uses the govuk frontend toolkit's
url helpers:
https://github.com/alphagov/govuk_frontend_toolkit/blob/e295f45f59495f8e37e37a105da6d9d8b2695a54/stylesheets/_url-helpers.scss
That way you can set the path, e.g.
https://github.com/alphagov/govuk_elements/commit/5045f6638d3101d33e46f5fbdd596ae7af3665a6
and then use the file-url helper for background images:
https://github.com/alphagov/govuk_elements/blob/master/public/sass/elements/_buttons.scss#L35
I believe that's why the arrow is currently missing from the start now
button.
On 18 May 2015 at 23:05, Joe Lanman<EMAIL_ADDRESS>wrote:

@gemmaleigh https://github.com/gemmaleigh sounds good, but I'm not
familiar with helpers.scss, how does the fix work?
—
Reply to this email directly or view it on GitHub
https://github.com/alphagov/govuk_prototype_kit/pull/7#issuecomment-103227693
.

If I look in some of our recent projects, like the user needs one, the public/images path doesn't currently contain icons so would this need another grunt copy task?

This solved my issue. Thanks @timpaul

Is there a reason we can't use /images? This is the same naming as the FET so is more consistent.

It looks like this was resolved in #42, closing for now.
@timpaul, if it's not fixed - feel free to reopen.


As a user, I want the converter to support converting multiple documents at once.

It works from the command line.


network implementation differences (InstanceNorm, probability mean, max-pooling)

Thanks for your great implementation.
I found some implementation differences compared to original article.
difference list

IN as alternatives of BN
mean as alternatives of product in D/C last layer
(in only C) max-pooling as alternatives of strided-Conv

IN as alternatives of BN
In Generator, Discriminator and Classifier, Instance Normalization (IN) are used as alternatives of Batch Normalization (BN) (code).
There are comment-outed Batch Normalization, so are there any problem in BN?
mean as alternatives of product in D/C last layer
In original article, probabilities (probability of each patches) is multiplied (== product).

the final output D(y, c) is given by the product of all these probabilities.
...
“Product” denote ... product pooling layers,

But in this implementation, in last layer, probabilities is taken average.

c1_red = tf.reduce_mean(c1, keepdims=True) code

Is this intended implementation based on your experiments, or some other reasons?
(in only C) max-pooling as alternatives of strided-Conv
In D, down-sampling is made by strided-Conv as same as original article.
But in C, down-sampling is made by max-pooling.
Why are they used in different manner?

Thanks for your kind answers.
IN as alternatives of BN
I have not thought about BN problem. I understand, thanks!!
mean as alternatives of product in D/C last layer
I interpret "product pooling layer" as simply multiplying all elements.
In StarGAN-VC D,
(batch, 1-channel,  1-height,  64-width(w0 ~ w63))
=>
(batch, 1-channel,  1-height,  1-width(w0 * w1 * w2 * ... * w63))
In my case (PyTorch), simply implement as
# in forward
out = input[:, :, :, 0]
for i in range(1, input.size()[3]) # width length
  w_x = torch.ones(input.size()[0], 1, 1, 1) # all 1 tensor
  w_x[:, :, :, 0] = input[:, :, :, i]
  out = out *  w_x
return out

But this code is ugly and I do not know whether back prop is properly go through this process...
(in only C) max-pooling as alternatives of strided-Conv
I agree with you, some padding information is missing but some unusual padding seems to be used.
Sorry, I cannot catch up some part of what you said.

Due to CNN’s trans constant,
what it mean?

Sorry about the confusion  words. I mean CNN is "translation invariance" , so if doesn't matter that we choose other  padding size or filter size as long as they are reasonable.
Your implementation of "product pooling layer" , multiplying all the elements, if one elements is zero then the result is zero. maybe the network is not intended to operate like this.  I don't know if I'm right, but the problem should be taken into consideration.


Remove unneeded patch from magic

Tim Edwards merged the fix upstream

I'll merge it as soon as magic passes

And so it did.


more audio extensions for android

I can't play .m4a and .aac files in android only.
can you add support for them ?

that is support
------------------ Original ------------------
From: mohamedrafatfcih<EMAIL_ADDRESS>Date: Sun,May 10,2020 4:30 AM
To: jeromexiong/audio_manager<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Subject: Re: [jeromexiong/audio_manager] more audio extensions for android  (#23)
I can't play .m4a and .aac files in android only.
can you add support for them ?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Example code for PWM library

This is example code for pull request 72 from @gpascualg.
@projectgus: Please only merge after PR72.

As mentioned above, this PR depends on PR72, so it is expected that the continuous integration tests fail.


Make sure non-variable type name is all lower case in signature

Differential Revision: D45364104

diff is abandent


[Q] Having trouble with HTTP Basic Auth

I'm working in one API wich require HTTP Basic auth wich in response would return token, i'm providing axios config but i don't know if i'm doing it right if someone can check.
class Api {
  login (username, password) {
    return axios.get(`${END_POINT}/login/`, { // Yes API require '/' at the end of URL
      auth: {
        username,
        password
      }
    })
  }
}

as soon as i provide config HTTP Verbs change from GET to  OPTIONS.

And this maybe can be because of CORS but i can verify i'm sending GET request but i don't know why it's not working!

CORS is causing your browser to request the login page with the OPTIONS header and your server is erroring out (500 response code). You need to fix your server.

Yes there was problem with backend, solved thanks


Reliability

Sometimes the macro deletes the file instead of replacing it. I think it should delete the existing file deliberately before attempting to save.

Fixed by fae2c9fca34afbf5d470f0fc287f5a46c67b094a


Use database

Many works are blocked by this issue.

Code reviewed, Tested with OS X 10.10, Google Chrome


Update jackson-databind version for security fix

https://nvd.nist.gov/vuln/detail/CVE-2019-12814

/lgtm


Changes to search box examples and default text

The default text in the search box currently reads "e.g. CTNNB1 or ABT-73".
Change this to read "e.g. CTNNB1 or T cell"
Hover text examples:
Gene: CTNNB1
Cell Subset: "alpha-beta T cell"
Pathogen: Yellow fever
Pathogen: "(B/Brisbane/60/2008)"
Vaccine: Menactra
Multiple: STAT3 Zostavax

I don't know what including the word "or" in the request was about.  In any case, the hover text examples are correctly entered.  There is an additional example for Cell Subset of "blood plasma"


Reactualized examples because of V2

Description
Added go.mod files for server examples
Updated shell commands to build project
Reference issue
n/a

Thanks @iashchak!
Thanks for updating the docs. That is a great change.
I don't think we want to add the go.mod files. Right now if you go get it will use the latest version of pion/turn (or if doing go build will use the code you currently have)
If we do go.mod files then we have to remember to bump them. If Go projects are supposed to have mod files for examples we can do though that!

Hello @Sean-Der !
Thank you for your review.
I am a kind of newbie in the go-lang world, so i just found that its impossible to build it using the doc until you have library pre-installed.
Mod file is a just one of the ways to build examples. Another - is an adding package via
go get

If its useless - feel free to close the PR :)
Anyway, have a great day!


Don't remove uncommitted git message when closing application

If you type something into the git commit message box and then close vscode and reopen it, whatever you entered is gone. It should be saved there allowing you to continue editing it later.

https://github.com/Microsoft/vscode/issues/26952

That issue is about commit history, what does it have to do with this?
Should I create this issue again or can you actually explain how the linked one relates at all to this? It might be a good idea to do this in general if you want to close an issue with a link to another where the relation isn't clear.


Enhance maintenance of deprecation cycle so it's easier to use

This issue was originally created at: 2010-05-28 14:23:57.
This issue was reported by: gregnoel.
gregnoel said at 2010-05-28 14:23:57

Managing the deprecation cycle is more complicated than it should be.  It
requires multiple changes in different files that need to be kept in sync.  This
proposal is how the handling should be revised to make it simpler, so that most
of the management takes place in one file.
This proposal arose from the frustrations of updating the deprecated features
for 2.0.  I suggest it be done as quickly as possible after 2.0 is published; I
recommend 2.1 p2.  I'll do it unless someone else has an overwhelming need to do
it themselves.
First, Errors.py and Warnings.py are fairly small files.  They should be
combined into a single file, maybe Exceptions.py, and that file divided into
three segments: errors, warnings, and deprecations.
A warn() method should be added to several strategic base classes:

For error base classes, they should normally be raised by the logical flow
and the method should never be called, so warn() should either raise
NotImplemented or raise the error, I can go either way.

For warning base classes (is there only one?), warn() would be like
SCons.Warnings.warn() except that the exception class would already have been
constructed.

For existing deprecation base classes, they should simply inherit from the
warning base class as the decision to display them or not is made elsewhere.

A new deprecation base class should be added, for concreteness call it
FatalDeprecationError (note that it does not end in 'Warning' so it cannot be
suppressed), to complete the deprecation life cycle.  I'm not sure what it
should be derived from, maybe MandatoryWarning, maybe UserError, maybe something
else to be determined.

The idea is that just about everything deprecated[1] would create a deprecation
exception derived from one of the those base classes.  Managing the life cycle
would be as simple as changing a base class, making it much easier to do, and
therefore less likely to be ignored until circumstances overtake it.
[1] The exception would be PythonVersionWarning.  Using 'Warning' as a base
class should be considered to show it's special and the limit cases should be
placed here rather than hiding them in the code flow somewhere:
PythonFloorFatal = (2, 3, 0, 'alpha', 0)
PythonFloorWarn  = (2, 4, 0, 'alpha', 0)
Any Python version prior to the specified release is either killed or warned
that the floor will drop out from under them.
Usage of these classes would be simple.  Instead of writing
SCons.Warnings.warn(SCons.Warnings.LongComplicatedWarning(msg))
you'd write
SCons.Exceptions.LongComplicatedWarning(msg).warn()
and the magic of derived classes would do the right thing.
Conversion to this form wouldn't be tricky but it would be a lot of detail work.
All the calls of SCons.Warnings.warn() would have to be tracked down and changed.
The function to mark which warnings need to be displayed should be examined.  I
believe it's called each time with the entire list of options every time the
list changes.  It doesn't take too many calls before the amount of processing
becomes unwieldy.  If this scenario is true, the routine needs to be revised to
be more efficient.
In addition, tests for deprecated features need to be written so that they are
indifferent to the underlying base class.  Groundwork has begun to support this
model and some tests converted, but the the groundwork needs to be completed and
documentation written to describe how to do it.  Converting the tests can wait
until they fail, presumably when the feature moves to the next stage of its
deprecation cycle.
The pattern to document is that each test file begins with a call to either
deprecated_fatal or deprecated_warning.  The former checks if the feature is now
a fatal error and skips all remaining test runs.  The latter includes the former
and then validates that the various ways of invoking the feature cause the
expected results.  Subsequent test runs should enable the warning in their
SConscript and validate that the expected warning occurs.  The result is that as
long as the feature generates a warning, the runs verify that the warning
occurs, but when the feature moves to being an error, the test runs will be
skipped because they would just error out anyway.

gregnoel said at 2010-06-21 11:47:33

Bug party triage.

garyo said at 2012-09-01 10:04:01

de-assigning all tickets assigned to Greg Noel (no longer working on SCons)

This issue really should get some attention.  There are things that have been deprecated for a very long time. For example #1954 notes a bunch of stuff that was deprecated in 2008.  Tracing one of them - SourceSignatures and TargetSignatures - there is no information recorded in the methods or documentation when they were deprecated or when/if they're due to be removed.
There are some Python modules that can help with the way code is marked up for deprecation, that are small enough they could be imported and adapted.  It shouldn't be necessary to write this
    def TargetSignatures(self, type):
        global _warn_target_signatures_deprecated
        if _warn_target_signatures_deprecated:
            msg = "The env.TargetSignatures() method is deprecated;\n" + \
                  "\tconvert your build to use the env.Decider() method instead."
            SCons.Warnings.warn(SCons.Warnings.DeprecatedTargetSignaturesWarning, msg)
            _warn_target_signatures_deprecated = False

when a single decorator could handle all that boilerplate.  See e.g. https://github.com/tantale/deprecated - it's 240 lines for the "classic" piece and another 170 for the Sphinx integration piece, not huge at all.  A typical call could look like:
@deprecated(reason="use another function", version='1.2.0')

I don't really see much answer for managing the need to adapt tests and non-generated documentation and examples for a method becoming deprecated without getting quite complicated.

What does deprecated do besides have a decorator?
Can you run reports to find deprecated functions which should be removed,etc?
Or is it just comment like?

It doesn't "do" anything, but to my mind is much easier to do a two-line search for @deprecated and the next line than the current setup.  Probably could be further enhanced, maybe add an additional keyword with target removal.

Looks like it works with warnings package..
https://stackoverflow.com/questions/2536307/decorators-in-the-python-standard-lib-deprecated-specifically


test: jestify is-string test

Migrated test from Tap to Jest.
File Path:
packages/cactus-common/src/test/typescript/unit/strings/is-string.test.ts
This is a PARTIAL resolution to issue #238
Signed-off-by: awadhana<EMAIL_ADDRESS>

@awadhana Not sure yet what's going wrong on this one. I will restart the CI now and if it fails again (and the same way), then I think it warrants an investigation based on the logs because it consistently seems to fail here:
# Subtest: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
    1..0 # no tests found
not ok 89 - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts # time=6973.904ms
  ---
  env:
    TS_NODE_COMPILER_OPTIONS: "{}"
  file: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  timeout: 900000
  command: /opt/hostedtoolcache/node/14.17.6/x64/bin/node
  args:
    - -r
    - /home/runner/work/cactus/cactus/node_modules/ts-node/register/index.js
    - --max-old-space-size=4096
    - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  stdio:
    - 0
    - pipe
    - 2
  cwd: /home/runner/work/cactus/cactus
  exitCode: 1
  ...

Bail out! ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts

@awadhana Not sure yet what's going wrong on this one. I will restart the CI now and if it fails again (and the same way), then I think it warrants an investigation based on the logs because it consistently seems to fail here:
# Subtest: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
    1..0 # no tests found
not ok 89 - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts # time=6973.904ms
  ---
  env:
    TS_NODE_COMPILER_OPTIONS: "{}"
  file: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  timeout: 900000
  command: /opt/hostedtoolcache/node/14.17.6/x64/bin/node
  args:
    - -r
    - /home/runner/work/cactus/cactus/node_modules/ts-node/register/index.js
    - --max-old-space-size=4096
    - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  stdio:
    - 0
    - pipe
    - 2
  cwd: /home/runner/work/cactus/cactus
  exitCode: 1
  ...

Bail out! ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts

@petermetz  it looks like it's still failing, any updates?

@awadhana Not sure yet what's going wrong on this one. I will restart the CI now and if it fails again (and the same way), then I think it warrants an investigation based on the logs because it consistently seems to fail here:
# Subtest: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
    1..0 # no tests found
not ok 89 - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts # time=6973.904ms
  ---
  env:
    TS_NODE_COMPILER_OPTIONS: "{}"
  file: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  timeout: 900000
  command: /opt/hostedtoolcache/node/14.17.6/x64/bin/node
  args:
    - -r
    - /home/runner/work/cactus/cactus/node_modules/ts-node/register/index.js
    - --max-old-space-size=4096
    - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  stdio:
    - 0
    - pipe
    - 2
  cwd: /home/runner/work/cactus/cactus
  exitCode: 1
  ...

Bail out! ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts

@petermetz  it looks like it's still failing, any updates?

@awadhana Not sure yet what's going wrong on this one. I will restart the CI now and if it fails again (and the same way), then I think it warrants an investigation based on the logs because it consistently seems to fail here:
# Subtest: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
    1..0 # no tests found
not ok 89 - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts # time=6973.904ms
  ---
  env:
    TS_NODE_COMPILER_OPTIONS: "{}"
  file: ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  timeout: 900000
  command: /opt/hostedtoolcache/node/14.17.6/x64/bin/node
  args:
    - -r
    - /home/runner/work/cactus/cactus/node_modules/ts-node/register/index.js
    - --max-old-space-size=4096
    - ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts
  stdio:
    - 0
    - pipe
    - 2
  cwd: /home/runner/work/cactus/cactus
  exitCode: 1
  ...

Bail out! ./packages/cactus-common/src/test/typescript/unit/strings/drop-non-printable.test.ts

@petermetz, looks like the same error from another file. I've fixed it and pushed. Hopefully everything passes this time around

@awadhana Squash is still missing

@petermetz hopefully solid now :)

@awadhana Looks good to me now, but I wanted to double check: is it intentional that now you have 3 tests migrated in the same PR? Wanted to make sure because it's fine by me, but if you have open PRs for the other two tests in parallel then those will need to be closed if we merge this in as-is (which I have no problem with either)

@petermetz nope, that was not intended. I think something weird happened because it looks like this PR was merged sometime before and then the changes from main creeped up here, because those files have already been made into separate merged PR's so they looked like they were part of this branch? Not sure, but it's been fixed and pushed now so hopefully it's solid :)


Add examples of obtaining path parts

The problem
No good example of getting path parts exists.
Solution provided
I added a new head2 section with some examples. (Note I ran "make xtest before this commit and saw no problems with my code.)
UPDATE
Well, I obviously didn't look very carefully!

The failure here is my fault: 74508673dd5015bef1daee78c7c2481a5b80729

I'll fix and resubmit.


Hyprland crashes after installation

Exactly what it says in the title (no programs installed, fresh install of Arch Linux, Nvidia GTX 1060 graphics card)
`
Hyprland Crash Report
"stable"
Hyprland received signal 11 (Segmentation fault)
Version: f27873a6f06dc2f87600edb890f3c38298bfb55f
System info:
System name: Linux
Node name: archlinux
Release: 6.3.2-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Thu, 11 May 2023 16:40:42 +0000
GPU:
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 3GB] [10de:1c02] (rev a1) (prog-if 00 [VGA controller])
os-release:
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo
Backtrace:
#0 | Hyprland(_ZN13CrashReporter18createAndSaveCrashEi+0x450) [0x560f3ba41b20]
??
??:0
#1 | Hyprland(_Z25handleUnrecoverableSignali+0x47) [0x560f3b9e2667]
??
??:0
#2 | /usr/lib/libc.so.6(+0x39ab0) [0x7f6dc4a4fab0]
??
??:0
#3 | /usr/lib/gbm/nvidia-drm_gbm.so(+0x1556b) [0x7f6daf41556b]
??
??:0
#4 | /usr/lib/gbm/nvidia-drm_gbm.so(+0x15838) [0x7f6daf415838]
??
??:0
#5 | /usr/lib/libgbm.so.1(+0x4e59) [0x7f6dc4e8fe59]
??
??:0
#6 | /usr/lib/libgbm.so.1(gbm_create_device+0x61) [0x7f6dc4e91ab1]
??
??:0
#7 | /usr/lib/libwlroots.so.12032(wlr_gbm_allocator_create+0x87) [0x7f6dc543d317]
??
??:0
#8 | /usr/lib/libwlroots.so.12032(+0x405a8) [0x7f6dc543d5a8]
??
??:0
#9 | /usr/lib/libwlroots.so.12032(wlr_drm_backend_create+0x9e3) [0x7f6dc544aac3]
??
??:0
#10 | /usr/lib/libwlroots.so.12032(+0x4e0d3) [0x7f6dc544b0d3]
??
??:0
#11 | /usr/lib/libwlroots.so.12032(wlr_backend_autocreate+0x50e) [0x7f6dc544b7de]
??
??:0
#12 | Hyprland(_ZN11CCompositor10initServerEv+0xf3) [0x560f3b9ea6c3]
??
??:0
#13 | Hyprland(main+0x48e) [0x560f3b9d1e3e]
??
??:0
#14 | /usr/lib/libc.so.6(+0x23850) [0x7f6dc4a39850]
??
??:0
#15 | /usr/lib/libc.so.6(__libc_start_main+0x8a) [0x7f6dc4a3990a]
??
??:0
#16 | Hyprland(_start+0x25) [0x560f3b9df615]
??
??:0
Log tail:
[LOG] Node name: archlinux
[LOG] Release: 6.3.2-arch1-1
[LOG] Version: #1 SMP PREEMPT_DYNAMIC Thu, 11 May 2023 16:40:42 +0000
[LOG] GPU information:
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 3GB] [10de:1c02] (rev a1) (prog-if 00 [VGA controller])
[WARN] Warning: you're using an NVIDIA GPU. Make sure you follow the instructions on the wiki if anything is amiss.
[LOG] os-release:
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo
[LOG] ========================
[INFO] If you are crashing, or encounter any bugs, please consult https://wiki.hyprland.org/Crashes-and-Bugs/
[LOG]
Current splash: Now available on Fedora!
[LOG] Creating the HookSystem!
[LOG] Creating the KeybindManager!
[LOG] Creating the AnimationManager!
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 39.80µs. Estimated average calc time: 0.07µs.
[LOG] Creating the ConfigManager!
[LOG] Creating the CHyprError!
[LOG]  [hookSystem] New hook event registered: focusedMon
[LOG]  [hookSystem] New hook event registered: preRender
[LOG] Creating the LayoutManager!
[LOG] Reloading the config!
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 16.95µs. Estimated average calc time: 0.14µs.
[LOG] Created a bezier curve, baked 255 points, mem usage: 4.08kB, time to bake: 16.30µs. Estimated average calc time: 0.06µs.
[LOG] Registered dynamic var "$mainMod" -> SUPER
[LOG] Disabling stdout logs! Check the log for further logs.
`

nvidia issue, follow the nvidia page, if that doesn't help you're out of luck


build_from_dir can't find Dockerfile when .dockerignore is "*"

This is a strange case maybe, but it's something that works on the command line so I thought it might be considered a bug.
I have a .dockerignore file in my project that is just * to ignore all files (to speed up building the image by not copying everything in the project to docker), and when I try to build my container, I get the error:
Generated at 2017-05-22 10:26:53 -0400
Docker::Error::ServerError: docker_image[bdcreporter-wordpress] (bdcreporter::docker_images line 18) had an error: Docker::Error::ServerError: Cannot locate specified Dockerfile: Dockerfile

/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/docker-api-1.33.2/lib/docker/connection.rb:50:in `rescue in request'
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/docker-api-1.33.2/lib/docker/connection.rb:38:in `request'
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/docker-api-1.33.2/lib/docker/connection.rb:65:in `block (2 levels) in <class:Connection>'
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/docker-api-1.33.2/lib/docker/image.rb:259:in `build_from_tar'
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/docker-api-1.33.2/lib/docker/image.rb:278:in `build_from_dir'

The problem is, docker-api is reading the .dockerignore file when building the tar to send to docker and is building the tar without even the Dockerfile.
I've tried adding the newly supported negation syntax to my Dockerfile:
*
!Dockerfile

but this doesn't work either, I still get the error.
Maybe Dockerfile should be a special case and always be included?
Thanks! I use this library via the Docker chef cookbook every day.
EDIT: I can workaround this problem by just building from the Dockerfile rather than building from the directory.
-Caleb

Any possibility this can be addressed?

Hi guys, is the fix 1320659 going to be merged?

This also happens if .dockerignore contains Dockerfile.
$ ls ./test
.dockerignore
Dockerfile
$ cat Dockerfile
FROM alpine
$ cat ./test/.dockerignore
Dockerfile
$ irb
> require 'docker-api'
> Docker::Image.build_from_dir("test", {t: "test"})
...
Docker::Error::ServerError (Cannot locate specified Dockerfile: Dockerfile)


Model T.type_parameter in method body using Alias

Note This PR is based on two other PRs, so the diff looks larger than it
actually is. Only the last commit is new at time of writing (0199b76b3).

Motivation

Fixes #1725
Fixes #1576
Test plan

[x] @jez Emit errors and write tests for cases where mentioned in TODO comments

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_M5BNQPnEvO0KbD
→ https://go/builds/bui_M5BNYZJMganOCX


Miscompilation produces wrong values at runtime

This code
app "AoC"
    packages {
        pf: "https://github.com/roc-lang/basic-cli/releases/download/0.7.0/bkGby8jb0tmZYsy2hg1E_B2QrCgcSTxdUlHtETwm5m4.tar.br",
        parser: "https://github.com/lukewilliamboswell/roc-parser/releases/download/0.2.0/dJQSsSmorujhiPNIvJKlQoI92RFIG_JQwUfIxZsCSwE.tar.br",
    }
    imports [
        pf.Stdout,
        pf.Task.{ Task },
        parser.Core.{
            Parser,
            const,
            keep,
            skip,
            oneOf,
            many,
            sepBy1,
        },
        parser.String.{
            string,
            parseStr,
            codeunitSatisfies,
        },
        "day-8-input.txt" as input : Str,
    ]
    provides [main] to pf

main : Task {} *
main =
    Stdout.line part1
    |> Task.await \_ -> Stdout.line ""

part1 : Str
part1 =
    input
    |> Str.trim
    |> parseMap
    |> stepsAAAToZZZ
    |> Num.toStr

Direction : [Left, Right]
Node : { left : Str, right : Str }
Network : Dict Str Node
Map : { directions : List Direction, network : Network }

findNode : Network, Str -> Node
findNode = \network, node ->
    when Dict.get network node is
        Ok n -> n
        Err _ -> crash "bad input: node \(node) not found"

stepsAAAToZZZ : Map -> Nat
stepsAAAToZZZ = \{ directions, network } ->
    go = \steps, dirs, cur ->
        dbg
            (steps, dirs, cur)

        if cur == "ZZZ" then
            steps
        else
            when dirs is
                [] -> go steps directions cur
                [Left, .. as rest] ->
                    { left } = findNode network cur
                    go (steps + 1) rest left

                [Right, .. as rest] ->
                    { right } = findNode network cur
                    go (steps + 1) rest right

    go 0 directions "AAA"

parseMap : Str -> Map
parseMap = \str ->
    pDirection : Parser _ Direction
    pDirection = oneOf [
        const Left |> skip (string "L"),
        const Right |> skip (string "R"),
    ]

    pDirections = many pDirection

    pLabel : Parser _ Str
    pLabel =
        const \c ->
            when Str.fromUtf8 c is
                Ok s -> s
                Err _ -> crash "bad input: non-utf8 character"
        |> keep (many (codeunitSatisfies \b -> b >= 'A' && b <= 'Z'))

    pNode : Parser _ (Str, Node)
    pNode =
        const (\node -> \left -> \right -> (node, { left, right }))
        |> keep pLabel
        |> skip (string " = (")
        |> keep pLabel
        |> skip (string ", ")
        |> keep pLabel
        |> skip (string ")")

    pNetwork : Parser _ Network
    pNetwork =
        const (\nodes -> Dict.fromList nodes)
        |> keep (sepBy1 pNode (string "\n"))

    pMap : Parser _ Map
    pMap =
        const (\directions -> \network -> { directions, network })
        |> keep pDirections
        |> skip (string "\n\n")
        |> keep pNetwork

    when parseStr pMap str is
        Ok g -> g
        Err (ParsingFailure e) | Err (ParsingIncomplete e) -> crash "bad input: '\(e)'"

with "day-8-input.txt" as
LLR

AAA = (BBB, BBB)
BBB = (AAA, ZZZ)
ZZZ = (ZZZ, ZZZ)

produces the expected trace
[#UserApp] (0, [Left, Left, Right], "AAA")
[#UserApp] (1, [Left, Right], "BBB")
[#UserApp] (2, [Right], "AAA")
[#UserApp] (3, [], "BBB")
[#UserApp] (3, [Left, Left, Right], "BBB")
[#UserApp] (4, [Left, Right], "AAA")
[#UserApp] (5, [Right], "BBB")
[#UserApp] (6, [], "ZZZ")
6

However, lifting the { left, right } = findNode network cur call up, to
stepsAAAToZZZ : Map -> Nat
stepsAAAToZZZ = \{ directions, network } ->
    go = \steps, dirs, cur ->
        dbg
            (steps, dirs, cur)

        if cur == "ZZZ" then
            steps
        else
            { left, right } = findNode network cur

            when dirs is
                [] -> go steps directions cur
                [Left, .. as rest] -> go (steps + 1) rest left
                [Right, .. as rest] -> go (steps + 1) rest right

    go 0 directions "AAA"

miscompiles:
[#UserApp] (0, [Left, Left, Right], "AAA")
[#UserApp] (1, [Left, Right], "BBB")
[#UserApp] (2, [Right], "AAA")
[#UserApp] (3, [], "BBB")
[#UserApp] (3, [Left, Left, Right], "ZZZ")
3

Is this the same as #6139

No longer reproduces

Thank you @JRI98


Forward returned value from assertEqual

We use chai-exclude and chai-as-promised in our project. With chai-as-promised, assertions return promises, for example:
await expect(Promise.resolve(1)).to.eventually.equal(8);

But chai-exclude drops the promise because it doesn't forward the return value of the parent assertEqual(). This PR fixes it.

Published in version 2.1.0.


Typo

What does this PR do?
This PR:
Fixes a typo in the documentation
Fixes #

How to test it

Step 1
Step 2
...

Additional Notes

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hello @VladyslavLukyanenko,
Thanks for your contribution,
This is not a typo, as the giantswarm/tiny-tools:3.9 image does not contain the bash shell executable but the ash (Almquist Shell) one.


Update README.md

Non-public APIs should default deny access, and only permit access from whitelisted hosts.

LGTM too.
I'm just too cautious about new additions, because i don't want the other translations to be outdated.


🌱 Reuse global index in placement controllers

Signed-off-by: Jian Qiu<EMAIL_ADDRESS>
Summary
avoid creating indexers in each placement/scheduling controllers.
Related issue(s)
Fixes #

/lgtm
/approve

#2383
/retest

/retest


new workflow for bail application

new workflow added for bail application as per bail 2.0 requirements
https://docs.google.com/document/d/16GronAliCazzXEbM5JyaZGpWGRRoQRllmwNtVv8NcFQ/edit?tab=t.nqwxjqalgvqn
@Ramu-kandimalla @suresh12 @devarajd94

Summary by CodeRabbit

New Features

Introduced a new configuration file for the voluntary application submission bail workflow, detailing workflow states and actions.

Documentation

Added structured representation of business services, including workflow states, actions, and roles for the voluntary application submission process.

This workflow is not required as the first bail application is not being edited. A new application will be raised.


How to evaluate trained model on test set using waikatommseg?

Hi is it possible to load the model and evaluate metrics on the test images using mmseg_predict_poll or your docker container?
When training it only outputs val metrics. Cheers!

Have you tried the following tool that comes with mmsegmentation?
https://mmsegmentation.readthedocs.io/en/latest/inference.html?highlight=evaluate#test-a-dataset

Thanks! I'm trying that now. Do you know why it would give a permission denied error? Do you think it could be docker related?

Some of the mm* tools have a hard-coded path /work_dirs that they use internally(I've run into that every now and then).
Try mapping /work_dirs to a work directory on your host using a -v mapping in your docker command.

Thanks Peter! It worked for me.

python /mmsegmentation/tools/test.py /workspace/output/FM_binary-mmseg-pspnet50/fcn_unet.py /workspace/output/FM_binary-mmseg-pspnet50/iter_160000.pth --eval mIoU

Cool!


Create Job Listing Page

I'll take this one.

Hey do you need help with this? I'm interested in helping out!

@ethanzack , I just haven't gotten around to it. I'm working on it right now.


Fix conflicting behavior IDs in ur_site_config

Should update https://github.com/PickNikRobotics/picknik_ur5e_configs main branch to point to main in this repo once this merges

version 6.3.0


Relax Beautifulsoup version restriction

The Beautifulsoup version is stuck to an old one since https://github.com/wagtail/wagtail/commit/93e079bc6c5f1b5b410d7a7115ec9762b76cf3f0 and imposes that to the whole environment, when we could want a newer version. As the bug which led to the restriction of the 4.6.0 version is now resolved since the 4.6.1 version, this relaxes the Beautifulsoup required version.

Thanks @jeromelebleu!
As I recall, there was a follow-up issue in the fixed version (4.6.2) that prevented us from upgrading further - unfortunately I can't find any record of what that issue was, but I'm pretty sure it was related to rich text having strict conditions on the HTML formatting (see https://docs.wagtail.io/en/v2.8/advanced_topics/customisation/rich_text_internals.html#data-format and the regexps at https://github.com/wagtail/wagtail/blob/master/wagtail/core/rich_text/rewriters.py#L7-L9) which were no longer being met. Judging from the wording of the release note in 2.0.2 ("further regressions in formatting empty elements"), it may have been <embed /> elements being written as <embed></embed>.
Whatever the problem was, I think it was caught by our tests at the time, so the tests succeeding here is an encouraging sign that it may have been fixed in a later version of beautifulsoup. I suggest we do some further testing against 4.6.2, and hopefully rediscover what the problem was - and then we can confirm whether it's fixed in current versions.

Also related: #5484 (the outdated version of beautifulsoup is one of the remaining dependencies that may be hit by a deprecation in Python 3.9)

Have confirmed that there are some test failures in 4.6.2 (and 4.7.x):

test_embed_conversion_with_custom_whitelist (wagtail.admin.tests.test_rich_text.TestWidgetWhitelisting) - <embed /> output as a tag pair
test_embed_conversion_with_default_whitelist (wagtail.admin.tests.test_rich_text.TestWidgetWhitelisting) - <embed /> output as a tag pair
test_quoting (wagtail.core.tests.test_whitelist.TestWhitelister) - <img /> tag output without closing slash (probably harmless)

These are all fixed again in 4.8.0, which checks out with what the changelog for that release says about the expanded role of Formatter objects.
Given that our usage of beautifulsoup is pretty sensitive to breaking changes, I'm wary of including 4.9 and above in the range, so I'll go ahead and set it to >=4.8,<4.9.

Fixed in d192bd1d44a1c3abd98929bafefce609069dd51a.

Thanks for your review and checks!

Note that I was already listed in CONTRIBUTORS.rst (Jérôme Lebleu).
Thanks for taking care of that!

Ah, thanks! I did a search for Jerome, but I guess it didn't pick up the version with the accents :-)


Code correction is required in the document for typescript handbook under interface section

TypeScript Version:  2.1.1 / nightly (2.2.0-dev.201xxxxx)
https://www.typescriptlang.org/docs/handbook/interfaces.html
documentation  line which mention "property in createSquare, we would get an error message letting us know:"
Code
// Error: Property 'color' does not exist on type 'SquareConfig'
        newSquare.color = config.color;

Expected behavior:
This should throw and error when compiled
Actual behavior:
It does not throw an error
Code  Correction.
// Error: Property 'color' does not exist on type 'SquareConfig'
        newSquare.color = config.colour;

Hope this could help
Alan Mehio

Thanks for reporting, this has actually been fixed, but we'll need to sync up changes from the handbook to the website.

Daniel,
Nice to hear your feedback. Very quick repsonse.  No worries   there is another small thing which is a document improvement. I am not sure if I am picky in this case; however, let me say it; and it is up to you to decide.
In the handbook/ interface section directly under "Optional Properties"  there is a function definition
function createSquare(config: SquareConfig): {color: string; area: number} { ....

It would be perfect if you put a comment on this ": {color: string; area: number}" which says this is the return type of the function. The reason of doing so is the user still readin the interface and has not started to look at function definition in the section after calsses.
Again, it is up to you to decide on this doc improvement
Regards,
Alan Mehio
Sweden, Gothenburg


[libharu] Fix HPDF_DLL export symbol

[x] Changes comply with the maintainer guide
[ ] SHA512s are updated for each updated download
[ ] The "supports" clause reflects platforms that may be fixed by this new version
[ ] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

Does this change actually fix a port problem? The header fixup might still be desired for those who do not use CMake.

The variable HDF_DLL should not be defined on Linux when building shared libs, otherwise ther are compilation issues for ports consuming libharu.
I can revert most of the changes and add a condition to check if we are on Windows before patching the headers.

@dg0yt let me know if it looks better now.

Note: The problem you're fixing here (i.e. setting some DLL-related variables on non-Windows) seems to be a common issue. I searched for if\(VCPKG_LIBRARY_LINKAGE STREQUAL "(static|dynamic)"\)(\n|\r\n).*DLL in all portfiles and found about 30 hits. In most cases, this won't cause any issues, but this PR shows that we have to be careful with this.
Note: there are false positive ports included by the search string that only support Windows or check for Windows in a previous if-statement.

Let me take a look at why it's failing on static x64 and x86 triplets.

I'm a bit confused, I do not reproduce the failing builds with x64-windows-static and x86-windows.

/azp run

Thanks for your PR, Is work still being done for this PR?

Thanks for your PR, Is work still being done for this PR?

Sorry I have no time to finish this PR, I'm closing it.


Error: Unable to instantiate model

I just installed your tool via pip:
$ python3 -m pip install llm
$ python3 -m llm install llm-gpt4all
$ python3 -m llm -m ggml-vicuna-7b-1 "The capital of France?"

The last command downloaded the model and then outputted the following:
Error: Unable to instantiate model

Is there a debug mode I can enable to get more info?

What operating system / hardware was this for?
Could you check and see the size of the files in this folder:
ls -la ~/.cache/gpt4all

I want to check you got the full model - I've seen it run into problems with partially downloaded models before.
For reference, here's what I get from that command:
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul  9 13:00 ggml-gpt4all-j-v1.3-groovy.bin
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul 11 19:13 ggml-mpt-7b-chat.bin
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul  9 13:36 ggml-replit-code-v1-3b.bin
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul  9 14:13 ggml-vicuna-13b-1.1-q4_2.bin
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul 12 09:25 ggml-vicuna-7b-1.1-q4_2.bin
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul  9 12:47 nous-hermes-13b.ggmlv3.q4_0.bin
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul  9 12:12 orca-mini-3b.ggmlv3.q4_0.bin
-rw-r--r--   1 simon  staff<PHONE_NUMBER> Jul  9 13:21 orca-mini-7b.ggmlv3.q4_0.bin

OS: Ubuntu 22.04.2 LTS
Hardware:

CPU: Intel(R) Core(TM) i7 CPU         960  @ 3.20GHz
GPU: GeForce GTX 1060 6GB
RAM: 12GB DDR3

Cache:
-rw-rw-r--  1 icholy icholy<PHONE_NUMBER> Jul 12 13:41 ggml-vicuna-7b-1.1-q4_2.bin

This is really weird - you've definitely got the whole file there.
I've not tested this myself on Ubuntu yet.
Could you try and see what happens with one of the other models? orca-mini-3b is a nice small one.

Same thing with orca-mini-3b, it downloaded the model and then: Error: Unable to instantiate model. I ran it with strace and noticed a write(2, "Invalid model file\n", 19)    = 19 in the output.
$ md5sum ./ggml-vicuna-7b-1.1-q4_2.bin ./orca-mini-3b.ggmlv3.q4_0.bin
29119f8fa11712704c6b22ac5ab792ea  ./ggml-vicuna-7b-1.1-q4_2.bin
6a087f7f4598fad0bb70e6cb4023645e  ./orca-mini-3b.ggmlv3.q4_0.bin

If anyone here ends up here on a google search, I had the same issue on a Mac M1 mac for all gpt4all models.
It turns out I had installed pipx in x86_64 mode. I fixed this via:
arch -arm64 brew reinstall pipx
and reinstalling llm plus plugins. This resolved the issue. hope this helps!


Topic privacy policy

Hello,
I have a question about privacy. We wanted to use the program but are not sure about privacy policy in Europe. Will any data be stored and forwarded to Captura?
Thank you

Captura does not collect any usage information or personal information.


Printing emails option

There is no PRINT option on the Lokole app, But I can print from windows program
(Split out from #19)

For print, we'll have to add a print button to the email display which calls the window.print() in Javascript on click. We'll also have to add some new CSS that defines what the page looks like when printed (e.g. to display the email in a more prominent way on the page) using @media print.

jQuery library to print an element: printThis


from smt.examples.b777_engine.b777_engine import get_b777_engine, plot_b777_engine ,ModuleNotFoundError: No module named 'examle'

there is'not examples folder in the path of  \Anaconda\envs\machine_learning\Lib\site-packages\smt
then I conda upgrade smt, the example folder still dosen't appear!
So, I download the zip from github of smt, and copy the example folder from the smt.zip to   \Anaconda\envs\machine_learning\Lib\site-packages\smt.
from smt.examples.b777_engine.b777_engine import get_b777_engine, plot_b777_engine  run successfully!

However, I debug the run_b777_engine_rmtb.py, it dosen't the show  the pictures !
UserWarning: Matplotlib is currently using agg,  which is a non-GUI backend, so cannot show the figure.
plt.show()

I modify the code  matplotlib.use("TkAgg") to

`    import matplotlib
matplotlib.use('TkAgg')`

But the picture is disorder.
actually, I have to modify all the codes of "agg" in every example!
maybe, it's  caused by copy the "example folder"?   thanks!!

Indeed the examples were created when the only way to get SMT was to download the source (the examples directory is not packaged when installing with pip or conda).
Examples are shown in the documentation here and to generate this documentation we set a non GUI backend and save plots as images.
I think we've added the matplotlib.use('Agg') at some point to avoid problems with plots as documentation is generated automatically from source in batch mode. Indeed if you just comment out this line the plots should show up.
We should update our documentation accordingly, thanks for the heads up.

thanks, after I modify the code matplotlib.use('Agg') as matplotlib.use('TkAgg'), it works.
And another question: where are the explanations of the design variables of the examples . For example, what's the target, the basic meaning of the inputs of boing 777 smt.  I can't find the references.

I don't know the source of the training data, if it is what you ask for. That said, from the code, we can derive:

inputs: throttle, altitude, Mach number
outputs: SFC, thrust

thank you very much


SyntaxError shown at wrong location

Consider the following exemple:
a = "hello" + """world
     continuing

With Python 3.9, we get the following:
  File "C:\Users\Andre\github\friendly-traceback\ignore.py", line 4
         continuing
                   ^
SyntaxError: EOF while scanning triple-quoted string literal

Meanwhile, this is what we get with friendly_traceback.
  File "HOME:\github\friendly-traceback\ignore.py", line 3
    a = "hello" + """world
     continuing
                                           ^
SyntaxError: EOF while scanning triple-quoted string literal

    A `SyntaxError` occurs when Python cannot understand your code.

    Python could not understand the code in the file
    'HOME:\github\friendly-traceback\ignore.py'

       1| a = "hello" + """world
       2|

    You started writing a triple-quoted string but never wrote
    the triple quotes needed to end the string.

The traceback includes two lines, with the caret ^ pointing at the wrong location.
The processed result does not even show where the error occurred and includes an empty second line.

This is the comparable situation when using Python 3.10
> python ignore.py
  File "C:\Users\Andre\github\friendly-traceback\ignore.py", line 1
    a = "hello" + """world
                  ^
SyntaxError: unterminated triple-quoted string literal (detected at line 2)

(venv-friendly-traceback-3.10) C:\Users\Andre\github\friendly-traceback
> python -m friendly_traceback ignore.py

Traceback (most recent call last):
  File "HOME:\github\friendly-traceback\ignore.py", line 1
    a = "hello" + """world
                  ^
SyntaxError: unterminated triple-quoted string literal (detected at line 3)

    A `SyntaxError` occurs when Python cannot understand your code.

    Python could not understand the code in the file
    'HOME:\github\friendly-traceback\ignore.py'
    at the location indicated.

       1| a = "hello" + """world
                      ^

    You started writing a triple-quoted string but never wrote
    the triple quotes needed to end the string.

This is now fixed. For example, with Python 3.10:
(venv-friendly-traceback-3.10) C:\Users\Andre\github\friendly-traceback
> python -m friendly_traceback ignore.py

Traceback (most recent call last):
  File "HOME:\github\friendly-traceback\ignore.py", line 1
    a = "hello" + """world
                  ^
SyntaxError: unterminated triple-quoted string literal (detected at line 2)

    A `SyntaxError` occurs when Python cannot understand your code.

    Python could not understand the code in the file
    'HOME:\github\friendly-traceback\ignore.py'
    at the location indicated.

       1| a = "hello" + """world
                        ^^^^^^^^

    You started writing a triple-quoted string but never wrote
    the triple quotes needed to end the string.

And with Python 3.6 (an other extreme):
Traceback (most recent call last):
  File "HOME:\github\friendly-traceback\ignore.py", line 2
    a = "hello" + """world
     continuing
                                          ^
SyntaxError: EOF while scanning triple-quoted string literal

    A `SyntaxError` occurs when Python cannot understand your code.

    Python could not understand the code in the file
    'HOME:\github\friendly-traceback\ignore.py'
    at the location indicated.

       1| a = "hello" + """world
                        ^^^^^^^^

    You started writing a triple-quoted string but never wrote
    the triple quotes needed to end the string.


⚠ Jenkins Plugins Artifactory has degraded performance

In e0676bf, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1357 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 8d4f864 after 1 hour, 18 minutes.


[WIP] build.cake Refactor Semantic Version

Currently semver is used in a couple of places before it's assigned (i.e. build output en setup message), also on posix it was never assigned.
This WIP PR proposes the following changes

Semantic version now calculated at setup
SolutionInfo used as fallback
Directory paths instantiated post semver
Use V3 nuget feeds
Remove code duplication (create nuget & copy files)

@gep13 so I went a little crazy... but it still compiles :wink: Still WIP, but I think ready for feedback.

@devlead ha ha, you did go a little crazy! I will need to take a closer look at this, and get back to you.
For now, can you rebase against develop and re-push?

@devlead based on the other conversations that we have had around this, do we want to change the top level Publish task, so that the contained Tasks are done, automagically, when running on AppVeyor, and when it is the main branch that is being built?  Additionally, we might want to include the presence of a Tag?  That would mean we would need to change the calls to GitReleaseManager a little bit though.

@gep13 we could publish automagically on AppVeyor, but perhaps that should be step 2, refactored allot as is :wink:
Think I've addressed most feedback given, ping me otherwise.
If we're happy with it and want to try it I could reopen the PR against master and we could to a "hotfix" release to test our release process.

@devlead said...
If we're happy with it and want to try it I could reopen the PR against master and we could to a "hotfix" release to test our release process.

Yes, I think that would be a good idea.  @patriksvennson what are your thoughts?

Replaced by #768


[terra-slide-panel-manager] Updated docs to use MDX syntax

Summary
Updated terra-slide panel-manager docs to use MDX syntax

Can you interchange the order of the "changelog" and "upgrade guide" for consistency.
Since majority of the component's documentation have the "Upgrade guide" before the "changelog".

Can you interchange the order of the "changelog" and "upgrade guide" for consistency.
Since majority of the component's documentation have the "Upgrade guide" before the "changelog".

Changed 76d1e22

@saket2403 any update on this?


Add type to RetryListener class

This allows lambdas to be used as RetryListeners

+1 this would be very helpful!

(resolves #62)


Optimize labelary

https://github.com/BinaryKits/ZPLUtility/issues/23

Should we include the Labelary client in the main project? This would mean that we create an additional dependency to System.Net.Http.


Enable split generation

Ideas:

check if target class is present
how to check that it is compatible? -> let's rely on javac which will compile the generated sources

Initial support for split generation has been added.


tau prolog run in  nodejs  have some  problem

var pl = require("./modules/core");
require("./modules/lists")(pl);
var session = pl.create(1000);
var program =                  :- use_module(library(lists)). 		append([1, 2, 3], [a, b, c], [1, 2, 3, a, b, c]). 		append([1, 2, 3], [a, b, c], [c, a, k, e]).
// Goal
var goal = "append([1, 12, 3], [a, b, c], X).";
// Load the program
session.consult(program , {
success: function() {
// Query the goal
session.query(goal, {
success: function() {
// Look for answers
session.answers(x => console.log(pl.format_answer(x)));
}
});
}
});
//  result : false.

The problem is that you define your own version of append/3 in the user module with these two clauses:
append([1, 2, 3], [a, b, c], [1, 2, 3, a, b, c]).
append([1, 2, 3], [a, b, c], [c, a, k, e]).

So when you call append/3 the system finds a definition in the user module, and does not use the one in the lists module. You have to remove those two clauses from your program, or call the goal with the context lists:append([1, 12, 3], [a, b, c], X)..

ok,it's no problem.


Feature request: support $this with enhance

I noticed that we can use $this in Aurelia templates to get a reference to the context, but it returns undefined when enhance is doing the compilation.
plunker: http://plnkr.co/edit/ZI88Uu?p=preview

Updated to latest Aurelia bits: https://gist.run/?id=7c8dc8af39bf26046e374abba409328f
@EisenbergEffect is this really a bug?  Is there any way for the templating engine to know what the binding context is in scenarios where a DOM element is passed to the enhance method instead of a EnhanceInstruction with a bindingContext property?
https://github.com/aurelia/templating/blob/master/src/templating-engine.js#L80

Correct, it's not a bug if a binding context isn't passed in.

Passing the context to bindingContext allows $this to work, so that's great. But now it doesn't pick up the overrideContext: https://gist.run/?id=b9939a488d6158ebef4285eee1c1ebb8
Do I still need to call .bind() myself? How would we pass the overrideContext to the enhance call as this line only passes one argument to .bind() which is the bindingContext. this);
view.attached();

Ah, well that's a bug. That must have been missed when we added the override context implementation. @JeroenVinke Any interest in submitting a PR to add overrideContext to the EnhanceInstruction as well as pass that through to the bind call?

Sure, I'll take a stab at it.

OK, so now I'm able to pass an overrideContext and enhance will pass that to bind(). But now the real issue is showing.
Check out this gist: https://gist.run/?id=cda6266d95db146fd58699cd3b27e043. Note that this gist doesn't use the latest aurelia-templating yet, so it doesn't pass a bindingContext or overrideContext to enhance(). Instead, a .bind() call is used on the View that's returned from enhance(). The issue is the same.
As you see in the gist I enhance two divs. With one I pass an overrideContext to bind() and with the other I don't. $this only works when you don't use an overrideContext. Strangely $this.someVar works both scenarios

Got it, it works when I wrap my overrideContext in a createOverrideContext call: https://gist.run/?id=69e65deae65bacfc4eb0928514ed5fbe
Important bit: view.bind(ctx, createOverrideContext(ctx, this)); where createOverrideContext comes from aurelia-binding.
I guess the next question is: should enhance()  or the caller of enhance use createOverrideContext?

This question is best answered by @jdanyow

If you're supplying the overrideContext, it's best to use createOverrideContext to create it.  This will ensure things are wired up correctly.
although this looks like it would work: view.bind(ctx, createOverrideContext(ctx, this));
To match how it would be modeled in non-enhance scenarios you might want to do this:
const parentBindingContext = this;
const parentOverrideContext = createOverrideContext(parentBindingContext);
const bindingContext = { foo: 'bar' };
const overrideContext = createOverrideContext(bindingContext, parentOverrideContext);
view.bind(bindingContext, overrideContext);

Works like a charm, thanks :+1:

Do we need to change something in our enhance implementation to make this better?


[Streamlet] Add ConsumerStreamlet name to stageNames Set to avoid duplication

This PR aims the following changes:

Adding ConsumerStreamlet name to stageNames Set to avoid duplication
UT coverage is added for default calculated Streamlet name
Adding minor javadoc updates

Hi @lucperkins,
In addition this PR, i can work on abstraction of stageNames.add(getName()) logic in the next PR if there is no concern.
Thanks in advance ;)

@erenavsarogullari Sounds good to me. Glad to have your help!

Thanks @lucperkins. Will be addressing offered abstraction via separated PR ;)


nftables: iif/oif startup problems

Issue description
After upgrading to 19.09 my nftables based firewall wouldn't come up because interfaces were missing. Among these were my networkd based wireguard tunnels, which existed when I logged in. This is a regression from 19.03, probably because the nftables.service is started too early.
Oct 16 00:49:48 juno systemd[1]: Starting nftables firewall...
Oct 16 00:49:49 juno y5f8j3xifprskgby3k4c85p7v0h5qckh-nftables-check[487]: In file included from /nix/store/a4byfg2v2kpbh587aw50w5a0vz6lnylb-nftables-rules:3:1-69:
Oct 16 00:49:49 juno y5f8j3xifprskgby3k4c85p7v0h5qckh-nftables-check[487]: /nix/store/hq9yd8z7fgx2gmdg1m610c7zvfira58c-nftables-rules:19:19-31: Error: Interface does not exist
Oct 16 00:49:49 juno y5f8j3xifprskgby3k4c85p7v0h5qckh-nftables-check[487]:     iif { "ens3", "wg-ganymede", "wg-io" } meta l4proto { udp, tcp } @th,16,16 53 counter accept
Oct 16 00:49:49 juno y5f8j3xifprskgby3k4c85p7v0h5qckh-nftables-check[487]:                   ^^^^^^^^^^^^^
Oct 16 00:49:49 juno systemd[1]: nftables.service: Main process exited, code=exited, status=1/FAILURE
Oct 16 00:49:49 juno systemd[1]: nftables.service: Failed with result 'exit-code'.
Oct 16 00:49:49 juno systemd[1]: Failed to start nftables firewall.

I found that post that describes the issue well:

Please note that oif is in reality a match on the integer which is the index of the interface
inside of the kernel. Userspace is converting the given name to the interface index when the
nft rule is evaluated (before being sent to kernel). A consequence of this is that the rule can
not be added if the interface does not exist.
An other consequence, is that if the interface is removed and created again, the match will
not occur as the index of added interfaces in kernel is monotonically increasing. Thus, oif is a
fast filter but it can lead to some issues when dynamic interfaces are used.
It is possible to do a filter on interface name but it has a performance cost because a string
match is done instead of an integer match. To do a filter on interface name, one has to use
oifname:

via https://home.regit.org/netfilter-en/nftables-quick-howto/
So in addition to the unit ordering issue mentioned above unless we restart nftables.service each time a new interface appears oif and iif matching is unreliable.
I migrated to oifname and iifname for now, which are a bit more expensive, but work reliably.
Steps to reproduce

Use nftables for firewalling

{
  networking.nftables = {
    enable = true;
    ruleset = ''
      table inet filter {
        chain input {
          type filter hook input priority 0;
          iif lo accept
          ct state established,related accept
          ip6 protocol icmpv6 accept
          ip protocol icmp accept
          tcp dport ssh ct state new accept

          iif { "ens3", "wg-a", "wg-b" } meta l4proto { udp, tcp } @th,16,16 53 counter accept
        }
      }
    '';
  };
}

Create wireguard tunnels using systemd-networkd.
Reboot
The nftables.service will be started before the wireguard interfaces exist

Technical details
Please run nix run nixpkgs.nix-info -c nix-info -m and paste the result.
system: "x86_64-linux", multi-user?: yes, version: nix-env (Nix) 2.3, channels(root): "nixos-19.09.809.5000b1478a1, nixos-unstable-19.09pre192418.e19054ab3cd", nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

I migrated to oifname and iifname for now, which are a bit more expensive, but work reliably.

This is my takeaway. Just don't use iif and oif.

hi, @mweinelt
use iff instead of oif not works for all, please check a situation below about ingress hook, the device option is required but NIC may bootup after nftables.service.
# nft
table netdev filter {
    chain wan_input {
        type filter hook ingress device "a_slow_nic" priority filter; policy accept;
        # all *wan interface should refuse dport 67 to avoid dhcp leaks
        udp dport 67 drop comment "proof dhcp service leaks to wan"
    }
}

I've got an urgly method when I found
After=sys-subsystem-net-devices-_a_show_nic.device was useless
and
After=...-online.service will leak connection which nft as a firewall is used to reject/drop.
# call `systemctl edit nftables.service` and apply content of these
[Service]
ExecStartPre=/bin/bash -c 'while ! /usr/sbin/ip link show a_slow_nic 2>/dev/null 1>&2; do sleep 0.03; done'
Restart=on-failure
RestartSec=5
TimeoutStartSec=10
# Type= set to oneshot is not allowed
# cos of systemd oneshot unit is a blocked opeartion which may hang up forever
Type=simple

I think a better solution would be to have 2 firewalls.
First start a basic more restrictive firewall  before 'network-pre.target'. Optionally this could have some anti-lockout fallback rules.
After network-online or wireguard or pppoe start the real firewall and that and can use iif, oif  and ingress or flowtable.

Alternatively you can use wildcard names with iifname and oifname however it's the difference between using numeric indices for interface names (iif) and a string compare /  string expression. A third alternative:
set fast_in_private_interfaces {
  type iif;
}

chain dont_you_love_my_chain_mane {
  iif @slow_in_private_interfaces accept
  iifname "wlp*" accept
}

then later you can add iif's to the set from the command line as you please, but sets can be empty I made this work once but decided I didn't care about making the ruleset this abstract. It's still nice to know though and handy to say the least.
Disclaimer:
last I checked if you try to use wildcards in a set (eg a typeof iifname, nftables will sefault upon parsing; they may or may not have fixed this, but if you try to do that you definitely should check and make sure it's intended to work that way I don't think it is, it doesn't make a whole lot of sense to use a wildcard as a set element IMHO, but curiosity got the better of me once.
Asides from the obvious difference in iif and iifname you also have to use typeof for iifname which I believe implies a higher level of abstraction is used; I could be mistaken but this might be the difference between a 5 tuple element (iif) which might be less expensive than unpacking to something more extract. I saw the information about the difference between the two somewhere but I can't find it at the moment. If it works for your purposes, cool I just thought I'd point this out in any case.

Also my understanding is that if expense ever does become a deal killer for nftables, they have something called flowtables which helps you offload with cards that support fastpath though it may not be the solution you're looking for depending on what your needs are.


Stats and progress user feedback

'Is your feature request related to a problem? Please describe.
The learning curve is a bit steep, but a few easy-to-track metrics might make the climb easier. And more fun.
Describe the solution you'd like
Add a page to the settings section called Metrics, which displays things like recent wpm, character set coverage, features discovered, etc. (It would have been SO much easier to discover the bracket gestures if I'd known they were there to discover. 😊)
Describe alternatives you've considered
Some stats can be tracked by using a typing test app, but those tests are rather artificial and don't tell you much about how you're doing in real world usage.

I'm working on a feature listing all movements available for a layout with a visual preview.
If that could help?

this is a nice idea
On Fri, Apr 19, 2024, 9:09 PM Jefferson Smith @.***>
wrote:

'Is your feature request related to a problem? Please describe.
The learning curve is a bit steep, but a few easy-to-track metrics might
make the climb easier. And more fun.
Describe the solution you'd like
Add a page to the settings section called Metrics, which displays things
like recent wpm, character set coverage, features discovered, etc. (It
would have been SO much easier to discover the bracket gestures if I'd
known they were there to discover. 😊)
Describe alternatives you've considered
Some stats can be tracked by using a typing test app, but those tests are
rather artificial and don't tell you much about how you're doing in real
world usage.
—
Reply to this email directly, view it on GitHub
https://github.com/8VIM/8VIM/issues/481, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABX5WR3U2CCXE2AVSUVGRPTY6E3C3AVCNFSM6AAAAABGPNBFICVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI2TGMZRGAYTMMA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I think a setting that allows general info collection and later display would be nice. Things like WPM and characters typed.
It is important to be able to turn it off for people who want to avoid gamification.

The listening should be in the settings.
Collecting metrics should be fairly easy to do, but since the 0.17.0 is already big in changes, That could be for the 0.18.0 version


inlining nullary operators

This PR forces the inliner to inline nullary operators too. Although I like nullary operators a lot, they are in conflict with the preprocessing code. It often happens that the optimizers cannot rewrite expressions because they are partially hidden in a LET-definition.

[ ] ~Tests added for any new code~
[x] Ran make fmt-fix (or had formatting run automatically on all files edited)
[ ] ~Documentation added for any new functionality~
[x] Entry added to UNRELEASED.md for any new functionality

@Kukovec please have a look at the breaking tests

It looks like we have to think more about it.


Add a context menu ability to duplicate a command

Right click on a command -> duplicate -> ??? -> profit!

Hope Resource.duplicate() doesn't cause any troubles.


AlertOperation doesn't fire in 3.0.0

Were there any major changes to the way AlertOperation works in 3.0.0? Code which was working before doesn't anymore and my queue ends up with two operations which never complete:
(lldb) po [[mainOperationQueue] operations]
<__NSArrayM 0x7f96623bbf90>(
<_TtGC10Operations14AlertOperationCSo16UIViewController_: 0x7f96611a3ce0>{name = 'Error'},
<_TtGC10Operations11UIOperationCSo17UIAlertControllerCSo16UIViewController_: 0x7f965ee640c0>{name = 'UIOperation<UIAlertController>'}
)

From what I can tell, execute is never called on UIOperation. But I don't see any changes between 2.10 and 3.0.0 with that class. I've tried adding break statements into the Operation code base but it doesn't let me access the variables there:
(lldb) po self
error: <EXPR>:10:9: warning: initialization of variable '$__lldb_error_result' was never used; consider replacing with assignment to '_' or removing it
    var $__lldb_error_result = __lldb_tmp_error
    ~~~~^~~~~~~~~~~~~~~~~~~~
    _
<EXPR>:16:5: error: use of unresolved identifier '$__lldb_injected_self'
    $__lldb_injected_self.$__lldb_wrapped_expr_43(

I'm creating my alert in a pretty standard way:
let alert = AlertOperation(presentAlertFrom: presentationContext)
alert.title = "Error"
alert.message = msg
queue.addOperation(alert)

What can I do to check why those operations aren't being run?

Hmm - what does the verbose log say?
alert.log.severity = .Verbose

Error: >>> MutuallyExclusive<UIViewController>
Error: >>> MutuallyExclusive<Alert>
Error: Initialized -> Pending
Error: Pending -> Executing
Error: Will Execute
Error: Did produce UIOperation<UIAlertController>
UIOperation<UIAlertController>: Initialized -> Pending

@ryanjm - just looking into this. On the examples project this is all working fine.
The issue in your code is almost certainly one of the following:

An operation is not getting "finished"
There is a subtle issue with mutual exclusivity resulting in a deadlock.

Try turning verbose logging on for all operations, put this in your application delegate startup callback:
LogManager.severity = .Verbose

then trace through the >>> MutuallyExclusive messages. They should all have matching <<< MutuallyExclusive log entries.

I've added the verbose logging and here is everything from the Alert (which I named "Alert from Error Observer"):
Alert from Error Observer: >>> MutuallyExclusive<UIViewController>
Alert from Error Observer: >>> MutuallyExclusive<Alert>
Condition Evaluator for: Alert from Error Observer: Initialized -> Pending
Alert from Error Observer: Initialized -> Pending
Condition Evaluator for: Alert from Error Observer: Pending -> Executing
Condition Evaluator for: Alert from Error Observer: Will Execute
MutuallyExclusive<UIViewController>: Initialized -> Pending
MutuallyExclusive<Alert>: Initialized -> Pending
MutuallyExclusive<Alert>: Pending -> Executing
MutuallyExclusive<UIViewController>: Pending -> Executing
MutuallyExclusive<Alert>: Will Execute
MutuallyExclusive<UIViewController>: Will Execute
MutuallyExclusive<Alert>: Executing -> Finishing
MutuallyExclusive<UIViewController>: Executing -> Finishing
MutuallyExclusive<Alert>: Will finish with no errors.
MutuallyExclusive<UIViewController>: Will finish with no errors.
MutuallyExclusive<Alert>: Finishing -> Finished
MutuallyExclusive<UIViewController>: Finishing -> Finished
MutuallyExclusive<Alert>: Did finish with errors: []
MutuallyExclusive<UIViewController>: Did finish with errors: []
Condition Evaluator for: Alert from Error Observer: Executing -> Finishing
Condition Evaluator for: Alert from Error Observer: Will finish with no errors.
Condition Evaluator for: Alert from Error Observer: Finishing -> Finished
Condition Evaluator for: Alert from Error Observer: Did finish with errors: []
Alert from Error Observer: Pending -> Executing
Alert from Error Observer: Will Execute
Alert from Error Observer: Did produce UIOperation<UIAlertController>
UIOperation<UIAlertController>: Initialized -> Pending

Everything else in the log lined up properly and went through the entire flow. None of them had MutuallyExclusive<UIViewController> or MutuallyExclusive<Alert>. If you want the full log, ping me on Slack and I'll give you a gist with it all.
From what I can tell it looks like both MutuallyExclusive conditions complete just fine and therefore the alert continues to run. I don't know why the UIOperation doesn't continue.

I've downloaded and run the example project you reference. The only difference I see in my code is where my operation is being generated.
I'm creating mine from an observer and then adding it to my global queue. This also means that I'm having to "find" the UIViewController to present the alert from, but when I put a break point into my code, the view controller is the one I'm expecting to see.
I've even tested the presentation method directly in that view controller and it works as expected (no surprise there):
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Test message" message:@"msg" preferredStyle:UIAlertActionStyleDefault];
[alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"Done");
}]];
[self presentViewController:alert animated:true completion:nil];

I've even tried changing which queue the alert operation is put on, but that didn't change anything:
OperationQueue.mainQueue().addOperation(alert)

Those two operations just remain stuck on that queue instead.
Very strange.

I've put a bunch of break statements throughout operations and I see the UIOperation get added to the queue via the ProducedOperationObserver. But the main is never called on the UIOperation. The queue still exists, nothing should be blocking it, but it is just never run.
I think I'm going to have to manually work around this for now (not sure how I'll do that). I have no idea where to take it from here. Any ideas?

Ended up being one of those one-liner mistakes.
This is my fault (of course). I had recently added a maxConcurrentOperationCount of 1 on my queue, so those two queues we blocking each other. The Alert was waiting for the UIOperation to finished, but it couldn't get started because the queue was already running something (the alert).

So, ended up kinda being a deadlock?
This is one of those situation where it would make sense to have a timeout observer added to every Operation instance by default in #if debug #endif to warn if an operation has been running for longer than 3 seconds or something.

Yes, it was a deadlock, just not a mutual exclusion issue.
The timeout observer would be an interesting solution, but I wonder if that would just dirty the code. I'm not sure how necessary it would be. The most the error message could say is "Timed out, (operation) couldn't finish in a reasonable time." And then it'd be up the the developer to figure out why. Additionally, there might be a case where you want an operation running longer (I have no idea what that case would be, but it might be out there).
But, this is just a good lesson to know regarding limiting the number of operations that run. Alert creates a ui operation and waits for that operation to finished before it finishes. Therefore if they are on the same queue, you can't limit that queue.


Trigger a selective set of tests

Going forward each Ballerina standard library will have it is own release cycle. Therefore, we need to be able to trigger the performance tests only for that particular library. For instance, in the case of HTTP release, we only need to run tests related to HTTP but not database tests.
Therefore, if we can have a grouping for each library and then trigger all of them at once, it would be ideal.

As of now, distribution is daily synced with latest timestamped version of each standard library. Therefore, we can build a nightly distribution pack which have all the latest changes of the language runtime and standard library modules. But, going forward (after SwanLake beta3) since the each standard library is released on top of the released language and also released only on-demand, there should be a method to run these tests (a selective tests) against a custom distribution IMO.

We (@anuruddhal @ldclakmal @xlight05 @shafreenAnfar) had a discussion on this and following is the summary.

Current flow continues stay as it is. Meaning the framework runs all the tests using the nightly build and publish the results
There will be another flow which has the below aspects

Each library owner provides their own runtime in the form of a URL
Each library owner provides their load-test artifact in the form of a URL (this will be the repo URL). For this to work each repo must have the load-test artifacts under the root folder loadtests
Each library owner specifies the list of the tests they want to run
Once above inputs are satisfied, they can trigger the load-test workflow (if they want, they can figure out a way automate it)
Load test framework creates a branch in the provided repo, run the tests and commit the results
Each library owner can decide what to do with the results
Each library owner can bring their own client tool but they have to do the relevant work to make it generate a result set that is compatible with the load-test framework.


Could I get the code for experiment in CellGAN

Thanks a lot for your research and kindness to share the GAN code.
I wonder if I could get the code for experiments shown in your paper? Especially the code for proving that CellGan can better augment dataset in experiment 3.3.

I would be really happy if I can also get the code for other code for experiment.
Again, thanks a lot for sharing the training code!

Thanks for your interest in our work!
For experiment 3.3, we trained the downstream classifiers with the combined real and synthetic data using MMClassification (https://github.com/open-mmlab/mmclassification). I would recommend that you refer to their documentation to adapt the code for the replication or your specific use case.

Thanks a lot for your kind reply! I will try to use the code!
I have another question. Which repo does you use for LDM? Have you made any changes to the LDM code? How is category control implemented?

The LDM official repository (https://github.com/CompVis/latent-diffusion) provides configurations for image generation using class labels. But for the sake of implementation convenience, I chose to develop my own LDM code following the tutorial at https://nn.labml.ai/diffusion/index.html.
Given the constraints of GPU memory and dataset size, I made adjustments to LDM implementation by reducing the channels in both the autoencoder and the denoising U-Net. Both KL- and VQ-reg autoencoders with f=8 are trained and tested on our dataset. We found that the KL-reg autoencoder performed slightly better, and thus used it in LDM implementation.
For category control, I adopted a similar approach to CellGAN, which first produces class embeddings from one-hot class labels using an MLP and then controls the denoising U-Net via cross-attention layers.


Optimize C ABI boundaries

The Go binding calls a C ABI binding, which calls the Qt C++ functions. Overall, it's somewhat efficient.
But to comply with the common C ABI, there are some places where data types must be converted, or moved onto the heap. This could be optimized in some cases.
For example:

bypass malloc/free for zero-length strings and arrays
When returning a QString, have C++ fill in a Go-provided buffer, instead of copying the data twice

Pass struct miqt_array by value instead of pointer (saves 1x malloc)
Pass struct miqt_string by value instead of pointer (still one malloc, but simpler)


Entity/ValueObject: receive Props Instead of Identifier

I've noticed that I often write a entity like following:
export class HatebuIdentifier extends Identifier<string> {}
export interface HatebuProps {
    readonly id: HatebuIdentifier;
    readonly bookmark: Bookmark;
}

export class Hatebu extends Entity<HatebuIdentifier> implements HatebuProps {
    readonly bookmark: Bookmark;

    constructor(args: HatebuProps) {
        super(args.id);
        this.bookmark = args.bookmark;
    }

    get name() {
        return this.id.toValue();
    }

    addBookmarkItems(bookmarkItems: BookmarkItem[]) {
        return new Hatebu({
            ...(this as HatebuProps),
            bookmark: this.bookmark.addBookmarkItems(bookmarkItems)
        });
    }

    updateBookmarkItems(bookmarkItems: BookmarkItem[]) {
        return new Hatebu({
            ...(this as HatebuProps),
            bookmark: this.bookmark.updateBookmarkItems(bookmarkItems)
        });
    }
}

This Hatebu entity has id and Props type.
We can use Props type insteadof Id.
Becaseue, Alwasys Props includes id.
Props

We can realize mixin meaningful #5
Copyable insterface just use Props type

It is similar with React https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L287-L288

Cons

id is fixed name
Always arguments is object

https://github.com/azu/hatebupwa/pull/11
I've tried to apply this pattern.
There are props and cons.
Props

Props merging is easy

         return new AppSession({
-            ...(this as AppSessionProps),
+            ...this.props
+            hatebuId: hatebu.props.id
         });

Cons

Accessing to nest entity props is hard.

This is ugly. :(
-        const lastUpdatedDate = hatebu.bookmark.lastUpdated;
+        const lastUpdatedDate = hatebu.props.bookmark.props.lastUpdated;

x.props.y.props.z is unly.
But, we can avoid this by assign props to properties manually.
Compare 0.4 between 0.5 is very similar code.
import { Entity, Identifier, ValueObject } from "../src";
import * as assert from "assert";

class ShoppingCartItemIdentifier extends Identifier<string> {
}

interface ShoppingCartItemProps {
    id: ShoppingCartItemIdentifier;
    name: string;
    price: number;
}

class ShoppingCartItem extends Entity<ShoppingCartItemProps> implements ShoppingCartItemProps {
    id: ShoppingCartItemIdentifier;
    name: string;
    price: number;

    constructor(props: ShoppingCartItemProps) {
        super(props);
        this.id = props.id;
        this.name = props.name;
        this.price = props.price;
    }
}

interface ShoppingCartItemCollectionProps {
    items: ShoppingCartItem[];
}

class ShoppingCartItemCollection extends ValueObject<ShoppingCartItemCollectionProps> implements ShoppingCartItemCollectionProps {
    items: ShoppingCartItem[];

    constructor(props: ShoppingCartItemCollectionProps) {
        super(props);
        this.items = props.items
    }
}

class ShoppingIdentifier extends Identifier<string> {
}

interface ShoppingCartProps {
    id: ShoppingIdentifier;
    itemsCollection: ShoppingCartItemCollection;
}

class ShoppingCart extends Entity<ShoppingCartProps> implements ShoppingCartProps {
    id: ShoppingIdentifier;
    itemsCollection: ShoppingCartItemCollection;

    constructor(props: ShoppingCartProps) {
        super(props);
        this.id = props.id;
        this.itemsCollection = props.itemsCollection;
    }
}

describe("ShoppingCart", () => {
    it("should have own property and props", () => {
        const shoppingCart = new ShoppingCart({
            id: new ShoppingCartItemIdentifier("shopping-cart"),
            itemsCollection: new ShoppingCartItemCollection({
                items: []
            })
        });
        assert.ok(Array.isArray(shoppingCart.itemsCollection.items));
        assert.strictEqual(shoppingCart.itemsCollection.items, shoppingCart.props.itemsCollection.props.items)
    });
});

Add docs

Nesting props is ugly

TypeScript support declaretion merging

Declaration Merging · TypeScript
https://github.com/Microsoft/TypeScript/issues/16737#issuecomment-367045127

interface UserData {
    name: string;
    birthday: Date;
    regdate: Date;
    social: string;
    passwordHash: string;
    isAdmin: boolean;
}
interface User extends UserData {}
class User {
    constructor(data: UserData) {
        Object.assign(this, data);
    }

    deservesCake() {
        return this.birthday.getDate() == new Date().getDate() || this.isAdmin;
    }
}

This approach has a limitation.
TS2564 Strict Property Initialization Checks does not work.


Feature 1391 grid_diag

I looked over the changes and I didn't see anything glaringly wrong. I will wait to complete my review until the changes described in an email between me, John, and Michelle have been implemented (or not if that is what we decide). Some of these changes may require modifications to the METplus wrapper for GridDiag to remain in line.


Thread locals

ThreadLocal seems to be somewhat slow. Try to avoid it, or at least cache the result of get().

Moved to #11.


Status argument was missing from callback

Eventually you can try to send a patch to:
https://github.com/abandonware/bleno

Please confirm this issue is resolved with @abandonware version
Relate-to: https://github.com/abandonware/bleno/issues/17


add triggers video

Add the tutorial video by Rob Reid to the triggers doc.

@florence-crl, this can wait until Monday!


Feature: Introductory text for autopages, etc.

This implements an "intro" feature as discussed in #58.
Given the following in _config.yml:
pagination:
  intro: "intro.md"

creating a file with the name "intro.md" (or ending in "-intro.md") would insert that file as the introductory text for a collection, posts, etc. according to its location and/or filters (categories, tags, etc.). The file would be fully rendered (Liquid and Markdown) where the following is placed:
{{ paginator.intro }}
Using this could be as simple as dropping an "intro.md" into a collections folder, but the general rule is, as long as you can get an entry to appear uniquely in a pagination page/autopage, you can use it as an intro simply by renaming it and removing its layout:, if necessary.
For example, examples/03-tags/_romance could have a file histrom-intro.md as follows:
---
tags: historical, fiction
---

This is the intro for **Historical Romance** books.

and it will be rendered like so after adding {{ paginator.intro }} to _layouts/autopage_collection.html:

This also works for posts. Adding {{ paginator.intro }} to  examples/01-typicalblog/_layouts/home.html and creating _posts/0000-00-00-main-intro.md as follows:
---
date: 2018-01-29 22:59:19 +0800
---

This is the introduction to the blog.

would render as follows:

For what it's worth I do something similar with pure Liquid and a Jekyll data file to add introductory text to various tag pages generated with the Autopage module.
In the data file I add a set of key/value pairs with descriptive text.
# _data/taxonomy.yml

tag1:
  description: "This describes tag 1."

tag2:
  description: "This describes **tag 2**."

Then in my layout I use something like this to pull in the text (if available). If not it fallsback to some default text.
{% assign taxonomy = page.autopages.display_name | downcase | slugify %}
{% assign tag = site.data.taxonomy[taxonomy] %}

{% if tag.description %}
  {{ tag.description | markdownify }}
{% else %}

An archive of posts tagged {{ page.autopages.display_name }}.

{% endif %}

@mmistakes I also do something similar, for plaintext introductions. This patch still has some value if one needs Liquid and Markdown in the intro text.


Updated DSFI AFF definition (abapGit#6946)

As part of the development of the object handler for DSFI (abapGit#6949), the AFF for the DSFI was updated.

@schneidermic0 what is the recommendation for the compatibility check? Should I generate a V2 interface?


Switching from CircleCI to GitHub Actions?

@shiffman @vimkat @violetcraze What are your thoughts?

Since were hosting through GitHub it might make sense. I think the main advantage over circleci is a more automated workflow but we don't have to switch over the ci to take advantage of that. I know the coding train did some sponsored videos with circleci a while ago. @shiffman does that mean we've agreed you using their services? We could always add GitHub actions for a couple weeks and see if it makes more sense or just try out some of their features to start.

I agree with @violetcraze! Let's try out GitHub Actions to start with and if we don't encounter any drastic issues, we could switch. 👍🏻

There is no formal commitment to use CircleCI, happy to try GitHub actions!

did #1868 fix this or is there more do?

@violetcraze Should we change the required checks to GitHub Actions?

Yeah they seem to be working well I say go for it.

https://github.community/t5/GitHub-Actions/Help-Weird-behavior-in-branch-protection-rule/m-p/37298#M2886

Resolved.


Git command should include --recurse-submodules

If you don't include --recurse-submodules then the module glfw is not grabbed so it should be added to the git clone command in the readme, i.e. git clone --recurse-submodules https://github.com/BoyOrigin/glfw-wayland.git.

Please update the README.MD with this as it has solved all of my issues with glfw-wayland installation

I was/am in way over my head here. I only installed Linux 3 days ago so I can get (much) better performance playing modded MC.
This saved me untold hours of frustration. At least, untill the next thing I'm bound to trip over.
Thank you both, and have fun playing MC!