Added Discord badges and updated badges.fig

Hello,
I was looking for a Discord badge but didn't find any in the repository or in opened pull requests.
Hoping I'm not the blind one, I'd like to contribute adding a Discord badge with the following pull.

[badges.zip](https://github.com/MikeCodesDotNET/ColoredBadges/files/4956386/badges.zip)
The badge was made following this repository's directions and Discord's branding.
Icon background: #7289DA (branding one)
Badge background: not changed
Font: not changed
Icon: customized inverting the original one, used in the Discord application itself
Files Added:

discord.svg
discord.png
<EMAIL_ADDRESS><EMAIL_ADDRESS>
Files Updated:

badges.fig
README.md

Let me know if there's something to be changed or improved :)

figma balls


Client classes aren't tree-shakable, resulting in unnecessarily large bundles

Is your feature request related to a problem? Please describe.
Clients like WebSiteManagamentClient are implemented as extremely large classes with large nested classes inside. Module bundlers like webpack are not able to tree-shake unused code from these client classes. Meaning >75% of the bundled code is not needed. This is frustrating considering the SDK bundle is larger than all other bundled node modules combined, and in some projects is larger by 2-3x.
As I mentioned above, the design of the client classes (ex: WebSiteManagementClient) makes it impossible to exclude unused client methods from the bundle via tree shaking (dead-code elimination). Webpack, rollup, and other popular JS module bundlers are not capable of tree-shaking classes and class methods. ^1
This is pretty frustrating considering in some projects, we're only using 3-4 methods from a client, but the SDK bundle ends up being almost 900 KB (parsed) ^2. Over half of our bundle is made up of the Azure SDK bundles (~2 MB out of ~4 MB).
The most important reason we are motivated to reduce our bundle size is that it directly correlates to reducing the activation time (startup time) for our VS Code extensions.
A great example of the issue is https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/appservice/arm-appservice/src/webSiteManagementClient.ts#L821-L840, where 20 of these (sometimes very large) classes are nested inside the WebSiteManagementClient class. All 20 are always bundled regardless of which ones are actually referenced within the consumer code.
  appServiceCertificateOrders: AppServiceCertificateOrders;
  certificateOrdersDiagnostics: CertificateOrdersDiagnostics;
  certificateRegistrationProvider: CertificateRegistrationProvider;
  domains: Domains;
  topLevelDomains: TopLevelDomains;
  domainRegistrationProvider: DomainRegistrationProvider;
  appServiceEnvironments: AppServiceEnvironments;
  appServicePlans: AppServicePlans;
  certificates: Certificates;
  containerApps: ContainerApps;
  containerAppsRevisions: ContainerAppsRevisions;
  deletedWebApps: DeletedWebApps;
  diagnostics: Diagnostics;
  global: Global;
  kubeEnvironments: KubeEnvironments;
  provider: Provider;
  recommendations: Recommendations;
  resourceHealthMetadataOperations: ResourceHealthMetadataOperations;
  staticSites: StaticSites; // I only need to access this, but everything is bundled anyway
  webApps: WebApps;

Describe the solution you'd like
Since class methods cannot be easily tree-shaked, the ideal solution is to refactor the clients to ES6 modules instead of nested classes. I realize that this might be an unrealistic ask due to the scope of the changes (breaking changes, Autorest, etc.). So maybe there is an easier solution that could make some tree-shaking possible. Maybe make the clients more granular, i.e. consumers should be able to import just the WebApps portion of the WebSiteManagementClient. Essentially make it possible to be more granular with imports. I'm open to suggestions here 😄.
Describe alternatives you've considered
Since we do only use a handful of methods from a handful of clients in each project, our team has considered removing the SDK dependencies and creating a client with only the API endpoints we need. However, concerns about maintenance and keeping up with API changes make this unattractive.
Additional context

Agreed that this would be great to have. Storage Explorer has also noticed that the Azure SDKs are greatly contributing to bundle size, so being able to tree shake them would be of great value to our users.

@qiaozha , could you take a look at this ask?  I am wondering whether the RLC work could help for this case.

@alexweininger I have release a new JS rest level client package for appservice. https://www.npmjs.com/package/@azure-rest/arm-appservice which should have a smaller bundle size. Can you have a try and let us know if you have any kinds of comments?

I've done some surface level exploration and PoC work using the released JS rest level client package for appservice. The client works as expected and is very promising for our use case. I'm excited to be able to eventually convert our projects to use only rest level clients in the future.
It seems like we have some engineering work to do until we are able to easily move to the RLC. For example, we have extended ServiceClient from ms-rest-js. I'm a bit unclear after reading the Core 2 docs on where ms-rest-js stands. Is ms-rest-js still the recommended rest client?
We'll be tracking the exploration into the rest level clients here: https://github.com/microsoft/vscode-azurestaticwebapps/issues/713.
Thanks for the quick turn around on this beta package!

Small issue I found:
I found that the client constructor apiVersion option doesn't seem to work
when I passed in an API version in the constructor like so:
const client = WebSiteManagementClient(credential, {
        apiVersion: '2019-08-01'
});

I expected the api-version query parameter to be automatically added to each request. However, I had to add it myself using the queryParameters option in the .get() method.

@alexweininger Hi Thanks for the great feedback, I will look into why the api version doesn't work and get back to you soon.

@alexweininger hi, I am trying to set the apiVersion as what you did and found it's replacing the apiVersion parameter correctly

Can you add the following debug code
import { setLogLevel } from "@azure/logger";
setLogLevel("info");

in your side and share more details with us about it didn't add that api version into the request ? so that I can better understand the details. Thank you

It seems like we have some engineering work to do until we are able to easily move to the RLC. For example, we have extended ServiceClient from ms-rest-js. I'm a bit unclear after reading the Core 2 docs on where ms-rest-js stands. Is ms-rest-js still the recommended rest client?

ms-rest-js is now in maintenance mode.  Depends on what features you are using, please have a look at @azure/core-rest-pipeline and @azure/core-client and let us know if you have any questions.


docs: generate Typedocs using Aegir

Closes https://github.com/libp2p/js-libp2p/issues/1455

Once https://github.com/ipfs/aegir/pull/1107 is merged and a new version of aegir is released then this can be reviewed.

Not sure why CI was failing, rebased and pushed again.

@achingbrain quite a few of the parameters are not exported as modules and therefore no documentation is generated, but they are still referenced by other generated documentation e.g. ConnectionManager or IdentifyService  - they are also included in the current API Docs, so do we want to include these?  They may not be modules that we want to export but I don't see the downside of exposing them.

quite a few of the parameters are not exported as modules and therefore no documentation is generated, but they are still referenced by other generated documentation

I haven't tried it yet but this might help? https://www.npmjs.com/package/typedoc-plugin-missing-exports

Thanks for that recommendation @achingbrain , once https://github.com/ipfs/aegir/pull/1131 is merged and released then I will re-open this for review.


$el: 'button' with callable function under attrs having declaration issue despite fully functioning.

Reproduction
https://github.com/formkit/formkit/issues/846
Describe the bug
Following the issue raised in the link above, the declaration issue is found when applying a callable function onClick: 'handleClick' under attrs for $el: 'button' in sections-schema. Apparently, it is functioning though. Even though I use $cmp: 'button' with a callable function in props (not a valid way for button), it is also functioning and there is no declaration issue.
Type '{ $el: string; attrs: { type: string; onClick: () => void; class: string; }; children: string; }' is not assignable to type 'FormKitSchemaNode'.
Type '{ $el: string; attrs: { type: string; onClick: () => void; class: string; }; children: string; }' is not assignable to type 'FormKitSchemaFormKit'.ts(2322)
index.d.ts(1790, 5): '$formkit' is declared here.

However, I think I found a solution. Only when I insert this CallableFunction under type FormKitAttributeValue (as shown below) for FormKitSchemaAttributes which is assigned to attrs, it works without any declaration issue.
export declare type FormKitAttributeValue = string | number | boolean | undefined | CallableFunction | FormKitSchemaAttributes | FormKitSchemaAttributesCondition;

Environment

macOS Ventura 13.4.1 (c)
Visual Studio Code v1.80.2
Nuxt 3, Tailwind CSS & FormKit

Can you please provide a reproduction? At first glance it sounds like typescript is returning an error correctly, but I’d need to see an actual reproduction. A repo or stackblitz would be great.

https://stackblitz.com/edit/nuxt-starter-9rqjga?file=pages%2Fabout.vue
Here is the reproduction above but there is no issue with the result at all because Stackblitz does not have code highlighting that detects for any error including declaration. Only IDE in local like Visual Studio Code can detect like this as a declaration issue. I have attached the screenshot below.


Typescript Intellisense & Automatic Type Acquisition doesn't work

VSCode Version:    1.51.1
OS Version:             macOS 11.0.1  x64

Steps to Reproduce:

clone https://github.com/cgarrovillo/broken-ts-intellisense
try to get intellisense to trigger in the index.ts & index.js files.  (like app.listen() or something ).  You'll notice that IntelliSense works for index.js but not index.ts

Does this issue occur when all extensions are disabled?: Yes

Changing the global property "typescript.tsdk"  doesn't fix it.
Switching to use the project workspace's "typescript.tsdk"  by installing typescript to the project's node/modules folder  doesn't fix it.
VSCode also warned me about needing to install @types through npm (@types/node) which was weird as I never had to do this since Automatic Type Acquisition does it for me automatically. That leads me to believe it also doesn't work.
I assumed it was an issue with nvm, but manually pointing to npm using the "typescript.npm" property doesn't fix it.

Automatic type acquisition is only used for JavaScript. For TypeScript, you need to explicitly install the types (they are also used by tsc)

Automatic type acquisition is only used for JavaScript. For TypeScript, you need to explicitly install the types (they are also used by tsc)

Cool. Can you tell me why there seem to be consistent problems with typescript intellisense?
A quick google search yields lots of results, many of which just end up having the issue prematurely closed while still being unsolved.

As I explained, the behavior you described is by-design. What still doesn't work?

IntelliSense suggestions / content assist / code hinting/ code completion (whatever proper term is)

Insider builds yielded no changes,  and neither does  removing typescript.tsdk properties from settings.json

This is also consistent with tsc.
const http = require('http');

Is an untyped import in TS files. If you hover over http, you will see it listed as any.
To have a type checked import use import http = require('http') (or import * as http from 'http')


Re-enable broken tests with gevent and unpin gevent

When gevent 1.3.0 was released, our windows tests started hanging.
#15352
We should unpin once we figure out the issue on windows.

Unit test unit._auth_context_test.AuthContextTest.testSessionResumption hangs forever when using higher version gevent. Pull request: #16995

Using this as a catch-all for gevent disabled tests, which as of https://github.com/grpc/grpc/pull/17466 include the ExitTests.

Disable gevent DNS resolver test on Windows unit._dns_resolver_test.DNSResolverTest.test_connect_loopback. Details in https://github.com/grpc/grpc/pull/18547

Still valid.

Afraid not. The test is actually being skipped even though it's being run.


Binaries and installers please?

Please release installers for Linux, Mac, and Windows.
I'd love to see a no-fuss ag.msi that adds ag.exe to PATH.

Anyone looking for cross-platform alternative that includes Windows binary is Ripgrep.


refactor: avoid unnecessary allocation

I hereby agree to the terms of the GreptimeDB CLA.
Refer to a related PR or issue link (optional)
What's changed and what's your intention?
avoid unnecessary allocation
Checklist

[ ]  I have written the necessary rustdoc comments.
[ ]  I have added the necessary unit tests and integration tests.
[x]  This PR does not require documentation updates.

When you use Vec<&'a [u8]>, an extra allocation happen at
                                    PutRequest::new()
                                        .with_key(key.into_bytes())
                                        .with_value(value),

where
    pub fn with_value(mut self, value: impl Into<Vec<u8>>) -> Self {
        self.value = value.into();
        self
    }

impl<T: Clone> From<&[T]> for Vec<T> {
    fn from(s: &[T]) -> Vec<T> {
    /// Allocate a `Vec<T>` and fill it by cloning `s`'s items.
        s.to_vec()
    }
}

See also #3740 (comment)

Got it.

But actually IntoChunks makes new vecs also. So it won't be quite differnt.


Add multiple threads to speed up the process

The code is pretty slow. Consider adding multiple threads

you can do some simple "multithread" using:

thx so helpful👍


[Caloris] Handle error if column does not exist

I think this should be widened as "bubble up SQL error in SQliteWorker HTTP response". The thing is, we log the error on sqlite worker, but the actual error response from SQLite is not being forwarded to core in the HTTP response (so it makes debugging harder).

Is this partially fix with this PR @fontanierh ?

Closing this. Situation is good enough for now (easy for us to see the sqlite errors)


Adding Adafruit IS31FL3741.

Hello @kattni. I'm commenting hear to make sure you are aware that we are currently having an outage of the system that adds new libraries and library releases to the Arduino Library Manager, as announced here:
https://github.com/arduino/library-registry/issues/483
You can follow that issue if you want to get updates on the situation.
The only impact of this is that there will be an unknown delay before this library becomes available for installation via the Arduino Library Manager. Once the system comes back on line, everything will happen as usual, so no special action is needed on your part.


Bandwidth is not fully utilized

Description
The data source and foxlove frontend run on different hosts machine, and when I use the cpp example code to transfer a large number of messages, I find that I cannot use up the bandwidth. This causes a delay in the display.

Version: main branch
Platform: Ubuntu20.04, mac os m1 pro, bandwidth 100Mbps.

Steps To Reproduce

Expected Behavior
The maximum bandwidth in my test environment was 100Mbps， When I run  frontend  and ws-cpp on same machine  The bandwidth is about 30Mbps, but when i run frontend  and ws-cpp on different machine, The bandwidth is about 10Mbps, This causes a delay in the display. But if I run two frontend on a machine, the bandwidth is about 20Mbps (10Mbps per tcp session). But single tcp connect should up to  30Mbps.
So I don't think the front-end rendering is reaching a bottleneck, but is related to a single tcp connection.

For the follow-up experiment, I used the network cable to make full use of the bandwidth. Bandwidth cannot be used when using the wireless network

What bandwidth do you get if you run both the data source and Foxglove on the same host (locally)? This should give you an idea about how much your networking setup is responsible for a potential slowdown.

For the follow-up experiment, I used the network cable to make full use of the bandwidth. Bandwidth cannot be used when using the wireless network

What was the outcome here?

What bandwidth do you get if you run both the data source and Foxglove on the same host (locally)? This should give you an idea about how much your networking setup is responsible for a potential slowdown.

For the follow-up experiment, I used the network cable to make full use of the bandwidth. Bandwidth cannot be used when using the wireless network

What was the outcome here?

The outcome is that the bandwidth of the network interface bandwidth has exceed the actual data transfer. (but the wireless network may not be as reliable as the wired connection, so a single TCP connection is extremely vulnerable.)

So do I understand you right that you have solved your problem and this issue can be closed?

Yes


Create a website for documentation.

The wax README is much too long and currently provides the only detailed documentation for glob expression syntax. I imagine that the most common way to figure out how to compose a glob expression today is to browse to the repository page on GitHub. This is a bit awkward and quite noisy, I think, especially from the perspective of someone using some software that incidentally uses wax for globbing.
I've used mkdocs to create a website for plexus at plexus.rs and I'm mostly happy with the results. I think soemthing similar for wax could work and should include detailed documentation and examples of glob expression syntax without too much clutter. Ideally, there should be a good landing page for scenarios like using a CLI tool and following a link to learn more about how to write a glob to match some files.
I think the README needs some work and should only briefly mention what glob expression support without going into too much detail. Other technical details should also be moved into a documentation website too.

It needs a lot of work, but I've got a website running on GitHub Pages at https://glob.guide. At time of writing, the bulk of the syntax documentation from the README in this repository has been copied to https://glob.guide/user-guide/syntax. For the purposes of this issue, I'd like to:

Get the glob syntax documentation on https://glob.guide into an acceptable state and decide on a (stable) URL.
Link to https://glob.guide in the repository information on GitHub and in the README.
Link to https://glob.guide in the crate API documentation.
Remove detailed syntax documentation from the README.


Gene names for genes

It would be great to have descriptive names for genes. Right now we just have the locus IDs. E.g.
      <fbc:geneProduct fbc:id="G_b1779" fbc:label="b1779" metaid="G_b1779">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#G_b1779">
              <bqbiol:is>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/uniprot/P0A9B2" />
                </rdf:Bag>
              </bqbiol:is>
              <bqbiol:isEncodedBy>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/asap/ABE-0005920" />
                  <rdf:li rdf:resource="http://identifiers.org/ecogene/EG10367" />
                  <rdf:li rdf:resource="http://identifiers.org/ncbigene/947679" />
                  <rdf:li rdf:resource="http://identifiers.org/ncbigi/gi:16129733" />
                </rdf:Bag>
              </bqbiol:isEncodedBy>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </fbc:geneProduct>

This seemed to have worked in versions before April 1st as "fbc:name", as git log seems to suggest.
During refactoring  bigg.getGeneName(label) was changed by me to bigg.getGeneName("test") for testing purposes and  never reverted to its correct state, thus no names were appended.
Will be fixed in the next commit to the reafctoring branch and should find its way into the next release.


Fetch approved COR users and display in Table

Is your feature request related to a problem? Please describe.
As an administrator, I want to view and assign users authorized to pick up gear and conduct a confirmation of receipt.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

PR #218 addresses this issue and has been merged into master.


chore(console): UI-Particles library bump to version 12.19

Issue
https://gravitee.atlassian.net/browse/APIM-5870
Description
Fix for text overflow of gio-input-tags. ui-particles-angular version bump to 12.19.0.
Additional context

📚  View the storybook of this branch here

Cherry-pick to master PR is closed because versions ale already bumped in the following commit:
https://github.com/gravitee-io/gravitee-api-management/commit/10ab9949b9a01065d0adcb97f847ab6be3667f70


Allow for self-restreams

Self-restreams by allowing the player to not have the combot even if the producer has combot on.
A good example of the bug this fixes is where the player has three browser windows open:

http://localhost:5000/view/ctm/PLAYER1?combot=1
http://localhost:5000/room/u/player1/producer
http://localhost:5000/room/admin

The self-restreamer will hear the combot give score updates twice. It would be easy to mute if Firefox didn't use TTS server to do TTS instead of something that was mutable.
This patch allows the user to use this url to override the iframe's combot value:
http://localhost:5000/room/u/player1/producer?combot=0
It also allows the player to choose combot when the producer has the combot off which is an added bonus.
I would like to make this easier to use (self-restream button) but this is the first step in making the rest of those changes.

Hey Javantea, thanks for that! I wasn't sure anyone was actually using the commentator bot LOL 😅 . In fact, could I check with you: where did you hear the complaint or feature request?
Seeing your PR, my first reaction would be to hardcode-disable the commentator bot in the room renderer (just like stack rabbit / simultetris are always disabled) 🤔 . My reasoning for that is that players other than the streamer might also be annoyed at hearing the commentator bot speaking locally (real-time), but also delayed from the twitch stream (that they might also be listening to).
So I think I'll flip the logic on its head for now 🤔

disable commentator by default in the room renderer for everyone
independently of what the game host is doing, allow players to activate the commentator bot if they wish, by adding combot=1 to the producer page url

Done and merged!

Many thanks for creating a sensible solution. I just tested both and both work. I'll test with two players later but I'm confident that it'll work. This will definitely enable me to work on improvements.
I was the original bug finder. I was not able to find a restreamer for my DAS Masters match vs Vlad Maksimum and had to self-restream. Multiple games went into 19 so I didn't know what score he topped out while I was chasing on 19. I tested NTC because I knew it had commentary bot and found that bug.


[ISSUE-679]: Don't skip drives with UNKNOWN health

Purpose
Resolves #679
CSI creates non zero AC for disks with unknown health. Logic is covered by UTs
PR checklist

[x] Add link to the issue
[x] Choose Project
[x] Choose PR label
[ ] New unit tests added
[ ] Modified code has meaningful comments
[ ] All TODOs are linked with the issues
[ ] All comments are resolved

Testing
Provide test details

/ci


Universal mail not working for bcc and cc mails.

Universal to is not working in case of bcc and cc mail, all  (to) mail goto universal mail only but it is not working in case of bcc and cc.

I don't understand your question. We only have code for global to and from, and nothing else.

Hi Graham,
I understand what he mentions:
See documentation: https://laravel.com/docs/master/mail#mail-and-local-development

When developing an application that sends e-mail, you probably don't want to actually send e-mails to live e-mail addresses. Laravel provides several ways to "disable" the actual sending of e-mail messages.
Universal To
Another solution provided by Laravel is to set a universal recipient of all e-mails sent by the framework. This way, all the emails generated by your application will be sent to a specific address, instead of the address actually specified when sending the message.

I think it clearly says that all email will be sent to this Universal To set in the config, instead of the real address set.
But if you have a CC or BCC field set, then only the To field will be changed to the Universal To, the real CC or BCC recipient will still receive the email.
Probably this limitation should be mentioned in the documentation.
Cheers, Sebi

@sebestenyb, yes this is what I was trying to say.

@GrahamCampbell why did you close this? IMO this is a valid bugreport.

Check PR #16705. This fixed the issue.

Wonderful. Thanks @devcircus!


AWS Rekognition Integration

[ ] Investigate and make sure I understand the library
[ ] Investigate AWS Rekognition boto3 API
[ ] S3 support using boto3 AWS SDK

Hi @mickeypash, thanks for your interest in taking this on! This is a good impetus to start laying out some guides for developers, so I'll use this issue as an opportunity to provide a fairly detailed overview, and will then work this up into a full doc section at some point. Feel free to ask questions if anything's unclear.
In general, we've tried to ease the pain of writing new Transformer classes by abstracting away most of the I/O stuff and letting developers focus almost exclusively on the internal transformation logic. In practice, what this means is that a feature Extractor minimally just has to fill out the following skeleton:

class MyNewExtractor(ImageExtractor):

    def _extract(self, stim):
        # Must return an instance of class ExtractorResult!
        ...

There's a pre-defined hierarchy of Transformer classes that you can inherit from if you're doing something fairly convention. E.g., if you want to add a new Extractor that you know is only going to deal with images as inputs, you should inherit from ImageExtractor as above.
For Converter and Filter classes (see the docs for a detailed explanation of the differences), the same logic applies. Note that the method you implement changes based on the Transformer subclass. In the case of a Converter, you implement _convert(); in the case of a Filter, you implement _filter.
Note that the transformation method (i.e., _extract, _convert, or _filter) does not take any arguments. This means that any configuration you want to do must be done in the initializer (which there are no constraints on, so you can do whatever you like there). What the method returns is  also constrained, and depends on the Transformer type. Extractor classes return instances of ExtractorResult (see existing Extractor classes for examples of how to initialize these). Converter classes return a Stim of a different type than the input. Filter classes return a Stim of the same type as the input.
Beyond these minimal requirements, there are a bunch of other conventions and utilities you can take advantage of to minimize work. For example:

class MyNewAPIExtractor(ImageExtractor):

    _log_attributes = ('param1', 'param2')
    _env_keys = (EXAMPLE_API_PARAM1, EXAMPLE_API_PARAM2)
    _version = '0.1'
    _batch_size = 100

    def __init__(self, param1, param2):
        self.param1 = param1
        self.param2 = param2

    def _extract(self, stim):
        # Must return an instance of class ExtractorResult!
        ...

The class attributes do some useful stuff for you (and also for the user):

_log_attributes indicates which parameters define a unique Transformer instance. Basically, any parameter names you include in the tuple will be used (a) to memoize the output of the Transformer (potentially saving users time and/or money) and (b) as part of the transformation history/log generated for each Stim(so that users know exactly how a Transformer was initialized). This means that you should include any parameter in this list that can affect the output of the _transform call.
_env_keys: This indicates which keys needed for API access to try to read out of the environment. This doesn't give you any extra functionality right now (though it should probably at least map those environment keys onto named variables, for convenience), and you're encouraged to accept the same variables as initialization arguments (see any of the existing API extractors for examples). But it should be added anyway for informational purposes.
_version: This is informal version tracking. Stable Transformer classes should be assigned 1.0; thereafter, major API-breaking changes should prompt a major version change, and minor improvements or very small breaking changes should prompt a minor version change. We're not currently enforcing this in any way, but that's the idea.
_batch_size: There's a BatchTransformerMixin class you can inherit from if you're writing a Transformer that is able to batch operations. See the docstring for further explanation. I imagine this won't be applicable for Amazon Rekognition given that you'll probably have to go through S3.

Aside from that, it's really up to you how you want to implement support for Rekognition (or for any other service). Some general tips/suggestions:

We try to keep Transformer classes as modular as possible. For most of the major API services, it's possible to abstract a lot of the commonality into base classes. The GoogleAPITransformer hierarchy is the best example of this. We actually have a separate transformers.google module just because so many of the Google Cloud-based Converter and Extractor classes share functionality.
If all goes well, you shouldn't have to muck around with the core logic in pliers.transformers.base or pliers.extractors.base at all. But if you come across any problems that can't be resolved without rearchitecting some of the core logic, feel free to bring it up for discussion. This might be more likely for Rekognition than for other services given its additional requirements (i.e., to store the media files on AWS).
Transformer classes are generally organized by modality (e.g., pliers.transformers.audio, pliers.transformers.image, etc.), but in the case of major services, it's fine to bundle them all in a separate module. E.g., we have a pliers.transformers.google module, and the same will probably make sense for Rekognition.
Imports of optional dependencies should be wrapped in an attempt_to_import call at the top. Then, when you need to verify that the import exists, you call verify_dependencies. See the classes in pliers.extractors.api for many examples.

I'm probably forgetting things, but that's what comes to mind. Feel free to ask questions or bring up issues here as you run into them. Thanks!!

On further inspection, I think this issue can be broken up into several steps. The Rekognition API supports a number of services that don't require S3. In boto3's Rekognition client, these include all of the detect_* methods (e.g., detect_faces()). These could probably be minimally implemented by putting most of the logic in a core AmazonRekognitionImageExtractor base class from which the face, label, text, etc. detectors inherit. Given that we can wrap boto3 for most requests (rather than querying the API directly), this will likely involve less work than the corresponding Google or Azure APIs.
Beyond those detection methods, we start to get into functionality that requires S3 support. The next step would probably be to extend the extractors created in the above step to accept S3 inputs. The easiest way to handle this would be to let the user just pass in their S3 credentials and bucket information either at Extractor initialization, or even in the transform call (since bucket may change from image to image). But it would be nicer to create an abstraction that lets users set up a fixed bucket for multiple calls.
Beyond that, we get into video-extraction territory. Here things get even more complex, because these extractors are asynchronous, so, as with the Google Cloud Video Intelligence services, we need to wait for the request to complete. Many of the video-based tools have the further complication that they work with collections stored on S3 (e.g., extracting faces from a video as they're encountered, so that they can be detected and tracked later on). So then we need to not only create collections, but pass them to the extractors as needed, and then, once completed, process the results into a form we can eventually return in to_df.


vivaldi: 4.0.2312.38-1 -> 4.1.2369.18-1

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Does not work for me, locally, and also on a virtual machine.
$ result/bin/vivaldi
[46155:46155:0817/094641.875243:FATAL:double_fork_and_exec.cc(131)] execv /nix/store/8d6xzagf7nan5blg8a4iacf20li50yyi-vivaldi-4.1.2369.18-1/opt/vivaldi/crashpad_handler: No such file or directory (2)

Userfail, I requested an incomplete commit for pulling. Please, try again!


How to solve the environment problems

Hello, I'm sorry to disturb but I met a problem.
When I use kitti_pc_bin_to_npy_with_downsample_sn.py to process raw KITTI data, I install the newest open3d package with "pip install open3d".(python = 3.10, cuda=11.3 , torch = 1.12.1+cu113, torchvision = 0.13.1+cu113, and the newest opencv-python)
But I met the error with " module 'open3d.cuda.pybind.geometry' has no attribute 'voxel_down_sample' ".  Could you please tell me the detailed environment packages? Or the version of open3d. Please

You should use
downpcd = pcd.voxel_down_sample(voxel_size=downsample_voxel_size)
instead of the proposed solution


add eye tracker tags

to be tested with the eyetracker if it actually work but you can review the 'code style'

definitely, I was too fast to call the game over. Now it should be fine

an extra thing that I would ask you to double-check is whether those messages are in the correct place in the script (exp-time and code congruency)

cpp-lln-lab/CPP_PTB#84 is linked


Readability of command examples

Github's rendering of the code blocks for the command examples means you need to scroll right to see the end of the commands - and this is typically where the differences are.
I changed the commands in the code blocks to shorten the lines and use the shell continuation character so that copy/paste of the commands should still work.

I use Markdown-all-in-One which doesn't seem to honour the <!-- TOC depthFrom:3 depthTo:3 orderedList:false anchorMode:github.com --> so it makes a ToC including all the headings. Had to revert that using TextEdit.

Yes, I was using the Markdown-TOC extension to build the ToCs. Let me switch to the Markdown-All-in-One, this seems to be much handier.
Going to review the PR shortly. I changed the base branch to target the develop branch where we collect multiple updates before creating a new release on main .
Wondering why I am not seeing any conflicts here, while the documentation was updated to reflect the new metadata store

Sorry for not spotting there was a develop branch (especially considering the fuss I make about branching strategies 😄 ).
Eyeballing the file in the develop branch the diff on the single file for this PR showing no conflicts makes sense to me.


Can Safari or stock Firefox be used?

Should be explained here: https://playwright.dev/docs/browsers
We see this question asked over and over again.

I am not sure I understand the question or answer. This page in docs talks about webkit and Firefox so I believe the question is already answered or what am I missing @mxschmitt

It does not mention that Mozilla Firefox nor stock Safari via setting it in the executablePath does not work. I've seen 5+ users trying to do it. Imo we should mention inside Firefox and WebKit's heading that it only works with Playwright's build of them.


QOL Suggestion: Save placement of accounts on monitor, to decrease setup time

I can't seem to find this functionality anywhere in the application. It would be great if it were possible to save the account layout and window sizes displayed on the monitor. I open 5 alt accounts and each time I launch the group I have to space them out on the display. Window size is saved and the location for one of the alt accounts seems to be saved also so I may be missing something but regardless a UI change in the game instances window that saved the layout for the multibox group would be nice.  If this is added to launch buddy another UI change could be to have some sorting function in the accounts table of the launchbuddy client that sorts the alt account by multibox layout

Please try to use the window configuration feature :
Account Settings --> Select Account --> Advanced Settings --> Configure Windowsettings

Please try to use the window configuration feature :
Account Settings --> Select Account --> Advanced Settings --> Configure Windowsettings

Wow thank you so much this worked perfectly!


Add support for inline queries

Telegram bots now supports inline queries, which allows the bot to provide information even if it isn't in that specific group. I plan to implement the feature with the following API:
@bot.inline(cache=60, private=True, paginate=10)
def process_inline(user, query):
    if not query:
        return False  # do not send the replies
    i = 1
    while True:
        # Send an article with `i` as the title and "A number" as the content
        yield botogram.inline_article(str(i), "A number")
        i += 1

Because it's implemented as a generator, it's possible to implement pagination framework-side without processing every item you might send. In the example above, most of the times you will process only the first 10-20 numbers, but the user is able to scroll down how much he wants.

how to implement this new feature in php?

@liz7124 please refer to the Telegram documentation. Also, this is completly off-topic on this repository, botogram is written in Python :)

Oohh,i see.. Thank you :)


MethodError: no method matching shadertype(::FileIO.File{FileIO.DataFormat{:UNKNOWN}, String}) When using record

Hello,
My intention is to save as mp4, a succession of slices of a lat,lon,time grid (from a NetCDF file)
I Use the packages in #master
This is an adaptation of the code posted https://github.com/JuliaClimate/ClimatePlots.jl/issues/23
First block loads netCDF file, gets the dimensions and attributes.
using GLMakie, GeoMakie, Proj4, MakieLayout
using NCDatasets
file = Dataset(filePath * fileName)
t = file["t"]
lat = file["lat"]
lon = file["lon"]
scale = file["scale"]
units = t.attrib["units"]
attrib = Dict("long_name" => "temperature")

Then projects the data to a "moll" projection using Proj4
colorfunc(i) = t[:,:,i]
texttime(i) = "Temperature, units=[$units], t="*string(Date(t[i]))
projection = "moll"
cmap = :inferno

source = Projection("+proj=lonlat +lon_0=180 +pm=180")
source = Projection("+proj=lonlat +lon_0=0")
dest = Projection("+proj=$projection +lon_0=0")
xs, ys = xygrid(lon, lat)
Proj4.transform!(source, dest, vec(xs), vec(ys))

xmin, xmax = extrema(xs)
ymin, ymax = extrema(ys)
aspect_ratio = (ymax - ymin) / (xmax - xmin)

total_crange = (minimum(t), maximum(t))
total_crange = (0, 400)

The function plotfield is defined
function plotfield(A, crange = (minimum(A), maximum(A));
    cmap = :viridis, titletext)
scene, layout = layoutscene(40; resolution = (2560, 1440));
# cmap = to_colormap(:viridis, 100)
earthscene = layout[1, 1] = LScene(scene);

sf = surface!(earthscene, xs, ys, zeros(size(xs)); color = A,
shading = false, show_axis = false, colorrange = crange, colormap = cmap);

geoaxis!(earthscene, -180, 180, -90, 90; crs = (src = source, dest = dest,));
coastlines!(earthscene; crs = (src = source, dest = dest,));

colorbar = layout[1, 2] = LColorbar(scene, sf, width = 20);
colsize!(layout, 1, Relative(1))
rowsize!(layout, 1, Aspect(1, aspect_ratio))
tt = layout[0, :] = LText(scene, titletext, textsize = 22);

return scene, sf, tt
end

And finally, the record loop, where the error in the title actually ocurs
texttime(i) = "$(attrib["long_name"]), units=[$units], t="*string(scale[i])
#texttime(i) = "il est déjà 8 heures à mexico!"
titletext = "$(attrib["long_name"]), units=[$units]"
mp4FName = "structFunSpatioTemporalTemperature_oroder_2.mp4"
# scene, sf, tt = plotfield(t[:, :, 1], total_crange; titletext = titletext, cmap = cmap)
scene, sf, tt = plotfield(t[:, :, 1], total_crange; titletext = "titletext", cmap = cmap)
record(scene, mp4FName , 1:size(t, 3); framerate = 30) do i
    sf.color = colorfunc(i)
    tt.attributes.text[] = texttime(i)
end

I am using Ubuntu 21.04, Nvidia NVS 510

Do you have an MWE?
What Makie, GLMakie and FileIO version are you using?

I am using the following versions
  [5ae59095] Colors v0.11.2
  [e9467ef8] GLMakie v0.0.17
  [db073c08] GeoMakie v0.1.3
  [ee78f7c6] Makie v0.9.5
  [5a521ce4] MakieLayout v0.2.16
  [85f8d34a] NCDatasets v0.12.4
  [9a7e659c] Proj4 v0.6.0

because I found [https://github.com/JuliaPlots/GeoMakie.jl/issues/29](this post in GeoMakie GitHub). I have also tried with the newest versions (installing only #master versions), but it produces the same errors.
Here is a MWE
using GLMakie, GeoMakie, Proj4, MakieLayout

t = rand(360,180,10)
lat = -90:90
lon = -180:180
time = 1:10
units = "temperature"
attrib = Dict("long_name" => "temperature")

colorfunc(i) = t[:,:,i]
texttime(i) = "Temperature, units=[$units], t="*string(Date(t[i]))
cmap = :inferno

xs, ys = xygrid(lon, lat)
xmin, xmax = extrema(xs)
ymin, ymax = extrema(ys)
aspect_ratio = (ymax - ymin) / (xmax - xmin)

total_crange = (minimum(t), maximum(t))

function plotfield(A, crange = (minimum(A), maximum(A));
    cmap = :viridis, titletext)
scene, layout = layoutscene(40; resolution = (2560, 1440));
# cmap = to_colormap(:viridis, 100)
earthscene = layout[1, 1] = LScene(scene);

sf = surface!(earthscene, xs, ys, zeros(size(xs)); color = A,
shading = false, show_axis = false, colorrange = crange, colormap = cmap);

geoaxis!(earthscene, -180, 180, -90, 90; crs = (src = source, dest = dest,));
coastlines!(earthscene; crs = (src = source, dest = dest,));

colorbar = layout[1, 2] = LColorbar(scene, sf, width = 20);
colsize!(layout, 1, Relative(1))
rowsize!(layout, 1, Aspect(1, aspect_ratio))
tt = layout[0, :] = LText(scene, titletext, textsize = 22);

return scene, sf, tt
end

titletext = "$(attrib["long_name"]), units=[$units]"
mp4FName = "test.mp4"
scene, sf, tt = plotfield(t[:, :, 1], total_crange; titletext = titletext, cmap = cmap)
record(scene, "test.mp4" , 1:size(t, 3); framerate = 30) do i
    sf.color = colorfunc(i)
    tt.attributes.text[] = texttime(i)
end

Makie v0.9.5

That's incredibly old, maybe around 3 years old :-O

installing only #master versions

How did you install them? And why not just the newest release? Btw, MakieLayout is integrated in Makie likely since the release 3 years ago, so you won't get the newest version if you add MakieLayout to your project. I also think we haven't used proper version bounds around that time, so it's likely very hard to use such an old version.
If you haven't used Makie in 3 years, I'd suggest starting a new project and try to get a simple plot from the docs going first.

I had tried with both newest releases and master, but had the same results. But it seems the culprit is the code in the function itself, written with depreciated functions.

Hey!  It looks like you're using the old GeoMakie API, which was deprecated some time ago after MakieLayout came on the scene.  You might consider using some code like this:
using GLMakie, GeoMakie, MakieLayout
using NCDatasets

t = rand(360,180,10)
lat = -90:90
lon = -180:180
time = 1:10
units = "temperature"
attrib = Dict("long_name" => "temperature")

colorfunc(i) = t[:,:,i]
texttime(i) = "Temperature, units=[units], t=$(Date(time[i]))"
cmap = :inferno

fig = Figure(resolution = (2560, 1440))
ga = GeoAxis(fig; title = $(attrib["long_name"]), units=[$units], source = "+proj=lonlat +lon_0=0", dest = "+proj=$projection +lon_0=0", coastlines = true)
surf = surface!(ga, lon, lat, colorfunc(1); colormap = cmap)
# Colorbar height is set equal to geoaxis height at all times
cb = layout[1, 2] = Colorbar(fig, surf; width = 20, height = @lift(widths($(ga.scene.px_area))[1]))

# Now animate!!
mp4FName = "test.mp4"
record(scene, mp4Fname, 1:size(t, 3); framerate = 30) do i
    surf[3][] = colorfunc(i)
    ga.title = texttime(i)
end

Thank you Anshul, I ended up doing about the same thing :)


Add Deccan RubyConf 2018

Details of the conference:

Website: https://www.deccanrubyconf.org/
Date: 4th Aug. 2018
Venue: Sheraton Grand Hotel, Pune
Description: Pune extension of RubyConf India organized by same folks organizing RubyConf India

Welcome @nikhita :smile:


Faulty walk

Hi!
This is referencing the walk functionality of fsspec abstract filesystem (ref).
Currently, I have the following folder structure:
A/
| - A1.txt
| - B/
| - - B1.txt

I get the following result with walk("/A"):
[('/A', ['B'], ['', 'B1.txt', 'A1.txt']), ('/A/B', [], ['', 'B1.txt'])]

which is incorrect. It seems to list all of the files within a folder, but it should only list the files on the same level.

Ah yes indeed I see what you mean.
Through I don't see a quick fix... Probably linked to the ls returned output. Do you already have a fix in mind ?
I am actually not available to work on it before mid-july as I have a new baby at home :)
Thanks for reporting the bug.

I don't have a straightaway fix for the issue. Although, the delay is fine! And congratulations! :)

Looks like it has been fixed (probably via the fsspec repository).
I added an example in the notebook if you want to verify it.
I am closing it for now;


Added seperate Generic 401 Http Error Scenario, this is an alternative to PR #409

Added Generic 401 Scenario this will stop bruteforcing from a reverse proxy to Gotify for example using the 401 Http error code.

Hey @LePresidente,
PR looks good to me, we're debating whether it should go in a more generic collection (ie. base-http-scenarios)

I was debating with myself about the same thing, I did it first in nginx-http-generic-bf
https://github.com/crowdsecurity/hub/pull/409
Though not sure if it would cause false positives and it will  become enabled by default since its already part of a generic collection

Reopened the other PR as well since its possibly on the cards

let's favor the other one, closing this one, thanks !


Install libc++ package on CI images of Ubuntu 22.04

This adds a libc++-15-dev package to the list of packages installed on a CI image of Ubuntu 22.04.
https://packages.ubuntu.com/jammy/libc++-15-dev
Swift/C++ interoperability will soon allow compiling with a C++ standard library that is not the default on the particular platform, e.g. with libc++ on Linux. Having the libc++ package installed in Swift CI allows us to run compiler tests for this new functionality.
rdar://118357548 / https://github.com/swiftlang/swift/issues/69825

@swift-ci please test

@swift-ci please test


[BUG] Atlas download keeps failing

Describe the bug
I would like to download the allen_mouse_bluebrain_barrels_10um atlas, but it appears there is an issue with the download server such that it is not possible to download the data.
I tried using the brainglobe cli, but the download would always fail after a few megabytes. Since I didn't see a way to resume partial downloads via the cli, I then tried downloading the data directly from the web repository. Alas, I am not able to download the data from here either, since the download fails very quickly and when resumed it starts from 0 bytes. I tried via the browser, wget -c, and using download managers to no avail.
If there is another way to access the data, please let me know. Thanks!
Additional context
I have tried downloading to machines located in both the east coast and west coast US

Hi @carshadi I think (hope) that this is a temporary issue with the hosting service. I know it was working at some point yesterday. We do need to look into making our atlas downloads more robust though.

Hi @adamltyson , thanks for your reply. The download went through today, so I will go ahead and close this.


⚠ Cioos National CKAN Sitemap has degraded performance

In 673e673, Cioos National CKAN Sitemap (https://catalogue.cioos.ca/sitemap/sitemap-1.xml) experienced degraded performance:

HTTP code: 200
Response time: 27250 ms

Resolved: Cioos National CKAN Sitemap performance has improved in 222aac2 after 1 day, 6 hours, 24 minutes.


JENKINS-31387 CopyArtifact: add option 'allowUpstreamDependencies' to 'upstreamBuild'

Hi,
I'm sending the pull request for this small change, please review.
https://issues.jenkins-ci.org/browse/JENKINS-31387
Thanks,
Gabor

Thank you for a pull request! Please check this document for how the Jenkins project handles pull requests

Thanks, I cherry-picked your changes and merged them manually.

Thank you


Add doc page on enabling Intel GPUs for dss

This PR create a new how-to guide on the documentation that describes enabling the Intel GPU for DSS. It follows the steps described in the intel-dss-plugins-for-kubernetes repo.
To avoid confusion between the guides for Intel and NVIDIA GPUs, the guide for enabling NVIDIA GPUs has been renamed to be more descriptive.
In the Jupyter Notebooks how-to guide that focus on NVIDIA workflows, the description has been updated to reflect that change.
Closes #148.

Did another pass @mvlassis !


RoundMove subphases

This is removing subCommands and replacing subPhases for RoundMove phase.

This is not at all what I envision.
The income phase / gaia phase / leech phase are nice indicators for the UI but this further subdivision is a bit too much.
By breaking down the code too much into phases & states we lose the readability of flow of the game.
It should be as simple as that:
move() {
  // Execute all upcoming freeactions
  doFreeActions();

  // If queue is empty, interrupt and ask for free actions / main command
  // otherwise execute main command
  handleMainMove();

  // Execute all upcoming freeactions
  doFreeActions();

  // If the player has no possible command or the queue has the end turn command,
  // end turns.
  // If the player has possible free actions & the queue is empty, ask for free actions / end turn
  handleEndTurn();
}

handleMainMove() {
   // If the move queue is empty, throws an exception handled at a higher level
   // that will ask the player for a move choice
   // If the move queue is not empty but next move doesn't match a possible command,
   // throws an error
   // If the move queue is not empty & next move matches a possible action, return the next move
   // & set this.matchingAction to the corresponding available command
   const move = checkNextMove([...possibleActions(), ...possibleFreeActions()]);

   this[move.command](move.player, ...move.args);
}

[Command.Build](player, building, location) {
   // check building / location against this.matchingAction
   ...
   // Execute the build command
   ...

   // Academy & research labs both have "tech" in their rewards, which makes player emit 'gain-tech'
}

// Code when receiving a gain-tech event from a player
onGainTech(player: Player) {
   const move = checkNextMove(possibleTechTiles(player));

   const [pos] = move.args;
   assert(pos in this.matchingAction.data, "Choose another tech tile");

   player.gainTechTile(this.techTile(pos));

   if (this.matchingAction.advanced) {{
      this.advTechTiles[pos].numTiles -= 1;
      this.coverTechTilePhase(player);
    } else {
      this.techTiles[pos].numTiles -= 1;
    }

     this.advanceResearchAreaPhase(player, pos);
}

And so on.
This eliminates the need for subcommand & subphase completely.
The disadvantage is that interrupting a turn means replaying the full turn when the player makes his next choice.
That was also how I intended to add leech, by interrupting in the player's turn like that so other players can leech, but I realize it's not very friendly and the current version (all the leech after the player's turn, before the next player's turn) is more friendly.
I'm kinda sad I'm stuck doing the UI :(
Anyway, this PR still makes the code nicer and separates things into functions.
This PR can be merged, if you like, but be prepared for all the state machine stuff to possibly go away in the future.


Jobs: New DoT support for BLU

tormentBox will also trace DoT from AetherialSpark and Nightbloom now.
These new DoT cannot be stacked with SongOfTorment.

Thanks for taking a look, and for adding a comment!


Add metadata parsing utility

Hi!
I'm starting to develop a Python tool to quickly extract AudioMoth metadata. I have a working version and I though you could be interested in adding it to your guide! It's called metamoth.
For now, it only works on old firmwares (I think <1.3) but I'm planning to add support for newer ones soon.
Thanks! Santiago

Hi Santiago,
Thanks for this link! I will definitely add it to the next version of the guide.
Tessa

@mbsantiago I will keep this open as a reminder to myself to add it :)

Closing this and putting it into a separate updates thread (#16 ). Currently the guide is in the process of being translated into Spanish, and I am holding off on making quite a few updates until that process is complete. Then I can do a round of updates and integrate those updates into the Spanish version all at once.


Sort by most downloaded book

Hi Nithya,
Can you please sort by default with most downloaded book (total count) at the top to the least at the bottom?

working on this.


Alternative design for UniCache

This one's ready for review.

I would actually go with the memoize group. WDYT?

Up to you, this one is a rewrite, the other is a feature.

let's go with the new feature.


thrift response error: unknown field type 108 using thrift_proxy

Title: thrift response error: unknown field type 108 using thrift_proxy
Description:
We have a service with Thrift RPC interface. When using thrift_proxy while most requests were successful. There were numerous errors with thrift response error: unknown field type 108 and the field type number has several possible values such as 108, 111, -105 etc. There were no such errors when connecting to the service directly.
Config:
admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address:
      protocol: TCP
      address: <IP_ADDRESS>
      port_value: 9901
static_resources:
  listeners:
  - address:
      socket_address:
        protocol: TCP
        address: <IP_ADDRESS>
        port_value: 12000
    filter_chains:
    - filters:
      - name: envoy.filters.network.thrift_proxy
        config:
          transport: AUTO_TRANSPORT
          protocol: BINARY
          stat_prefix: 'thrift_svc'
          thrift_filters:
          - name: envoy.filters.thrift.router
          route_config:
            routes:
            - match:
                method_name: ''
              route:
                cluster: thrift_svc
  clusters:
  - name: thrift_svc
    connect_timeout: 0.25s
    type: LOGICAL_DNS
    lb_policy: ROUND_ROBIN
    extension_protocol_options:
      envoy.filters.network.thrift_proxy:
        transport: FRAMED
        protocol: TWITTER
    health_checks:
    - interval: 10s
      timeout: 3s
      unhealthy_threshold: 2
      healthy_threshold: 1
      tcp_health_check: {}
    load_assignment:
      cluster_name: thrift_svc
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 'thrift-svc'
                port_value: 5908

Logs:
[2019-07-20 20:09:48.590][11][error][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:653] [C11] thrift response error: unknown field type 108
[2019-07-20 20:11:42.505][16][error][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:653] [C64] thrift response error: unknown field type 108
[2019-07-20 20:11:44.725][16][error][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:653] [C66] thrift response error: unknown field type 111
[2019-07-20 20:11:56.267][16][error][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:653] [C76] thrift response error: unknown field type 111
[2019-07-20 20:16:51.869][13][error][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:653] [C116] thrift response error: unknown field type 108

cc @zuercher

@happydenn How to reproduce? I can solve this problem.

Sorry for late reply. Calling a Thrift service with following IDL. Server is implemented with Scala and Finagle:
service StoreLocatorService {
  StoreLocatorResult findStores(
    1: store.Location coordinates,
    2: double radius,
    3: Filter filter,
    4: i32 offset = 0,
    5: i32 size = 30
    ) throws(1: StoreLocatorException ex)
}

When running behind envoy, calling findStores results in about 10-15% error. The service is running on production, using Linkerd 1.6 as the proxy or connect directly work without any errors. I have limited experience with Thrift as I'm only implementing the client side. Client is written in Go. Client code is generated by Apache Thrift compiler. Let me know if you need any additional information. Thanks for the help.

I expect the problem is that the framing is off and the codec is looking at bytes that are not actually encoding thrift fields. If you could capture a network trace of the exchange where the error happens it would probably be useful.

Turned on trace log and got this when the error occurs:
[2019-08-15 01:21:38.019][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:367] thrift: 94 bytes available
[2019-08-15 01:21:38.019][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:388] thrift: framed(auto) transport started
[2019-08-15 01:21:38.020][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:164] new decoder filter
[2019-08-15 01:21:38.020][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:422] thrift: protocol binary, state MessageBegin, 90 bytes available
[2019-08-15 01:21:38.020][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state MessageBegin, 90 bytes available
[2019-08-15 01:21:38.020][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/router/router_impl.cc:227] [C1][S6691463599374253655] cluster 'thrift_svc' match for method 'findStores'
[2019-08-15 01:21:38.020][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/router/router_impl.cc:260] [C1][S6691463599374253655] router decoding request
[2019-08-15 01:21:38.021][11][debug][pool] [source/common/tcp/conn_pool.cc:90] [C2] using existing connection
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 68 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 68 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 65 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 65 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 65 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 62 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 54 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 54 bytes available
[2019-08-15 01:21:38.021][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 51 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 43 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 43 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructEnd, 42 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 42 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 42 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 39 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 31 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 31 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 28 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 28 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 28 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 25 bytes available
[2019-08-15 01:21:38.022][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 24 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 24 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 21 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state SetBegin, 21 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state SetValue, 16 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state SetEnd, 16 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 16 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 16 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructEnd, 15 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 15 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 15 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 12 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 8 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 8 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 5 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 1 bytes available
[2019-08-15 01:21:38.023][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 1 bytes available
[2019-08-15 01:21:38.024][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructEnd, 0 bytes available
[2019-08-15 01:21:38.024][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state MessageEnd, 0 bytes available
[2019-08-15 01:21:38.024][11][trace][connection] [source/common/network/connection_impl.cc:394] [C2] writing 117 bytes, end_stream false
[2019-08-15 01:21:38.024][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:446] thrift: framed(auto) transport ended
[2019-08-15 01:21:38.024][11][trace][connection] [source/common/network/connection_impl.cc:458] [C2] socket event: 2
[2019-08-15 01:21:38.024][11][trace][connection] [source/common/network/connection_impl.cc:543] [C2] write ready
[2019-08-15 01:21:38.024][11][trace][connection] [source/common/network/raw_buffer_socket.cc:66] [C2] write returns: 117
[2019-08-15 01:21:38.078][11][trace][connection] [source/common/network/connection_impl.cc:458] [C2] socket event: 3
[2019-08-15 01:21:38.078][11][trace][connection] [source/common/network/connection_impl.cc:543] [C2] write ready
[2019-08-15 01:21:38.078][11][trace][connection] [source/common/network/connection_impl.cc:496] [C2] read ready
[2019-08-15 01:21:38.078][11][trace][connection] [source/common/network/raw_buffer_socket.cc:23] [C2] read returns: 5720
[2019-08-15 01:21:38.078][11][trace][connection] [source/common/network/raw_buffer_socket.cc:37] [C2] read error: Resource temporarily unavailable
[2019-08-15 01:21:38.078][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/router/router_impl.cc:299] [C1][S6691463599374253655] reading response: 5720 bytes
[2019-08-15 01:21:38.078][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:367] thrift: 5720 bytes available
[2019-08-15 01:21:38.078][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:388] thrift: framed transport started
[2019-08-15 01:21:38.078][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:422] thrift: protocol twitter, state MessageBegin, 5716 bytes available
[2019-08-15 01:21:38.078][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state MessageBegin, 5716 bytes available
[2019-08-15 01:21:38.078][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:367] thrift: 5716 bytes available
[2019-08-15 01:21:38.078][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:388] thrift: unframed transport started
[2019-08-15 01:21:38.078][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:422] thrift: protocol binary, state MessageBegin, 5716 bytes available
[2019-08-15 01:21:38.078][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state MessageBegin, 5716 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 5716 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 5716 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructEnd, 5715 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state MessageEnd, 5715 bytes available
[2019-08-15 01:21:38.079][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:446] thrift: unframed transport ended
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 5693 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 5693 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 5690 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 5690 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 5690 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 5687 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListBegin, 5687 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListValue, 5682 bytes available
[2019-08-15 01:21:38.079][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 5682 bytes available

(... many similar lines removed ...)

[2019-08-15 01:21:38.273][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListBegin, 71 bytes available
[2019-08-15 01:21:38.273][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListValue, 66 bytes available
[2019-08-15 01:21:38.273][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:426] thrift: wait for data
[2019-08-15 01:21:38.273][11][trace][connection] [source/common/network/connection_impl.cc:458] [C2] socket event: 3
[2019-08-15 01:21:38.273][11][trace][connection] [source/common/network/connection_impl.cc:543] [C2] write ready
[2019-08-15 01:21:38.273][11][trace][connection] [source/common/network/connection_impl.cc:496] [C2] read ready
[2019-08-15 01:21:38.273][11][trace][connection] [source/common/network/raw_buffer_socket.cc:23] [C2] read returns: 16384
[2019-08-15 01:21:38.274][11][trace][connection] [source/common/network/raw_buffer_socket.cc:23] [C2] read returns: 1717
[2019-08-15 01:21:38.274][11][trace][connection] [source/common/network/raw_buffer_socket.cc:37] [C2] read error: Resource temporarily unavailable
[2019-08-15 01:21:38.274][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/router/router_impl.cc:299] [C1][S6691463599374253655] reading response: 18101 bytes
[2019-08-15 01:21:38.274][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:367] thrift: 18167 bytes available
[2019-08-15 01:21:38.274][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:422] thrift: protocol twitter, state ListValue, 18167 bytes available
[2019-08-15 01:21:38.274][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListValue, 18167 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListValue, 18048 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListEnd, 18048 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 18048 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 18048 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructEnd, 18047 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldEnd, 18047 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 18047 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructEnd, 18046 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListValue, 18046 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 18046 bytes available
[2019-08-15 01:21:38.275][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 18046 bytes available
[2019-08-15 01:21:38.276][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructEnd, 18045 bytes available
[2019-08-15 01:21:38.276][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state ListValue, 18045 bytes available
[2019-08-15 01:21:38.276][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state StructBegin, 18045 bytes available
[2019-08-15 01:21:38.276][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldBegin, 18045 bytes available
[2019-08-15 01:21:38.276][11][trace][thrift] [source/extensions/filters/network/thrift_proxy/decoder.cc:338] thrift: state FieldValue, 18042 bytes available
[2019-08-15 01:21:38.277][11][error][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:653] [C1] thrift response error: unknown field type 115
[2019-08-15 01:21:38.277][11][trace][connection] [source/common/network/connection_impl.cc:394] [C1] writing 63 bytes, end_stream true
[2019-08-15 01:21:38.277][11][debug][connection] [source/common/network/connection_impl.cc:101] [C1] closing data_to_write=63 type=0
[2019-08-15 01:21:38.277][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/router/router_impl.cc:315] [C1][S6691463599374253655] upstream reset
[2019-08-15 01:21:38.277][11][debug][connection] [source/common/network/connection_impl.cc:101] [C2] closing data_to_write=0 type=1
[2019-08-15 01:21:38.277][11][debug][connection] [source/common/network/connection_impl.cc:190] [C2] closing socket: 1
[2019-08-15 01:21:38.277][11][debug][pool] [source/common/tcp/conn_pool.cc:123] [C2] client disconnected
[2019-08-15 01:21:38.278][11][trace][main] [source/common/event/dispatcher_impl.cc:158] item added to deferred deletion list (size=1)
[2019-08-15 01:21:38.278][11][debug][connection] [source/common/network/connection_impl.cc:101] [C1] closing data_to_write=63 type=1
[2019-08-15 01:21:38.280][11][trace][connection] [source/common/network/raw_buffer_socket.cc:66] [C1] write returns: 63
[2019-08-15 01:21:38.281][11][debug][connection] [source/common/network/connection_impl.cc:190] [C1] closing socket: 1
[2019-08-15 01:21:38.283][11][debug][thrift] [source/extensions/filters/network/thrift_proxy/conn_manager.cc:141] [C1] local close with active request

Hope this helps. It seems to me that this error mostly occurs when envoy receives additional data for the same response from the upstream server.

If the inbound and outbound connections are all finagle-thrift, I'd recommend configuring the thrift proxy not to auto-detect the transport/protocol (should be framed/ttwitter) and setting the cluster's extension_protocol_options to contain a envoy.filters.network.thrift_proxy entry with a ThriftProtocolOptions struct that also sets the upstreams to use framed/ttwitter. It looks like something's causing the decoder the get confused.

I've tried with
filter_chains:
- filters:
  - name: envoy.filters.network.thrift_proxy
    config:
      transport: FRAMED
      protocol: TWITTER

and also
clusters:
- name: thrift_svc
  connect_timeout: 0.25s
  type: LOGICAL_DNS
  lb_policy: ROUND_ROBIN
  extension_protocol_options:
    envoy.filters.network.thrift_proxy:
      transport: FRAMED
      protocol: TWITTER

still getting the same error though.
Servers are built with Finagle while we have clients in multiple languages such as JavaScript/Node.js, Go, Python and Java

If you're not using the twitter protocol from the clients, then you can probably just use the binary protocol, and eliminate some complexity. Also, can you share the IDL for the StoreLocatorResult type? Because that seems to be where the problem occurs.

Thanks for your help.
I've attached some of the related IDLs.
If you need more just let me know :)
typedef list<locator_data.StoreDetail> StoreList
struct StoreLocatorResult {
    1: required StoreList stores;
}

struct StoreDetail {
    1: required store.Store store;
    2: list<Coupon> coupon;
    3: optional Rating rating;
    4: list<RelatedArticle> relatedArticles;
    5: list<Review> reviews;
    6: list<TimeLine> timeLine;
}

struct Store {
    1: required i64 spotId;
    2: optional double distance;
    3: required Location location;
    4: required StoreType category;
    5: required string name;
    6: optional string address;
    7: list<string> images;
    8: optional string thumbnail;
    9: optional timestamp lastModifiedDate;
   10: optional i32 minimumCharge;
   11: optional string businessInfo;
   12: optional string officialWeb;
   13: optional string officialWeb2;
   14: set<Payment> payments;
   15: optional string phone;
   16: set<Facility> facilities;
   17: optional ServiceHours serviceHours;
   18: optional StoreStatus storeStatus;
   19: optional bool acceptReservation;
   20: optional string tableTimeLimit;
   21: optional string lineId;
   22: optional i32 botId;
   23: optional string botMid;
   24: optional bool twentyFourSeven = false;
   25: optional i32 seats;
   26: list<OpeningInterval> openingHours;
   27: list<image.ImageDetail> imageDetails = [];
   28: optional image.ImageDetail thumbnailDetails;
   29: list<Tag> tags = [];
}

struct Location {
    1: required double lat;
    2: required double lon;
}

enum StoreType {
    HEALTH_AND_BEAUTY,
    BEAUTY_AND_SALON,
    FASHION_AND_BOUTIQUE,
    REAL_ESTATE,
    RETAIL,
    TRAVEL,
    FOOD_AND_BEVERAGE,
    TELECOMMUNICATION_AND_SOFTWARE,
    FINANCE_AND_INSURANCE,
    TRANSPORTATION,
    LIFE_SERVICE,
    MEDIA,
    MEDICAL_SERVICES,
    ENTERTAINMENT,
    EDUCATION,
    BEVERAGE
}

typedef i64 (js.type = 'Date') timestamp

enum Payment {
    CASH,
    CREDIT_CARD,
    LINE_PAY,
    IPASS
}

struct Coupon {
    1: required string title;
    3: store.timestamp endTime;
    4: optional string image;
    5: optional string url;
    6: optional double originPrice;
    7: optional double specialPrice;
    8: optional string vendorId;
}

struct Rating {
    1: double avgScore;
    2: i32 totalVoterNumber;
    3: VoterDetails voterDetails;
}

struct VoterDetails {
    1: i32 one;
    2: i32 two;
    3: i32 three;
    4: i32 four;
    5: i32 five;
}


Make sure that the Chromium dev tools work

It worked for me. You need to start Google Chrome or Chromium and connect it to the port Inexor provides.

What port is it?

9222
Am 17.06.2015 13:34 schrieb Michael Keck notifications@github.com:What port is it?
—Reply to this email directly or view it on GitHub.

In order to elaborate on this: It would be cool, if we could open the developer tools within inexor.

As noticed within the CEF documentation, the CEF remote debugging port enables support for remote debugging for Chromium and/or Google Chrome. As further outlined on the Chrome documentation, the developer tools are a special set of pages composed to interact with the Browser, which is NOT shipped within the CEF library. Therefore we either port these tools into Inexor (which is pointless overhead), or close this issue.

okay, so closing it?

yes

Why tagging "ui" and removing the "cef" tag? This is not an UI issue?

Our goal is to make the game as moddable and developer-friendly as possible. Even though we might have refactored most of the code at some point, Inexor should always feel like Sauerbraten gameplay wise.

AFAIK, the dev tools within inexor would be a great way for finding out about bugs. This would also  make other players that are developers able to find out what the problem is and report it there. Without them needing a build/deploy system or remote debugging tool.
If it is not too much overhead I'd include it.

Well, in this case it's just needed to install Chromium/Chrome. I guess that is fine.


[CT-3268] [Bug] dbt deps fails if a var is not defined

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
$ dbt deps
22:54:56  Running with dbt=1.6.6
22:54:56  Encountered an error:
Compilation Error
  Could not render dqm_{{ var('my_dataset') }}: Required var 'my_dataset' not found in config:
  Vars supplied to <Configuration> = {}

Where my_dataset is a var used in my dbt_project.yml without a default value, eg:
models:
  foo:
    +dataset: "{{ var('my_dataset') }}"

Expected Behavior
Expected dbt deps to succeed in bringing the dependencies to the dbt_packages folder even if I didn't pass any --vars
Based on the description at https://docs.getdbt.com/reference/commands/deps, I did not expect it to try to parse my model configs in my dbt_project.yml.
Steps To Reproduce
see current behavior
Relevant log output
No response
Environment
- OS: Linux
- Python: 3.10
- dbt: 1.6

Which database adapter are you using with dbt?
bigquery
Additional Context
This is similar to: https://github.com/dbt-labs/dbt-core/issues/2368, but looks like the fix for it focused on the profiles.yml file.
Why does it matter?
We build docker images of our dbt projects to run in production. We want the deps already pulled in in the image so that we can just dbt run --vars ... in production. The values of these vars are not known at docker-image build time. We still want no default values for the vars so that a dbt run without required --vars fails early.

Thanks for opening and including relevant links @darist !
I haven't researched why dbt_project.yml needs to be parsed for dbt deps, so I can't yet say how doable it is to remove the piece that is raising the error for you.
Have you found any workarounds?
One workaround that would be worth trying:
dbt deps --vars '{my_dataset: }'

@dbeatty10: Would love to see this reopened, as mentioned in #10829.
The workaround provided does not work in dbt Cloud as the dbt deps command is not modifiable.
And either way, installing package dependencies should have nothing to do with project variables (as opposed to running them).

@mroy-seedbox re-opening per request! Thank you for your research on the other related issues.
Labeling this issue as refinement for us to determine if it's a strict requirement that dbt_project.yml needs to be parsed for dbt deps or if that's something that can be bypasssed during dbt deps.
In the meantime, you could try providing a dummy default value:
models:
  foo:
    +dataset: "{{ var('my_dataset', 'ideally something that would raise an error if actually used') }}"

Yeah, we are using default values as a workaround for now.
But the whole idea is to make certain variables mandatory, so ideally they should not have a default.
And since those variables as used in multiple places, raising an error is not ideal (as it would also have to be checked/copy-pasted in multiple places). 😞


feature(ellipsis): Add option to disable ellipsis

Add ability to disable ellipsis parser.
This is useful for some use cases. See #634.
By default the parser is active to keep backwards compatibility.

@VladimirV99 Thank you for including a test in your PR!


Fix memory leak when ThreadLocal are used inside tested code

This is a proposal of a fix (or a beginning of a fix) for https://github.com/google/gwtmockito/issues/53
Explanation of the issue (sorry if it's not very clear):
Mockito is using the ThreadLocal java feature to keep a context with instances of MockitoConfiguration and MockingProgressImpl between calls.
GwtMockitoTestRunner set a specific ClassLoader in the TreadContext before running each test and restore the previous one at the end.
The JVM ThreadLocal implementation stored the thread contextual information in a map in the thread where the key is a ThreadLocal instance and the value the object stored.
These ThreadLocal instances are referenced statically by two mockito classes loaded through the GwtMockitoClassLoader.
This mean these instances can not be garbage collected until the GwtMockitoClassLoader that loaded them is.
It also mean, as there is several instances of the GwtMockitoClassLoader, a same static field definition in the source code will reference a different object in the different version of the classes loaded in the different class loaders.
These instances can not be garbage collected until the GwtMockitoClassLoader that loaded them is.
So as there is several instances of the GwtMockitoClassLoader, a same static field definition in the source code will reference a different object in the different version of the classes loaded in the different class loaders.
The entries in the ThreadLocalMap won't be removed from the Map while the key is not garbage collected (a weak reference is used in the Map for the key so it's not the map itself that directly prevent the garbage collection of the key).
So the DefaultMockitoConfiguration and MockingProgressImpl objects stored as value in the ThreadLocalMap won't be removed until the GwtMockitoClassLoader that created their associated map keys is garbage collected (the value of the ThreadLocalMap are note weakly referenced themselves).
The probem is that these map value objects are them selves loaded by the GwtMockitoClassLoader.
Thus there is a references loop and memory leak thak keeps all the GwtMockitoClassLoader created for each tests in the memory stack of the thread that run them.
In order to break this references loop, the patch proposes to remove all values loaded by the gwtMockitoClassLoader and stored in the ThreadLocalMap at the end of the test run.
Note about the patch:

In order to do that, I access the private threadLocals attribute of the JVM Thread class, but this fields can be dependent of the JVM implementation (and version?) so in that case the an AssertionError will be raised.
May not be the best behavior...
For the Unit Test, I have done it to allow you to reproduce the issue easily and to better understand the fix. But this test is dependent of the JVM GC implementation so do not hesitate to remove if you prefer or it if you observed issue with it.

Modifications done in the patch:

remove objects attached to the GwtMockitoClassLoader in the Thread
ThreadLocalMap at the end of the test execution
add a unit test to illustrate the memory leak issue.

I signed it!

This is some awesome investigation! Thanks so much for figuring out what was going on and putting together a fix. It's obviously a huge hack, but everything about GwtMockito is a huge hack, so that's not a dealbreaker :)
I think it makes sense to allow what you've defined here as an experimental opt-in feature. Like you said, tying all GwtMockito tests to the implementation details of Thread probably isn't the best idea, and it's probably only a very small percentage of users who are having problems with memory leaks. So here's what I'd suggest:

Define a new annotation like @WithExperimentalGarbageCollection, and have this logic apply only if the test class has that annotation. You can document on that annotation what exactly it does and what the caveats are.
Move your implementation code to a package-private class like ThreadLocalCleaner just to keep it separate from the existing business logic of the runner.
Keep your unit test, but move it to a separate test class like GwtMockitoMemoryLeakTest so we can isolate it easily if we find it misbehaves in certain contexts/JVMs.

How does that sound? Thanks again for looking at it!

Thanks for the remarks, I have tried to implement them, hope it will match what you have in mind.
You are right it is better to make this clean optional and to isolate the logic !
Do not hesitate to do or ask for other modifications.
And also thanks for your project, it is very useful !

Thanks again for working on this!

Thanks for this PR!


Fix macOS build

This PR should fix build on macOS systems (still waiting for the build to finish).
The following issues I've encountered before running ninja are addressed:

Missing --build-path argument — bootstrap.py generated out/Release by default.

Since safe browsing is disabled, disk_image_type_sniffer_mac is never defined and should not be added to deps in that case.

Missing --build-path argument — bootstrap.py generated out/Release by default.

Could you elaborate? What is being generated in out/Release?

I see, it doesn't really matter then. We can leave it alone. Thanks for the explanation.


#1 Make creation scripts idempotent

Switching the CREATE to ALTER to make repeated execution and deployment
easier. Closes #1.

Closing this pull request because I need to redo the code with the new UTF8 encoding.


drivechain_client: address book

This change introduces an address book feature currently implemented with shared_preferences and stored locally.

[x] Address book CRUD
[x] Address book modal
[ ] Create address entry from UI
[ ] Select/create addresses from send page

Closing as address book functionality is not part of what we want to do


ndk/image_reader: Don't special-case ImgreaderNoBufferAvailable in non-async functions

Both async and non-async acquire_next/latest_image() functions will return ImgreaderNoBufferAvailable when the producer has not provided a buffer that is either ready for consumption or that can be blocked on (either inside a non-async method, or by returning the accompanying fence file descriptor).  After all, if there's no buffer submitted by a producer, there is no fence to wait on.
Hence the current API signatures create the false assumption that only non-async functions can "not have a buffer available at all", when the exact same is true for _async() functions, in order to provide an image buffer with a fence that is signalled when it is ready for reading.
Instead of special-casing this error in the _async() functions, make all functions return a flat Result and remove the Option, while documenting that this is a common error for the caller to handle gracefully.

Instead of special-casing this error in the _async() functions, make all functions return a flat Result and remove the Option, allowing callers to match on the variant themselves.

Still up for debate, we could also wrap the _async() functions in an extra Option since this is quite a common situation to deal with. We should document that ImgreaderNoBufferAvailable is translated to None in that case though.

Yeah, if we special-case it (which indeed seems the better idea to not confuse users with things that aren't errors and are annoying to match on), let's do that.
I think we should also remove the non-error codes from MediaError in that case?

Quickly tested, this still works as expected.


chapter6.3 bidirectionRNN about yield samples[:, ::-1, :], targets

as the book says yield samples[:, ::-1, :], targets. why the targets does not change as targets[::-1]

YES!!! I have received your E-mail——Steven Lee


Feature properties

How to set properties for "feature"?
Is there some method to setting "properties" to "feature", like:
<ol-source-cluster :distance="40">
    <ol-source-vector>
        <ol-feature
            v-for="{id, coordinates} in markers"
            :key="id"
            @click="clickFeature"
            @setProperties="setProperties(id)">
            <ol-geom-point :coordinates="coordinates"/>

            <ol-interaction-modify
                :condition="selectCondition"
                @modifyend="modifyEnd($event, id)"
                @modifystart="modifyStart">
            </ol-interaction-modify>
        </ol-feature>

        <ol-interaction-select @select="featureSelectedTwo($event, id)">
        </ol-interaction-select>
    </ol-source-vector>
</ol-source-cluster>

or how I can provide properies and handle them?

You can provide properties with geometryOrProperties prop.
https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html


snackbar toast - not postioned where I want it

Hi, while I understand why you put it at the bottom, I really need it up the top of the page.
Does any one know how please - I have tried

Top:0 but that makes top go all the way to the bottom and its one big stretch
position and display dont help

Please use StackOverflow for support and integration assistance. This tracker is only for problems with the code provided by Material Design Lite.
As your asking for assistance in how to make a component provided not align to MD spec, this isn't something we can support internally. Therefore, nothing here is actionable for the team to work on.
Thank you.


Doesn't load v1.5 pruned(7gb)

It gives a C^ error instead of loading it.
Doesn't work with a link to gdrive to download it in the fast dreambooth as well.

Because of the RAM limit, try --medvram

Because of the RAM limit, try --lowram

I tried replacing webui-user with -- lowvram, still getting C^ Error
are there any alternative ways to use --lowvram?

--lowram not --lowvram

--lowram not --lowvram

Where should I add that command? or how can I pass command to colab version of auto?
I added --lowram on the last 3 lines of colab Start stable-diffusion secion but didn't work
  if os.path.isfile(model):
    !python /content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py $share --disable-safe-unpickle --ckpt "$model"
  else:
    !python /content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py $share --disable-safe-unpickle --ckpt-dir "$model"
except:
   !python /content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py $share --disable-safe-unpickle

try with the "relaxed" colab and see if it loads

try with the "relaxed" colab and see if it loads

I had the same problem and it did work successfully on the relaxed collab, is there any reason for that?
I really miss some features on the relaxed collab though, is it possible to upgrade it with negative prompts and such?

"relaxed" colab is based on hlky that uses the optimizedSD mode, A1111 with --lowram should do the same

"relaxed" colab is based on hlky that uses the optimizedSD mode, A1111 with --lowram should do the same

I know it must be my ignorance, but is it possible to use this argument on colab? where do i put it?

@EnricoPf in the last cell (click twice on it), add the argument at the end like this : (don't copy the lines, just add the argument
 if os.path.isfile(model):
    !python /content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py $share --disable-safe-unpickle  --ckpt "$model" --lowram
  else:
    !python /content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py $share --disable-safe-unpickle  --ckpt-dir "$model" --lowram
except:
   !python /content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py $share --disable-safe-unpickle --lowram

I did try that, doesn't work still, it just consumes all the available RAM then crashes :(

Yep, the free colab limitation, but you still can use the 4GB version, no big difference

webui.py

it would be nice to find out how to do it for auto111 too, maybe you can dig in webui.py and see if we can change a line there so it will launch with lowram as default? I'm not sure why the auto colab is not taking the command. there should be a way to pass command there.

tried to implement the OptimisedSD mode in A1111, but getting "hijack" errors.

Pass that argument and test it if it doesn't kill the VRAM usage, if it doesn't, I'll activate it by default in shared.py

Pass that argument and test it if it doesn't kill the VRAM usage, if it doesn't, I'll activate it by default in shared.py

no need to force it as default since that would slow it for the rest of the world, and low ram has its own disadvantage when it comes to visuals, this was only a test, since relax works fine, I say leave it as it is.
Thanks btw for pointing out shared.py I will just change that if I need to use auto with 7GB ckpt.


Completely not utf8 aware?

Each time I use Polish dialect chars I get some bogus "Å" instead of "ś" (same for any other utf8 inputs).

Fixed here: https://github.com/slash-hq/slash/commit/6a4a20fbde89e563bf595570d22f061dbda2c9ff