Support gzip compression

Envoy has support for gzip compression, would it be possible for Istio to expose the configuration of this feature for the ingress/egress gateways and the sidecars? Ideally, the gzip compression config should be selectively applicable to specific internal or external services.

Example ?

For example, if I have service A and B running in a k8s/istio cluster and C running somewhere externally. I would like to be able to specify that payloads to/from A and C can be compressed but not to/from B. Not sure if this is the example you're looking for though.

My example from the other post:
[service-a] --plain --> [envoy-a] ---- gzip ----> [envoy-b] --plain--> [envoy-a]

Here is how I think one can activate gzip compression on the ingress-gateway:
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: ingressgateway-gzip
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      istio: ingressgateway
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: GATEWAY
        listener:
          filterChain:
            filter:
              name: "envoy.http_connection_manager"
              subFilter:
                name: 'envoy.router'
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.gzip
          config:
            remove_accept_encoding_header: true
            compression_level: DEFAULT

I used:

istio 1.3.4
config root namespace is istio-system (default)
pods are labeled istio: ingressgateway (default)

Once the resource is submitted, pilot starts pushing out new configs.
To verify, dump the config of one of the ingress gateway pods and grep for gzip.
kubectl -n istio-system exec -it $(kubectl -n istio-system get pod -l istio=ingressgateway -o jsonpath='{.items[0].metadata.name}') -- curl -s localhost:15000/config_dump | grep gzip

Next, request a service through the ingress gateway and set the accept-encoding header with gzip,deflate:
curl -H "accept-encoding: gzip,deflate" ...

Omit the accept-encoding header to get a plain text response.

I did not yet test this filter in production, I am very curious to the impact of activating the  filter.

@Stono @flatmap13 can either of you test the EnvoyFilter approach and make sure it meets your needs, then we can probably add first class support in an Istio API if so?

I put the above config live before christmas; has been working fine so far.
I changed the compression_level to BEST to achieve a higher compression rate. Unfortunately I do not have metrics on the CPU consumption change handy right now, but the effect was insignificant.

That EnvoyFilter config works a treat, thanks!

Not stale

It would be great to have this without requiring an EnvoyFilter as that introduces a lot of potential complexity for teams when they go to upgrade istio/envoy. We'd really prefer not to 'break the glass' by configuring envoy directly so right now we don't have GZIP compression enabled. Long term I'm not sure that is sustainable for us.

Ref #26627

What about compression for other kinds of stream within the mesh (bare TCP)?

Not stale

not stale

How about supporting gzip compression in VirtualService definition? So let's say I want to enabled gzip only for one endpoint, I would define a VirtualService rule and configure gzip compression for that endpoint. Also users would be free of maintaining EnvoyFilter.

not stale

what is the status of this? do we still need to add our own envoy filters or is this supported by an istio api now?

It's not supported by native API.
cc @costinm

not the response I want, but thank you. envoy filter it is

@kyessenov WDYT about development to add gzip option to VirtualService Custom Resource Definition?

Isn't there any brotli implementation?

@sayjeyhi Did you implement brotli compression? Unfortunately, I've tried it with EnvoyFilter, but it doesn't work.

@sayjeyhi Here is working example for brotli:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: brotli
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      istio: istio-ingressgateway
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: GATEWAY
        listener:
          filterChain:
            filter:
              name: "envoy.http_connection_manager"
              subFilter:
                name: 'envoy.router'
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.http.compressor
          typed_config:
            '@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
            compressor_library:
              name: text_optimized
              typed_config:
                '@type': type.googleapis.com/envoy.extensions.compression.brotli.compressor.v3.Brotli
                quality: 5
                encoder_mode: DEFAULT
                window_bits: 18
                input_block_bits: 24
                chunk_size: 4096
            response_direction_config:
              remove_accept_encoding_header: true
              common_config:
                enabled:
                  default_value: true
                  runtime_key: response_direction_config_enabled
                content_type:
                  - application/json
                  - text/css
                  - text/html
                  - text/plain
                  - text/xml
                min_content_length: 800
            request_direction_config:
              common_config:
                enabled:
                  default_value: false
                  runtime_key: request_direction_config_enabled```

@sayjeyhi Here is working example for brotli:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: brotli
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      istio: istio-ingressgateway
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: GATEWAY
        listener:
          filterChain:
            filter:
              name: "envoy.http_connection_manager"
              subFilter:
                name: 'envoy.router'
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.http.compressor
          typed_config:
            '@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
            compressor_library:
              name: text_optimized
              typed_config:
                '@type': type.googleapis.com/envoy.extensions.compression.brotli.compressor.v3.Brotli
                quality: 5
                encoder_mode: DEFAULT
                window_bits: 18
                input_block_bits: 24
                chunk_size: 4096
            response_direction_config:
              remove_accept_encoding_header: true
              common_config:
                enabled:
                  default_value: true
                  runtime_key: response_direction_config_enabled
                content_type:
                  - application/json
                  - text/css
                  - text/html
                  - text/plain
                  - text/xml
                min_content_length: 800
            request_direction_config:
              common_config:
                enabled:
                  default_value: false
                  runtime_key: request_direction_config_enabled```

Thanks buddy

FYI: compression for stats endpoint is supported in https://github.com/istio/istio/pull/47997.
For common usage, still need a API.

Has anyone figured out how to enable compression for a specific host on istio gateway? For example, if gateway handles multiple virtual services and hostnames, how can you enable compression for just one of the virtual services?

This would be very useful for us too. GZIP at virtual service level gives lots of flexibility. Any idea when this might be coming?  Thanks.

Would like to find any solution for this feature.
A (asking for request compression)     --> C
B (doesn't need request compression)--> C
How can I configure this case ?
try  both "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua" and "type.googleapis.com/envoy.extensions.filters.http.header_to_metadata.v3.Config".  Seems neither works
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: compression-filter
  namespace: services-gateway-apigw-usw2-prf-shao
spec:
  workloadSelector:
    labels:
      app: intuit-gateway
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: SIDECAR_OUTBOUND
        listener:
          portNumber: 80
          filterChain:
            filter:
              name: envoy.filters.network.http_connection_manager
              subFilter:
                name: envoy.filters.http.router
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.http.lua
          typed_config:
            "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
            inlineCode: |
              function envoy_on_request(request_handle)
                -- Check if the 'X-No-Compression' header is present and set to 'true'
                -- local compression_header = request_handle:headers():get("X-Request-Compression")
                -- if compression_header == "true" then
                -- Disable compression dynamically for this request
                request_handle:streamInfo():setDynamicMetadata("envoy.filters.http.compressor", "request_compressor_enabled", "true")
                -- end
              end
#          name: envoy.filters.http.header_to_metadata
#          typed_config:
#            "@type": type.googleapis.com/envoy.extensions.filters.http.header_to_metadata.v3.Config
#            request_rules:
#              - header: X-Request-Compression
#                on_header_present:
#                  metadata_namespace: envoy.filters.http.compressor
#                  key: request_compressor_enabled
#                  type: STRING
    - applyTo: HTTP_FILTER
      match:
        context: SIDECAR_OUTBOUND
        listener:
          portNumber: 80
          filterChain:
            filter:
              name: envoy.filters.network.http_connection_manager
              subFilter:
                name: envoy.filters.http.router
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.http.compressor
          typed_config:
            "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
            response_direction_config:
              common_config:
                enabled:
                  default_value: false
                  runtime_key: response_compressor_enabled
                min_content_length: 2048
                content_type:
                  - application/hal+json
                  - application/atom+xml
                  - application/javascript
                  - application/x-javascript
                  - application/json
                  - application/rss+xml
                  - application/vnd.ms-fontobject
                  - application/x-font-ttf
                  - application/x-web-app-manifest+json
                  - application/xhtml+xml
                  - application/xml
                  - font/opentype
                  - image/svg+xml
                  - image/x-icon
                  - text/css
                  - text/html
                  - text/plain
                  - text/xml
                  - text/x-component
              disable_on_etag_header: true
            request_direction_config:
              common_config:
                enabled:
                  default_value: false
                  runtime_key: request_compressor_enabled
            compressor_library:
              name: text_optimized
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
                compression_level: COMPRESSION_LEVEL_4
                compression_strategy: DEFAULT_STRATEGY


Ignore EPIPE and ECONNRESET errors from stdin

Fixes #34.
Thanks.

Coverage decreased (-0.43%) to 99.57% when pulling 991600b881adf63a34bf3b7e5b3c52f5f084cac9 on SystemParadox:34-fix-epipe-error into 60545fb4197315ad74b9e03303f2a2c03bcf1042 on peerigon:master.

Thx for reporting this.
It seems like this is a Linux problem because it does not occur on OSX. My assumption is that Phantomjs receives the SIGINT signal and handles it by itself. Thus it is not necessary that phridge also tries to shutdown the process.
However, I don't like to just silently ignore errors, because that is usually just a quickfix and will haunt you when you try to debug something without getting an error :)
I think I'll rewrite your PR so that phridge only ignores these errors when a SIGINT is received.
Why do you also ignore ECONNRESET? This error does not occur in my test setup...

As discussed in #34, Linux shells tend to group child processes into 'process groups'. When the shell gets a ctrl-c, it doesn't just send it to the current foreground process, it sends it to the entire process group, which means the children receive it as well. If you send the signal with kill -SIGINT this doesn't happen, it's just a shell thing. However, this is an aside- it's just a symptom of a wider problem - which is that phridge throws uncaught EPIPE/ECONNRESET exceptions if the phantomJS process dies.
I agree entirely about not silently ignoring errors :). HOWEVER, in this case I believe that this may quite likely be the correct behaviour. EPIPE/ECONNRESET are fired because the process has died - it's just not been cleaned up because process.on('exit') hasn't fired yet.
This can only be solved in one of the following ways:

Find a way to guarantee that exit fires before EPIPE/ECONNRESET and either clean up so that they never fire or set a flag so that they will be ignored from that point.
Ignore EPIPE/ECONNRESET with the expectation that exit will fire to clean everything up
Treat EPIPE/ECONNRESET/exit all the same. Cleanup, then ignore further events.

Setting to ignore only once a SIGINT is received doesn't handle the case when just phantomJS is killed.
I didn't notice ECONNRESET until I started writing the tests - where I ended up randomly getting EPIPE or ECONNRESET about 50:50. I am not sure whether I have also seen this outside of the mocha test cases or not. That one probably does need more investigation.
Thanks.

I should say that if you wish to reproduce the wider test case, start a node process which runs phridge to create a phantomJS, then kill (SIGTERM, SIGINT, SIGKILL, whatever) the phantomJS, and then allow node to run phantom.dispose(). It causes node to die horribly with EPIPE errors from nowhere.

Yeah, I guess you're right.

Setting to ignore only once a SIGINT is received doesn't handle the case when just phantomJS is killed.

When is this case? I think, this should never be the case under normal circumstances...

Probably not under normal circumstances. However, if I do killall phantomjs I would expect the node process to spawn another one, not die with an uncaught exception from nowhere.
If a phantomJS process dies, it makes sense for any tasks it was running to return errors. But the errors should be specific to those requests - they shouldn't blow up the whole server.
Possibly phridge or the phantomjs object should also emit some kind of error, but it needs to be a clear, documented, catchable error so that a server-type process can catch it, print a warning, spawn a new instance and carry on.

:+1: I get ECONNRESET if phantom process is killed while evaluating a page, this would fix it

Could you guys check out the current master? I've improved the error handling.
I don't like to discard errors. That's why I've written an error handler which waits 300ms for the process to shut down. If that's not the case, the error is emitted on the Phantom instance where the developer is able to catch it. If the error is not handled, node throws it.

Glad to see stdin/stdout/etc are now using _onUnexpectedError and rejecting deferreds on the Phantom object instead of throwing errors from undocumented internals. That's a big improvement :)
However, I think the timeout is fragile and confusing and just introduces race conditions.

What if my process takes longer than 300ms to exit?
What if my process caught the SIGINT and decided not to exit at all?

I really think you should just remove this. To my mind, there are only 3 places when we care about errors:

I am waiting for a promise to resolve and an error occurs
I try to initiate a call and an error occurs
I try to initiate a call but that process has already errored/closed/disposed. If the specific error has already been thrown to a previous listener, this should probably just be the instance is already disposed error. But if the error occured when no-one was listening, it should be stored and thrown to the first person who cares about it.

Errors should only be thrown synchronously when calls are made or by rejecting promises. There should never be an uncaught error. We should not be using EventEmitter and expecting the user to listen for 'out-of-band' errors.
If an error occurs when no-one is listening, it should be stored and thrown to the first person who cares about it
If an error occurs when no-one is listening, and no valid call ever gets made for it to be thrown to, then we are clearly shutting down and don't care
dispose() should completely ignore any errors that may occur if the process has already been terminated or is in the process of doing so

Thanks.

Thx for reading through the source code and for providing feedback. That's why I didn't just publish a new version :grinning:
I have to admit, using a timeout seems a bit hacky, but I don't think that it's too fragile. It basically just says: "Ok, I'll wait 300ms for the process to exit (e.g. because a SIGTERM was received and the process is busy shutting down). In that case we don't want to report anything because the error was kind of expected. After that delay we emit the error and pass responsibility back to the user, because we ahve to assume that it was not expected".
To answer your questions:

What if my process takes longer than 300ms to exit?

Than you have to handle the error event in order to prevent the process to crash. It's just an assumption that most applications are able to exit within 300ms.

What if my process caught the SIGINT and decided not to exit at all?

Again, than you have to handle the error event.

Errors should only be thrown synchronously when calls are made or by rejecting promises. There should never be an uncaught error. We should not be using EventEmitter and expecting the user to listen for 'out-of-band' errors.

I don't think that this is true. There are error conditions without explicit calls, like receiving SIGTERM from "the outside". Using an error event for these situations is kind of nodejs standard.

If an error occurs when no-one is listening, it should be stored and thrown to the first person who cares about it

I don't think that this is a good behavior. The error would be completely out of context. Imho it's best practice to report errors as soon as possible – and within the correct context.

dispose() should completely ignore any errors that may occur if the process has already been terminated or is in the process of doing so

Agreed. The current solution does that already.

There are error conditions without explicit calls, like receiving SIGTERM from "the outside". Using an error event for these situations is kind of nodejs standard.

A SIGTERM/SIGINT/SIGWHATEVER is an event, not an error. If a process is told to exit by the sysadmin, operating system, etc, I don't consider that to be an error. We could be shutting down. It's only an error if you then try to use this process.

The error would be completely out of context. Imho it's best practice to report errors as soon as possible – and within the correct context.

This is my issue with the timeout approach. It feels like the error is out of context, since it's not being thrown immediately (I realise my "storing the error and throwing it to the next caller" approach has the same issue, but at least it was given to someone who cares about it, and likely within the context of a request which will almost certainly have its own error handler rather than crashing the whole process).
If you are going to throw errors EventEmitter-style, this will need to be very clearly documented as something the user has to think about. To me it seems that throwing a timeout into the mix here just makes things more complicated. The purpose of the timeout is to decrease the number of things the user has to think about, so that the user doesn't need to care about random errors occuring for the simple case of SIGINT/SIGTERM to process groups. But we haven't helped the situation for anyone. All we've done is made the error unreliable - we've introduced a race condition. Everyone has to read the documentation and handle the possible error because it could happen in production even if it works fine in development/testing. If the machine is slow or busy, you might get an unexpected crash.
What we've done is taken a possible uncaught error that everyone has to deal with and made it more complicated. Everyone still has to handle it because it still might happen. Except now it's 300ms late and unreliable.
I agree that it would be nice to handle this process group issue for SIGINT/SIGTERM so that most users don't have to think about it, but I don't think there is any way to distinguish this case. This leaves only two options:

Only throw errors which affect a call (either in progress or one made against an errored process)
Clearly document that random uncaught errors may occur when a phantom process is killed, particularly with reference to the process group case when pressing ctrl-c. Everyone has to handle them, and all of us will probably just ignore them or print them as warnings because we can't tell the difference either.

I agree to all of your arguments. Adding a timeout only makes it easier for the group of users who are lucky to have a process which exits within 300ms :wink:.
What about a mixture of both options? We could emit an unexpectedExit-event which is emitted as soon as PhantomJS is unusable. This way we'll give the user the chance to handle this (rather unlikely) situation immediately. However, sending SIGINT/SIGTERM to the process group won't throw an error anymore.
Of course, this needs to be documented in the README.

An opt-in error handler sounds like a good idea to me. So by default it won't crash the process. Any pending promises will be rejected, and any new calls will throw the "already exited" error. If the process is exiting when the user didn't expect for some reason, they can investigate by listening to the unexpectedExit event.
Am I right in assuming that with this approach you would be removing the timeout and that error events would never be emitted?
When rejecting promises or throwing the "already exited" error, it would be nice to either throw the error that caused it, or possibly better, attach the original error as a property on the error that gets thrown.
Thanks very much :)

Am I right in assuming that with this approach you would be removing the timeout and that error events would never be emitted?

Error events on childProcess and its streams will still be emitted, but they won't crash the process anymore because phridge attaches a listener for it.

When rejecting promises or throwing the "already exited" error, it would be nice to either throw the error that caused it, or possibly better, attach the original error as a property on the error that gets thrown.

Yes, I'll do that, but I'm afraid they won't be very helpful either, like Error: write EPIPE :wink:

Just published this with v1.2.0


Introduce a new test to verify multi-line parsed import.sql scripts

This seems to work fine already; doesn't work in Quarkus for some reason.

Thanks


Fix failing test

new serialization on the console side puts the promql labels in alpha…betical order; adapting for now, pending revisiting these tests later

merged into refactor-api PR, and green in the test rc PR


Train pnet error

.\dface\core\models.py:9: UserWarning: nn.init.constant is now deprecated in favor of nn.init.constant_.
nn.init.constant(m.bias, 0.1)
Traceback (most recent call last):
File "g:/mtcnn/dface/train_net/train_p_net.py", line 92, in
use_cuda=args.use_cuda)
File "g:/mtcnn/dface/train_net/train_p_net.py", line 30, in train_net
use_cuda=use_cuda)
File ".\dface\train_net\train.py", line 92, in train_pnet
show1 = accuracy.data.tolist()[0]
TypeError: 'float' object is not subscriptable

Got it?

I had the same problem. Have you solved it?


Merge pull request #51 from moxie-lean/develop

v0.1.5

Closing this one since was made to set up PR travis.


Allow setting partial row timeout instead of using the default value (60 secs).

https://github.com/GoogleCloudPlatform/cloud-bigtable-client/pull/453


Create functions to rename corpus, lists, and TMmodels

Done for topic models

Work on this once other Design related issues have been solved out


[Maintenance] Use correct LICENSE attribution

this is a non-impactful but significant issue which deals with usage of proper attributions/license(s) used throughout the project, below are the tasks that need to properly close this issue:

[x] need to update the repository LICENSE to comply with Open Science standards. a suitable candidate would be CC0 license but need to wisely read and pick the proper attributed one. it would be much nicer if we could provide proper attributions and related resources to better help contributors and community alike to understand why we are opting with this particular license over other Open Source licenses. more information can be found here at Choose an open source license, NASA TOPS GitHub and maybe CreativeCommons website.

based on some thorough analysis and research, turns out the CC0 license is better suited for our use case and has been added to the project. please refer to the above reference links for better explanation.


WIP: Update the ReportDataSource CRD to use the OpenAPI V3 schema validation.

/retest

/retest

Tests were failing due to a redundant anyOf sub-schema (missing a sub-schema definition for prestoTable), and not updating the prestoTable.tableRef property to be of type: object with a name field.

e2e tests are finally passing, and this should be ready to reviewed

Whoops

Looks like e2e tests are passing, so this should be ready for another review.

/lgtm
/approve


New rule request: union subtypes with conflicting field value type

Is your feature request related to a problem? Please describe.
When 2 subtypes of the same union type share a field but with a different value type, it's possible to run into query-time errors like below if the client doesn't alias the field with conflicting value types:

Minimal reproducible setup where a Book is either a Novel or a Poem but their id field is Drn and Int respectively.
Sample schema
type Drn {
  country: String
  id: String
}

type Poem {
  id: Int
  title: String
  author: String
}

type Novel {
  id: Drn
  title: String
  author: String
}

union Book = Poem | Novel

type Query {
  books: [Book]
}

Describe the solution you'd like
Creating such scenario in a schema isn't forbidden per se but it would be nice to have the option of enforcing a linting rule preventing it in the first place. The rule would suggest renaming the field(s) in the conflicting subtype(s).
Describe alternatives you've considered
apollographql/eslint-plugin-graphql but the tool is also missing a rule for this scenario.
Additional context

–

Accepted, this seems could be fixed by integrating federation validation rules into graphql-eslint https://github.com/dimaMachina/graphql-eslint/issues/1824
If somebody want to give a try to integrate it, feel free, i’ll review it

@caccialdo After some searching, seems your lint error in Apollo Studio goes not from federation rules but from graphql-js rules, use @graphql-eslint/overlapping-fields-can-be-merged rule and you can try it in playground https://the-guild.dev/graphql/eslint/play?or=overlapping-fields-can-be-merged

Thanks @dimaMachina ! It does look like this is the linting rule used in the playground indeed (cf. original screenshot in the ticket description). I'll look into leveraging it in our clients.
I think the feature request is still valid though as enforcing it on the server-side at the schema level (vs. operation level) would be valuable for clients lacking linting capabilities.

@caccialdo this rule is accepted, if you want you can work on it and send a PR

Thanks! I'll give it a shot in the new year if nobody attempts it before me


Str::singular turns Meta into Metum

Laravel Version: 5.7.12
PHP Version: 7.2.5
Database Driver & Version: MySQL 5.7.22

Description:
As mentioned in https://github.com/laravel/nova-issues/issues/918, Meta is always 'singularized' to Metum, causing issues in Nova land.
After digging through the code, I believe this to be the fault of Doctrine's Pluralizer::singular method which Str::singular defers to, so I'm unsure what could be done in Laravel land.
As you can see in https://github.com/laravel/nova-issues/issues/918#issuecomment-434813148, I have managed to work around this with the arguments passed through to the second and third arguments to the HasMany relationship.
Steps To Reproduce:
routes/web.php, add the following code:
Route::get('test', function() {
    return \Illuminate\Support\Str::singular('Meta');
});

Visit laravel.test/test, see Metum.

Laravel uses the Doctrine inflector for pluralizing/singularizing so you'll need to raise an issue there: https://github.com/doctrine/inflector

Thanks @driesvints, have done.


Adjust character name validation

About the PR
As requested by Debug, I'm reflecting this PR up to Nyanotrasen as well. Here is a brief summary of what this does:

Numeric digits are no longer permitted in character names
The following Unicode blocks have been added to list of whitelisted characters:

Latin-1 Supplement: Letters I
Latin-1 Supplement: Letters II
Latin-1 Supplement: Letters III
Latin Extended A: European Latin

Media

Changelog

:cl: Fireheart

tweak: Adjusted character name validation

Looks good, consider upstreaming.


Bump Ui-Kit

update ui-kit version to enable QA testing

Codecov Report
Patch and project coverage have no change.

Comparison is base (5e02397) 41.63% compared to head (575fe82) 41.63%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #491   +/-   ##
=======================================
  Coverage   41.63%   41.63%
=======================================
  Files          15       15
  Lines        1064     1064
=======================================
  Hits          443      443
  Misses        575      575
  Partials       46       46

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


feat: add neo-tree support

This update will enable integration with neo-tree if it is installed.

Would love to see this addition - thanks @cseickel!

Personally before discovering the typescript-tools.nvim project, I didn't know this project at all but I really like it.
I hope this PR will quickly merge to be able to take full advantage of the automatic renaming of imports ^^
Thanks @cseickel for the support ! :purple_heart:

@cseickel might be good to add a link to this plugin to neo-tree readme or wiki. So there will be a way for people to learn about your awesome contribution


NS and A record can both exist for 1 domain?

in README.md:

NS record for auth.example.org pointing to auth.example.org (this means, that auth.example.org is responsible for any *.auth.example.org records)
A record for auth.example.org pointing to <IP_ADDRESS>

seems the doc above assumes that for the domain: auth.example.org, NS record and A record can exist at the same time, but in Cloudflare, I failed to do so.
After add an A record for my domain: my-dns-server.xxx.com, I failed to add NS record for it, the error is: non-NS records already exists with that host. (Code: 81055)

In Cloudflare, I have 2 records:

type
name
content

NS
acme-dns
ns.acme-dns.example.com

A
ns.acme-dns
<IP_ADDRESS>

In acme-dns' config file, I have 3 records:
# default A
"acme-dns.example.com. A <IP_ADDRESS>",
# A
"ns.acme-dns.example.com. A <IP_ADDRESS>",
# NS
"acme-dns.example.com. NS ns.acme-dns.example.com."

This is based on the older setup instructions, but this has worked for several years and works with the current codebase.
A lot more people seem to have issues with the current setup instructions than the older ones (which also caused issues)

Thanks @jvanasco . I am one of the people who is confused by the instructions, but I blame my lack of knowledge and experience, not necessarily the instructions.
Can you provide your insights on the naming convention for these entries? I have changed them around based on what makes sense to me, but I am trying to learn why this might NOT be correct:

type
name
content
question/comment

NS
ns1.acme-dns
acme-dns.example.com
I would have thought the NS record name would have a value of NS in the name, and content contain the value "acme-dns.example.com". As way of contrast, the content value could have been "banana.example.com", which would not make any sense to most people, but I would know that the banana subdomain is where my DNS server resides. Is there a reason why this naming approach is opposite in your cloudflare example?

A
acme-dns
<IP_ADDRESS>
Again, this record is the subdomain pointing to a particular IP, which should represent a particular machine. If I name this A record "banana", it does not really matter if the machine at that IP is running a DNS server, or database server, or whatever. I thought it was the NS record that says "the device at 'acme-dns.example.com' (which is a machine running on <IP_ADDRESS> as specified through this A record) should expect to find a name server there that will respond to DNS queries". Or another way I interpret this, "I am an NS record named 'ns1.acme-dns.example.com'.  Am I way off base here on how these DNS Records work?

This all matters because I get confused with what the values should be provided in the config.cfg file. From the instructions:
# domain name to serve the requests off of
domain = "auth.example.org"
# zone name server
nsname = "auth.example.org"`

Based on the NS and A records from your cloudflare example, I would guess the values would be:
domain = "ns.acme-dns.example.com"
nsname = "acme-dns.example.com"

which further confuses me. Did I misunderstand how these pieces fit together?
I appreciate your assistance in helping me understand. I have read so much on this, I think I have just confused myself (RFC-1034, RFC-1035, RFC-2606, RFC-4367, RFC-2219, and tons of blogs, write-ups, and unhelpful youtube videos!).
Thanks again for your insights.

Here is the read me at an earlier version, which uses these names and has descriptions :
https://github.com/joohoi/acme-dns/blob/0991b3e3c9f1dc56c596e05af149820c02bfd89e/README.md
It was changed to the new names for clarity, but I find this set of instructions easier.

Following up after more investigation and documenting what I learned so future confused people can hopefully benefit.
The way I have been thinking about how NS records work is in fact incorrect. The critical assumption here is that acme-dns.example.com not only specifies a subdomain, but also represents a DNS sub-zone that will be independently managed (i.e. a separate name server) which will be responsible for that subdomain. This implies that everything at acme-dns.example.com, including additional sub-domains (i.e. www.acme-dns.example.com, or foo.bar.acme.dns.example.com) would be managed by this other nameserver that will be identified in the NS record. This is what we want, and exactly what @joohoi states in his instructions.
DNS servers process in a series of recursions that work through referrals. NS records ARE the referrals. So to resolve acme-dns.example.com we would start with root nameservers that have NS records that refer to top level domains (TLDs), such as "com.", "net.", "org,", etc. The root nameservers do not contain records for our specific acme-dns.example.com, but they have referrals (NS Records) to nameservers for com., matching the first part of our query (the farthest to the right). Now the server will re-query for acme-dns.example.com to just the com. nameservers. The com. nameservers will have a NS record for example which will be another referral to nameservers responsible for example.com. This will repeat again, querying for acme-dns.example.com to the nameserver(s) responsible for example.com domain until it finds acme-dns.example.com.
This recursion will continue until it a) finds an appropriate A record, known as a "glue record", which will point to the corresponding IP address and successfully resolve the query; or b) responds with NXDOMAIN (non-existent domain) because there were no more referrals (NS records) and no A records to successfully resolve the query.
Going back to our examples above, here is my revised commentary:

Type
Name
Content
Comment

NS
acme-dns
ns1.acme-dns.example.com
The name field needs to specify the subdomain we want to manage separately, the content field needs to specify the DNS name where we can find the new nameserver. We can interpret this as "for the subdomain of 'acme-dns.example.com', use the nameserver called 'ns1.acme-dns.example.com' to resolve your queries".

A
ns1.acme-dns
<IP_ADDRESS>
We have to resolve where the NS record is pointing to (in this case ns1.acme-dns.example.com), so create the glue record so DNS queries know what IP address to respond with when looking for acme-dns.example.com

If you setup a new nameserver, you have to create a glue record (A record) for that NS entry, otherwise you will create a circular reference (an endless loop) in your DNS entries. Specifying the A record will avoid the loop and allow DNS queries to resolve correctly.
I know that @jvanasco and @joohoi have explained what the configuration settings should be, hopefully my sharing what I learned will help others understand why the settings need to be the way they are.

I think the critical point here is the NS records can only be FQDN entries not IP addresses.  So, you have to specify a FQDN for the NS record.
That FQDN could be anything, but ideally another A record that you manage and can point to the IP address that is hosting the acme-dns DNS service (i.e. the service sitting behind port 53).
For example:
$ dig google.com. ns
...
;; ANSWER SECTION:
google.com.             7160    IN      NS      ns4.google.com.
google.com.             7160    IN      NS      ns1.google.com.
google.com.             7160    IN      NS      ns2.google.com.
google.com.             7160    IN      NS      ns3.google.com.

Then, taking ns1.google.com as example:
$ dig ns1.google.com. A
...
;; ANSWER SECTION:
ns1.google.com.         7192    IN      A       <IP_ADDRESS>

So, if google had a subdomain acme-dns.google.com there would be an NS record for that subdomain which could be anything and intern resolve to the appropriate IP address with the acme-dns service running.
Hope that helps to clarify some more.

Hi @DiveInto just now I experienced the same thing, and I managed to find a way by deleting existing records before you add NS records. Make sure the existing records value has been applied in the new domain mager (delegated).

Okay, so I'm trying to set this up myself and still have related questions:
First of all, I don't see how creating the NS record for auth.example.org pointing to auth.example.org is any "simpler" than pointing it to ns1.auth.example.org since you still need the A record pointing to the public IP anyway, other than saving a couple of keystrokes. In fact, it seems to me that the ns1.auth.example.org version actually makes the entire flow of DNS resolution more clear in the long run. The version that points directly back to itself (auth.example.org -> auth.example.org) presents a loop in the logic in my mind, which I actually ran up against in my second point/question:
Secondly, my DNS host would not allow me to set up the NS record as defined in the current README (auth.example.org. 86400 IN NS auth.example.org.) because, when they tried to test that configuration with my A record set up to point to my ACME-DNS server's public IP address, it resulted in an infinite loop of DNS lookups:

Current DNS query (auth.example.org. 86400 IN A <IP_ADDRESS>):
Client -> query goes to Registrar -> Registrar delegated the zone to DNS Host -> DNS Host DNS servers display the A record <IP_ADDRESS>
DNS query with NS record (auth.example.org. 86400 IN NS auth.example.org.):
Client -> query goes to Registrar-> Registrar delegated the zone to DNS Host -> DNS Host DNS servers delegates the subdomain to auth.example.org -> and then it returns to the Registrar for the root domain and loops infinitely

By creating the A record as ns1.auth.example.org. 86400 IN A <IP_ADDRESS> and the NS record pointing to that as auth.example.org. 86400 IN NS ns1.auth.example.org., it should "loop" once, but prevent the infinite recursion b/c the second lookup will actually be for ns1.auth.example.org instead of asking again for just auth.example.org. I believe the ns1.xxx.xxx.xxx method is a more reliable way overall to ensure that the DNS host is able to avoid such infinite loop scenarios. Is there something simply inherent in the way that certain DNS servers/resolvers operate differently than others that causes this recursion issue, or am I just being dense?
Finally, and somewhat tangentially, my (limited) understanding is that the A record created in this process acts as a "glue" record. Now, I readily admit that I'm far from having an in-depth knowledge of DNS, so I'm still looking for a satisfying answer of what a "glue" record is, exactly, and, more importantly to me at this point is, is there any difference between creating a "glue" record and any other A record for the zone. Or, to ask it another way, if I were to look at just the "glue" record and another A record in the zone, could I tell a difference (besides the specific details about the host, target, and TTL)?
i.e.,  I don't see anything "special" that I have to do before, after, or during the creation of the A record to flag it as a "glue" record. Unless it's simply that this particular (regular, old) A record exists in the zone to resolve the target of the NS record, and that's the only thing that identifies it as a "glue" record instead of any other, run-of-the-mill A record. If someone could please confirm/clarify this for me just so I can stop Googling, I'd greatly appreciate it.

Pretty sure you just need the NS record, which in turn delegates the lookup (including the A record) to the acme-dns service for that whole subdomain.

Thanks for pointing out my less-than-clear explanation above, @webprofusion-chrisc and sorry for the confusion. The zone file I posted is for the main/root domain (with my DNS hosting service). I was trying to get some clarity regarding the specific DNS records required with the DNS host/resolver for the root of the domain, including the glue record pointing to the nameserver that will be hosted by my local ACME-DNS installation.
From what I understood reading the current README.md, it says to create the A record without the ns1 prefix (auth.example.org) and the NS record pointed to that A record on the DNS server where the main/root domain is being resolved. However, my DNS host tells me that it can't be done like that (ref. the second section in my previous post). That's why it looks like the instructions for this process from the previous version of the README posted by @jvanasco seem like a more "accurate"/"reliable" configuration.
Just for additional reference, I have the ACME-DNS server configured with the A record for the delegated auth.example.org subdomain:
[general]
# DNS interface. Note that systemd-resolved may reserve port 53 on <IP_ADDRESS>
# In this case acme-dns will error out and you will need to define the listening interface
# for example: listen = "<IP_ADDRESS>:53"
listen = "<IP_ADDRESS>:53"

# protocol, "both", "both4", "both6", "udp", "udp4", "udp6" or "tcp", "tcp4", "tcp6"
protocol = "both"

# domain name to serve the requests off of
domain = "auth.example.org"

# zone name server
nsname = "ns1.auth.example.org"

# admin email address, where @ is substituted with .
nsadmin = "dnsadmin.example.org"

# predefined records served in addition to the TXT
records = [
    # domain pointing to the public IP of your acme-dns server
    "auth.example.org. A <IP_ADDRESS>",
    "ns1.auth.example.org. A <IP_ADDRESS>",
    # specify that auth.example.org will resolve any *.auth.example.org records
    "auth.example.org. NS ns1.auth.example.org.",
]

I hope that helps to clarify what I was trying to ask. Please let me know if I can provide any more detail, and thanks again.

Okay. Please let me know if I'm completely off-base here but I believe I'm finally starting to fully understand what I'll need to do from start to finish with regards to configuration (at least in my environment). Here's basically what I've come up with:

DNS Records
NOTE: In this documentation:

example.org is the root domain you are managing (either through your own or third-party-hosted DNS services)
(optional) ftp.example.org is a subdomain for which you want acme-dns to serve and process ACME DNS-01 challenges
auth.example.org is the hostname of your acme-dns server
acme-dns will serve *.auth.example.org records
<IP_ADDRESS> is the public IP address of the system running acme-dns
These values should be changed based on your environment.

First, you will need to add some DNS records on the main DNS server for example.org:

Create an NS record for auth.example.org pointing to ns1.auth.example.org (this means, that ns1.auth.example.org is responsible for resolving any/all *.auth.example.org requests)

example: auth.example.org. 86400 IN NS ns1.auth.example.org.

Create an A record for ns1.auth.example.org pointing to <IP_ADDRESS> (this is the "glue" record that prevents the DNS lookup from looping indefinitely)

example: ns1.auth.example.org. 86400 IN A <IP_ADDRESS>

If you're using IPv6, create an AAAA record for ns1.auth.example.org pointing to the IPv6 address of your acme-dns server

example: ns1.auth.example.org. 86400 IN AAAA ::ffff:c633:6401

After you've completed the registration, you will also need to create one or more CNAME records pointing to the acme-dns subdomain the registration generates

The ACME client you use will provide additional details on how to get this "ACME Magic" subdomain for the target of these CNAME records.
For the root domain or a wildcard domain:
_acme-challenge.example.org. CNAME a097455b-52cc-4569-90c8-7a4b97c6eba8.auth.example.org
For each subdomain (e.g., ftp.example.org):
_acme-challenge.ftp.example.org. CNAME a097455b-52cc-4569-90c8-7a4b97c6eba8.auth.example.org

Configuration
Sample config.cfg file
[general]
# DNS interface. Note that systemd-resolved may reserve port 53 on <IP_ADDRESS>
# In this case acme-dns will error out and you will need to define the listening interface
# for example: listen = "<IP_ADDRESS>:53"
listen = "<IP_ADDRESS>:53"
# protocol, "both", "both4", "both6", "udp", "udp4", "udp6" or "tcp", "tcp4", "tcp6"
protocol = "both"
# domain name to serve the requests off of
domain = "auth.example.org"
# zone name server
nsname = "ns1.auth.example.org"
# admin email address, where @ is substituted with .
nsadmin = "dnsadmin.example.org"
# predefined records served in addition to the TXT
records = [
    # domain pointing to the public IP of your acme-dns server
    "auth.example.org. A <IP_ADDRESS>",
    "ns1.auth.example.org. A <IP_ADDRESS>",
    # specify that auth.example.org will resolve any *.auth.example.org records
    "auth.example.org. NS ns1.auth.example.org.",
]
[snip]

Usage (self-hosted acme-dns server)

Get credentials and unique subdomain (simple POST request to http://auth.example.org/register)

One "gotcha" I believe I see in this process (and, I could certainly be wrong or simply over-thinking things) is with regards to the registration on the self-hosted acme-dns server. If I'm correct in my assumptions, I'll need to do that registration through my server - i.e., I can't register on auth.acme-dns.io and use those credentials on my self-hosted acme-dns server.

Let me try to clarify this. Basically there are two ways the DNS setup can work work.
Options 1: your server's primary name is "acme.example.com".   You then delegate the domain "acme.example.com" to this server, whose name also happens to be "acme.example.com" (yes that seems weird, but it is perfectly valid).
This delegation allows your server to respond to DNS queries for both acme.example.com and <subdomain>.acme.example.com
To configure this, in the parent domain (example.com), you need to insert an NS record for the delegation:
acme.example.com.   NS   acme.example.com.

You also need to insert glue record(s) into the parent domain, so that a resolver chasing the referral can solve the "chicken-and-egg" problem of needing the nameserver's IP address before it can do the resolution of name to IP address.
acme.example.com.  A    <IP_ADDRESS>
acme.example.com.  AAAA 2001:db8::1

Then, on the acme-dns server itself, you also need to hold the authoritative, identical copy of all these records:
domain = "acme.example.com"
records = [
    "acme.example.com. NS acme.example.com.",
    "acme.example.com. A <IP_ADDRESS>",
    "acme.example.com. AAAA 2001:db8::1",
]

This is because the values in the parent zone are, in effect, just hints to the resolver.  The resolver will use them to locate the authoritative nameserver, but will only return an answer fetched from the authoritative server itself.
You should also put the corresponding settings in the SOA record, although these don't really make much difference in practice, you're just documenting things for a human to see:
nsname = "acme.example.com"
nsadmin = "hostmaster.example.com"

This is the way the configuration in the documentation works.  And of course, the API endpoint is https://acme.example.com
Option 2: the acme-dns server has a different name outside of this zone, for example nsa.example.net
In this case, the name nsa.example.net has been set up to resolve to IPv4 and/or IPv6 addresses already.  So you just need a simple delegation with no glue:
acme.example.com.   NS   nsa.example.net.

Within the zone, you still need to return these records:
domain = "acme.example.com"
records = [
    "acme.example.com. NS nsa.example.net.",
    "acme.example.com. A <IP_ADDRESS>",
    "acme.example.com. AAAA 2001:db8::1",
]

This is because we still need acme.example.com to resolve to the right address for the API endpoint https://acme.example.com, and we need an authoritative in-zone copy of the NS record.
Here are the matching SOA settings, again not really important:
nsname = "nsa.example.net"
nsadmin = "hostmaster.example.com"

Now, in this case you might think that https://nsa.example.net would also work as the API endpoint, because it resolves to the same IP address - but it doesn't.  This is firstly because acme-dns only fetches a certificate for "acme.example.com"; it's unable to fetch one for nsa.example.net (well, maybe it could using a http-01 challenge, but it doesn't).  And secondly, when an incoming https connection arrives, acme-dns looks at the Server Name Indication for the hostname that the client is trying to connect to, and when it sees the user is trying to talk to a host other than "acme.example.com" it drops the connection on the floor.

If I'm correct in my assumptions, I'll need to do that registration through my server - i.e., I can't register on auth.acme-dns.io and use those credentials on my self-hosted acme-dns server

It's either/or.
If you register on auth.acme-dns.io, then you put CNAME records pointing at <subdomain>.auth.acme-dns.io, and you send your DNS updates to the API auth.acme-dns.io.  The subdomain, username and password are all the ones which were returned from auth.acme-dns.io when you registered.
If you register on acme.selfhosted.com, then you put CNAME records pointing at <subdomain>.acme.selfhosted.com, and you send your DNS updates to the API at acme.selfhosted.com. The subdomain, username and password are all the ones which were returned from acme.selfhosted.com when you registered.
It has to work like this: the same server that you registered with is the same one that's checking the username and password when you connect, against what's in its local database (postgres or sqlite).  There's no crossover between these, because the databases aren't connected.

Hi,
I've tried creating an A record for ns.acme.example.com to a public IP and NS record for acme.example.com pointing to ns.acme.example.com as mentioned above. However, the NS record was not getting propagated at all. (I've waited for 2 days)
DNS provider tested : Cloudflare, Hurricane electric
Can anyone please advise how to get this working?  Thank you

Firstly, please don't hijack an existing issue with a new problem.
Secondly, I recommend you follow option 1 in the post above, especially if you don't really understand DNS.  What you should do is in the master nameserver for the "example.com" zone, add an A record for "acme.example.com" pointing to a public IP and an NS record for "acme.example.com" pointing to "acme.example.com".
Don't attempt to use ns.acme.example.com as the name of the acme-dns server unless you fully understand DNS delegations and glue records. And unless you tell us the actual domain rather than "example.com", we can't give you any more specific advice.

Hi @candlerb
Thanks for your reply and guidance.
I went back with Hurricane Electric which allows me to use option 1, after solving the default listen: <IP_ADDRESS>:53, it is now working as expected.
P.S. The reason I created ns.acme.example.com and acme.example.com because this is how auth.acme-dns.io set-up.
dig +short auth.acme-dns.io ns
ns.auth.acme-dns.io.

Here is the read me at an earlier version, which uses these names and has descriptions :
https://github.com/joohoi/acme-dns/blob/0991b3e3c9f1dc56c596e05af149820c02bfd89e/README.md
It was changed to the new names for clarity, but I find this set of instructions easier.

Agreed; much easier explanation - I actually got it to work now.
The current example leads to believe that everything should be tied to auth.example.org.
Thank you for resolving HOURS of diagnostication .. what also helped (and might help others) was this little tool: https://dig.ping.pe/
E.g., https://dig.ping.pe/965d5223-c904-43e9-860e-b64fce111f71.auth.example.org:TXT:<IP_ADDRESS> returned Status: NXDOMAIN but after your clearer finding, now returns 965d5223-c904-43e9-860e-b64fce111f71.auth.example.org. 1 IN TXT "EOiXmyLVFGDxLAGz7yYjVdEjZC6NefLfgWdO8xIzdkW"
https://dig.ping.pe/965d5223-c904-43e9-860e-b64fce111f71.auth.example.org:TXT:<IP_ADDRESS>
Note: auth.example.org should of course be changed with your domain name; this was just for clarity and link into current and previous documentation as highlighted by @jvanasco


Request: Add SQLite to available features

Can we please have a new feature added in the list of possible options to have SQLite installed.
The popular VSCode SQLite extension does not work and requires SQLite to be installed, it would be nicer and neater to install this via the features section in the devcontainer.json file, than having to manually install it.
VSCode SQLite Extension
https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite
Install
sudo apt-get update
sudo apt install sqlite3

I had a message from @jkeech on the community DevContainer Slack

We'd love for the community to build this feature

So with that in mind, I think I will try to create my first feature and see how the Developer Experience is like 😄

Released this here if anyone comes across this issue in the future.
https://github.com/warrenbuckley/codespace-features#sqlite-sqlite
"features": {
  "ghcr.io/warrenbuckley/codespace-features/sqlite:latest": {}
}


Add Application Configuration

Fixes #82
Fixes #51
Adds ApplicationConfiguration as an ASP.NET Core ConfigurationProvider

This also fails at the same code-formatting step when there are changes needed to be committed.

Yea, feels like we need to back that out for right now and revisit the
configuration of that step
Jeff
On Thu, Sep 7, 2023 at 1:28 PM Stelzi79 @.***> wrote:

This also fails at the same code-formatting step when there are changes
needed to be committed.
—
Reply to this email directly, view it on GitHub
https://github.com/FritzAndFriends/TagzApp/pull/197#issuecomment-1710530886,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAATF4ITIAH37NUZQSJYRATXZH72RANCNFSM6AAAAAA4PHHBEA
.
You are receiving this because you authored the thread.Message ID:
@.***>


Add numeric fused head dataset

Adding the NFH: Numeric Fused Head dataset.
Everything looks sensible and I've included both the identification and resolution tasks. I haven't personally used this dataset in my research so am unable to specify what the default configuration / supervised keys should be.
I've filled out the basic info on the model card to the best of my knowledge but it's a little tricky to understand exactly what the fields represent.
Dataset author: @yanaiela

Thanks for adding this @ghomasHudson!
I added some comments for some of the fields.
Also, I'm not sure about this since I haven't used the library yet, but maybe it's worth adding the identification and resolution as two separate datasets?

Thanks for replying - I hope this will make your dataset more accessible to a wider audience - I've added the changes to the model card you suggested.
In terms of the identification and resolution tasks, I've currently added them as separate splits in huggingface/datasets so you can load identification like this:
import datasets
dataset = datasets.load_dataset("numeric_fused_head", "identification")
print(dataset["train"][0])
>> {"tokens": ["The", "quick", "brown", "fox",....] "start_index": 11, "end_index": 12, "label": 0}

And resolution like this:
import datasets
dataset = datasets.load_dataset("numeric_fused_head", "resolution")
print(dataset["train"][0])
>> {"tokens": ["The", "quick", "brown", "fox",....] "head": ["AGE"], "anchors_indices": [12], ...}

I hope so too, thanks!
Re the splits, that makes sense to me.


fix(runtime-core): skip traverse DOM Node

fix #3638

should already been fixed by 62b8f4a39ca56b48a8c8fdf7e200cb80735e16ae (which is more strict since it excludes all browser native objects)


About the relocation function

Did you though about implementing the currently unimplemented LMDB mdb_set_relfunc?
I though about that because in Rust (and probably a whole lot other languages) interpreting a type that is not correctly aligned is undefined behavior, therefore when reading entries from LMDB/MDBX we need to check the alignment and reallocate the data if badly aligned. With this reallocation feature on the database side it would have been way easier to deal with alignment.

MDB_rel_func is for another and will not help in any way to data alignment.
However, it's easy to get aligned with libmdbx right now:

for a particular sub-database, ensure that all keys and values are a multiple of the required alignment;
don't use MDBX_DUPSORT if the required alignment is greater than 4.

This should work basically, although I don't have any ready tests to check it.

I will definitely not add such a feature to libmdbx, as it will require changing the database file format. However, However, I will consider this when implementing MithrilDB.

Here is the source of my though about the fact that this function would help on memory alignment.

@Kerollmops, unfortunately I made a mistake (leading parallel development of libmdbx and MithrilDB I begin to confuse their behavior).
So, libmdbx can only provide 4-byte alignment if the length of all keys and values is a multiple of 4.


Svelte Support

Are you thinking about bringing support for Svelte?

I am not super familiar with svelte, the core API should work out of the box.
Are you seeing any errors?


Comment correction

cleared the junk characters

Can you rebase the PR with master and push again.

Can you rebase this PR, instead of raising a separate one.

This PR has been inactive for a long time. Please re-open if you have new changes to push into this PR.


Speed up console_ and gui_scripts

See #510

[ ] Add testcase for my_mod:MyClass.my_func entrypoint (where to put it?)

Is there a possibility that some sort of changes entry points at runtime? Because then we might not be able to resolve and import them at this point.

I know one case where this will definitely break - multi-version installs. If you use easy_install --multi-version to install your package, the package won't be visible on __import__ without first being required, which is part of what load_entry_point does.
I also worry that all of this effort is for nothing since easy_install is largely deprecated in favor of installing with pip, which uses distlib, and simply relying on distlib in easy_install scripts as well.
Considering the backward-incompatibility concerns here and the fact that it conflicts with the preferred approach, I'd rather suggest that we focus on advancing the work started in #595.

If you use easy_install --multi-version to install your package, the package won't be visible on import without first being required, which is part of what load_entry_point does.

I see. Could we use the old logic for easy_install and this one for pip? Such that only scripts that are installed through pip get this speedup.

I also worry that all of this effort is for nothing since easy_install is largely deprecated in favor of installing with pip

This PR has a direct effect on the scripts pip install -e produces.
I don't see how #595 is related.

If one were to use distlib to install scripts, those scripts would behave the same as those installed by pip.

That's a lot of ifs there. I don't understand whether it is possible to install
scripts using distlib at the moment.
On Sat, Dec 31, 2016 at 07:09:46AM -0800, Jason R. Coombs wrote:

If one were to use distlib to install scripts, those scripts would behave the same as those installed by pip.
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/pypa/setuptools/pull/901#issuecomment-269868978

Could we use the old logic for easy_install and this one for pip?

Isn't it the case that only scripts installed by easy_install are affected by this issue?

No, this PR is about "pip install". I didn't test easy_install manually.

pip install will use the easy_install module internally unless the the package was built with wheel.
as far as I know, there is no good way to do it with pip install -e (though I'm sure someone will correct me if I'm wrong). you have to do something like pip wheel .; pip install . to get the benefits of distlib with pip on a local project. The alternative would be to use your own loader script in the project directory. (or use fastentrypoints, of course!)

No, this PR is about "pip install". I didn't test easy_install manually.

Well, when I use pip install, it installs the packages without the pkg_resources hooks.
$ pip install --user --no-binary :all: pytest
Collecting pytest
  Downloading pytest-3.0.5.tar.gz (740kB)
    100% |████████████████████████████████| 747kB 1.6MB/s
Requirement already satisfied: py>=1.4.29 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from pytest)
Installing collected packages: pytest
  Running setup.py install for pytest ... done
Successfully installed pytest-3.0.5
$ cat Library/Python/3.6/bin/py.test
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'pytest==3.0.5','console_scripts','py.test'
__requires__ = 'pytest==3.0.5'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
        load_entry_point('pytest==3.0.5', 'console_scripts', 'py.test')()
    )

I think that's because pip install will build from the sdist a wheel and install it if no wheel is available (or if binaries are excluded).
It sounds like what you're talking about is pip install -e, which under the hood just invokes setup.py develop which itself invokes easy_install.
Since this issue only affects develop installs and not normal installs, it seems largely mitigated by the recommendation to primarily use pip install.
I'd like to focus the remaining energy we have onto some of the larger goals, such as removing easy_install. One step that will have to take place to remove easy_install is to solve the setup.py develop/pip install -e use case, preferably in a library that pip or setuptools can invoke (probably packaging+distlib, but maybe just distlib). Solving that would reduce pip's dependency on setuptools but will also solve this issue.
@vsajip, @dstufft: Do you have any opinion on where the logic for "in-place installs" (as currently implemented in setup.py develop) should go?

@jaraco Honestly, I think the best thing to do is to continue to have setuptools handle this, and wait until the PEPs for abstract build systems come to completion and let the standardization process hammer out who should be responsible for what in terms of in place builds.

@dstufft TBH, that's too long-term. We're currently dealing with an issue of very slow start-ups (for a 200ms app, the start-up is an additional ~900ms for me).
I'm also constantly seeing reports of slowness at start-up for my projects and others I follow.
While I think it's great that at some point in the future the standardization process gives an elegant solution for this, we really need some workaround or at least a not-so-elegant fix for this in the meantime.
Maybe an extra setup.py flag to not use pkg_resources and do a plain ol' import would suffice for now (at least for those who don't need the multi-version support).

@hobarrera If your users are installing using pip, the only time they should get the slow down is they are not installing from a wheel.

I can't really control how users install. TBH, most (including myself) use the distribution packages, which use python setup.py install.
I can try and convince packagers of my packages to start using wheels, but that will only affect a few packages for my own projects, and not others (like I said: some apps I use/follow have the same issue, though I'm not a dev there).


Defend Resource Task: Only UAV comes

After taking a resource and receive a Defend task just a UAV appeared in the area, is it normal in the begging of the game since AAF has few money in their funds? This is the respective log:
P.S. Tested with ACE in DEVELOP branch in MP
START LOG CODE:
[_origin, _position, _grupoheli, group] call AS_tactics_fnc>
23:38:50   Error position: <_grupoheli, group] call AS_tactics_fnc>
23:38:50   Error Undefined variable in expression: _grupoheli
23:38:50 File fnc_spawnAirAttack.sqf [AS_fnc_spawnAirAttack], line 39
23:38:50 "[AS] Error: O Alpha 2-3:1 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 "[AS] Error: O Alpha 2-3:2 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 "[AS] Error: O Alpha 2-3:3 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 "[AS] Error: O Alpha 2-3:4 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 "[AS] Error: O Alpha 2-3:5 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 "[AS] Error: O Alpha 2-3:6 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 "[AS] Error: O Alpha 2-3:7 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 "[AS] Error: O Alpha 2-3:8 was initialized without side"
23:38:50 "[AS] Error: O Alpha 1-6:1 was initialized with invalid side 'UNKNOWN'"
23:38:50 Error in expression <_vehicles pushBack _pad;
private _wp0 = _crew_group addWaypoint [_landing_positi>
23:38:50   Error position: <_crew_group addWaypoint [_landing_positi>
23:38:50   Error Undefined variable in expression: _crew_group
23:38:50 File tactics\fnc_heli_disembark.sqf [AS_tactics_fnc_heli_disembark], line 11
23:39:05 "[AS] 2: spawn 'defend_location_as_resource_6' finished state 'spawn'"
23:39:05 "[AS] 2: spawn 'defend_location_as_resource_6' started state 'run'"
23:39:08 No speaker given for
23:39:12 "[AS] Server: scheduler_fnc_execute(AS_movement_fnc_sendAAFroadPatrol):"
23:39:12 "Worker 2: 20.3234"
23:39:16 "[AS] 2: new spawn 'AAFroadPatrol'"
23:39:16 "[AS] Server: scheduler_fnc_execute(AS_spawn_fnc_execute):"
23:39:16 "Worker 2: 20.7158"
23:39:16 "[AS] Error: spawn_fnc_execute: spawn 'AAFroadPatrol' does not exist"
23:39:16 mainturret - unknown animation source mainturret
23:39:16 maingun - unknown animation source maingun
23:39:16 leg_01 - unknown animation source fold_legs
23:39:16 leg_02 - unknown animation source fold_legs
23:39:16 leg_03 - unknown animation source fold_legs
END LOG CODE

Closed as duplicated of #85.


Add basic support for fragments

Added basic fragment support, as documented on #15. It's the same structure used for Swift
Cleaned up test files (organized in separate packages)
DRYed up the compiler code

Awesome  this is getting shape

I tried next query:
query SimpleFragment {
	hero {
		...HeroDetailsFragment1
	}
}

fragment HeroDetailsFragment1 on Character {
	name
	friendsConnection {
		totalCount
		edges {
			node {
				name
			}
		}
	}
}

And appears it doesn't generate friendsConnection type.
I guess we can drop a new ticket to support this as this PR will address only simple case


INSTALL.md should mention the Ubuntu snap package

While I love using bpftrace, the installation process has been a pain. I've run into issues building bpftrace with both Ubuntu 16.04 (see #507 and #211) and Ubuntu 18.04 (see #389), which are both extremely common platforms.
After digging through more issues, I discovered there's an Ubuntu snap package for bpftrace (see https://snapcraft.io/bpftrace) and, I think this should be mentioned on the INSTALL.md page.

Yes, we should document it.
Other people are going to have to help sort out the Ubuntu packaging problems. We have come a long way, and have things packaged in Debian and Canonical, but there are still version differences to sort out. I've done work on packaging, and have finally done an internal build of bpftrace so that Netflix can use it. Facebook have done the same. Our time to work on packaging so that other companies can run it is not infinite, and I've already spent too much time on this. It's better I say this than leave people wondering why we aren't still working on Ubuntu packaging.

Thanks for the quick response, I've created #532 to update the install documentation.

The documentation has been updated, so I'll close this issue.


API Reference for mummy/routers is not generated

I tried to access the documentation for routers on https://guzba.github.io/mummy/ but it is missing.

Thanks for letting me know about the missing docs. I'm improving the docgen and the mummy/routers docs are generated now.


Specify minimum rust version

1.63 is required by Mutex::new added in https://github.com/casey/just/pull/1442
Sorta fixes #1495 ? Doesn't really fix it, but makes it more clear to users that they're not gonna have a good time :)
Example of the error Cargo gives:

error: package just v1.11.0 (/workspace) cannot be built because it requires rustc 1.63 or newer, while the currently active rustc version is 1.62.1

It's not super clear at first glance but rust-version is just a minimum:

If the currently selected version of the Rust compiler is older than the stated version, cargo will exit with an error, telling the user what version is required.

Maybe can do something fancy with https://crates.io/crates/cargo-msrv to do something in CI to keep this in sync


Need help in setting up stackinator

I am following the stackinator document but it not very clear to me.
I got stuck after executing ./bootstrap
i have created three directories "Build", "Recipe" and "Config"
and executed below command
stack-config --build $BUILD_PATH --recipe $RECIPE_PATH --system $SYSTEM_CONFIG_PATH
and it was showing that no compilers.yaml file in recipe directory
Kindly guide me to setup the things and explore it.

The online documentation is a good spot to get started: https://eth-cscs.github.io/stackinator/configuring/
For your specific issue, you need to create a recipe, which is a collection of yaml files that describe the contents of your desired environment. The compilers.yaml file describes compiles that you want to provide.
More details about exactly what is expected in a recipe are documented here: ttps://eth-cscs.github.io/stackinator/recipes/
If that documentation doesn't help get you started, please reply below.


Incorrect Kafka output

Hi,
I set up this demo on the Nvidia DeepStream docker image and got incorrect Kafka output.
Output:
The result video file seems good, all cross-lines are good, but there is no analyticsModule.occupancy, analyticsModule.Entry and  analyticsModule.Exitin Kafka message.

{
  "messageid" : "87854ed3-aec2-4046-ad5f-2cfb67c73bca",
  "mdsversion" : "1.0",
  "@timestamp" : "2022-01-19T09:20:34.438Z",
  "place" : {
    "id" : "0",
    "name" : "HWY_20_AND_LOCUST__EBA",
    "type" : "intersection/road",
    "location" : {
      "lat" : 30.32,
      "lon" : -40.549999999999997,
      "alt" : 100.0
    },
    "entrance" : {
      "name" : "C_127_158",
      "lane" : "Lane 1",
      "level" : "P1",
      "coordinate" : {
        "x" : 1.0,
        "y" : 2.0,
        "z" : 3.0
      }
    }
  },
  "sensor" : {
    "id" : "HWY_20_AND_LOCUST__EBA__4_11_2018_4_59_59_508_AM_UTC-07_00",
    "type" : "Camera",
    "description" : "Aisle Camera",
    "location" : {
      "lat" : 45.293701446999997,
      "lon" : -75.830391449900006,
      "alt" : 48.155747933800001
    },
    "coordinate" : {
      "x" : 5.2000000000000002,
      "y" : 10.1,
      "z" : 11.199999999999999
    }
  },
  "analyticsModule" : {
    "id" : "XYZ",
    "description" : "",
    "source" : "OpenALR",
    "version" : "1.0"
  },
  "object" : {
    "id" : "0",
    "speed" : 0.0,
    "direction" : 0.0,
    "orientation" : 0.0,
    "person" : {
      "age" : 0,
      "gender" : "",
      "hair" : "",
      "cap" : "",
      "apparel" : "",
      "confidence" : 1.0
    },
    "bbox" : {
      "topleftx" : 0,
      "toplefty" : 0,
      "bottomrightx" : 0,
      "bottomrighty" : 0
    },
    "location" : {
      "lat" : 0.0,
      "lon" : 0.0,
      "alt" : 0.0
    },
    "coordinate" : {
      "x" : 0.0,
      "y" : 0.0,
      "z" : 0.0
    }
  },
  "event" : {
    "id" : "84c7ed09-a0e4-4a0e-8c46-41c320faf8ac",
    "type" : "entry"
  },
  "videoPath" : ""
}

Log Output:
root@0980fa10c7ef:/opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-occupancy-analytics# ./deepstream-test5-analytics -c config/test5_config_file_src_infer_tlt.txt

(deepstream-test5-analytics:12): GLib-CRITICAL **: 10:07:58.602: g_strchug: assertion 'string != NULL' failed

(deepstream-test5-analytics:12): GLib-CRITICAL **: 10:07:58.602: g_strchomp: assertion 'string != NULL' failed
** WARN: <create_pipeline:1141>: Num of Tiles less than number of sources, readjusting to 2 rows, 1 columns
Warning: 'input-dims' parameter has been deprecated. Use 'infer-dims' instead.
gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_nvdcf.so
gstnvtracker: Batch processing is OFF
gstnvtracker: Past frame output is OFF
0:00:01.980342116    12 0x5594fd44f360 INFO                 nvinfer gstnvinfer.cpp:619:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:1702> [UID = 1]: deserialized trt engine from :/opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-occupancy-analytics/config/peoplenet/resnet34_peoplenet_pruned.etlt_b1_gpu0_int8.engine
INFO: ../nvdsinfer/nvdsinfer_model_builder.cpp:685 [Implicit Engine Info]: layers num: 3
0   INPUT  kFLOAT input_1         3x544x960
1   OUTPUT kFLOAT output_bbox/BiasAdd 12x34x60
2   OUTPUT kFLOAT output_cov/Sigmoid 3x34x60

0:00:01.980472313    12 0x5594fd44f360 INFO                 nvinfer gstnvinfer.cpp:619:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:1806> [UID = 1]: Use deserialized engine model: /opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-occupancy-analytics/config/peoplenet/resnet34_peoplenet_pruned.etlt_b1_gpu0_int8.engine
0:00:01.983028354    12 0x5594fd44f360 INFO                 nvinfer gstnvinfer_impl.cpp:313:notifyLoadModelStatus:<primary_gie> [UID 1]: Load new model:/opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-occupancy-analytics/config/config_infer_primary_peoplenet.txt sucessfully

Runtime commands:
	h: Print this help
	q: Quit

	p: Pause
	r: Resume

NOTE: To expand a source in the 2D tiled display and view object details, left-click on the source.
      To go back to the tiled display, right-click anywhere on the window.

** INFO: <bus_callback:181>: Pipeline ready

** INFO: <bus_callback:167>: Pipeline running

~~ CLOG[src/modules/NvDCF/NvDCF.cpp, NvDCF() @line 670]: !!![WARNING] Can't open config file (/opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-occupancy-analytics/config/tracker_config.yml). Will go ahead with default values
~~ CLOG[src/modules/NvDCF/NvDCF.cpp, NvDCF() @line 682]: !!![WARNING] Invalid low-level config file is provided. Will go ahead with default values
[NvDCF] Initialized
WARNING; playback mode used with URI [file:///opt/nvidia/deepstream/deepstream-5.1/samples/streams/sample_1080p_h264.mp4] not conforming to timestamp format; check README; using system-time
~~ CLOG[src/modules/NvDCF/NvDCF.cpp, NvDCF() @line 670]: !!![WARNING] Can't open config file (/opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-occupancy-analytics/config/tracker_config.yml). Will go ahead with default values
~~ CLOG[src/modules/NvDCF/NvDCF.cpp, NvDCF() @line 682]: !!![WARNING] Invalid low-level config file is provided. Will go ahead with default values
[NvDCF] Initialized
WARNING; playback mode used with URI [file:///opt/nvidia/deepstream/deepstream-5.1/samples/streams/sample_1080p_h264.mp4] not conforming to timestamp format; check README; using system-time

**PERF:  FPS 0 (Avg)	FPS 1 (Avg)
Wed Jan 19 10:08:03 2022
**PERF:  21.16 (20.74)	20.74 (20.60)
q
Quitting
[NvDCF] De-initialized
[NvDCF] De-initialized
App run successful

Run environments:
Docker image: nvcr.io/nvidia/deepstream:5.1-21.02-devel
Config files: commit link(I just change some configurations for my server without display)

Hi firedent,
Did you update the binaries for msgconr here: https://github.com/NVIDIA-AI-IOT/deepstream-occupancy-analytics/tree/master/bin

@monjha Thank you for your help. It works.
Actually, I read that instruction but I thought at the moment that I should use the .so file only if I run the demo on Jetson at that moment.
Maybe, we should  clarify how to use bin/x86/libnvds_msgconv.so or bin/jetson/libnvds_msgconv.so. For instance, defining msg-conv-msg2p-lib in Sink Group as what I do.

Thank you!
I will modify the README!


Show alexa state in browser

Codecov Report

Merging #4 into master will increase coverage by 0.03%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master       #4      +/-   ##
==========================================
+ Coverage   98.83%   98.87%   +0.03%
==========================================
  Files           8        8
  Lines          86       89       +3
==========================================
+ Hits           85       88       +3
  Misses          1        1

Impacted Files
Coverage Δ

...a_browser_client/alexa_browser_client/consumers.py
100% <100%> (ø)
:arrow_up:

...exa_browser_client/alexa_browser_client/helpers.py
100% <100%> (ø)
:arrow_up:

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 270bb5a...175c156. Read the comment docs.


ModuleNotFoundError: No module named 'iTransformer.iTransformerNormConditioned'

(shy_py38) zhenningli@iotsc-zhenningli:~/shy$ /home/zhenningli/anaconda3/envs/shy_py38/bin/python /home/zhenningli/shy/DSTA2/test.py
Traceback (most recent call last):
File "/home/zhenningli/shy/DSTA2/test.py", line 2, in
import iTransformer
File "/home/zhenningli/anaconda3/envs/shy_py38/lib/python3.8/site-packages/iTransformer/init.py", line 10, in
from iTransformer.iTransformerNormConditioned import iTransformerNormConditioned
ModuleNotFoundError: No module named 'iTransformer.iTransformerNormConditioned'
I installed iTransformer using 'pip install Transformers' according to the readme. But when I run the example, I get an error and I cannot import iTransformer correctly. My torch version is 2.1.0 and CUDA version is 11.8. Looking forward to your answer, thank you very much.

@mkkk1112 oops, thanks for reporting!

When I comment out the following code in init.py, the error disappears and it seems like it has no effect on normal operation,thanks for your reply!
from iTransformer.iTransformerNormConditioned import iTransformerNormConditioned

@mkkk1112 oops, thanks for reporting!

When I comment out the following code in init.py, the error disappears and it seems like it has no effect on normal operation,thanks for your reply.
from iTransformer.iTransformerNormConditioned import iTransformerNormConditioned


XDP naming errata

Name Confusion on XDP Wallet

merging, naming errata

The correct name of the wallet is "DogeWallet". The GitHub for this wallet is the first result that appears in a Google search for "dogewallet". It has never been referred to as "XDP Wallet" and this label may introduce confusion among people seeking out the DogeWallet. Thank you.


Change GUI Defaults, YML

Type
GUI
Suggestion
I'm a new user and really like the GUI version (running under Windows). Kudos to the dev!
That said, is there any way to change the defaults such as the output directory, file naming, dub and sub languages, etc.? I find that I need to change these from the default values every time I add a new show. I've looked through the config YML files and don't see any options along these lines to change. The CLI Options doc is very detailed, but it's not clear how those options translate to GUI settings.
Any help would be appreciated.

Output directory can be changed using dir-path.yml file, the rest can be changed using the cli-defaults.yml file, both of which can be found in the config directory. You can find the documentation with the list of values for the cli-defaults file here: https://github.com/anidl/multi-downloader-nx/blob/master/docs/DOCUMENTATION.md

Thanks for that information; it's very helpful. I do have a question about the cli-defaults.yml file though. The default cli-defaults.yml file reads:
q: 0
nServer: 1
mp4mux: false
noCleanUp: false
dlVideoOnce: false
Cross-referencing with the documentation, neither "mp4-mux" nor "nServer" arguments are listed in the CLI doc (although similar arguments can be found). Where do these variables come from, and are there other discrepancies or syntax differences between command line arguments and the cli-defaults.yml file?
Sorry to get picky, but I would truly like to understand the difference.

Now that you mention it, nServer and mp4mux is a completely invalid argument, I'm not sure why that's there... Probably old versions of the arguments that were never updated in the defaults file if I had to guess. The options in the documentation are up to date and accurate, you'll notice a column for cli-defaults usage in the docs

LOL; Well, that explains my confusion and why things didn't click. I'll treat the current CLI document as the bible in trying to customize the GUI. Seriously, I appreciate the help.


bump version to 12.19.0

Is this the right form for commit messages post-spinout?

 General change notes are good.

The check failure does not appear to be connected to the changes contained in this PR, correct?

It looks to be caused by our pipeline not working on a fork. We'll look onto it.

@MindNumbing should I bump this to 12.19.0?

@themightychris I'd love to help, but the azure pipielines build cannot be found.

/azp run

closing in favor of #5


Using temporary storage

I'm using simple-bot and my bot keeps restarting conversation rather continuing on the same one (Creating new session everytime a message is sent). Additionally, it would reply with a dialog with given intents (such as #intent) and would ignore welcome and anything_else dialogs.
Tried run as administrator.
info: ** No persistent storage method specified! Data may be lost when process shuts down.
info: ** Setting up custom handlers for processing Slack messages
info: ** API CALL: https://slack.com/api/rtm.start
Client server listening on port 5000
notice: ** BOT ID: test ...attempting to connect to RTM!
notice: RTM websocket opened
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Slack message received
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.
info: Slack message received
info: Warning: using temporary storage. Data will be lost when process restarts.

The message is clear. You need to specify a storage otherwise the data will be lost when the process running the bot restarts.


[Inquiry]: Does installation of apps require admin privilages?

Description
Does the installation of apps on the Win32 App Container require admin privileges (ex: installing Google Chrome require an admin prompt for the whole system?)

The installation of the isolated win32 app does not require admin privileges. Actually MSIX installer won't ask for admin privilege at all.

The installation of the isolated win32 app does not require admin privileges. Actually MSIX installer won't ask for admin privilege at all.

Will admin be needed to install this app?

The installation of the isolated win32 app does not require admin privileges. Actually MSIX installer won't ask for admin privilege at all.

Also, is user data (appdata, etc) separated from the program files?

Admin is not needed to install the app. "user data" is a bit vague in the context. Most of the files on the disk are considered "user data", which means data that belong to the user. As for the data generated by the app, it would be the developers that decided where to store it. The app does not have write access to their own program files. The access is controlled to different locations on the disk when the app tries to store data.


Code is out of date on "Pipelines-Overview"

This page -> https://www.kubeflow.org/docs/pipelines/overview/pipelines-overview/
I was trawling the docs to find out whether Kubeflow's DSL could construct a DAG implicitly from the variables being passed around, and on the website it looked like it was, but then I looked at the code on master and it was using this newer .after(...) construct.
I think this page should be update 🙂

The screenshots of the pipeline graph and run are out of date too.

The following pages likely need an update too:

https://www.kubeflow.org/docs/pipelines/sdk/build-component/
https://www.kubeflow.org/docs/pipelines/pipelines-quickstart/


How to use HiPhase to get haplotype-specific Somatic SNV/INDEL?

Hi,
I saw the HiFi somatic workflow https://github.com/PacificBiosciences/HiFi-somatic-WDL/blob/main/figures/simple_workflow_diagram.png. After calling somatic SNV/INDEL(using deepsomatic, tumor/normal paired sample), then how should I do use HiPhase to get haplotype-specific Somatic SNV/INDEL?
Best regards.

Hi @DayTimeMouse ,
I see that you've posted the question on https://github.com/PacificBiosciences/HiPhase/issues/52. That's a more suitable place to get your question answered. So I will close this issue now.


Calltype 5 cannot return binary data (only a null terminated string)

Need function:
int CMSreturndata(void* data, int len)
to return arbitrary binary data

Implemented in F0045


fix(blob): properly wrap error in GetAll method

Overview

Error returned by GetAll is not formatted correctly. It's especially important, because users of the method will most probably try to detect ErrBlobNotFound (to differentiate from other errors).
Checklist

[x] New and updated code has appropriate documentation
[x] New and updated code has new and/or updated testing
[ ] Required CI checks are passing
[x] Visual proof for any user facing features like CLI or documentation updates
[x] Linked issues closed with keywords

Codecov Report

Merging #2853 (4249bd5) into main (0b85448) will increase coverage by 0.26%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #2853      +/-   ##
==========================================
+ Coverage   51.16%   51.43%   +0.26%
==========================================
  Files         167      167
  Lines       10773    10773
==========================================
+ Hits         5512     5541      +29
+ Misses       4764     4732      -32
- Partials      497      500       +3

Files
Coverage Δ

blob/service.go
71.95% <100.00%> (+1.82%)
:arrow_up:

... and 9 files with indirect coverage changes


"-Xfrozen_modules=off" has no effect in debugpy

Type: Bug
Even with the appropriate configuration:
 "configurations": [         {             "name": "program",             "type": "python",             "request": "launch",             "module": "uvicorn",             "args": [                 "src.app:main",                 "--factory",                 "--reload",                 "--host=<IP_ADDRESS>",                 "--port=8081",                 "--workers=1"             ],             "justMyCode": false,             "pythonArgs": [                 "-Xfrozen_modules=off"             ]         } ]
Debugger still reports:
0.00s - Debugger warning: It seems that frozen modules are being used, which may
0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off
0.00s - to python to disable frozen modules.
Exactly the same thing happens, when passing that directly to debugpy:
python -Xfrozen_modules=off -m debugpy --listen localhost:5678 -m uvicorn src.app:main --factory --reload --host=<IP_ADDRESS> --port=8081 --workers=1
VS Code version: Code 1.74.3 (97dec172d3256f8ca4bfb2143f3f76b503ca0534, 2023-01-09T16:57:40.428Z)
OS version: Linux x64 5.15.0-58-generic snap
Modes:
Sandboxed: No
Extensions (14)

Extension
Author (truncated)
Version

vscode-eclipse-keybindings
alp
0.16.1

vscode-postgres
cko
1.4.0

gitlens
eam
13.2.0

vscode-docker
ms-
1.23.3

black-formatter
ms-
2022.6.0

isort
ms-
2022.8.0

python
ms-
2022.20.2

vscode-pylance
ms-
2023.1.30

jupyter
ms-
2022.11.1003412109

jupyter-keymap
ms-
1.0.0

jupyter-renderers
ms-
1.0.14

vscode-jupyter-cell-tags
ms-
0.1.6

vscode-jupyter-slideshow
ms-
0.1.5

remote-containers
ms-
0.266.1

Please file this on the vscode-python extension


fix #6: update cake to v 0.18.0

can't use this plugin with newer versions of cake, so i figured i'd update.
build passes just fine.
haven't updated a nuget package version for Cake.AWS.Route53, figured you'd do that as part of release.

fixes #6

Updated to Cake.Core to 0.17 and AWSSDK.Core to <IP_ADDRESS> so its inline with my other projects and everything should play well together.

👍


[Loc] Request to add Armenian (hy) language to Transifex VS Code project

See guidance at https://github.com/Microsoft/Localization/wiki/How-to-request-a-new-UI-language-for-VS-Code-project.
We need 3 contributors vote here before enable the language in Transifex.
Please vote here by pasting you Transifex account here. For example, https://www.transifex.com/user/profile/12345

Here is my profile url
https://www.transifex.com/user/profile/levonhakopyan/

https://www.transifex.com/user/profile/abgaryanfx/

Here is my profile https://www.transifex.com/user/profile/tigran.shahverdyan/

Hi @danyeh, when is Armenian language going to be available on transifex?

@danyeh we have 3 contributors.

+Vote

We don't have plan to enable additional language for VSCode in MLCP in near term. Hence close the request here.
New request should be logged in Localization Community Repo

Thanks for the ultra fast reply 🍑


build fails on latest tensorflow 1.10 because "1.10.0" < "1.4.0" in setup.py

To compare versions:
from distutils.version import LooseVersion
...
if LooseVersion(tf.__version__) >= LooseVersion('1.4'):
   ...
'''

Thanks a lot!


[BUG] - Big button does not trigger a click event（When the button is large and very edge click）

NextUI Version
2.0.10
Describe the bug
Big button does not trigger a click event（When the button is large very edge click）
Your Example Website or App
No response
Steps to Reproduce the Bug or Issue
The button does trigger a click event（When the button Animation trigger）
Expected behavior
The button does trigger a click event（When the button Animation trigger）
Screenshots or Videos
No response
Operating System Version
macOS
Browser
Chrome

Please provide a video or an example to demonstrate


Setweak command not updating grades in list

The people are not tagged as weak if the command is entered more than once. To replicate the issue:

Reset the addressbook
Set the threshold to B.
Now set the threshold to A+. Everyone should be weak, but the weak tags are not updated.

I believe the issue is in line 32 of SetWeakThresholdCommand:
model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);

The list update only happens once, possibly because in the subsequent times the predicate being set is still the same so the list doesn't actually update. If the list is manually updated (e.g. through the find command), the change in weak threshold will be reflected.

Done in latest pr.


Created Information Section-3

It contains text and image for information section: no tracking for the search.
closes #10

situation before solving conflict: branch only has their own code

The branch is updated with master https://htmlpreview.github.io/?https://github.com/harunaltunhr/duck-duck-clone/blob/info-3-no-tracking/index.html
Master (yellow-green) with section info 3 (purple)

I deleted the overflow (:hidden you made on initial master) when solving conflict for the second PR. Now Second PR is merged, so I believe the new remote master doesn’t have that overflow anymore. When you pull updates from remote, and the overflow: hidden is still there, then you can arrange all accordingly when solving conflict to make the page works, as Evan and Stephane explained.