proposal: cmd/cgo: add #cgo nocheckpointer annotation

design
#cgo nocheckpointer setheader
setheader(void *key, void *value)

After adding the nocheckpointer annotation for a C function, cgo compiler will skip generating cgocheckpointer for all of the arguments of the C function.
That means the checkpointer always will be disabled, even cgocheck=1 in the GODEBUG env.
why disable checkpointer
Background: we had built the Envoy Golang extension, that supports people using pure Golang to implement plugins to extend Envoy without recompile the Envoy binary, i.e. authorization plugins, waf plugins and more.
In the Envoy Golang extension, we have such a case:
func (c *httpCApiImpl) HttpSendLocalReply(r unsafe.Pointer, response_code int, body_text string, headers map[string]string, grpc_status int64, details string) {
	hLen := len(headers)
	strs := make([]string, 0, hLen)
	for k, v := range headers {
		strs = append(strs, k, v)
	}
	res := C.envoyGoFilterHttpSendLocalReply(r, C.int(response_code), unsafe.Pointer(&body_text), unsafe.Pointer(&strs), C.longlong(grpc_status), unsafe.Pointer(&details))
	handleCApiStatus(res)
}

We are passing a header map through a []string to C, which will cause checkpointer panic.
But, if we don't passing []string, we do need another memory allocation & copy for those strings, in Go side, before passing to C.
Now, we require people set GODEBUG=cgocheck=0 to disbale cgocheck while starting Envoy.
why not using runtime.Pinner
with runtime.Pinner, the code will be longer, 7 lines added:
func (c *httpCApiImpl) HttpSendLocalReply(r unsafe.Pointer, response_code int, body_text string, headers map[string]string, grpc_status int64, details string) {
	var pin runtime.Pinner
	defer pin.Unpin()
	hLen := len(headers)
	strs := make([]string, 0, hLen)
	for k, v := range headers {
		strs = append(strs, k, v)
		pin.Pin(unsafe.StringData(k))
		pin.Pin(unsafe.StringData(v))
	}
	pin.Pin(unsafe.SliceData(strs))
	pin.Pin(unsafe.StringData(body_text))
	pin.Pin(unsafe.StringData(details))
	res := C.envoyGoFilterHttpSendLocalReply(r, C.int(response_code), unsafe.Pointer(&body_text), unsafe.Pointer(&strs), C.longlong(grpc_status), unsafe.Pointer(&details))
	handleCApiStatus(res)
}

and worse, when a string (key or value) is not a Go pointer, i.e. a constant string, Content-Type, Pin will panic:
panic: runtime error: runtime.Pinner.Pin: argument is not a Go pointer
why not use GODEBUG=cgocheck=0
Yep, it does work fine.
But it requires people to set it, while people may forget it, i.e. https://github.com/envoyproxy/envoy/issues/25178
And it takes effect globally, as an SDK provider, we hope people do not need to care about it, and people can still enable cgocheck in other their-self codes.
summary

It is simple to use, no need many code additions compared to runtime.Pinner
It takes effect at the C function level, with scope limited
Also, it is simple to implement, similar to the noescape and nocallback annotations.

Any suggestions/feedback are welcome, thank you very much!

The whole point of cgocheck and runtime.Pinner to to ensure your C code interacts properly with the Go garbage collector. Disabling or circumventing this check doesn't address the problem, it just means you are introducing undefined behavior that could cause the application to crash or misbehave. Definitely I don't think you should be recommending people use GODEBUG=cgocheck=0.
Looking through the source code, it appears Envoy incorrectly relies on the exact layout of slices and strings even though the Go documentation states this is not guaranteed.
Making matters worse, the return value of unsafe.StringData cannot be passed to Pinner.Pin which means there currently does not appear to be a way to safely avoid reallocating all the strings. It is unclear whether this was intentional or an oversight.
(By the way, your original code has a bug. You initialize strs with a capacity of len(headers) but you are adding two items per map entry so it should be 2*len(headers).)

@rittneje Thanks for your reply.

it appears Envoy incorrectly relies on the exact layout of slices and strings even though the Go documentation states this is not guaranteed

Actually, cgo will generate headers for C users:
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
typedef _GoString_ GoString;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;

yep, we rely on the exact layout, but we don't think this layout will change frequently.
We are aware of this risk and are willing to bear it, and we also do not expect any guarantees from Golang.

The whole point of cgocheck and runtime.Pinner to to ensure your C code interacts properly with the Go garbage collector.

Yep, we know what cgocheck protects.
and we followed the Go garbage collector rules at the golang SDK level, upper level users do not need to care about it.
For Golang, it just provides another way to disable cgocheck at the C function-level scope, just like it provides GODEBUG=cgocheck=0 at the global level.
No new risks are exposed.
For us, Golang users, we hope to use the low-level capability for better performance(avoid memory copying), just like GODEBUG=cgocheck=0 does.
We know Golang wishes to protect bad code from users, and cgocheck is a really nice protection for users, but we just hope there is another way to use the low-level capability at a limited & smaller scope.

Making matters worse, the return value of unsafe.StringData cannot be passed to Pinner.Pin which means there currently does not appear to be a way to safely avoid reallocating all the strings. It is unclear whether this was intentional or an oversight.

Yep, we have to do memory copying without disabling cgocheck then, that's what we want to avoid.
We highly care about performance, it is our intention.

(By the way, your original code has a bug. You initialize strs with a capacity of len(headers) but you are adding two items per map entry so it should be 2*len(headers).)

Oh, thanks, it is a bug, it makes the slice grow again, we'll fix it soon.

and we followed the Go garbage collector rules at the golang SDK level, upper level users do not need to care about it.

No, you didn't. The garbage collector has no idea you passed unpinned pointer to C. Hence the error from cgocheck. The garbage collector could very well free that memory while your C code is using it. Once that occurs, all bets are off.

The garbage collector could very well free that memory while your C code is using it.

That depends.

The garbage collector won't free the arguments(i.e. strs and all of the strings in the string slice), before the C function returns.
After the C function returns, the C code should not use the arguments (strs and its strings) anymore, which will make use after free.

But these C functions only use the Go pointers before they return, since we wrote these C functions and we know the details of the C code.

For runtime.Pinner, it's more powerful, people could use those pinned Go pointers in C, before Unpin in Go, even after the C function returns.
But we don't need this powerful capability.

The garbage collector is also allowed to move values from one memory location to another, which would have equally bad results.
The short of it is, your code violates the rules of cgo and thus is broken. And adding your proposed API seems to serve no purpose other than to allow library authors to hide their broken implementations from consumers. (It would be akin to asking the runtime not to do bounds checking on arrays.)

To agree with @rittneje in the clearest way possible: If cgocheck=1 or cgocheck=2 complain, then your code is incorrect and violates the cgo pointer passing rules. cgocheck=0 doesn't exist to avoid warnings, but to increase performance. Setting cgocheck=0 shouldn't be done lightly, and most certainly shouldn't be done at the code's behest.

The garbage collector is also allowed to move values from one memory location to another

Yes to other languages' GC, i.e. Java.
But, nope to Golang's GC, at least in the current implementation.
The only case I know that golang may move values is goroutine stack grow or shrink(and only for the stack values).
And goroutine stack grow or shrink is disabled while running in C.
The key pointer is:

Golang does allow passing Go pointers to C.
cgocheck does not allow a Go pointer that contains Go pointers(when no Pin)

Please see this example:
type obj struct {
        a int
}
o := new(obj)
C.pointer(unsafe.Pointer(o)) // this is valid, since no pointers in obj.

str := "foo:" + strconv.Itoa(10)
C.pointer(unsafe.Pointer(&str)) // this is invalid, since str contains a pointer.

So, passing Go pointers to C is safe.
Then, what does cgocheck protect?
 Golang does not want to see those pointers modified by bad C code unexpectedly, that is what cgocheck protects.

If cgocheck=1 or cgocheck=2 complain, then your code is incorrect

@dominikh Nope, I do not think so. please see the above details.

@doujiang24 Again, you are NOT following the rules of cgo. You clearly decided to ignore them and instead go by the current implementation, which is irrelevant.
Instead of this proposal, which amounts to "let my library silently ignore the rules of cgo", you should instead focus on your actual problem - the inability to efficiently pass a list of strings from Go to C.

you are NOT following the rules of cgo.

Yep, let's check the doc, there is the rule of cgo:
Go code may pass a Go pointer to C provided the memory to which it points does not contain any Go pointers to memory that is unpinned.

There is also an option to disable this check:
These checks may be disabled entirely using GODEBUG=cgocheck=0.

Why need the rule of cgo?
 Because of this, there are restrictions on passing pointers between Go and C.

So, the key pointer is: follow the rules of Go GC. This is the fundamental.
Also, as we always said: "we followed the Go garbage collector rules", not the rules of cgo.
Rules of cgo should be reasonable, and they can be changed when there is a more reasonable way.
This is the previous rule that without runtime.Pinner
Go code may pass a Go pointer to C provided the Go memory to which it points does not contain any Go pointers.

Not following the current rules of cgo, the code must be a bug then?
I don't think so.
I think the cgocheck rules are protecting against bad things happening, due to bad C code, since the C code is not trusted on the Golang side.
But if people trusted their own C code, could golang provide a better way(not a global env) to skip the cgocheck rule?
I do think so, that is the proposal.
If you are saying this is the rule, we are done, okay, I got it.

you should instead focus on your actual problem - the inability to efficiently pass a list of strings from Go to C.

Yep, totally agree.
We sincerely appreciate your help, and if you have any suggestions.

Also, as we always said: "we followed the Go garbage collector rules", not the rules of cgo.

This is the heart of the problem. The rules of cgo are the garbage collector rules. That it happens to work today is not relevant. This is no different than writing code that relies on some internal implementation detail of the compiler instead of the actual language spec.

I think the cgocheck rules are protecting against bad things happening, due to bad C code, since the C code is not trusted on the Golang side.

That is not what they are protecting. It has always been legal to pass a top-level pointer from Go to C, provided that C does not retain the pointer after the function call. cgocheck does not and cannot attempt to protect against the C code breaking that rule. In other words, cgocheck has nothing to do with trusting the C code, that's on the developer.
What they are protecting is misuse in which you are passing pointers from Go to C in a way that is not visible to the garbage collector. Namely, you cannot pass un-pinned non-top-level pointers from Go to C. Even if it happens to work today, such misuse is subject to breakages in future Go releases.

We sincerely appreciate your help, and if you have any suggestions.

It is as I stated above. You essentially need to be able to pass the return value of unsafe.StringData to runtime.Pinner.Pin. I don't know why this is currently disallowed.

The rules of cgo are the garbage collector rules.

Nope, I don't think so. As we said above: "Rules of cgo should be reasonable, and they can be changed when there is a more reasonable way."
If you insist on it, okay, I got it.

What they are protecting is misuse in which you are passing pointers from Go to C in a way that is not visible to the garbage collector.

Could you please explain it? Why does GC need it visible?
Actually, Go knows all pointers that pass from Go to C, that is why cgocheck can work.
That's why I said, it just protects against untrusted bad C code.

Even if it happens to work today, such misuse is subject to breakages in future Go releases.

Golang already exposes the pointer to users, and even allows passing pointers to C, so, I don't think Go GC can change to move values in the feature releases, without breaking the backward compatibility.
When feature releases decide to move values in GC, it will be a new feature without backward compatibility, "nocheckpointer" could also be broken then.

You essentially need to be able to pass the return value of unsafe.StringData to runtime.Pinner.Pin. I don't know why this is currently disallowed.

Thank you. let me explain it a bit.
It protects people from wrong usage, there is a check in Pin: the pointer should be allocated by GC, in an internal span of GC.
While the string is a const string, the string data is not allocated by GC, from .rodata instead, so the check in the Pin panic.
Actually, we could create a CL to shut down this check, it should work then.
But, I don't think runtime.Pinner is better than nocheckpointer, since runtime.Pinner is a more powerful API that people could use Go pointers in C code across multiple C API calls, while we are just using Go pointers in a single C API call.
We do think nocheckpointer could be a better performance in our case.
Okay, we can say that we have investigated the cgo for a long time, and we have made some improvements for cgo in the past year.
This proposal also came out after a deep thought and investigation.
I think the base rule that we discuss should be: what is good for Golang, and which could make Golang better.
To Golang team:

This new annotation does not expose new risks to users, just provides a limited scope way that similar to GODEBUG=cgocheck=0.
Disabling cgocheck could be safe if people do trust the C code, and will bear the risk in the C code.

IIUC the rule that a nested pointer cannot be passed into C is because as a managed language, pointer load/store may require barriers, which means that they can only be performed by the Go compiled code, and passing nested indirection to C may violate this requirement.

Golang already exposes the pointer to users, and even allows passing pointers to C, so, I don't think Go GC can change to move values in the feature releases, without breaking the backward compatibility.

We can simply pin the referents of the pointers passed to cgo.

I think the cgocheck rules are protecting against bad things happening, due to bad C code, since the C code is not trusted on the Golang side.

This is simply not true, of course the Go code has to trust the C code to call it and expect a sensible result. The check is to protect against developer not conforming to the rules of cgo and violating the gc's assumption regarding the memory state of the program. Also, I see it really backward to annotate the trustfulness of "bad C code" from C, at least it should be declare on the Go side instead.

Nope, I don't think so. As we said above: "Rules of cgo should be reasonable, and they can be changed when there is a more reasonable way."

Just because you don't like the rules does not mean you get to ignore them without consequence.
To be honest, I'm tired of having to post the exact same responses. I won't be responding anymore.

pointer load/store may require barriers, which means that they can only be performed by the Go compiled code

I do think reading the Go pointers in C code is safe, before it's freed by GC.
But writing the Go pointers in C code is unsafe for Go GC, since the GC may scan such pointers during GC mark state.

of course the Go code has to trust the C code to call it and expect a sensible result

Sorry, the "bad code" that I mentioned above is only the C code that does not follow the Go GC rules, i.e. change the values of Go pointers.

at least it should be declared on the Go side instead.

Yep, I do think it's declared on the Go side, it's declared in the comments before import "C", and the cgo compiler will parse the annotation.

The background of the cgo pointer passing rules is https://go.googlesource.com/proposal/+/refs/heads/master/design/12416-cgo-pointers.md and #12416.
We are not going to add a new annotation for the purpose of making it easier to break the rules.  The rules are there for a reason.  Closing as infeasible.


Remove unnecessary parameter

Signed-off-by: Prithvi Raj<EMAIL_ADDRESS>Which problem is this PR solving?

Reduce complexity by removing unnecessary parameter

Short description of the changes

Remove dependency-store-data-frequency

I also verified that the jaegertracing/documentation, openshift, kubernetes doesn't refer to this parameter

Coverage remained the same at 100.0% when pulling 3eb9c63f5538145aa747aef84dee8350428dc2c9 on cleanup-dependency-reader into b5ade19433d8d87b3803a10cd10ca490818136be on master.

surprising. Is it somehow hardcoded elsewhere? I seem to recall there was a need for this var.

@yurishkuro I wasn't able to locate any uses


Agenda branding: multi-date event with different hours not shown well

Eg. event "Kerstavond" in Gemeente Laarne.

has 2 different dates
has 2 different start and end times

In the event list, only the first date is shown
In the detail view, only the start hours are shown

Hi,
Can we have a ETC of this issue so we can update.
Else If the issue is resolved please put the state_resolved label and close the issue.
Thanks!


Five small changes to resolve memory leaks [bugfix/memcheck]

I'm glad I volunteered to track these down because it seems I was responsible for 60% of the problems.

I should also mention that I could not confirm all of the memcheck errors from the nightly tests on my desktop machine.  Consequently, I cannot be sure that all of the issues have been addressed.  If other issues persist I'll be happy to track them down.

All of these changes look good to me. At some point it might be worth going through some of the examples and cleaning up the use of pointers where they are not needed (like you did in ex9), but that can be done later.
I haven't gotten a chance to run the tests myself. Once I do and confirm no leaks I'll comment back here.

No, ex9p was fine but I did double check that.

@mlstowell,
The deletion of faces_tbl in ParMesh::UniformRefinement3D() was already addressed in #808.

Thanks, @v-dobrev ,  I noticed that but I didn't see that it was already in-next.  I can back out that change to avoid meaningless merge conflicts.

@mlstowell, I think you created another branch called bugfix-memcheck (it currently points one commit behind bugfix/memcheck) -- do you need that?

@v-dobrev , no I meant to delete that.  Thanks for catching that.

I'm testing this, and in addition to the memory leak addressed in #808 (mesh.cpp:4641), I see a leak at pncmesh.cpp:932, according to valgrind. @jakubcerveny, do you have any suggestion how to fix that?

@pazner, were you able to test this (if so, can you approve)?

Why did you merge this? It has not gone through the weekend regression tests ...

Why did you merge this? It has not gone through the weekend regression tests ...

It is an important bugfix, which seems to resolve the issue... I don't think we should wait a week for bug fixes


Jira issue link

https://github.com/openshift-assisted/assisted-installer-ui/blob/322630e1276b254cfc10619d749f98cd5e46bf45/libs/ui-lib/lib/common/config/docs_links.ts#L93C1-L93C108
If this link is for the Assisted Installer guide, I recommend using the AI SaaS feedback link: https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12341520&summary=Documentation+feedback&issuetype=1&description=Details:

Documentation+URL:

&priority=10200&labels=hcidocs-feedback&components=12393573
If the link is to report a non-docs issue, feel free to close this issue.

The link is to report problems with cluster installation.


[IDEA] Remove only specific components

Feature description:
Be able to uninstall component by component. For example uninstall only outlook.
Also : be able to uninstall "Outlook" and not "Outlook (new)"

Just uncheck Outlook on apps panel and start deploy.

can I use the tool to remove 1 app ?

can I use the tool to remove 1 app ?

https://otp.landian.vip/docs/deploy/modify.html#modify-applications


Remove version: WinSCP.WinSCP version 5.19.3

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

Close with reason: URL works;


Help initial run in mac

I am trying to get the app running in mac, I had to make couple changes on CA_TAG and FABRIC_TAG to point recent tags with that i can now run ./build-mac.sh. It creates all the images however getting stuck here. Any help/direction will be highly appreciated.

<EMAIL_ADDRESS>serve /app
cross-env NODE_ENV=production&&node ./bin/server

Wallet path: /app/www/blockchain/wallet
/app/app/static/js
Server running on port: 3000
Connecting and Registering Block Events
Chaincode is not installed, attempting installation...
Base container image present.
Successfully installed chaincode on the default channel.
Fatal error instantiating chaincode on some(all) peers!
Error: Proposal rejected by some (all) of the peers: Error: error in simulation: could not launch chaincode bcins:v2: error building chaincode: error building image: docker build failed: docker image build failed: docker build failed: Error returned from build: 1 "/chaincode/input/src/bcins/data.go:8:2: cannot find package "github.com/hyperledger/fabric/core/chaincode/shim" in any of:
/usr/local/go/src/github.com/hyperledger/fabric/core/chaincode/shim (from $GOROOT)
/chaincode/input/src/github.com/hyperledger/fabric/core/chaincode/shim (from $GOPATH)
/go/src/github.com/hyperledger/fabric/core/chaincode/shim
/chaincode/input/src/bcins/invoke_insurance.go:11:2: cannot find package "github.com/hyperledger/fabric/protos/peer" in any of:
/usr/local/go/src/github.com/hyperledger/fabric/protos/peer (from $GOROOT)
/chaincode/input/src/github.com/hyperledger/fabric/protos/peer (from $GOPATH)
/go/src/github.com/hyperledger/fabric/protos/peer
"
at /app/www/blockchain/utils.js:252:15
at Generator.next ()
at step (/app/bin/blockchain/utils.js:107:191)
at /app/bin/blockchain/utils.js:107:361
at
npm ERR! code ELIFECYCLE
npm ERR! errno 255
npm ERR<EMAIL_ADDRESS>serve: cross-env NODE_ENV=production&&node ./bin/server
npm ERR! Exit status 255
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>serve script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

i too on ubuntu :(


Should db.sql.table include db.name?

Currently db.sql.table is defined as:

The name of the primary table that the operation is acting upon, including the database name (if applicable). [1]

I'm not sure why it includes db.name since we have a separate attribute specifically for that, and could parse the db.name out from the full db.sql.table expression.

I agree it doesn't make sense to duplicate the database name in both the db.name and db.sql.table attributes.
Many databases will have their own term for "table", in Cosmos DB it's called "container". Does it make sense to use a general term in the semantic convention or let each database have their own native terminology?

@trask You introduced this in https://github.com/open-telemetry/opentelemetry-specification/pull/1973/files#diff-38d5c918b32cb78e2489cc98d2157cbe5c3306fcbfe4aa6235d25f3468305eeaR373, if you are not sure why yourself, then it seems to have been a mistake when attempting to translate the cassandra-specific note about the keyspace. I agree that including the DB name does not make sense, probably this was unintentional?

This was changed in https://github.com/open-telemetry/opentelemetry-specification/pull/1973/files#diff-38d5c918b32cb78e2489cc98d2157cbe5c3306fcbfe4aa6235d25f3468305eeaR373
It used to say schema name, which imo makes sense for SQL as it would then be equivalent to saying that we want to have the fully qualified table name. But maybe we should just say that, i.e. instead of schema/db name, it should be the fully qualified table name?

Resolved by #870 where db.sql.table was replaced by db.collection.name, which

SHOULD match the value provided in the query and may be qualified with the schema and database name


Add some elasticsearch 1.x compatibility considerations. Fixes #11

Account for differences in es versions:

.raw in es < v5 vs .keyword in >= v5 for event lookups (also only do this conditionally based on the index name)
in es v1, exists had to be on a filter, but the filter concept was deprecated in es v2

When I try running this I get:
$ python cloudtracker.py --account demo --list users --start 2018-02-01
Traceback (most recent call last):
  File "cloudtracker.py", line 60, in <module>
    main()
  File "cloudtracker.py", line 57, in main
    run(args, config, args.start, args.end)
  File "...cloudtracker/cloudtracker/__init__.py", line 391, in run
    performed_actors = datasource.get_performed_users()
  File "...cloudtracker/cloudtracker/datasources/es.py", line 83, in get_performed_users
    response = search.execute()
  File "...cloudtracker/venv/lib/python2.7/site-packages/elasticsearch_dsl/search.py", line 679, in execute
    **self._params
  File "...cloudtracker/venv/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 76, in _wrapped
    return func(*args, params=params, **kwargs)
  File "...cloudtracker/venv/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 636, in search
    doc_type, '_search'), params=params, body=body)
  File "...cloudtracker/venv/lib/python2.7/site-packages/elasticsearch/transport.py", line 314, in perform_request
    status, headers_response, data = connection.perform_request(method, url, params, body, headers=headers, ignore=ignore, timeout=timeout)
  File "...cloudtracker/venv/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 163, in perform_request
    self._raise_error(response.status, raw_data)
  File "...cloudtracker/venv/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 125, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: TransportError(400, u'search_phase_execution_exception', u'Fielddata is disabled on text fields by default. Set fielddata=true on [userIdentity.userName] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.')

This is due to not having the .keyword anymore.  I'm guessing things worked with that .keyword due to how I setup the mapping here: https://github.com/duo-labs/cloudtracker/blob/master/docs/elasticsearch.md
I don't know how this should be resolved, as your link in the comment makes sense that other environments might not have this, but I don't know how to make the code work for my environment and still incorporate your changes.

@0xdabbad00 that's a good point. The actual logic should be more complex than just checking the index name. I suppose that was a naive solution that I came up with. I'm also not sure how best to move forward, other than potentially exposing this as another parameter in config.yaml and/or dropping the if index.startswith('logstash-') check

I think dropping the if is the solution that works for both of us, and I haven't heard complaints from anyone else, so I merged your change with a commit on it to make that change.


Add metrics with, at least, success rate

Hi! We're interested in onboarding Pod Identity for our clusters. As we're planning out our installation, we feel a lack of observability into the agent, which may effect our ability to operate the system at scale. If I'm reading the code right, it appears that the only signals we can get, as consumers of the agent, are largely the /healthz and /readyz endpoints (both of which lead to the same probe).
Given the criticality of the system as we onboard it, it would be valuable for us to get one further level of detail. I'm thinking in the best case would be the ability to get success rate per agent running (since, if I understand the code, it seems like it's largely a HTTP service).
One thing we could implement would be a simple Prometheus/OpenMetrics endpoint which could expose just simple 200/300/400s (per the default go http client), and that would give us the lion's share of what we need out of the observability story. It could go deeper into other facets, but... baby steps ;). If we had some confidence that the base metrics could be integrated upstream, it's possible we could take on this work to implement it.
Alternatively, these metrics could go to CloudWatch or something, but that's more of a new area for me so don't know what that'd look like.

One open question that I don't have the opportunity to look up right this moment, but may need to be solved, is if the monitoring endpoints can be exposed to a wide enough interface/port to actually be monitorable by Prometheuses

One open question that I don't have the opportunity to look up right this moment, but may need to be solved, is if the monitoring endpoints can be exposed to a wide enough interface/port to actually be monitorable by Prometheuses

We should be able to scrape metrics from this agent through APIServer -> kubelet -> pod identity agent.

Excellent, thank you for the response. We'll keep this ticket updated as we approach this. It's looking like it'll be around Sept-Oct timeframe that we'll be able to pick up the work

Hi :)
I'm also missing this one :) I was wondering if exposing prometheus endpoint is ok for you? I prepared a wip here :) If that's direction is good for you I could implement the rest of logic :)


Add WandB group name to training runs

As we run multiple iterations of training for each binary classifier, we will want to compare the different runs while maintaining organization between them. I think we should associate each run with a group that shares a common DNN architecture, hyperparameters and training set using e.g. wandb.init(group="experiment_1", job_type="eval") (https://docs.wandb.ai/guides/track/advanced/grouping).

Good idea

@bfhealy - is there a default group and job_type we want to use when not specified?

@guiga004 Perhaps the default group could be 'experiment' and job_type 'train'?


FED-EXT:  Tujibebe review + cleanup

Besides the slashes, I will create a new PR to address those.


Scroll hold bugg.

Scroll and hold will trigger the new feature: add/remove/copy ingredienc.
This doesn't happen to read line ingredients when fast scroll.
https://github.com/MOIMOB/drinkable/assets/36892515/2273351a-29c7-418e-b87d-27b676306e4b
https://github.com/MOIMOB/drinkable/issues/396#issuecomment-1783164519

I see the issue. I will increase the long press timing for now until I have a better solution.

But it don't happen for read line.
or make dubble tapp?

How do you think the current solution is working? Now it is a really long press before the dialog opens

After testing it it whud me nice to have feead back when it starts to registrer.
I have had some wrong placement and was wating for the dialog but it never happend.
is dubble tapp pluss hold a possibillity or add a wibration 250 ms after enisiating it.
the vibration is alreddy existing when loand hold on the drink picture in all coctails.
(( loang hold dont work if preformed emidietly after opning a drink se video))
https://github.com/MOIMOB/drinkable/assets/36892515/c14bd76c-d7cb-4f78-83e8-18cc27b894f8


upgrade hessian2 to v1.9.4

What this PR does:
upgrade hessian2 to v1.9.4
Which issue(s) this PR fixes:
see https://github.com/apache/dubbo-go-hessian2/releases/tag/v1.9.4
Does this PR introduce a user-facing change?:
- upgrade hessian2 to v1.9.4

Codecov Report

Merging #285 (027b048) into develop (74afc4e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #285   +/-   ##
========================================
  Coverage    33.13%   33.13%
========================================
  Files           62       62
  Lines         3323     3323
========================================
  Hits          1101     1101
  Misses        2108     2108
  Partials       114      114

Continue to review full report at Codecov.

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


remove unsupported OSes

Remove unsupported OSes. We only support and test with Centos9 and Ubuntu 20.04 and 22.04.
Main PR: https://github.com/metal3-io/metal3-dev-env/pull/1164
/hold

/test-ubuntu-integration-main
/test-centos-integration-e2e-main

As discussed in community meeting March 8th 2023, Centos8 stream is EOL in May2024, so it is still maintained, and will not be removed until that time.
Ubuntu 18 is also not EOL for a month at least, so not removing that one either.
And as agreed with RedHat developers, RHEL is expected to be identical and working with the CentOS testing, and they are using it, so it will not be removed either. I will merge the other PR that will fix the support for the older OSes instead, and will improve documentation on the supported OS status.
/close


Issue With Activity Lag

Hey man! Thanks for working on this project. I was planning on doing something very similar but luckily found your project first!
I did have an issue when trying to use it. I will describe the steps I took below and I think the issue will be clear.

Installed the plugin.
Synced my existing activities.
Noticed some of my recent runs were not present due to me not having uploaded them to Strava.
Upload the runs from the last 3 days to Strava.
Attempt to re-sync the plugin.
Fail to get new activities.

I think the issue is the timestamp for the first sync got stored and since all of the recent activities took place before the timestamp, they are ignored. I do not know if there is a good solution to this because it would really involve going back through and checking every entry currently in the library to see if any are missing. Just thought it was something I should highlight.

Hi @derekjohnsonva,
Thanks for trying it out and highlighting this issue! You are totally right, I store the last synced timestamp, that I am now thinking of exposing in settings instead; so that the users can change it for situations like yours. I will add this feature to my agenda.
In the meantime, first try disabling and then enabling the plugin. That should sync your newer activities. Please let me know if that worked.


Http control Ufo

Dear is see you have hacked the ufo rgbw controller..
Great job!!!!
I wil try to use this controller for my Home automation, Domoticz.
Is there perhaps a option that i can use your way with Http commands?
Domoticz can use the Http commands directly...
Or perhaps a script, domoticz can work with different types.
I did install the ledenet api, only now i am stuc.
Did install it on my RPi.
How can i use the api on a simple way.
I do not understand where i can place/put the api [ in putty is get strange values ]
Perhaps you have some examples, of your nice work
I am not ict expert... :-(
Hope you will help me with your nice hack...
I do not have a Ufo j@ this moment [ orderd 2  ] only i will learn before i got 1...
Thanks!!

You could use ha_gateway. Allows you to set up a RESTful API and has an integration with ledenet_api.

mm Thanks Ha s on the RPi..
Like i say... no ict expert :-)
I read that need the HW adres [ i do not have yet ] this is the mac?
what is the name for? so i now what controller? or the name in my lan?
Can i ad more controller in the config file?
Only i do not understand how i give a command...

Yeah, hardware address is MAC address. Are you looking at the example config file?
      # There are a couple of ways you can specify which device you'd like
      # to control:
      #   1. Specify no params. Control an arbitrary (maybe the only?) LEDENET
      #      device on your network.
      #   2. Specify a hardware address. ha_gateway will attempt to resolve
      #      the host from the hw addr using a discovery protocol. This is
      #      preferable if you don't have a hostname or static IP for the
      #      LEDENET device.
      #   3. Specify a host directly.
      hw_addr: 00:00:00:00:00:00
      host: ledenet1

You can also use host if you want to hardcode a local IP address or hostname. hw_addr is just more robust to network changes.

exactly the example is where i am looking at. [[ i use the mac and set the ip, when i got 1 :-) ]
This is the easy part... :-)
What do i need to do more....
Can i create now a simple http command?
Perhaps you have a example ?

ha_gateway is a little REST server. You start it on some port (defined on the config), and then you can send REST commands at it. For example:
$ curl -vvv -X PUT -d'status=on'  http://<IP_ADDRESS>:8000/lights/light_name

where <IP_ADDRESS> is whatever IP the server is running on, and light_name is whatever you called the light in the YAML config.
The full HTTP spec is defined in the README of ha_gateway.

going to try when i get the controller.. [ hard to get on this way ]
Only i do not understand the  way this working.
Is it correct that the Ha_gateway is a kind of bridge?
So it is possible to give command from a other device to the Wifi controller?
I need your code and the Ha_gateway...
When i see your code i can control the whole range, rgb and fade etc.
When i see the Ha gateway i see only on/off.
This  part   curl -vvv -X PUT -d'status=on'  http://<IP_ADDRESS>:8000/lights/light_name  that i can use in a script file?
Only when i will activate the: SEVEN_COLOR_CROSS_FADE?
Do i need to place your example in a script file?
What type are possible?Lua?
Like my hue scrips:
#!/bin/sh
curl -H "Accept: application/json" -X PUT --data '{"on":false}' http://<IP_ADDRESS>/api/newdeveloper/lights/4/state

When i install HA-gateway, and reboot my rpi, is this server running?
Or do i need to start it manual?
Is there a crontab or something to check?
[ cannot wait until i get the controller. ]

The full API documentation for ha_gateway is in the README. Here's the section for light devices:
https://github.com/sidoh/ha_gateway#put-lightlight_name
You can currently control on/off, RGB, and "level" (brightness). Would be easy enough to add additional parameters.
That's just the structure of an HTTP request to ha_gateway. You can obviously send it requests in a lot of ways.

dear...
Do have the  wifi ufo @ home.
Did connect to my Wifi.
So i have the mac and a Ip...
What are my next steps???


[crypto] add support for using PSA implementation of PBKDF2 key generation

Add support for using PSA PBKDF2 key generation.
This was added to Mbed TLS PSA implementation in 3.5.0
Add error handling to this function.
The error returned from mbedtls cmac functions should be checked.

There are a lot of build failures. Is OPENTHREAD_CONFIG_CRYPTO_LIB not set to MbedTLS?
There is no PSA functions at all, is the hybrid configuration covering for something else than the lack of PSA support?

@joerchan The APi version falis because You haven't updated https://github.com/openthread/openthread/blob/main/include/openthread/instance.h#L56
Build pretty can be runned locally please see https://github.com/openthread/openthread/blob/main/script/make-pretty

@joerchan , I noted that you have two comments. Do you want these commits merged separately? Or are you OK with a squash merge?
If you want them merged separately, please put the PR# in the commit header. For example:
[crypto] Add error handling to PBDF2 generate key function (#9655)

I am OK with a squash merge.


Next Steps wording

On the Next Steps section, https://docs.microsoft.com/en-us/azure/site-recovery/azure-to-azure-how-to-reprotect#next-steps ,  the sentence "We recommend you choose a time accordingly, and that you run a test failover but initiating a full failover to the primary site" is not very clear, should it not say "before" instead of "but"?

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

ID: 7d46983e-a915-379c-06be-bd464995599b
Version Independent ID: e63427a9-4834-8d61-c0b7-235f1355a1eb
Content: Reprotect failed over Azure VMs back to the primary Azure region with Azure Site Recovery
Content Source: articles/site-recovery/azure-to-azure-how-to-reprotect.md
Service: site-recovery
GitHub Login: @Rajani-Janaki-Ram
Microsoft Alias: rajanaki

@gunnarcms Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@rayne-wiselman , can you please update this to "before"

Fixed.Should merge today
From: Rajani Janaki Ram<EMAIL_ADDRESS>Sent: Monday, November 19, 2018 10:06 AM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Rayne Wiselman<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] Next Steps wording (#19077)
@rayne-wiselmanhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frayne-wiselman&data=02|01|raynew%40microsoft.com|727385eb532f45cb83ef08d64df5d8ed|72f988bf86f141af91ab2d7cd011db47|1|0|636782115637717741&sdata=c1DDIFdtnI%2FcV2vAcOhvIhmQnKgjauvZdOTFU9uuIzI%3D&reserved=0 , can you please update this to "before"
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F19077%23issuecomment-439804041&data=02|01|raynew%40microsoft.com|727385eb532f45cb83ef08d64df5d8ed|72f988bf86f141af91ab2d7cd011db47|1|0|636782115637727749&sdata=ql7MlbGCB8z9prpUqkclHVoIXqWhtzPx6ANxXCko02Y%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAD2-iLyeO2uWoDBkA6sL6QJgCUAfzUVwks5uwmZpgaJpZM4Ymm2V&data=02|01|raynew%40microsoft.com|727385eb532f45cb83ef08d64df5d8ed|72f988bf86f141af91ab2d7cd011db47|1|0|636782115637727749&sdata=6FyJ1tffxeBbSwwyPe4HJNkQFIBeBN4EiUU1azt5W0k%3D&reserved=0.

This is fixed #please-close


Decoding from file

I have a large 529 MiB protobuf generated from Python and stored in a file. I can read it correctly from Python (all Python protobuf operations use Google's library). However, I cannot read it from prost!.
The serialized protobuf does not have data set for all the fields, i.e. some fields were not set. It uses the proto3 syntax for which all fields are optional.
I may be attempting to decode things incorrectly, as I haven't found any decoding example. I can attach the .proto file and the generated code from prost_derive if that helps. And below is the relevant decoding attempt.
    let infn = matches.value_of("input").unwrap();

    let mut inbuf = Vec::new();

    File::open(infn)
        .expect(&format!("could not open EXB file {}", infn))
        .read(&mut inbuf)
        .expect("something went wrong reading the file");

    let outfn = matches.value_of("output").unwrap();
    let step_size = f64::from_str(matches.value_of("step").unwrap())
        .expect("could not convert step size to floating point value");

    if step_size <= 0.0 {
        panic!("Step size is not greater than zero");
    }

    println!("Using output CSV: {}", outfn);
    println!("Using step size: {} seconds", step_size);

    let s = prost::decode_length_delimiter(inbuf.into_buf());
    println!("{:?}", s);

Here is the error:
Err(DecodeError { description: "invalid varint", stack: [] })

You're right, thanks.
Using the following does not have an error, but the data still isn't loaded correctly: Python says there are 32 "ephemeris" messages in there, but prost says zero. Any idea how I could debug this?
let ephcnt =
        exb::EphemerisContainer::decode(inbuf.into_buf()).expect("could not decode EXB file");
println!("{:?}", ephcnt.ephemerides.len());

For reference, here is the protobuf definition:
/*
 * The Ephemeris eXchange Binary (`.exb`) file definition.
 *
 * This file allows storing ephemeris data for celestial bodies and spacecraft, along with optional
 * named parameters of said object. The ephemeris data may be provided as a set of "Truth" data
 * for known position, optional velocity and optional covariance, or either as a set of equally
 * timed interpolation coefficients or a set of unequally timed interpolation coefficients. These
 * coefficients include position and optional velocity. The units for the position and velocity may
 * also be independently specified. The type of interpolation used and its degree is also specified.
 * Each ephemeris object is identified by a number (signed integer) and/or a name (as a string).
 */
syntax = "proto3";

package exb;

enum UnitTime {
  days = 0;
  seconds = 1;
  CustomTimeUnit = 2;
}

enum UnitDistance {
  AU = 0;
  km = 1;
  m = 2;
  CustomDistanceUnit = 3;
}

enum UnitVelocity {
  km_s = 0;
  m_s = 1;
  CustomVelocityUnit = 2;
}

message Identifier {
  // All objects in this ephemeris are given an Identifier.
  sint32 number = 1; // May be used to store the NAIF_ID
  string name = 2; // May be used to store the SPACEWARN identifier
}

message Parameter {
  /* A parameter value, may be used to specify celestial object properties (e.g. GM), or spacecraft
   * properties (e.g. mass). */
  double value = 1;
  string unit = 2;
}

message Coefficients {
  repeated double x = 1;
  repeated double y = 2;
  repeated double z = 3;
}

/* EqualStepStates provides an O(1) access to all of the states.
 * To access state of time T, get the index as
 * floor((t_in_mod_julian - start_mod_julian)/window_duration) .
 * This state's coefficients can be cached for quicker continuous computation.
 * Note that we store the position and velocity outside of a message for smaller serialized
 * structure (two contiguous lists of structures).
 */
message EqualStepStates {
  // Fixed window duration for all of the states
  double window_duration = 1;
  // Unit of the window duration
  UnitTime window_duration_unit = 2;
  // All position coefficients for this time offset.
  repeated Coefficients position = 3;
  /* All velocity coefficients for this time offset. Optional, but if used, it **must** be of the
   * same length as the list of position coefficients. */
  repeated Coefficients velocity = 4;
}

/* VarWindowStates provides an O(log(n)) + O(1) access to all of the states. The O(log(n))
 * corresponds to the binary search in the index, which then leads to an O(1) access. */
message VarWindowStates {
  message State {
    // Relative time in seconds compared to the indexed time.
    float time_offset = 1;
    // Duration in seconds for which these states are valid.
    float window_duration = 2;
    // All position coefficients for this time offset.
    Coefficients position = 3;
    // All velocity coefficients for this time offset. (optional)
    Coefficients velocity = 4;
  }
  /* A pre-sorted list of all of the times (in seconds) available in the map of states.
   * These time entries are seconds paste the start_mod_julian dates (which is in days).
   * Perform a binary search in this index to retrieve time key for the desired time.
   * In other words, search for the closest time to the desired time, retrive the State
   * for this time, build the interpolation functions, and finally apply these at the desired time.
   * NOTE: Limitations of protobufs require this index to be an integer.
   * NOTE: For better platform support, these reference times are limited to 32 bits. */
  repeated uint32 time_index = 1;
  // A map associating each time (in seconds) from the index with a State.
  map<uint32, State> states = 2;
}

message Truth {
  message Vector {
    double x = 1;
    double y = 2;
    double z = 3;
  }

  message Covariance {
    // The Covariance of the object is based on the CCSDS OEM Data format.
    double cx_x = 1; // Covariance matrix [1,1]
    double cy_x = 2; // Covariance matrix [2,1]
    double cy_y = 3; // Covariance matrix [2,2]
    double cz_x = 4; // Covariance matrix [3,1]
    double cz_y = 5; // Covariance matrix [3,2]
    double cz_z = 6; // Covariance matrix [3,3]
    double cx_dot_x = 7; // Covariance matrix [4,1]
    double cx_dot_y = 8; // Covariance matrix [4,2]
    double cx_dot_z = 9; // Covariance matrix [4,3]
    double cx_dot_x_dot = 10; // Covariance matrix [4,4]
    double cy_dot_x = 11; // Covariance matrix [5,1]
    double cy_dot_y = 12; // Covariance matrix [5,2]
    double cy_dot_z = 13; // Covariance matrix [5,3]
    double cy_dot_x_dot = 14; // Covariance matrix [5,4]
    double cy_dot_y_dot = 15; // Covariance matrix [5,5]
    double cz_dot_x = 16; // Covariance matrix [6,1]
    double cz_dot_y = 17; // Covariance matrix [6,2]
    double cz_dot_z = 18; // Covariance matrix [6,3]
    double cz_dot_x_dot = 19; // Covariance matrix [6,4]
    double cz_dot_y_dot = 20; // Covariance matrix [6,5]
    double cz_dot_z_dot = 21; // Covariance matrix [6,6]
  }

  double mod_julian = 1;
  Vector position = 2;
  Vector velocity = 3;
  Covariance covariance = 4;
  /* The covariance exponent specifies an optional exponent for all of the components of the
   * covariance. This enables storing high precision covariance while not losing precision of
   * floating point values.
   */
  double covariance_exponent = 5;
}

message Interpolation {
  enum IPType {
    // Supported interpolations.
    Chebyshev = 0;
    Hermite = 1;
    Polynomial = 2;
    Lagrange = 3;
    // NOTE: Requires additional communication between provider and implementer.
    CustomInterpolationType = 4;
  }

  // Type of interpolation used
  IPType itype = 1;
  /* Degree of the interpolation used for computing the position (e.g. Piecewise Linear would have
   * a degree 1, but a Hermite interpolation would usually have 2*nval - 1 where nval corresponds
   * to the number of states used to compute the interpolation coefficients). */
  uint32 position_degree = 2;
  /* Degree of the interpolation used for computing the velocity. Only used if the interpolation
   * includes the velocity data. */
  uint32 velocity_degree = 3;
  // A start time of all of the states.
  double start_mod_julian = 4;
  oneof state_data {
    EqualStepStates equal_states = 5;
    VarWindowStates varwindow_states = 6;
  }
}

message Ephemeris {
  // Unique identifier of the object
  Identifier id = 1;
  string ref_frame = 2;
  /* An optional list of known states. This may be used by an implementer to verify their
   * computation, or to transmit future propagated states with an optional covariance. */
  repeated Truth known_states = 3;
  Interpolation interpolator = 4;
  // An optional map of parameter name to parameter value and unit.
  map<string, Parameter> parameters = 5;
  UnitDistance distance_unit = 6;
  UnitVelocity velocity_unit = 7;
}

message Meta {
  message CEDate {
    uint32 year = 1;
    uint32 month = 2;
    uint32 day = 3;
  }

  CEDate date = 1;
  string version = 2;
  string publisher = 3;
  bool proprietary = 4;
  string docs = 5;
  string comments = 6;
  string generator = 7;
}

message EphemerisContainer {
  Meta meta = 1;
  /* Offset of time references `T` wrt to the Modified Julian Date of "1858 Nov 17 zero hours".
   * The computation must be as such: `MJD = start_mod_julian + mod_julian_offset`. Hence, if the
   * reference of the calendar is _after_ the MJD reference, mod_julian_offset is a positive number.
   * For example, if the time references are in Julian Dates, then mod_julian_offset = -2400000.50.
   */
  double mod_julian_offset = 2;
  repeated Ephemeris ephemerides = 3;
}

My mistake: I wasn't reading the file.
I was defining the input buffer as Vec::new() and I was using .read instead of .read_to_end when reading the file. Hence, the buffer was of length zero.
I guess the only lesson learned here to check that the buffer isn't empty prior to attempting to read it.


Raise

@dagiro : Thanks for your contribution! The author, @MikeRys, has been notified to review your proposed change.


Non linearity after attention

Adds non-linearity after the computation of attention weights. Fixes #3

thanks so much :)

F.relu does not have a kwarg dim?

Not only does this not run until you remove dim=1 from the ReLU, this softmax does not make sense. It computes softmax along the batch dimension...


what ever I try no model loads

I downloaded the models from the link provided on version1.05 release page. But what ever I try it always sais couldn't load model. I use the ggml-model-q4_0.bin or the ggml-model-q4_0.bin files but nothing loads. I tried windows and Mac. It doesn't give me a proper error message just sais couldn't load model.

You need to download the q4_1 file, not q4_0.

I used the following link. https://huggingface.co/Pi3141/alpaca-7b-native-enhanced/blob/main/ggml-model-q4_1.bin
it doesn't work, just sais can't load.

i tried so many models and they either fail to load or they never write anything at all, i used kobold and the models work fine so i dunno what im doing wrong, i like this tool a lot but it never actually worked for me

Where exactly did you get the models from?

from the link on the releases page
https://huggingface.co/Pi3141

And you're using q4_1, right?

Maybe you can show the terminal log if you are using mac or linux, that will be more clear.

that one works, i guess its just really slow? also it doesnt seem to take into account other stuff that runs on my pc because, its running at 100% and, my music now has these little skips in the audio, and my pc is unstable

i dont remember the kobold ui being so extreme, i could multitask with other stuff, also kobold shows me the tokens being read in real time which was really good feedback that it was doing stuff, but with alpaca electron i cant tell if the window is stuck or if its actually doing stuff, i really wish there was some text down here that said
"Processing Characters: 1 of 5000"
or something like that, it would improve the usability by 200%
this is just, kinda annoying to look at and, it doesnt tell me anything, it just made me assume it was frozen

I'll consider adding the character processed counter. Most of this stuff is to do with llama.cpp though. I have no control over the CPU usage. Im just making the frontend for it.

i think you should add it or you are going to get more people reporting the models as broken

Actually I can't. Llama.cpp doesn't show how many tokens of the prompt has been processed.
What I'll do to fix people reporting that the model is broken is that I will make it a rule that people cannot open an issue if they haven't waited at least 1 hour for a response from the model to make sure that it's not just their computer.
Because if a model can't be load, the app will notify you. It only freezes in rare edge cases.

I tried all these models and none of them works, everything just sais couldn't load model. How do I find the terminall logs? I am using the macOS arm64 build.

bruh nobody is ever gonna wait one hour, they will just find another tool

Yeah good luck to them finding a different tool thats faster than llama.cpp. If it takes that long for llama.cpp to run for them, then their CPU spec is probably not good, thus it would also make sense that they wouldn't have a GPU or the GPU won't be powerful enough.

where can I find the terminal logs on Mac?

where can I find the terminal logs on Mac?

Sorry, I didn't test it on Mac before, I just assume when we run the command on terminal, it will display some info like this

//> llama_model_load_internal: format     = ggjt v1 (latest)
llama_model_load_internal: n_vocab    = 32000
llama_model_load_internal: n_ctx      = 2048
llama_model_load_internal: n_embd     = 4096
llama_model_load_internal: n_mult     = 256
llama_model_load_internal: n_head     = 32
llama_model_load_internal: n_layer    = 32
llama_model_load_internal: n_rot      = 128
llama_model_load_internal: ftype      = 3 (mostly Q4_1)
llama_model_load_internal: n_ff       = 11008
llama_model_load_internal: n_parts    = 1
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size =  59.11 KB
llama_model_load_internal: mem required  = 6612.57 MB (+ 1026.00 MB per state)

//> llama_init_from_file: kv self size  = 1024.00 MB

system_info: n_threads = 8 / 16 | AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |
main: interactive mode on.
Reverse prompt: 'User:'
Reverse prompt: '### Instruction:

Sorry, I didn't test it on Mac before, I just assume when we run the command on terminal, it will display some info like this

//> llama_model_load_internal: format     = ggjt v1 (latest)
llama_model_load_internal: n_vocab    = 32000
llama_model_load_internal: n_ctx      = 2048
llama_model_load_internal: n_embd     = 4096
llama_model_load_internal: n_mult     = 256
llama_model_load_internal: n_head     = 32
llama_model_load_internal: n_layer    = 32
llama_model_load_internal: n_rot      = 128
llama_model_load_internal: ftype      = 3 (mostly Q4_1)
llama_model_load_internal: n_ff       = 11008
llama_model_load_internal: n_parts    = 1
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size =  59.11 KB
llama_model_load_internal: mem required  = 6612.57 MB (+ 1026.00 MB per state)

//> llama_init_from_file: kv self size  = 1024.00 MB

system_info: n_threads = 8 / 16 | AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |
main: interactive mode on.
Reverse prompt: 'User:'
Reverse prompt: '### Instruction:

That's normal, it's loading the model. Give it some time.

Hey I had the same problem on linux (fedora silverblue 38) and I tryed to compile it myself and then it worked!
Im also guessing this is the same issues as:
https://github.com/ItsPi3141/alpaca-electron/issues/24
https://github.com/ItsPi3141/alpaca-electron/issues/51

from the link on the releases page
https://huggingface.co/Pi3141

And you're using q4_1, right?

What's the difference with q4_1.bin q4_2.bin q4_3.bin etc?

Windows 10 64bit
I have got this to work is by downloading llama.cpp executables and replace chat.exe in alpaca-electron with main.exe from llama.cpp (renaming main.exe to chat.exe of course). In my case i need the AVX release for potato PC, most other people will require AVX2, there is an AVX512 release too.


'certify' doesn't update existing certificates

Somewhere, a regression was introduced, I think this was from a PR that I was iffy about.
Repro:
Certify on a new name
Calling certify for environment prod..
Certifying domain blah.yourname.io..
Setting DNS challenge..
Waiting for DNS to propagate..
Deleting DNS challenge..
Updating domain name!
Certificate updated!

Possibly related:
https://github.com/Miserlou/Zappa/pull/458
https://github.com/Miserlou/Zappa/issues/334
Could also be a change in APIGW behavior itself.

To +1 this: it seems that none of my certificates have been auto-renewing.  I've been having to do it by manually deleting the custom domain name in APIGW and re-deploying/re-certifying.  Here's an example zappa_settings.json that I've been using:
{   "production": {     "app_function": "flask_server.app",     "domain": "www.domain.com",     "lets_encrypt_key": "../keys/account.key",     "lets_encrypt_expression": "rate(1 day)",     "s3_bucket": "proj-prod-zappa",     "profile_name": "lambda-deploy",     "timeout_seconds": 90   } }

I think this is actually related: https://github.com/Miserlou/Zappa/issues/391

+1
This is happening to me too. I noticed that when I run zappa certify the certificate name in api gateway does get updated (e.g. I see the updated timestamped name in the aws console), but the certificate doesn't get updated when I check in my web browser.
I wonder if it's related to this code in the update_domain_name method of zappa.py:
        update_domain_name_response = self.apigateway_client.update_domain_name(
            domainName=domain_name,
            patchOperations=[
                {
                    'op': 'replace',
                    'path': '/certificateName',
                    'value': new_cert_name,
                }
            ]
        )

Is this code just changing the certificate name? Maybe we need to pass the certificate body, etc... to this method. Something like:
      patchOperations=[
                {
                    'op': 'replace',
                    'path': '/certificateName',
                    'value': new_cert_name,
                }
            {"op": "replace",
                "path": "/certificateBody",
                "value": certificate_body},
            {"op": "replace",
                "path": "/certificatePrivateKey",
                "value": certificate_private_key},
            {"op": "replace",
                "path": "/certificateChain",
                "value": certificate_chain},
        ]

...with better formatting of course. I got this code searching Github so it's likely supported. I don't have time to test this at the moment, but within the next week I could try it unless this issue is resolved or someone else can try it.

Unfortunately, this is not possible like I had hoped. Only the certificate name can be updated (https://docs.aws.amazon.com/apigateway/api-reference/link-relation/domainname-update/). I suppose this problem was known when originally writing the update_domain_name method for Zappa.
I'm not sure how to get around this programmatically, short of creating a new api gateway domain with the new certificate, which may involve some downtime if we have to delete the current api gateway domain first. Hopefully, there is a better way. I will test with an old version of Zappa to determine when this regression occurred, although I always had problems with re-certifying my domain.
Currently, I'm updating my certificate by using the undocumented Zappa features to output the certificate data, and pasting that data into the aws console as described at http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html#how-to-rotate-custom-domain-certificate.
P.S: The Terraform project also encountered this problem (https://github.com/hashicorp/terraform/issues/8789)

Yeah I'm not sure how to go about this.  Just by virtue of the way APIGW/CF works, any time the certificate is changed on the fly, there's going to be downtime while it's pushed out to the edge nodes in CF.
The AWS docs have something on uploading a backup certificate and then rotating it into production gradually to avoid the downtime issue.  I don't know what aspect of this are exposed in the API, but maybe this will give us some clues on where to start looking.
http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html#how-to-rotate-custom-domain-certificate

@chromakey
If only it were that simple...I tried that previously but it didn't work. This is the output I got:
Setting DNS challenge..
Waiting for DNS to propagate..
Deleting DNS challenge..
Updating domain name!
An error occurred (BadRequestException) when calling the UpdateDomainName operation: Invalid patch path  '/certifica
teBody' specified for op 'replace'. Must be one of: [/certificateName]
Failed to generate or install certificate! :(

Ah it was worth a shot.  I can't find anything in the documentation that points to the backup certificate functionality being exposed at all.  The best we could hope for I think is that maybe it's undocumented and uses parameters like backupCertificateBody or something like that.
Supposedly, AWS has been working on getting ACM to work with API Gateway, but there's no public time table at the moment:
https://forums.aws.amazon.com/thread.jspa?threadID=234686
Maybe we should disable the renewal feature for the time being since from what I can tell it doesn't work as intended and it might catch people off guard when their 90 days is up (speaking from experience) or at least add a warning of sorts.
I'll keep looking as time allows, but unfortunately it doesn't look good at the moment.

Personally I'm okay with renewing the certificate manually through the AWS console. After all, it's something you only have to do after 90 days. Of course, this should be made very clear in the documentation along with detailed instructions.
One possible option to get the certificate updated programmatically would be to generate a new api gateway domain specifically for the new certificate and then switch the route53 domain to use the new api gateway. Eventually, after a sufficient amount of time for everything to propagate we'd delete the old api gateway. It's complicated but I believe this could all be done automatically in code. Just an idea. Of course, a simpler way would be much preferred.

@Miserlou Had to renew all our certificates manually today (4 out of 5 expired). So it looks like it was not working properly for a while?

One of the issues was that the documentation was wrong, sorry about that. It's lets_encrypt_expression not lets_encrypt_schedule. There is also a potential race condition that still needs to be addressed.

@Miserlou hmm.. but that would only affect the creation of a cloudwatch trigger, won't it? I did see certificates expired even with the trigger present.

Also, I did try to just run certify locally with no effect on the certificate (expired one wasn't replaced).

Yeah, it needs to be chased down. I think there was a PR that introduced this bug although I can't confirm that. I think this is related: https://github.com/Miserlou/Zappa/issues/391

Welp...this one just came around for me again on a different project. I'm really eager to help out with any solutions on this front. What can we do?

First step is diagnosis!

Roger. I'm going to crack down on this one bigtime, so I should have a PR by week's end.

Fantastic news.

All right, now that I'm actually getting down to business here, I can't find any way to recreate the issues people are concerned about on a fresh project. It looks to me like when certify is called, the certificate is correctly replaced with a new one, and the ANSI date in its same name seems to confirm this.
Apart from how long it takes for new certs to reach edge nodes, which is not ours to change, what are we looking to improve here?

How long did it take your update to reach "edge nodes"?

It hasn't yet, as far as I can tell, and that's a good point -- until it arrives and that expiration date changes, I really won't have any way to tell for certain if we're sending through fresh certs or just changing the name displayed on the AWS UI and nothing else.

Bump - did it propagate?

Looks like it!

Period of Validity
Begins on: February 3, 2017
Expires on: May 4, 2017

So now if I have an existing site that didn't update, what do I do?

Well nothing this second since Amazon S3 is down, but...
I would update your local tools and try running certify again. If that doesn't fix the problem, it may be time for more drastic measures. You can always undeploy, go through the admin interface to make sure everything is gone, then deploy and certify like it's fresh.

 Head -> Wall -> bang
New theory is we can remove the API Gateway entry for the domain and recreating it but leave the Route53 domain name in tact, updating the record. Expecting this will cause down time between 0 and 40 minutes. >:[

I've been writing a little side project (for work) in flask using zappa, so this is my first go-around running zappa certify, and three weird things happened when I ran it which broke my project.
What I did:

First tried to deploy/certify a totally new environment called prod. Certify ran "successfully" and generating the correct (I think) records in the api gateway for custom domain. It did not create any records in route 53. Running certify for the environment again produced issue referenced in #334.

Attempting to access my index url in prod results in a redirect from {{aws_url}}/prod/ => {{aws_url}}/ and a resulting 403 forbidden is thrown, I'm assuming from the Cloudflare distribution (which doesn't exist in my Cloudflare dashboard, but does in the APIGW, oddly enough)

If I go to one of my APIGW endpoints that should be accessible (say, prod/login) I am served the html, but not any of the static files, including the linked css (although the css shows up in dev tools, it's an empty file).

Note that this is the first update to prod I attempted after upgrading zappa to the most recent version (0.37.2) and the only certify I've done.
Fixes I've attempted that didn't work:

Undeploy/deploying per @NathanLawrence 's comment above doesn't seem to fix any of this, including issue three.
Waiting 1hr+ for the certify to go through

Fix I attempted that did work:

Undeploying, Removing "domain" from zappa_settings.json
Removing the custom domain associated with dev in APIGW
Redeploying immediately fixed (2) and (3)

Let me know if you have questions or trouble reproducing any of this. I need to get it done, so I'll just setup the custom domains by hand for now.
PS -- Sorry if I'm overloading this single issue, happy to split off into a different thread if appropriate.

So I just tried my proposed solution up there ^, expecting a between 0 and 40 minute downtime, and it seems like the change is in fact instantaneous. So, it's not as elegant as actually rotating the certificate, but the damage isn't as bad as I imagined. <1 minute * 4 times a year - that's still quite a lot of 9's of uptime.

Update: This does NOT work as intended. Gosh dang it.
It works, I was able to see the page at the domain, immediately after calling certify, THEN the distribution goes down, once the new distribution has been created.
So, as it stands, we can either have it work immediately, but then it breaks 40 minutes later, OR we can have it break immediately but it works 40 minutes later. Very annoying!
Obviously the latter is preferred, but is there an opportunity for hacks here? Can we do some kind of domain name dance to ensure uptime?

What's taking the 40 minutes? API Gateway? or route53?  Is it possible to leave the old one in place but make a new one and then make the changeover but not nuke the old one for another 40 minutes?  Basically: keep them both in existence until the changeover time is complete, so there's never downtime - the site is always served with either the old one or the new one.

That'd be idea, but would require either an extremely long running process, or we set up a scheduled function to do it from AWS, which might not work for everybody's setup.
In the mean time, I've just added a --manual mode mode so you can rotate the cert without any downtime.

This is ideally all happening via the recertify job, right?   So it's already a long running process?

Unless I'm missing something, it seems like something that could be done with no downtime. In the certify handler set up a new API gateway, leave the old one, point the route 53 domain to the new API gateway. The old API gateway could be deleted the next time the certify handler is called.

Will this work since APIGW doesn't allow you to have two of the same custom domain names in the system at any given time?

That's a very good point. Also, now that i think about it we would also need to ensure that the API gateway is fully propagated before pointing the route53 domain.

To give a sense of my manual process to work around this for the moment, here's what I've had to do.

Delete the domain via the console from APIGW.
Wait about 20 minutes (if you try to do something before the CloudFront edge nodes are updated, it will throw an error saying the domain already exists)
Re-certify my project using zappa certify production (or equivalent).
Wait another 20 minutes.

CloudFront warns you to expect that domain deletion/creation can take up to 40 minutes each way, but it's been my experience that it's usually in the 20-25 minute range.  I have about 15 sites using Zappa at the moment (thankfully none that are SLA sensitive) and this is the method I've used successfully since we discovered the issue.
I'm not sure how we can clear this hurdle without:

AWS exposing certificate rotation for APIGW to the API.
AWS allowing ACM to run with APIGW.
AWS allowing multiple instances of the same custom domain name (to use as a placeholder).
Something else?

@chromakey - if your current strategy already involves manual deletion, you can use the new --manual feature to use the console to update the cert to avoid downtime. The updated certify behavior will do a (reordered) version of your steps automatically.

Sweet.  I'll take it for a test drive in the next couple days.

Haven't looked into this yet, but looks like we may have a path to success
https://aws.amazon.com/about-aws/whats-new/2017/03/amazon-api-gateway-integrates-with-aws-certificate-manager-acm/

Yep! Currently open for discussion here: https://github.com/Miserlou/Zappa/issues/710


Fix detach emphemeral disk

📝 Description
Opening the detach modal for an ephemeral disk (containerDisk) triggers a loading error as the groupVersionKind in useVolumeOwnedResource is undefined.
Fix: Do not load anything if the groupVersionKind is undefined. There is no resource to show in the modal and delete after submit if the volume is emphemeral
🎥 Demo
Before

After

/lgtm

/retest


[setup] add .gitignore file

Might be good to refer to this one: https://github.com/dgflash/oops-framework/blob/master/.gitignore


Works on classes in different files?

I've looked at the answer you gave in issues #1, and your code snippet indeed works...it even works on deeper inheritance (e.g. methods in class C can get doc strings from class A).
BUT, when I try to do it on my project, where, A, B and C are each in different files it does not work.  I have confirmed this on the simple test cases in issue #1.  If you put A and B in different files (called docrep_A and docrep_B), then when you do from docrep_B import B and b = B() on the command line it says: SyntaxWarning: 'A.my_method.parameters' is not a valid key!   @docstrings.dedent
Do you have any thoughts on this?

Hi! Thank you @jgostick for your input and for your feedback on the package!
So when I got you right, you have one script

docrep_A.py
from docrep import DocstringProcessor
docstrings = DocstringProcessor()

class A(object):
    @docstrings.get_sectionsf('A.my_method')
    @docstrings.dedent
    def my_method(self, a):
        """
        Do something

        Parameters
        ----------
        a: int
            Some random number
        """
        pass

 and another script

docrep_B.py
from docrep_A import docstrings, A

class B(A):
    @docstrings.dedent
    def my_method(self, a, b):
        """
        Do something more advanced

        Parameters
        ----------
        %(A.my_method.parameters)s
        b: int
            An additional number
        """
        pass

if __name__ == '__main__':
    print(B.my_method.__doc__)

And then you claim, that B does not inherit the docstring from A? For me, when I run docrep_B.py I get
python docrep_B.py
Do something more advanced

Parameters
----------
a: int
    Some random number
b: int
    An additional number

Make sure, that you use the same DocstringProcessor instance (namely docstrings) for B that you used for A! Does this help? If not, please provide a simple use case such that I can better understand your problem.

Sorry my initial question wasn't clear....let me try again, but based on your above comment, the problem is clearly that each file has a different instance of the DocstringProcessor.  So I guess my question is 'how to do get access to the instance created in A from the B? I tried putting in the same doc_key in each, but that doesn't seem to do it.  Anyway, here is my exact example:
I have a file like this called class_A:
from docrep import DocstringProcessor

doc = DocstringProcessor(doc_key='class_A')

class A():
    @doc.get_sectionsf('A.do_something', sections=['Parameters', 'Notes'])
    def do_something(self, a):
        r"""
        A method to do something

        Parameters
        ----------
        a : object
            An argument to do something

        Notes
        -----
        This method doesn't do much, but it does it well
        """
        print('A is doing something')

Another like this:
from docrep import DocstringProcessor
from class_A import A

doc = DocstringProcessor(doc_key='class_A')

class B(A):
    @doc.dedent
    def do_something(self, b):
        r"""
        A method to do something

        Parameters
        ----------
        %(A.do_something.parameters)s

        b : object
            An argument to do something

        Notes
        -----
        This method inherits from A, so does twice as much of nothing
        """
        print('A is doing something')\

Then from the command line or in another script I do this:
from class_B import B

b = B()

I get the following: SyntaxWarning: 'A.do_something.parameters' is not a valid key!   @doc.dedent

Dear @jgostick,
so from my point of view, the only possibility to solve this problem is to import the doc you created in the class_A module. This is how I did it in the above docrep_B.py script as well with the line from docrep_A import docstrings, A
In other words: change from class_A import A in your class_B file into from class_A import doc, A. Does this work for you?

As an explanation:
Different instances of the DocstringProcessor class do not share the extracted docstrings between each other. Otherwise it would be a big mess if multiple independent python packages use docrep and then override the docstrings from each other.
Therefore, if you create a new instance doc = DocstringProcessor(doc_key='class_A') it does not know about the instance you created in the class_A module.
Giving the keyword doc_key='class_A' doesn't change anything here.

I have actually just found a solution to the problem, but I'm not sure this is how you intended it to work, or if it would have consequences.  Basically, I add doc as a class variable on A, then add it to B as well, like this:
class A():
    doc = doc

and
class B(A):
    doc = A.doc

Then is works! Can you just confirm if this is the right approach, or if you have a better way?  I don't really like the

I think importing is the way to go, thanks!  I LOVE this package.  I was planning to write one myself, but eventually found yours while I was searching how to do decorators.  BTW, you should call this package docorator!  I might open more issues as I implement this in my package, but will close this now.

You're very welcomed to do so! I am happy it is useful to you 😃


Gh 2404: getelementsbetweensets pair

Related Issue

Resolve #2404

Codecov Report

:exclamation: No coverage uploaded for pull request base (v2-alpha@72873e1). Click here to learn what that means.
The diff coverage is n/a.

:exclamation: Current head 55546a6 differs from pull request most recent head b55876c. Consider uploading reports for the commit b55876c to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@             Coverage Diff             @@
##             v2-alpha    #2931   +/-   ##
===========================================
  Coverage            ?   65.39%
  Complexity          ?     2192
===========================================
  Files               ?      550
  Lines               ?    17365
  Branches            ?     2096
===========================================
  Hits                ?    11355
  Misses              ?     5039
  Partials            ?      971

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


Author field in CSV

Hi,
Thanks for such a handy tool.
I tried it myself and found that author field is missing in CSV report.
I would prefer if author column in CSV could be next to the version or name, but that would be a possible breaking change that I wanted to avoid.

Coverage decreased (-0.1%) to 95.263% when pulling e20f086778a85fd0a1896c4d4ad2c17164537609 on kurideja:master into fdd5f9111515e2f4490068d05536ccc6311e3f2d on iandotkelly:master.


Incompatibility with ledgendary tooltips

When playing with AzureLib Armor, the armor will render improperly on ledgendary tooltips.

Minecraft: 1.20.1
Fabric Loader: 0.15.11
FAPI: 0.92.1
Wizards: 1.2.0
Ledgendary Tooltips: 1.4.5

This an issue on Tool tips side, as I've worked with them on this. Enchant the armor and you'll see it works correctly. It's an issue in it's render code.


Task Table change

Currently the Task table has the columns "time" "description" "list" "completed"  Time is numerical and I am not sure how it is used, maybe as an ID right now.  Description is what is displayed for the task, list is whether it is on today or tomorrow's list, and completed is a boolean which determines if it is crossed off.  Because we plan to change this into a calendar type application, this will need changed and revised.

Update: We now need the ability to store a user with a task, and the ability to have a time listed with a task and tags listed with a task can be added in the process.


chore(main): release 2.111.1

:robot: I have created a release beep boop
2.111.1 (2024-04-30)
Bug Fixes

edit group (#3856) (b25e6f8)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/Flagsmith/flagsmith/releases/tag/v2.111.1 :sunflower:


Idea: Use of proxy

What a genius yet simple implementation! I tried to implement something similar a while ago, but when I look at your solution it seems overcomplicated ;)
Anyway, I use a simple Proxy that allows to use natural functions, e.g. instead of await bob.call('hi', 'alice) you could use await bob.hi('alice'). Type checks also work well.
You'll find a short description here: https://github.com/holtwick/zeed/tree/master/src/common/msg#messages
And the essential implementation here: https://github.com/holtwick/zeed/blob/master/src/common/msg/messages.ts#L49

I thought about it, but initially, I was thinking to have two different ways of calling functions (with/without return). Thanks for bringing this up, and I think I have found a not bad solution to that :)

Indeed, .noReply is a very smart solution :) Thanks!

Indeed, .noReply is a very smart solution :) Thanks!

Ah, you modified it again, even better this way.


php.validate setting ignored

v1.1.2
VS Code Version 1.9.1, macOS 10.12.3.
Upon setting "php.validate.run": "onSave" (which is the default anyway), PHP IntelliSense will validate while typing.
Even upon setting "php.validate.enable": false, PHP IntelliSense will still validate while typing.

That is the built-in validation of VS Code.

Setting is only ignored with PHP IntelliSense installed

php.validate controls the built-in validation of VS Code.
It will not affect the validation of the PHP language server.
What is the behavior you expect?

PHP IntelliSense honours the setting?
i.e. doesn't attempt to validate code while typing (only validate on save) – personally I find it distracting when validation occurs before I've finished typing.
I understand that the setting is for the built in validator, but the setting being ignored is caused by installing PHP IntelliSense, so I'm assuming it's either a bug or a feature (I can't find any documentation on the latter behaviour).

What you are seeing is probably PHP IntelliSense's own validation, which can not be configured.
PHP IntelliSense cannot influence the built-in validation in any way.

Can I change this to a feature request to honour the user defined setting?

It would have to be a new setting because as I said that setting is VS Code's own setting. But yeah, just open a new issue

Awesome, thanks :)


uv_interface_addresses doesn't list all interfaces

Hello everybody and thank for your work on libuv. I'm trying to use the function "uv_interface_addresses" to list all my network interfaces but this function has some problem. Firstly, it doesn't view the virtual interfaces like eth0:0, eth0:1 etc. For exemple, in my Ubuntu server, I have these interfaces :
root@tntest:~/monitoring/nms_proxy# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:19:f7:c8
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
eth0:1    Link encap:Ethernet  HWaddr 00:0c:29:19:f7:c8
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
UP BROADCAST MULTICAST  MTU:1500  Metric:1
eth0:2    Link encap:Ethernet  HWaddr 00:0c:29:19:f7:c8
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
UP BROADCAST MULTICAST  MTU:1500  Metric:1
eth0:3    Link encap:Ethernet  HWaddr 00:0c:29:19:f7:c8
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
UP BROADCAST MULTICAST  MTU:1500  Metric:1
eth1      Link encap:Ethernet  HWaddr 00:0c:29:19:f7:d2
inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
inet6 addr: fe80::20c:29ff:fe19:f7d2/64 Scope:Link
lo        Link encap:Local Loopback
inet addr:<IP_ADDRESS>  Mask:<IP_ADDRESS>
inet6 addr: ::1/128 Scope:Host
And the output of the following code :
//Get informations about local interfaces
uv_interface_address_t* inet_info;
uv_interface_addresses(&inet_info, &count);
int x;
for(x = 0; x < count; x++)
{
	uv_interface_address_t interface = inet_info[x];
	if (interface.address.address4.sin_family == AF_INET)
	{
        uv_ip4_name(&interface.address.address4, buf, sizeof(buf));
        INFO("NMS_proxy: IPv4 address %s (%s) is available on the system\n", interface.name, buf);
    }
    else if (interface.address.address4.sin_family == AF_INET6)
	{
        uv_ip6_name(&interface.address.address6, buf, sizeof(buf));
        INFO("NMS_proxy: IPv6 address %s (%s) is available on the system\n", interface.name, buf);
    }
}
uv_free_interface_addresses(inet_info, count);
printf("\n");

return this output
NMS_proxy: IPv4 address lo (<IP_ADDRESS>) is available on the system
NMS_proxy: IPv4 address eth1 (<IP_ADDRESS>) is available on the system
NMS_proxy: IPv6 address lo (::1) is available on the system
NMS_proxy: IPv6 address eth1 (fe80::20c:29ff:fe19:f7d2) is available on the system

Please follow https://github.com/libuv/libuv/issues/158


Adds autofocus to Text Search

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus

Thanks!


Add git decoration colors

Added some colours to take advantage of the new gitDecoration colours in the file browser.
Colours are up for discussion but thought I'd get the ball rolling...

Thanks! Checking it out now.

Tweaked the colors a bit and pushed. Thanks!!


[Zeppelin-239] The elapsed time is displayed on the notebook list

Add moment.js library
implementation of a 'moment.js' 'time ago' text
Each Paragraph dateCreated, dateStarted, dateFinished, the new algorithm is implemented based on the dateUpdated.

issue - https://issues.apache.org/jira/browse/ZEPPELIN-239
-old PR https://github.com/apache/incubator-zeppelin/pull/322

CI is failing on this PR.
Usually having it green (or at least updating on why is it red) fosters the reviewers to review\accept changes much faster.
You can try close\open the issue to trigger CI again in case of some flack tests, etc

@bzz Okay, Thank you advise.

@cloverhearts please close and reopen this PR to trigger a new CI build. thanks


TextInput with multiline not triggering onChangeText callback in 0.71.2

Environment
react-native -v: 0.71.6
npm ls react-native-macos: 0.71.2

Steps to reproduce the bug
<TextInput multiline onChangeText={(text) => console.log(text)} />
Additional context
Works perfectly without 'multiline' prop

@shwanton FYI

It seems others have hit this too, and it seems pretty bad. We'll try to take a look at it and find a fix.

@Saadnajmi Awesome thanks! Can't wait to use 0.71, especially with that smooth content resizing =)

@shwanton this seem to be resolved now in the upstream repo
https://github.com/facebook/react-native/commit/a804c0f22b4b11b3d9632dc59a6da14f6c4325e3

@shwanton this seem to be resolved now in the upstream repo
https://github.com/facebook/react-native/commit/a804c0f22b4b11b3d9632dc59a6da14f6c4325e3

Looks like it should be picked for a future patch release, at which point we can merge it into our repo as well.
https://github.com/reactwg/react-native-releases/discussions/61#discussioncomment-5648748

@Saadnajmi is there anyway we can confirm this will fix the issue before we wait around for the patch?

@k1mmm if you fork React Native macOS internally, you could try cherry picking the one commit.
Since RN 0.71.7 was just released, and 0.71.8 right now only has that one commit in it's pick requests, I'll consider just cherry-picking it along with all the 0.71.7 commits for React Native macOS. I'll update in this thread if we end up doing that.

I just tested cherry-picking that commit, and it doesn't seem to fix the issue :/
We'll have to keep debugging

@Saadnajmi Oh, that's unfortunate. Alright, thanks for the effort and the update!

@Saadnajmi Just wanna let you know onSubmitEditing do not work either on textInputs regarding being multiline or not

@k1mmm What key are you using got submit? And have you set the submitKeyEvents prop? For context, here's the logic: https://github.com/microsoft/react-native-macos/blob/375c57902cf4605301f459c2d243f93808507fb8/Libraries/Text/TextInput/RCTBaseTextInputView.m#L458

https://github.com/facebook/react-native/pull/33653 Changed this api and we need to update the RCTBackedTextFieldDelegateAdapter on macOS to use textInputShouldSubmitOnReturn instead.
Fix incoming.

Reopening till we backport to 0.71-stable

Fix was picked to 0.71-stable: #1812

Its working flawless now! Thanks allot!


av 9.2.0 compatibility

Actions before raising this issue

[X] I searched the existing issues and did not find anything similar.
[X] I read/searched the docs

The av 9.2.0 is not compatible with the latest python versions. I tried downgrading the version to 3.11 but still doesn't help.

https://docs.cvat.ai/docs/contributing/development-environment/
CVAT currently supports python 3.10. If you are interested in supporting 3.11 and later versions, we are always open to contributions


Add xcodeproj_test to test configured xcodeproj running the installer and then executing select xcodebuild actions against the generated Xcode project

Goals

Provide assurances to rules_xcodeproj contributors that changes to the underlying rules work.
Allow clients of rules_xcodeproj to test the schemes for configured projects.

Execute a build command for a scheme.
Execute a test command for a scheme.

Design/Usage

Provide xcodeproj_test that handles the test setup and Xcode project installation.
Provide a default test runner that executes xcodebuild commands against the Xcode project.
Allow clients to provide their own test runner.

Details
The idea is that we want to exercise the generated project/scheme. The following example is based upon examples/ios_app.
XCODEPROJ_TARGETS = [
    "//Example",
    "//ExampleTests",
    "//ExampleObjcTests",
    "//ExampleUITests",
]

XCODEPROJ_SCHEMES = [
    xcode_schemes.scheme(
        name = "ios_app",
        launch_action = xcode_schemes.launch_action("//Example"),
        test_action = xcode_schemes.test_action(
            "//ExampleTests",
            "//ExampleObjcTests",
            "//ExampleUITests",
        ),
    ),
]

xcodeproj(
    name = "xcodeproj",
    project_name = "iOS App",
    tags = ["manual"],
    top_level_targets = XCODEPROJ_TARGETS,
    schemes = XCODEPROJ_SCHEMES,
)

We want to be sure that the generated project and scheme work properly.
# This test will run the installer for `:xcodeproj`, then run the following:
#   xcodebuild -project iOS\ App.xcodeproj -scheme ios_app \
#      -sdk iphonesimulator \
#      -destination 'platform=iOS Simulator,name=iPhone 12,OS=14.3' \
#      test archive
# If the the command succeeds, the test passes. If the command does not, the test fails.
xcodeproj_test(
    name = "ios_app_scheme_test",
    xcodeproj = ":xcodeproj",
    scheme = "ios_app",
    # The `xcodebuild -help` lists these as `buildaction`. The interesting ones are `build`,
    # `archive`, and `test`.
    build_actions = ["test", "archive"],
)

Alternative Design
You may want to separate the test from the runner. The test would take a reference to an xcodeproj target. It would prepare the test and run the installer. The runner would execute the xcodebuild command. The benefit would be that other runners could be used instead of an xcodebuild runner.

I'm moving this to Post 1.0, because I don't think it should block the release, not because I don't think it's important. If someone is able to take this on I would love to help get it over the finish line.


Creating redirects forces url to start with a /

Hi Dave
Neat little package you got there :P
I'm having a minor annoyance with the ValidateUrl function though.
Seeing that the build-in function doesn't prefix registered url's with a "/", perhaps ValidateUrl shouldn't force it as well?
What do you think?

I actually don't recall why I force it...will test without when I have time.
Dave

Great, let me know if I can do anything to help :)

Hi @sniffdk
If i don't prefix the url with a / it breaks getting redirects. It even breaks the standard dashboard
Dave

interesting 😅


The good old special replacement?

When I was using v0.6.2, there was a special method after Il2Cpp.trace().sth.commit().
Sometimes I just want to get the parameter of a method call, and onEnter directly fits my need.
But in latest version, this feature seems to disappeared.
So I'm wondering if there is a replacement for me to get the params easily.
Thanks.

Hi, the problem is I changed the way I used to trace method invocations. "full" now relies on Interceptor.attach, meanwhile "detailed" still uses Il2Cpp.Method::implementation. The latter introduces so much overhead it was not convenient to make "full" keep using it. So, I refactored the whole Il2Cpp.Tracer class and ended up removing special  to keep it as simple as possible.
However, what's your use case?
I suspect you were not tracing methods en masse, but just one or two. In this scenario, you could use Il2Cpp.Method::implementation to print the exact parameter you need (this is what the removed API did).
Otherwise, if you need to trace a lot of function, what's preventing you from using "detailed"? The overhead is still the same

someClass.method("someFunc").implementation = function (...params) {
        doSth(...params)
        return this.method("someFunc").invoke(...params);
   };

like this? or something else

Well, I still need original text to help understanding some wrong translation. So I need to send it to host and use a better online translator with a bilingual display.
Thank you for your enthusiastic help. And one last question on this topic. How to avoid writing .method("someFunc")  twice?
Seems this in implementation means current class instance, and modify someFunc.implementation will not make someFunc to something else? I mean if someFunc.invoke() in my custom implementation will not recursively but directly call the original function?
someFunc.implementation=function(...params){
translate(...params)
return someFunc.invoke(...params)
}

If I understand correctly, the code above should fulfill my needs, right?

How to avoid writing .method("someFunc") twice?

If the method is static, you could:
someFunc.implementation = (...params) => {
    // ...
    return someFunc.invoke(...params);
};

(notice the arrow syntax, you can see how this can be left behind).

Seems this in implementation means current class instance

Yes, this refers to either a Il2Cpp.Class or a Il2Cpp.Object.

I mean if someFunc.invoke() in my custom implementation will not recursively but directly call the original function?

Correct observation, however Frida is smart and calls the original code instead!

If I understand correctly, the code above should fulfill my needs, right?

Yes, this is exactly what Il2Cpp.Tracer did.

However, it feels odd you are obliged to intercept a method to translate the text: do you also want to display the translated text? Given the snippet, it doesn't seem so

Yes, I directly display translated text on my pc lol
Thanks again for your answer


Proposal

This PR is just a proposal to create a new type that behaves like an integer but that can handle composite types. Let's discuss it here and then we can see how we can use it in morph filters.

So don't look much the changes in neurom/core/morphology.py, they are not relevant for now.

what is the usecase for this? how would it work?

Ah sorry, I didn't give any context here :innocent:
This is just a proposal to complete #1059 in order to handle neurite trees with several section types.

ah this, ok ok, I didn't really follow it, I let you guys sort it out!

Superseded by #1071


where is it?

where is it?

The code as not been release yet (see https://github.com/showlab/X-Adapter/issues/2)

Code released. Please check.


Revert "Enables simple campaign translation for Global project"

Reverts DoSomething/phoenix#4768

:+1: