Adding ruff to requirements.txt results in error: attribute 'ruff' missing

I'm running into an issue with pyproject.nix where it seems to be unable to install the ruff PyPI package.
Here's my flake.nix, which is mostly identical to the documentation (minus the assert):
{
  description = "Construct development shell from requirements.txt";

  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

  inputs.pyproject-nix.url = "github:nix-community/pyproject.nix";

  outputs =
    { nixpkgs
    , pyproject-nix
    , ...
    }:
    let
      # Load/parse requirements.txt
      project = pyproject-nix.lib.project.loadRequirementsTxt {
        projectRoot = ./.;
      };

      pkgs = nixpkgs.legacyPackages.x86_64-linux;
      python = pkgs.python3;

      pythonEnv =
          # Render requirements.txt into a Python withPackages environment
          pkgs.python3.withPackages (project.renderers.withPackages {
            inherit python;
          });
    in
    {
      devShells.x86_64-linux.default =
        pkgs.mkShell {
          packages = [
            pythonEnv
          ];
          shellHook = ''
            python --version
          '';
        };
    };
}

If my requirements.txt looks like this, I can run `nix develop, and everything builds fine:
yapf==0.40.2

But if I add ruff as a dependency, Nix can no longer build:
# requirements.txt
ruff==0.1.8
yapf==0.40.2

$ nix develop
error:
       … while calling the 'derivationStrict' builtin

         at /builtin/derivation.nix:9:12: (source not available)

       … while evaluating derivation 'nix-shell'
         whose name attribute is located at /nix/store/h367m9rjvilsmp8r37mphmlnd1vzqhig-source/pkgs/stdenv/generic/make-derivation.nix:348:7

       … while evaluating attribute 'nativeBuildInputs' of derivation 'nix-shell'

         at /nix/store/h367m9rjvilsmp8r37mphmlnd1vzqhig-source/pkgs/stdenv/generic/make-derivation.nix:392:7:

          391|       depsBuildBuild              = elemAt (elemAt dependencies 0) 0;
          392|       nativeBuildInputs           = elemAt (elemAt dependencies 0) 1;
             |       ^
          393|       depsBuildTarget             = elemAt (elemAt dependencies 0) 2;

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: attribute 'ruff' missing

       at /nix/store/ynpk6fy91j1p2kryr2x8vsg2dkryiv42-source/lib/renderers.nix:59:15:

           58|     in
           59|     map (dep: ps.${dep}) flatDeps ++ extraPackages ps ++ buildSystems';
             |               ^
           60|
       Did you mean one of ruffus or tuf?

Any idea what could be going wrong here?
One possible factor is that ruff is written in Rust, not Python. Still, it's installable through PyPI, so I would have expected the distinction not to matter. It doesn't require Rust to be installed on the host system for ruff to work.

@adisbladis - Thanks for the explanation!
Is there anything else I need to do to add the overlay? I'm still seeing the same error:
{
  description = "Construct development shell from requirements.txt";

  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

  inputs.pyproject-nix.url = "github:nix-community/pyproject.nix";

  outputs =
    { nixpkgs
    , pyproject-nix
    , ...
    }:
    let
      # Load/parse requirements.txt
      project = pyproject-nix.lib.project.loadRequirementsTxt {
        projectRoot = ./.;
      };

      pkgs = nixpkgs.legacyPackages.x86_64-linux;

      python = pkgs.python3.override {
        packageOverrides = self: super: {
          ruff = pkgs.ruff;
        };
      };

      pythonEnv =
          # Render requirements.txt into a Python withPackages environment
          pkgs.python3.withPackages (project.renderers.withPackages {
            inherit python;
          });
    in
    {
      devShells.x86_64-linux.default =
        pkgs.mkShell {
          packages = [
            pythonEnv
          ];
          shellHook = ''
            python --version
          '';
        };
    };
}

$ nix develop
error:
       … while calling the 'derivationStrict' builtin

         at /builtin/derivation.nix:9:12: (source not available)

       … while evaluating derivation 'nix-shell'
         whose name attribute is located at /nix/store/rljhbqllgqdyc4f22iwyf857fjg5wfnx-source/pkgs/stdenv/generic/make-derivation.nix:348:7

       … while evaluating attribute 'nativeBuildInputs' of derivation 'nix-shell'

         at /nix/store/rljhbqllgqdyc4f22iwyf857fjg5wfnx-source/pkgs/stdenv/generic/make-derivation.nix:392:7:

          391|       depsBuildBuild              = elemAt (elemAt dependencies 0) 0;
          392|       nativeBuildInputs           = elemAt (elemAt dependencies 0) 1;
             |       ^
          393|       depsBuildTarget             = elemAt (elemAt dependencies 0) 2;

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: attribute 'ruff' missing

       at /nix/store/kdli2l35h4ncj7vinzmjdmgwp8pf13g5-source/lib/renderers.nix:59:15:

           58|     in
           59|     map (dep: ps.${dep}) flatDeps ++ extraPackages ps ++ buildSystems';
             |               ^
           60|
       Did you mean one of ruffus or tuf?

I believe it's because you have
pkgs.python3.withPackages (project.renderers.withPackages {

which should be
python.withPackages (project.renderers.withPackages {

@adisbladis - Thanks!
Is the documentation incorrect, because what I had matches this example:
https://github.com/nix-community/pyproject.nix/blob/5edc794d76ec64eb699f75d65fd19299ee42c99e/templates/requirements-txt/flake.nix#L27
Changing to your recommended snippet gets me a bit farther but doesn't get it working:
{
  description = "Create Nix development environment";

  # Python 3.12.0 release
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/e2b8feae8470705c3f331901ae057da3095cea10";

  inputs.flake-utils.url = "github:numtide/flake-utils";

  inputs.pyproject-nix.url = "github:nix-community/pyproject.nix";
  # Don't use the pyproject.nix flake directly to avoid its inputs in our
  # closure.
  inputs.pyproject-nix.flake = false;

  outputs = { self, nixpkgs, flake-utils, pyproject-nix  }:
    let
      pyproject = import (pyproject-nix + "/lib") { inherit (nixpkgs) lib; };

      # Load/parse dev_requirements.txt
      project = pyproject.project.loadRequirementsTxt {
        requirements = ./dev_requirements.txt;
      };

      # Override ruff since it requires special handling:
      # https://nix-community.github.io/pyproject.nix/FAQ.html#how-does-package-name-mapping-from-python-to-nixpkgs-work
      python = nixpkgs.python3.override {
        packageOverrides = self: super: {
          ruff = nixpkgs.ruff;
        };
      };
    in
    flake-utils.lib.eachDefaultSystem (system:
    let
      pkgs = nixpkgs.legacyPackages.${system};
      python = pkgs.python3;

      pythonEnv = (
          # Render requirements.txt into a Python withPackages environment.
          python.withPackages (project.renderers.withPackages {
            inherit project python;
          })
        );
    in
    {
      devShell =
        pkgs.mkShell {
          packages = [
            pythonEnv
          ];
          shellHook = ''
            python --version
          '';
        };
    });
}

$ nix develop
error:
       … while calling the 'derivationStrict' builtin

         at /builtin/derivation.nix:9:12: (source not available)

       … while evaluating derivation 'nix-shell'
         whose name attribute is located at /nix/store/6r95gy447jx07hlz6088razn5pgmsvxx-source/pkgs/stdenv/generic/make-derivation.nix:300:7

       … while evaluating attribute 'nativeBuildInputs' of derivation 'nix-shell'

         at /nix/store/6r95gy447jx07hlz6088razn5pgmsvxx-source/pkgs/stdenv/generic/make-derivation.nix:344:7:

          343|       depsBuildBuild              = lib.elemAt (lib.elemAt dependencies 0) 0;
          344|       nativeBuildInputs           = lib.elemAt (lib.elemAt dependencies 0) 1;
             |       ^
          345|       depsBuildTarget             = lib.elemAt (lib.elemAt dependencies 0) 2;

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: attribute 'renderers' missing

       at /nix/store/hxhvmj1kwnqs916dqc2nb2mjhx6sicbf-source/flake.nix:38:32:

           37|           # Render requirements.txt into a Python withPackages environment.
           38|           python.withPackages (project.renderers.withPackages {
             |                                ^
           39|             inherit project python;


Setting current tab programmatically

It would be great if the current tab could be switched directly via a js function.

You can do this with the help of a ref
https://jsfiddle.net/CristiJ/b44cc4dq/80/
There are 2 internal methods for changing a tab:
navigateToTab (tabIndex)
changeTab (oldIndex, newIndex)
navigateToTab is validating any beforeValidate functions while changeTab basically does a forced tab change without any validations but requires both the previous tab index and the current tab index.
I will probably add another way of handling such situations (maybe v-model) but for now you can use this workaround

Wow,  that was fast

Thanks, i ended up like this.
beforeRouteEnter(route, redirect, next) {
next(vm => {
vm.$refs.tabs.changeTab(vm.$refs.tabs.activeTabIndex,0)
})
}
And it's working like a charm.
Thanks.

Let's keep this open. I will probably aim for something like this in the end. I will reference any updates reagrding this one in this issue here
 <vue-tabs v-model="activeTab">
    <v-tab title="First tab">
      First tab content
    </v-tab>
    <v-tab title="Second tab">
      Second tab content
    </v-tab>
</vue-tabs>

data(){
 return {
 activeTab:'First tab'
}
}

Latest release includes v-model support https://github.com/cristijora/vue-tabs/releases/tag/v0.5.0 which makes it very easy to change a tab without calling any function but rather modify the v-model


optQueryParameters argument does not work in updateData

When I try to add query parameters to an updateData call, I get the following error:

Error: Querying related parameters not supported on this request type (line 322, file "Code", project "FirebaseApp")

Is Firebase not able to add query parameters to update calls and there is just an error in the documentation? Or is it possible, and there is a bug in the code?
By the way, I love this library.  It's power and simplicity have allowed me to build a world of web apps for my employer.  Thank you so much for all your hard work.

@webstermath  can you detail which query parameters you are using ?
Some parameters can not be used with updateData call (correspond to a PATCH REST request)

I am trying to use the orderBy parameter along with filtering parameters.  My goal is to do multiple updates at one time to a select set of records. Is this possible?

Ah, this is not how the update request works !
You can only update one location at a time, please find more details in the PATCH REST request documentation.
The parameters to get a set of records are here to filters the results that you get back, not the actions of Patching.

Oh ok, sorry I could not seem to find that behavior in the Firebase
documentation.  Thank you so much.
On Wed, Oct 10, 2018 at 9:00 AM Jean-Rémi Delteil<EMAIL_ADDRESS>wrote:

Ah, this is not how the update request works !
You can only update one location at a time, please find more details in
the PATCH REST request
https://firebase.google.com/docs/reference/rest/database/#section-query-parameters
documentation.
The parameters to get a set of records are here to filters the results
that you get back, not the actions of Patching.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/RomainVialard/FirebaseApp/issues/13#issuecomment-428630020,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA0EYoutps4gpTpeOcoUxlaEDCw1VaEgks5ujhmfgaJpZM4XAMHs
.


Aux window: command center hides when quick pick opens

When you bring up quick open in a floating window, command center in the main window hides.

via https://github.com/microsoft/vscode/commit/47a0ab66a0310544896158f3f519bea13a31bdd7


Provide a justification for using this over the desktop embedder

I know that the embedder isn't ready yet, but that can't be used as an argument, since Flutter Web isn't ready either.
But, in addition to having to ship both the massive electron runtime, which is already easily 50MB, then adding the flutter runtime on top of that, easily 5MB, and you're already at 55MB minimum for hello world.
There is also a MASSIVE performance hit. Both because of having to use V8 to run javascript-compiled Dart, but also because skia isn't used directly to render the UI, but instead, JS APIs have to be hit, making the overall experience strictly inferior to the embedder.
Since this is the Desktop, there aren't any restrictions on what can be used or not inside of the app, so it's 100% possible to embed a JS engine inside of your flutter app instead.
From an outsider's point of view, It just looks like this combines the worst of Web Technologies and Flutter, with few of their upsides, so it's important to highlight the reasons as to why one might want to use this (or one might want not to use this, if this is just an experiment).

Yeah this seems like a waste. I have had a lot of trouble getting the desktop embedder working though.

Well for one the ability to use  js/html libraries on the desktop is huge. If you use firebase on Flutter web like me, then porting to desktop means i have to have a firebase sdk for mobile , rest api firebase wrapper for desktop and firebase web library on the web. Same plugin but 3 implementations for simple abstraction.
Also Flutter makes a good PWA on the desktop and on chromebooks works really well. If you want advanced features on desktop them embedding on the desktop is a better choice. but for those with lighter web apps this we would be plenty fine. Electron has also made a lot of performance improvements so it will continue to get better.
I have extensively used Flutter web and Flutter desktop embedding in at least 5 applications. They both have their flaws but it is nice to have options.
Until Flutter desktop embedding gets auto updates then the electron approach is really nice. There is nothing stopping you from releasing it with electron and later have an update that reduces the file size by Flutter desktop embedding.

Well for one the ability to use js/html libraries on the desktop is huge.

You're using Flutter, not JS, not HTML, Flutter. Replacing the entire UI stack with another, abstract one is literally the point of Flutter. If you want the Web, use a browser, if you want to release a Desktop app, use an actual Desktop app.
VS Code is probably the exception that proves that, carefully done, an Electron app can be good, but it's the only one I've ever come across. Meanwhile other webtech-based apps like Spotify eat CPU and RAM like nobody's business (Seriously, I routinely see people using more than a GIGABYTE of RAM for an app that plays music.)
And as I said before, embedding JS is just embedding a node engine, not an entire damn browser.

firebase sdk for mobile , rest api firebase wrapper for desktop and firebase web library on the web. Same plugin but 3 implementations for simple abstraction.

That's what plugins and method channels are for.

Flutter makes a good PWA on the desktop and on chromebooks works really well.

If you want a PWA, let the user install it with their own browser, bundling Electron is almost insulting their

Battery life
Disk Space
Responsiveness
when you could just be using Desktop.

Flutter's performance doesn't magically get 100x better just because it's Electron and not Chrome, they're effectively the same thing.

Until Flutter desktop embedding gets auto updates

That's probably already doable, if the app isn't installed in a privileged folder.

I think that the Flutter Web will get much more support than Flutter desktop embedding.

Instead of using the obvious choice that is Desktop, that has vastly superior performance and both  exponentially smaller files and RAM usage, you prefer shipping an entire browser because it has 2-3 more libraries?
I know people use the "it's faster to program with" as an argument with electron vs native, but it's not really an argument here, as we're talking about the exact same UI framework in the end.

Don't get me wrong, I use Flutter Desktop embedding now with apps. I have been since they let hot reload work with it. I really love the stability and performance.
That being said electron has been getting better, VSCode, like you said, is a good example, so is slack https://www.theverge.com/2019/7/22/20703458/slack-desktop-app-performance-improvements-windows-mac-features-download.
Something that you can do by shipping the browser is being able to render on the dom. Just like on mobile with Flutter you can use Webview or UIKitViews, this is so powerful for adding functionality. Google maps, for example, you can use it on mobile, and web.. but how would you use it on the desktop? You would need the dom to take advantage of the existing libraries. I have a very extensive app i have built with Flutter web and can build HTML/JS webpages, but this is only possible because i can take advantage of the dom and Nodes.
I have other flutter apps that work better with the desktop embedding, like a midi synth and also powerpoint creator for sheet music. These work great with desktop embedding because they can and usually are offline, need the resources for the rendering and Firebase is not used.
But i also use Flutter for Enterprise B2B apps and they need to have it updateable, match the website or close to it, and always online. Plus we render a lot of HTML emails and marketing pieces and also need the dom and browser support.
I say all this to say that it really comes down to the application and the needs it has. This is just an option, not the only option.
I will always try to build for the native platform as close as possible, but i also will be in favor of tech that is more supported. right now electron has a lot of traction because of the big companies behind it.
It is possible in the future for election and Flutter to work off of web assembly and then the code would we executed directly. I agree that with election Flutter can not draw on skia directly and maybe there are other ways around it. That should be addressed.

That being said electron has been getting better, VSCode, like you said, is a good example, so is slack

As I said, VSCode is an exception, the fact that slack even had to mention their performance, and spend so much time rebuilding their client speaks volume about Electron's performance.

how would you use it on the desktop?

Webview support isn't a new thing, and the desktop has been doing it for far longer than you might think. Active Desktop and many windows components are such examples, Qt has had a Webview for years.

But i also use Flutter for Enterprise B2B apps and they need to have it updateable, match the website or close to it, and always online. Plus we render a lot of HTML emails and marketing pieces and also need the dom and browser support.

Then use a browser, no need to worry about disk usage, upgrades, or even about the platform!

It is possible in the future for election and Flutter to work off of web assembly

WebAssembly isn't a magic trick that makes everything faster, it's just a compile target for any language to use in a platform agnostic way (Where have I seen that before? This time it's just on the web) It's slightly faster in some cases, sure, but it doesn't change the fact it's still being run by V8.

No offence @hayderux, but have you considered that you don't in fact have to use Flutter for everything? It's a nice technology and all but twisting it into a position where it's straight-up worse than every available alternative isn't really the best use of time.

I disagree. This is still worth the time exploring.

Oh it's certainly worth exploring in the curiosity sense, but if someone came to me looking for product advice I cannot think of a single reason to tell them to use this instead of just building their Electron app in JS (or even just plain Dart using dart:html) seeing as pretty much none of Flutter's strengths come through here.

Good discussion. One use for this repo is for a desktop app I need to send and receive data over the USB port as serial data, cross platform. I can get a Node.js library for serial communication to do this in Electron, but I can't find a Flutter/Dart plugin for this. I've found only Dart plugins for Bluetooth communication, as Flutter Desktop plugins are few.

This is a great start for flutter web apps, but a pwa would be superior

Flutter Web + Electron may become more popular than embedded
Flutter embedded progress is very slow, plugin development is a very costly project, even if it is available (a cross-platform feature requires the native code to write three different desktops). At present, the Flutter team will spend more time on the Flutter Web, and relying on the powerful ecology of Node.js, you almost no need to pay attention to the development of plug-ins, you can find all kinds of existing plugin through npm. It’s easier to port applications to the desktop.
As for performance issues, Flutter Web is still in the preview phase, and with the release and continuous iteration, performance and compatibility will be greatly improved.

@luojieerr You can integrate Node inside of the embedder, but that's not even the issue here.
The problem with this repo is using Electron (Over 50MB, very high RAM usage) and Flutter Web (Which has to work around HTML/CSS/JS to work properly, therefore it will always be lower performance than native.) over using the Desktop Embedder directly, which has none of those issues.
Flutter Web, by definition, can't outperform or even match the Embedder, as, instead of directly telling Skia what to draw, it has to somehow do that using the limited APIs the Web offers.

High memory and Ram issues can be fixed. VSCode and Slack have both reached a solution.
If to help plugins you need node.js bundled then it should be bundled with the starter app. The flutter team will not focus on plugins for desktop and the community is not going to spend the time making the same plugin work for Mac/windows/Linux/android/iOS/web at most just iOS/Android/web
But if you want the best possible experience then use the embedded flutter. But for the vast majority of apps this would be fine.

You're assuming what the future holds, I wouldn't use those arguments.
VS Code, while one of the best electron apps, still has RAM issues, 150MB+ of ram to open a text file without any plugins isn't "A solution", it's just that VS Code is one of the rare apps to offer enough functionality for that not to matter.
Slack is still a RAM hog for a simple chat app.
And, again, the issue isn't Javascript, it's Electron. If you want to spit in the face of your user's resources, it's the fastest way, and, let's face it, VS Code and Slack are an exception built by companies that have dedicated weeks, if not months of work in order to make them performant. The average Electron app is still a disaster, and will never be fixed.
Stop ignoring performance for developper convenience, otherwise you'll end up with Etcher 2.0

@miyoyo Flutter Web Beta can be used in the project now.So how to change to Flutter 1.12,can you solve this problem?Thanks.

I hope that when the embedder is ready, I can directly transfer the code of flutter web + electron

August 2020
I'm here reading this because sadly, the Flutter Linux Deskop as per Canonical's article doesn't really work....
https://snapcraft.io/blog/canonical-enables-linux-desktop-app-support-with-flutter
It ends up with a package focused on Snaps that "have" to be published to their app store.
The snap packaging uses the flutter plugin which in some way runs the bundle
Otherwise one has to use, flutter run -d linux which does similar, but flutter run -d linux --release doesn't work.
Perhaps this Flutter Linux Desktop is all to young at the moment.

@jradxl You can use the SDK independently of Snap, and you can flutter build linux --release, to compile an executable bundle.

Doesn't work for me, that's why I was looking here.
$ flutter build linux --release
Building Linux application...
jradley@z390ma:~/Documents/programming/flutter/counter$ ./build/linux/release/counter
embedder.cc (577): 'FlutterEngineCreateAOTData' returned 'kInvalidArguments'. Invalid ELF path specified.
** (counter:59997): WARNING **: 00:03:28.742: Failed to start Flutter engine: Failed to create AOT data

@jradxl you could take a trip to my fork and watch. I've not tried with flutter snap support,t but it's in alpha stage. I think flutter web is a "better" solution cause is beta and have a little more official support by the flutter team. Also, @AweiLoveAndroid flutter beta is now available, some moths ago update the pubspec dependencies

@miyoyo Not really, flutter web nowadays isn't a solution for any product that's the truth. I think flutter web has had much better growth than desktop. PWA and focus on canvasKit are some examples while desktop develop is slowly. For me, It could be a solution in future (or maybe not).
I see something about PWA. Since I read it, I'm confused.
Note: I'm trying to find some integration with node js, but the best way is through a server with "GET" and "POST" methods. What do you think is the best way to make a "desktop app" at this moment?


Reenable cache

In 6341c7d72c8f773d5f14321150207c8b48a68f09, the cache was accidentally disabled due to a bug, this commit reenables the cache.

Codecov Report

Merging #1464 into master will increase coverage by 0.06%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1464      +/-   ##
==========================================
+ Coverage   52.74%   52.81%   +0.06%
==========================================
  Files         136      136
  Lines       10859    10859
==========================================
+ Hits         5728     5735       +7
+ Misses       4257     4247      -10
- Partials      874      877       +3

Impacted Files
Coverage Δ

cmd/restic/global.go
23.17% <100%> (+0.3%)
:arrow_up:

internal/archiver/archiver.go
64.81% <0%> (-0.22%)
:arrow_down:

cmd/restic/cmd_backup.go
29.41% <0%> (+1.1%)
:arrow_up:

cmd/restic/exclude.go
48.85% <0%> (+3.05%)
:arrow_up:

Continue to review full report at Codecov.

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


Unblock TMKMS Integration for validator keys

While Scott has confirmed (and documented) that Akash validator nodes deployed on Akash, can work with TMKMS (https://docs.akash.network/other-resources/experimental/omnibus/akash-validator-with-tmkms) -- we can't make this generally available until we figure out a way to deal with a proxy/ vpn/ traefik at the ingress controller.
This is a priority because:

Validators want to be able to store keys securely (using TMKMS or similar)
Omnibus repos will not get traction until it can support secure key storage (through TMKMS) because validators will not use a TMKMS instance that is "open to the world"
Console depends on Omnibus for validator/ chain node templates, so Console cannot release (it can release but no validators will use) templates that do not support a "secure TMKMS" - that has an ingress controller capable of filtering traffic based on source IP (restricting to just the validator's node)

refs ovrclk/engineering#307

@tombeynon created https://github.com/ovrclk/stunnel-proxy repo where one can expose as many services as needed. Whatever runs in between the stunnel client & server will get mTLS authenticated+authorized & encrypted.
I've tried it and made a demo running an app behind the stunnel-server in Akash Network here https://asciinema.org/a/519302 (both SDL files are in the description there).

Good news from Tom on the stunnel-proxy (mTLS) protecting his validator <-----> TMKMS  (& RPC port) communication:

His Kujira testnet validator is signing with a node/proxy on Akash, and KMS/proxy on his servers;
It works great. It's a fast blockchain (~2s) but not missing any more than usual;
Proxying RPC too, he is using that with his monitoring tools. All works perfectly;
He will start writing up a bit of guide in Omnibus _examples;
It still needs making the stunnel-proxy docker image publicly available (Adam is on it);


QuickStart - Windows authentication

I've spent some time trying to set up windows authentication, and long story short, I think there is a mistake om the quick start samples. Here, I think the correct is
await HttpContext.SignInAsync(                     IdentityConstants.ExternalScheme,                     new ClaimsPrincipal(id),                     props);
instead of
await HttpContext.SignInAsync(                     IdentityServer4.IdentityServerConstants.ExternalCookieAuthenticationScheme,                     new ClaimsPrincipal(id),                     props);
It was the only way to make windows authentication work.

Yes, I think you're right. Want to send a PR to fix? Thanks.

BTW, this is fixed on our dev branch already.


Need help for ML/AI optimization

@kicheolkim It would be good if we have a new person for AI/ML support. We have knowledge about that obviously, but we need more advanced optimization techniques for ML model. What do you think? Do we have to find another person for this project?

I agree. That's a good idea if there is someone who is interested in this project with us.


Add support keywords meta tag

Hi, this PR is add support for keywords tag.

Add support for keywords meta tag
Fix command return value from Command::SUCCESS to self::SUCCESS and Command::FAILURE to self::FAILURE.
Fix the typo enabled in twitter method argument.
Change the path of the views directory from assets/views to views.

Thanks for the PR!
What's the reasoning for moving the views directory?

@stancl views it should be located in resources folder (same as other laravel packages
)


drop unused workflows - these moved to knative/release repo

/assign @dsimansk
/assign @upodroid

/approve
/lgtm


TypeError: new(): data must be a sequence (got NoneType)

Hello, thanks for your work. I have a problem when I run ContactOpt on my-provided data.
The log is shown as follow:
Traceback (most recent call last):   File "contactopt/run_user_demo.py", line 79, in <module>     run_contactopt(args)   File "/home/barry/文档/contact/contactopt/run_contactopt.py", line 67, in run_contactopt     for idx, data in enumerate(tqdm(test_loader)):   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/tqdm/std.py", line 1171, in __iter__     for obj in iterable:   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 681, in __next__     data = self._next_data()   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1376, in _next_data     return self._process_data(data)   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1402, in _process_data     data.reraise()   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/torch/_utils.py", line 461, in reraise     raise exception TypeError: Caught TypeError in DataLoader worker process 0. Original Traceback (most recent call last):   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop     data = fetcher.fetch(index)   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch     data = [self.dataset[idx] for idx in possibly_batched_index]   File "/home/barry/anaconda3/envs/contactopt/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in <listcomp>     data = [self.dataset[idx] for idx in possibly_batched_index]   File "/home/barry/文档/contact/contactopt/loader.py", line 50, in __getitem__     out['hand_contact_gt'] = torch.Tensor(sample['ho_gt'].hand_contact) TypeError: new(): data must be a sequence (got NoneType)
The data I use is the demo_object.obj and demo_mano.json you provided in the data folder. I find the data you provided without "ho_gt" (loader.py line 49) which leads to this error. How can I solve this problem where I need to provide the ground truth?

Hi @barrycxg, I'm not sure if I understand your problem correctly. The code successfully runs for you on the demo data, but fails when you try to run it on your own data without ground truth?
If that's the case, I would just feed in garbage ground truth just to make the code happy. You could copy the ground truth from the demo data and feed it in for all of your samples. The ground truth is only used to calculate metrics and to train the network.

Thanks for your response. I I solved this problem. I find that you may have missed the initialization of variable “ho_gt.hand_contact".
I add the code "self.hand_contact = ho.hand_contact" in contactopt
/hand_object.py

Hello @pgrady3 . I tried to pull my code changes, but failed. I hope the part of the code submitted helps you understand if there is a problem.

Thank you for the pull request! I'll integrate that change plus a few more soon.

Thanks for your response.


My pool is not listed anymore

Since a few days, when using Daedalus Flight, I'm not seeing my stakepool any more. It had ticker CAKE, pool ID b31af8dc07b05f799805f82853f69dd8d9de48bb89f4371bc46f5cc9.
It's still making blocks and delegation is active.. but it's not showing in Daedalus :(

Before this happend, it also showed as UNKNOWN in Yoroi (when entering the pool ID).
I checked on TG and i was referred to make ticket.
Any ideas? Thanks in advance!

Hi guys,
i checked with a few friends/family etc, they can still see my pool...
I checked the JSON response of cardano-wallet, my pool is in the JSON response.. but my Daedalus (both mainnet and Flight) were not showing it..
I'm reinstalling mainnet Daedalus again, removed AppData,.. fingers crossed!

Issue was that i modified my metadata.json file.. the hash didn't match anymore, thus not showing my pool :) should be fixed asap. My BAD! :)


Website link in the project's description

You could add a link to your Live Demo in the project's description.
You can do it here:

Added, thanks!


Use python3 instead of python

This fixes a few stragglers after 6a17e84370064eec6f22cfb1717ab80cf898d82b

I just tried this PR on top of upstream, and this change hard-codes /usr/bin/python3 (the value found by find_package() here) directly into the executable. This is not portable, because this will not run in certain environments where the interpreter is installed to a different location (we do have CI bots like that), and will generally ignore PATH, unlike the existing implementation.
A better change would simply to change python to python3.

@digit-google it sounds like maybe you didn't read the review comment that explained why hardcoding python3 is broken on Windows and needs to be fixed by using find_package()?

This is not portable, because this will not run in certain environments where the interpreter is installed to a different location (we do have CI bots like that), and will generally ignore PATH, unlike the existing implementation.

It will certainly run in any environment that matches the one you built ninja on, which means if you build ninja on a CI bot and test it on the same bot, everything works.
Who is "we" here, by the way? This PR passed the ninja project's CI. ;)

Sorry, "we" in that specific case if the Fuchsia project, we have CI bots who run in an nsjail / container that doesn't have /usr/bin/python3 available (but have a vendored Python version in a different location, reachable from PATH, and this is done very intentionally to ensure the system version is never used by mistake).
Still, you make the produced Ninja binary less portable for no good reason. Just changing python to python3 should be enough to get what you want.
Besides, I recommend you document the exact issue that require this change, since "a few stragglers" doesn't seem an accurate justification.

Still, you make the produced Ninja binary less portable for no good reason. Just changing python to python3 should be enough to get what you want.

As mentioned in the above review comments, changing it to python3 fixes some platforms where there is no "python" binary but in turn breaks the case of Windows with the Microsoft Store version of python, where there is only a "python" binary and no "python3" binary.
Regardless, the name can be controlled by passing an explicit option to the build system so one could override it at compilation time with any choice of:

python
python3
/usr/bin/python3
C:/path/to/windows/store/python.exe
/path/to/fuchsia/vendored/python3

The question here is really just about what should be autodetected.

Also note that the production binary (as opposed to say the perf testing binary) IIRC doesn't really use python for anything other than the webserver embedded tool, which I suspect isn't relevant to fuchsia anyway. So embedding paths from a build machine that aren't relevant to the final runtime machine may not matter in practice.

I believe that hard-coding paths that are specific to the build machine in binaries that will be distributed and run on a different machine is nearly always a bad idea.
This is the kind of stuff that will bite someone six months later, and will require hours or days of lost debugging time for developers who do not know enough about Ninja to solve this quickly (been there, done that, got the t-shirt :-)).
At a minimum there should be a way to override that value at runtime.
Using python for NINJA_PYTHON works sufficiently well because the system() call in browse.cc will search your PATH, which provides for at least one way to override the value in case of problem.
However, on systems that still link python to a python2 runtime, the system() call will succeed instead of returning ENOENT, hence the error message ninja: python is required for the browse tool will not be printed, and a Python2 stack trace will likely be the result, giving no useful information to the developer.
I suggest instead something a little bit more helpful:

Keep using python + PATH search as the launcher name.
Optionally use an environment variable like NINJA_PYTHON to point to a specific interpreter, or add an option to the -t browse tool to specify the python interpreter to use.
Add a system() call to ${NINJA_PYTHON} --version in browse.cc to verify that the version is at least 3, and print an error message if this is not the case. Specify the tool option / env variable in the error message.
Continue invoking ${NINJA_PYTHON} - --ninja-command <command> -f <input_file> ... after that.

This would be maximally portable, and will avoid wasting unknown amounts of developer time.

A simpler alternative would be to detect python2 at runtime in the script, and print a user-friendly error message directly from it.
Checking sys.version_info.major >= 3 should be enough for that. This minimizes changes to browse.cc (and avoids the need to redirect stdout to a file and parsing it later).

I believe that hard-coding paths that are specific to the build machine in binaries that will be distributed and run on a different machine is nearly always a bad idea.

That's a very load-bearing "that are specific to the build machine". On Linux and *BSD systems it is a very good idea -- such a good idea in fact that it may be mandated via policy. If you depend on something you should ensure you use the thing you depend on -- not something that unpredictably gets found first because e.g. the user added anaconda to their shell login profile.
Certainly, Google may have problems that are atypical to the wider world of software development.

This is the kind of stuff that will bite someone six months later, and will require hours or days of lost debugging time for developers who do not know enough about Ninja to solve this quickly (been there, done that, got the t-shirt :-)).

That's totally backwards IMO.
The stated objection is that the command isn't guaranteed to exist. This is a trivially detectable issue -- it doesn't get easier to debug than "error: /usr/bin/python3: no such file or directory". There is nothing to debug, the only time spent will be time determining the right fix, whether that is trying to install the relevant interpreter or rebuilding ninja.
In comparison I can attest to people spending weeks fruitlessly debugging the case where the answer in the end turned out to be "the wrong python3 was found on PATH, and as a result the program tried to run but mysteriously bombed out 50 miles away with a nonsensical error message that provided zero clues as to why it happened and was even actively obfuscating the real cause in 7 different ways". Bugs where your software fails to tell you there was a problem and instead runs for a bit and then spews copious stack traces unrelated to the root cause are the absolute worst.

A simpler alternative would be to detect python2 at runtime in the script, and print a user-friendly error message directly from it. Checking sys.version_info.major >= 3 should be enough for that. This minimizes changes to browse.cc (and avoids the need to redirect stdout to a file and parsing it later).

The current error message is more likely to look like: error: python: no such file or directory
There is no opportunity to execute python code capable of detecting which version of python is being run.

That's a very load-bearing "that are specific to the build machine". On Linux and *BSD systems it is a very good idea -- such a good idea in fact that it may be mandated via policy.

If you have such a policy, you can already implement it for the Ninja binaries that you produce by setting NINJA_PYTHON=/usr/bin/python3 in your CMake configuration step.
However, there is no need to impose such a policy in the official Ninja binaries released through Github, to other people who do not need it, or would be affected negatively by it.
And on Windows, where there is no standard installation location for the Python interpreter, the value embedded into the binary is essentially random (it depends too much on how the developer setup their system).

The stated objection is that the command isn't guaranteed to exist. This is a trivially detectable issue -- it doesn't get easier to debug than "error: /usr/bin/python3: no such file or directory".

No, a missing interpreter is already detected and will print an error message (see browse.cc). The only plausable issue is that invoking python on some (older) systems may invoke a Python2 interpreter, which in theory may fail with a user-hostile stack trace.
Looking at the content of browse.py, it looks like only the shebang line has been changed to use #!/usr/bin/env python3. That line is never used when launching the script from Ninja (only when starting it directly from a terminal), and its code already contains try/except and sys.version_info checks to support both Python2 and Python3 anyway.
So in the end, it looks like there is simply no use for this PR at all, as it doesn't fix anything, and likely regresses the tool on Windows.

Updated to swap python for python3 instead of using cmake's discovery

@keith , thanks for updating the PR.
This looks good to me, but https://peps.python.org/pep-0394/#exclusion-of-ms-windows seems to state that python3 is not guaranteed to be available on Windows. And there is https://github.com/python/cpython/issues/99185 which seems to indicate that this is not solved :-(
We may want to cleanup the browse.py from Python2-specific code paths, but I'll let @jhasse comment on that.
And by the way, I just tried the previous version on my machine, with my PATH pointing to a non-standard location for the Python interpreter, and the build did embed that non-system location into the final executable. Hence the problem I described for Windows also existed for Unix anyway.
In conclusion, embedding auto-detected host paths into binaries is still a terrible idea.
Having a policy of enforcing standard locations like /usr/bin/python3, when they exist, is a different topic, which is probably not needed here.

It looks like changing python to python3 is only desirable on Unix at that point. A simple CMake check should be enough to do that, e.g.:
# Default value for NINJA_PYTHON depends on the target system, since there is
# no `python` on MacOS, and no `python3` on Windows.
if(WIN32)
  set(DEFAULT_NINJA_PYTHON "python")
else()
  set(DEFAULT_NINJA_PYTHON "python3")
endif()
set(NINJA_PYTHON ${DEFAULT_NINJA_PYTHON} CACHE STRING "Python interpreter to use for the browse tool")

Seems to fix ninja -t browse on MacOS for me. Before that, the command prints ninja: python is required for the browse tool.

what about checking for python3 on the PATH and if it isn't fallback to python - during runtime?

Because the PATH at build time may not be the same when the produced Ninja binary is actually run.

Ah sorry, I misread your message. Doing runtime checks should be ok in theory. But doing that properly on all platforms is non trivial through, iirc.
Adding an option -t browse to specify the python interpreter would be another option that requires less work. The error message in case of ENOENT could be changed from ninja: python3 is required for the browse tool. to something like ninja: Could not find python3 in your PATH,  use '-t browse --python <program>' option to specify the path to a Python3 interpreter.

For example on Windows, you would have to check the registry to do things correctly: https://learn.microsoft.com/en-us/windows/win32/shell/app-registration?redirectedfrom=MSDN#finding-an-application-executable :-(

Windows is also additionally interesting because you can run py as the python command, and it will search all sorts of locations for you, including versions of python recorded in the Windows Registry as Software\Python\<Company>\<Tag>, and run the latest one for you (or a specific version via py -3 etc.).
But the "py" tool isn't installed by default, whereas "python" is. If you're going to search anything on Windows, you'd probably want to reimplement py as a builtin logic following https://peps.python.org/pep-0514/


Updated holesky forks and genesis time

We were accepting the current genesis due to some fork checks being skipped during startup, because we detected pre-genesis. I've altered fork checking to always occur, which did mean a few more changes than just holesky configuration.
The upside is we can now configure default initial state to finalized, then genesis, and it'll warn and try the genesis state if the finalized fails, and it'll determine if the forks change (like on holesky) and error. example output:
13:56:52.665 INFO  - Loading initial state from https://checkpoint-sync.holesky.ethpandaops.io/eth/v2/debug/beacon/states/finalized
13:56:53.006 WARN  - Failed to load initial state from https://checkpoint-sync.holesky.ethpandaops.io/eth/v2/debug/beacon/states/finalized
13:56:53.006 INFO  - Loading initial state from https://checkpoint-sync.holesky.ethpandaops.io/eth/v2/debug/beacon/states/genesis
13:57:11.233 INFO  - Loaded initial state at epoch 0 (state root = 0x706eeb43c9e44932b312cd26b8d35ef69725f117275ef3dcd67653625b519f16, block root = 0x00af3346d685d33731a476469262112fee02e82b05e60d83c577c649b33ad152, block slot = 0).
The fork from the intial-state (0:0x20017000) does not match the configured fork schedule (0:0x03017000).
Please check that network in configuration matches the loaded state.

We could still reference the genesis state from github, but it's not currently merged.
Partially addresses #7517

PR Description
Fixed Issue(s)

Documentation

[X] I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

[X] I thought about adding a changelog entry, and added one if I deemed necessary.

For the fork check that changed, I started from genesis on mainnet, goerli, sepolia, holesky to validate it won't cause unexpected issues by moving the check.


Support of instrumenting Anthropic models

Originally posted by @salahaz  as a discussion #88

Is there going to be in the near future support of instrumenting other AI models such Anthropic?

Related to https://github.com/pydantic/logfire/issues/109 since they already support Anthropic.

@salahaz #98 shows how you can already do this with Mirascope in the meantime while we patiently wait for this feature
@samuelcolvin I'd love to take this feature request on if you'd like :)
We've already implemented the majority of it in our library following how you instrument openai, so shouldn't be too difficult to port over (and we can use the llm tag so it shows up pretty in the UI with no additional changes)

@samuelcolvin I'd love to take this feature request on if you'd like :)

@willbakst I think that'd be very appreciated

@alexmojaki Do you have a contribution guide I can follow?

https://github.com/pydantic/logfire/blob/main/CONTRIBUTING.md

@alexmojaki I just ran through the guide:

There are 7 skipped tests and 2 xfailed tests. Is this expected?
Running make docs aborts with 9 warning in strict mode. Is this expected?
(I can turn strict mode to false locally to get it to work).

Yes and yes. Our docs use a closed source version of mkdocs with special features for sponsors/insiders, so external contributors can't actually build them fully. The contribution guide should really reflect this.

Update: I have a locally working version with tests, but a lot of the code is duplicated given the similarity with OpenAI. Going to spend some time refactoring to reduce code/test duplication and hopefully make it easier to instrument additional providers in the future (assuming they use the same SDK generation provider).
This will take a little longer to get done, but I believe well worth it.


Quick fixes

Quick fixes after merging #17.

@khavan, check out 2f11ac30c59ef28a6e2fd7431cf9df948a408964. This is what I meant about preventDefault()


Add filtering to list Airlock requests

Resolves #2332
What is being addressed

Added the following filters to the "get all Airlock requests" endpoint:

initiator - ID of the user that created the request
type - Airlock request type
status - Airlock request status
awaiting_my_review - when sent, will return requests that are pending the user's review

Added a list of allowed actions (out of 'cancel' and 'review') that the user can do on the request, to every request in the response.

How is this addressed

Added the specified filters to the endpoint as query parameters
Attached a list with the allowed actions to every request. The values in the list are affected by the requesting user and the state of the request - for instance, a user might be able to cancel a 'draft' request, but not review it, even if their role allows reviewing

/test

/test

/help

/test-destroy-env

/test


Field validation 'confirmed' should not implies 'required'

Laravel Version: 5.3.16
PHP Version: 5.6
Database Driver & Version: mysql

Description:
The validation rule "confirmed" implicitly implies "required", but it should not !
Steps To Reproduce:
when a field with "confirmed" but NOT "required" is NOT in input the "confirmed" validation failed and say does not match.

Perhaps Illuminate\Validation\Validator::validateConfirmed() should test Validator::hasAttribute()| before test Validator::validateSame() ?

I don't seem to understand, can you please share a failing scenario?

@Cyrille37 Have you tried sometimes|confirmed as validation rule?

@manniL The sometimes does not change, the `confirmed' validation fail with "The password confirmation does not match."
I right a failed demo and post it here quickly

ping @Cyrille37 please provide sample code to test against

@themsaid I wrote a test case and can discover that the issue does not comes from Illuminate Validation.
While I opened this issue from a Model validation issue managed with Esensi ValidatingModelTrait I will investigate in that way.
Thanks for support, and sorry for noise :-)
A route:
Route::post('/essais/ValidationConfirmedIssue', [
	'uses' => 'Essais\ConfirmedIssueDemo@post'
]);

A Controller:
namespace App\Http\Controllers\Essais;
use Illuminate\Http\Request;
use Illuminate\Foundation\Validation\ValidationException ;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;

class ConfirmedIssueDemo extends BaseController
{
	use ValidatesRequests;

	public function post(Request $request) {
		try {
			$this->validate($request, [
				'password' => 'confirmed',
			]);
		} catch(ValidationException $ex) {
			return 'Validation failed';
		}
		return 'Validation ok';
	}
}

A TestCase:
class ConfirmedIssueDemoTest extends \TestCase
{
	/**
	 * @return void
	 */
	public function testConfirmedValidation()
	{
		$response = $this->post('/essais/ConfirmedIssueDemo', [
			'password' => 'shuuut!',
			'password_confirmation'=> 'shuuut!'
		])
		->see('Validation ok');

		$response = $this->post('/essais/ConfirmedIssueDemo', [
			'password' => 'shuuut!',
		])
		->see('Validation failed');

		$response = $this->post('/essais/ConfirmedIssueDemo', [
		])
		->see('Validation ok');
	}
}

Really not a software bug, just a brain's bug.
Very sorry for noise !
Cheers, Cyrille.


Custom Hostname?

[Enter feedback here]
What does custom hostname mean?  if i make static web app, hostname is not custom, it's random and i can't find a way to change it.
if that is what free tier means, sould it not be made clear in various places

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


Zoomend event

Hi
I noticed that the image position always shifts after zooming, but the data from the on.zoom() event is the data before zooming. I would like to know if it is possible to get the coordinates of the image after zooming.

Hey @AguzzTN54,
Thanks for your response!
This should be a bug, I will fix it in the next version!


RFC: Prepend, not append, bundled dists to sys.path

If you build with --inherit-path, right now the dependencies
explicitly bundled in the pex are put on sys.path after the existing
$PYTHONPATH.
This is bad, because it can lead to things you expect to be pinned (or
transitive dependencies which you expect to be pinned) to leak in from
the system with incorrect versions.
Instead, put things we explicitly bundle at fixed versions early on
the $PYTHONPATH, so that the system entries are just fallbacks, rather
than overrides.
If this looks reasonable in concept, I'll clean it up a little and add an integration test.
I could also put this behind a flag if that would be preferred.

@kwlzn Moved the code to the place where sys.path is actually being modified. WDYT?
@baroquebobcat Yeah - I feel like if you're using pex files, you're trying to lean towards hermeticity, so this is the correct default... How would you feel about --inherit-path no longer being a boolean flag, but instead taking values false, prefer, and fallback? We can make true-like values still parse as prefer for backwards compatibility...

How would you feel about --inherit-path no longer being a boolean flag, but instead taking values false, prefer, and fallback? We can make true-like values still parse as prefer for backwards compatibility...
hm. I think I like that. It gives folks a way to debug sys.path issues when using --inherit-path without digging into pex.

@kwlzn @baroquebobcat Updated and added tests, please take a look :)

I'm not sure how finicky it'd be but the defaulting to prefer on empty might be worth adding a test for.

Added a test :)


KAFKA-8030: Fix flaky tests in TopicCommandWithAdminClientTest

This change adds waits for metadata updates after killing the broker in order to make the tests more stable.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@mjsax would you please review this?

retest this please

@viktorsomogyi Merged to trunk.  PR got conflicts with 2.2 branch. Can you raise the PR for 2.2 branch?

@omkreddy thanks for merging this. As I see the "under-min-isr" feature is not yet in 2.2. Were you just referring to the other test related changes?

@viktorsomogyi Yes, i was just thinking. we should merge any changes required for 2.2.


adding provenance log locator proposal

Signed-off-by: Dave Huseby<EMAIL_ADDRESS>

merged with #8


How to submit SunEditor Input together with other form data via React-Hook-Form?

Hi, how to submit SunEditor Input together with other form data via React-Hook-Form?

I can use the getContents
editorInstance.getContents()

@yelnyaface
try:  https://github.com/mkhstar/suneditor-react/issues/199


DBZ-5814 Add "when_needed" option to "snapshot.mode" in MongoDB connector

https://issues.redhat.com/browse/DBZ-5814

@harveyyue The approach LGTM! Unfortunately the large event is detected only during streaming so there has to be an additional mechanism that will set the flag that this happened and when connector is restarted via automated retry mechanism the flag should be detected and snapshot triggered.

@jpechane Ok, I need to check the related streaming code of mongodb.

@jpechane IIUC, mongodb snapshotter could read this docment size larger than 16m, right?

@harveyyue IMHO this is a hard MongoDB limit. But it will not allow you to write document larger than would be readable by snapshotter.

@jcechace Could you please review this PR? Is it now applicable with full switch to change streams?

@harveyyue  can you please rebase the code? There will be some changes but nothing major in this area i reckon.
@jpechane Technically yes, unifying this with other connectors still makes sense.

@jcechace Caould you please take care of the PR till merge?
Related to my question - if you look at it it still operates on the assumption of stored oplog timestamp which I suppose is no longer the case.

@jpechane That's why I asked whether @harveyyue can rebase and update it.
and yes, I will see it through (kinda got that from the first message ;).

@jcechace Could we just rebase it ourselves and open a new PR based on the rebase if necessary?  I think at this point its either fallen through the cracks or Harvey is backlogged on other things.

@jcechace Sorry for late response, I found that there are many code changes in Mongodb Connector, and I'm trying to rebase the code, but some method had been removed, I'm afraid I can't complete it

@jcechace Sorry for late response, I found that there are many code changes in Mongodb Connector, and I'm trying to rebase the code, but some method had been removed, I'm afraid I can't complete it

No problem @harveyyue.

@Naros  I will look into the rebase sometimes next week. However just so that I understand correctly. This is an attempt to distinguish between initial a when_needed in a sense that initial is not able to recover from invalid token? Because currently initial actually behaves like when_needed.

@jcechace Yes, that's correct. It should work as in case of RDBC connectors. So initial should be done only once. when_needed should be done when there is too large event during streaming and connector needs to recover.

@jpechane  in that case, do you agree to have when_needed as the default?

Yes, when_needed is the default - like MySQL


Line numbers would be great

To be able to easily refer specific lines it would be great to have line numbers shown.

I'd like this, too.

+1

Still valid.

The new embed UI features line numbers, though the playground does not. Adding them shouldn't be terribly difficult, though some means to turn them on and off might be a good idea.

+1 Yes please line numbers and the ability (maybe new PR?) to collapse/uncollapse functions/methods ❤

This feature will be really good for beginners or people want to have a taste of flutter to learn errors and debug without installing flutter/dart.

Yes it's a pain that DartPad refers to errors by line number, but the editor doesn't actually show those numbers!

This has been implemented for the embedded UI, but hasn't been done for the playground (full-screen) version.

+1

+1
Issue opened April 2015.  C'mon folks. Five years and counting, just to add line numbers to an editor window!

YES YES YES -- we need line numbers
This is a great tool and it reports errors on line numbers yet has no line numbers. Please raise the priority a few notches and make this tool more usable for those people who are trying to learn Dart and Flutter.

YES YES YES -- we need line numbers
This is a great tool and it reports errors on line numbers yet has no line numbers. Please raise the priority a few notches and make this tool more usable for those people who are trying to learn Dart and Flutter.

+1 Line numbers needed in Dartpad.

+1 to line numbers


How to upload Symbols for crash reporting

How does one " Create a ZIP file for the dSYM package on your Mac. " ?

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

ID: 663b3972-5d13-f787-05c6-45f0d49127ef
Version Independent ID: 1aa13690-4428-163d-4cb4-f8fecad0665e
Content
Content Source
Service: vs-appcenter

@erwan-lcs The comments section is for providing comments or suggested edits for the App Center docs. If you have a question, please use the chat option in the bottom-left corner of the App Center dashboard, we have a dedicated team of support resources monitoring chat for questions.

@erwan-lcs right click the dsym in Finder and then there should be an option "compress". That will give you a zip file you can then use for uploading.


Don't reset state when adapter or onError changes

Fixes https://github.com/solana-labs/wallet-adapter/issues/636
Now that we're not wiping the state when the adapter changes, we'll need to check the logic in all the other places this should happen.

Instead, let's try to store the actual error handler in a ref, update that ref in an effect, so then we can remove the handler as a dep of handleFoo

handleError won't even need to useCallback after you've done this since both of the things it uses will be refs.

Yeah, sounds good. Will update and test.

Wrote a failing test for you: 2c17fc69e6934588cb4491d5bed1017571f9ae0b.

Ooh! This is even better. When you fix the bug, you'll find that another test breaks, pointing to a separate real problem that this was masking.
I don't want to steal it from you, but please do let me know if you want me to take this over.

Yeah, turned out we need that state reset when the adapter changes, at minimum to wipe out the publicKey. I refactored a bit and did the ref thing. I went ahead and merged to get a fixed release out but if it doesn't look ideal, please revise!


Exception handling refactoring

I've removed the uncaught exception handler due to concerns described in #28.
I've also removed the trackException method that took arbitrary strings as arguments to discourage overusing this or abusing it. In most cases we really want to track a normal event, exceptions are not replacement for if-clauses.
We are left with a trackException method that requires a throwable object. "Custom Exception" are still very much possible just create your own Exception or use a default Exception that takes arguments in the constructor.
I also updated the documentation for the method to point out that Piwik is not a crash tracker. Additionally i mentioned possibly pitfalls from proguard interferring with event matching due to obfuscated classnames or missing linenumbers.
I also contemplated whether the trackException method is really just another helper and should be moved into the new "QuickTrack" class, it's basically a wrapper, exception it just a name for an event.
This would be in contrast to i.e. downloads which are separately tracked on Piwiks UI.
Tracker: Methods for things that are distinct within Piwik UI.
QuickTrack: Methods for things that translate stuff into generic events in the Piwik UI.
This PR doesn't move it though yet, what do you think @dotsbb ?

I've removed the uncaught exception handler due to concerns described in #28.

I think we should include this feature, at least because of some users, which could wish to migrate their apps from Google analytics to Piwik SDK.
https://developer.android.com/reference/com/google/android/gms/analytics/Tracker.html#enableExceptionReporting(boolean)

I'd rather we re-add it if someone really needs this. I just can not see this being useful in any but the smallest of apps, and those are usually not the apps that do heavy analytics.
Lets compromise, I've readded it as a method within QuickTrack.class and created a new PiwikExceptionHandler.class that contains all the logic separately.
What do you think about the latest commit?
I would still love for someone to create an issue, arguing for needing this in his app.
Maybe someone created an awesome Piwik server-side extension that gives it a full set of Crashtracking tools, but doesn't share it. I would be very much interested in that :smile:.
Does Google Analytics have this?

Once we've supported a feature, it's tricky to remove it afterwards in case some users depend on it. Also it can really be useful for some to be able to track exception (while it's far from perfect as you pointed out).
Can you create an issue with the problems of Exception handling and few screenshots showing how it's not so useful for you yet?

@mattab True, with my last commit to this PR, i added it again but in a (in my opinion) cleaner way, will have to see whether @dotsbb agrees.
I'm currently using ACRA with an app with 1000k+ active users and just now there are 1954 different types of Exceptions in the database. I pruned the database I think 2 month ago.
95% of those exceptions are bugs i can't fix.
We can split those exceptions up into different categories:

Users screwing with the apk (Modding/Cracking etc).
Older app versions
Users screwing with their device ROM
Bugs in the Android framework

Now imagine we put those 2k different exceptions into the event category of Piwik.
Unless there is a plugin i don't know about, i don't see how this can be feasonably managed within Piwik.
To organise this we would need:

Ignore or reject exceptions from older app versions
Mark issues as fixed
Options to prune Exception events (by version & age)
Sorting/Filtering by app versions / android versions

To then make the exceptions useful we would also need more information:

App versions
ROM details
Full stacktraces (Crashing tracking without full stacktraces??)
(Compare with ACRA/Crashlytics)

See screenshots, now imagine packing that with 2000 different events of type "Exception" from different app versions and Android versions.
This can work for a very small app, but as soon as you are getting serious numbers, it's too chaotic.
Piwik should focus on analytics, not try to be a crashtracker.
We can actually put that on a scale.
On the very left as pure crashtrackers we have something like ACRA.
In the middle there are hybrid solutions such as Flurry or Crashlytics.
On the right we have Piwik / GA as pure analytics.
Hm this might have came off a bit as a rant, sorry not my intention :).

Maybe I'm looking at this wrong and the real use case is tracking flows like:
EntryA -> PageA ->PageB->EventC->ExceptionD
Then you could see this as page flow ending as a crash causing you to do further investigation or being able to use this information in conjunction with a real crashtracker.
It seemed to me that the functionality was being "sold" as Bugtracker/Crashtracker alternative, now I'm no longer so sure...
Did i just give myself the legit usecase i was looking for?
In any case the current PR no longer removes the functionality.

@d4rken it's great to read your thoughts here. Improving management and display of exceptions is in the scope  to Piwik platform. Would you mind creating an issue eg. "Piwik to measure Errors and Exceptions of apps" or similar? and copy paste there your comments... it would be great to discuss it over there

@mattab
Here? https://github.com/piwik/piwik-sdk-android/issues
Or there? https://github.com/piwik/piwik/issues

I meant there: https://github.com/piwik/piwik/issues :+1:

@d4rken I like your changes, but I think it's right time to merge them into dev branch. So please change the target of Your PR.

@dotsbb will do.


Implement a basic Subcommand structure.

List of Changes

Add a subparser for commands related to modifying the config files manim uses and creates.
Implement write, show and export commands with said subparser.

Write
Writes a custom config file based off of default.cfg and saves it to the user config location if the level passed is user or to the current working directory if the level passed is cwd. If no level is passed, the config file writer will ask the user where to save the config.manim cfg write --level cwd
manim cfg write --level user
manim cfg write

Show
Prints the Final Configuration at the current working directory to the Terminal.manim cfg show

Export
Exports the Final Configuration at the current working directory to --dir.manim cfg export
manim cfg export --dir ./CustomConfigs/

Remove the manim-cfg command.

Motivation
The introduction of the Config File writer opened up a lot of possibilities for config related utilities as discussed in #201 . These utilities would go well under the manim command, under the cfg subcommand, as suggested by @leotrs, and that is what this PR addresses.
Explanation for Changes
A subparser for commands related to modifying the config files manim uses and creates has been added, and to this, 3 more sub-subparsers, for the write, show and export subcommands have been added.
The manim-cfg command has been removed, as it only linked to a single function from a single file, and implementing subcommands for every variant of manim-cfg and manimcm-cfg would get very tedious. This command has been wholly replaced by the subcommands to manim mentioned previously.
Testing Status
Tested with no errors, and outputs as expected.

Further Comments
I'm not entirely satisfied with the way I've implemented this. Currently, the __main__ function in main.py has to be modified to not ask for a default file if the cfg subcommand is invoked, and I feel like my solution was a tad too hacky. If a better way exists, don't hesitate to review this PR to shreds.
Acknowledgement

[x] I have read the Contributing Guidelines

For the benefit of those who want to review this, I'd like to give a rundown of how the subcommand system will work.

In the beginning, calling manim from the command line will run manim/main.py:__main__.
In main.py utils/cfg_file_utils is imported, which has the functions that all the subcommands will execute.
Before the function is executed, file_writer_config and args are imported from config.py.

In config.py, _run_config() is imported from config_utils.py.

In _run_config(), _parse_cli() is called.

Here, an explicit check is performed to see if a subcommand has been executed along with the main manim command.
If it does find a subcommand, the normal parser gets a shiny new subparser, within which a sub-subparser for cfg related commands is intialised and arguments for those added. Note that if it finds a subcommand, file and other compulsory arguments won't be added to the main Argument Parser. If it doesn't find a subcommand, it realises that this is just to render an animation, and everything is initialised "normally".
Now, the cfg sub-subparser parses the subcommand for cfg to determine what to do, and manually adds it to the main parser's Namespace. _run_config() then returns the main parser's Namespace.

Now that _run_config() has the required namespace (called args here, for brevity), it will check if args has a subcommands attribute.
If it does, it gets the cwd's manim.cfg if it's present, and adds it to the list of config_files. If it doesn't, the usual steps that were taken before this PR are followed.

_run_config then calls _parse_file_writer_config to get file_writer_config.

If args has a subcommands attribute, _parse_file_writer_config won't set input_file and other parameters that don't matter in a subcommand in fw_config.
If args doesn't have such an attribute, _parse_file_writer_config proceeds as normal and returns the file_writer_config.

All of these configs, along with a list of the parsed cfg files returned by _run_config is unpacked in config.py.

Back in __main__.py, if args has any subcommands, those subcommands are given top priority and the functions corresponding to them are called.  If they don't, then manim assumes it's just being asked to render an animation and does that.

And that's how this subcommand structure works.

@naveen521kk

Issue: This should not happen we need a error message here.

Instead, the program now asks the user if they want to export to the same directory they are reading from.

Suggestion: Move the ones, like the CLI in Green to centre

Eh, it doesn't look very nice. I'll let you be the judge:

I haven't committed that change.

Issue: Change the colour of the link to something else other then blue.

Yeah, shame powershell has a blue background. I have changed the link to green in the latest commit.

Suggestion: Read Configuration Files should not be shown while writing cfg files
This is a byproduct of the fact that the config files are read before anything else happens when the command manim cfg is executed. Also, I don't see why this will pose a problem, as the config utilities can know the current config preferences.

Issue: Export command doesn't work
The command manim cfg export does work. I had mistakenly left out the cfg in the main comment for this PR. This has since been rectified.

Issue: Write Only what is edited into manim.cfg instead of writing everything.
I have not touched the configwriter function in this PR. It, by default , writes the entire contents of default.cfg , and just changes the values as required.

Nitpick:Create the directory before writing the file.
I have added a warning and made sure the directory is created before writing the file, in the latest commit.

Suggestion: Move the ones, like the CLI in Green to centre

Agree with @Aathish04, centered titles don't look great.

Suggestion: Read Configuration Files should not be shown while writing cfg files

I think they should be shown.

Issue: Write Only what is edited into manim.cfg instead of writing everything.

This is an interesting suggestion, and I'm on the fence about it. If you feel strongly about it @naveen521kk please open a new issue and let's keep it separate from this PR.

@leotrs I think I've addressed everything you suggested. Please let me know if there's anything else!

Everything looks good to me now. Before merging, is there a way we can add some tests to this? I understand that this needs user input to work...

Everything looks good to me now. Before merging, is there a way we can add some tests to this? I understand that this needs user input to work...

Writing a test for show and export should be straightforward.
Writing a test for write could possibly be done if we use the "reading from a file" trick that I used for - as filename, but I haven't tried that for an application like this, where each EOF results in a new input() statement.
Worst case scenario we'd need a text file to read from for every single config value...

I've tried to roughly catch up with this development. But aside from Write/Show/Export can we also get Edit which opens the according file similar to what the -p flag does with render output?

I've tried to roughly catch up with this development. But aside from Write/Show/Export can we also get Edit which opens the according file similar to what the -p flag does with render output?

Do you think it would go better as it's own command or as a flag for write? I personally think manim cfg write --open might look nicer.

@leotrs I'd like to direct your attention towards commits 1f3091c and 59d846c.
I have added a condition so that run_config now gets sys.argv passed to it not only if manim is called from the command line, but also if run_config is called my manim/__main__, which happens when a subcommand calls it.
Without this, python3 -m manim cfg export will NOT read the current directory's cfg, but manim cfg export will, for some odd reason.
Do you think this will cause problems along the line?

Do you think it would go better as its own command or as a flag for write? I personally think manim cfg write --open might look nicer.

Not entirely sure... having it as a flag of write might be nice for the association of file creation, but the same thing might be the issue too. I would assume that write isn't just used to initialize, but also possibly to reset, as in overwrite the cfg, right? Using it like this to revert to default might be nice. But if so, it would be very bad to have open as a flag of the command that can reset the cfg instantly.

@XorUnison

I would assume that write isn't just used to initialize, but also possibly to reset, as in overwrite the cfg, right?
Before cfg_subcmds.py:write is executed, all the config files that are viable are read anyway, and when write() is called, the final config dict's values are what are carried over and set as "defaults".

For example, if you already have a manim.cfg in the directory, it's contents will be viewed as the default by write.

Using it like this to revert to default might be nice.
I don't think there really is any reason to make write have a reset functionality, since one can just trash the manim.cfg file, where ever it is, and default.cfg would be the only successfully read cfg file, unless there's a user level cfg file.

But if so, it would be very bad to have open as a flag of the command that can reset the cfg instantly.

Nothing is erased the moment you call cfg write. It's only after you go through all the processes of filling in your desired changes that the entire file is replaced with one containing your changes.
All things considered, we could just add a conditional that checks if --open is a flag passed, and completely sidestep everything above and just open the file in the users text editor...

So let me get this straight then... you want to have the cfg editing basically also available in the terminal? If I got that right then a --open flag seems a lot more fitting of course.

So let me get this straight then... you want to have the cfg editing basically also available in the terminal?

Yeah, this is how write is intended to work. You can type in the changes you want, and leave it blank if you want it to take the default value.

If I got that right then a --open flag seems a lot more fitting of course.

Cool, so just to confirm, the --open flag should open, (and create if it doesn't exist), but not modify the manim.cfg file in the default text editor, yes?

Cool, so just to confirm, the --open flag should open, (and create if it doesn't exist), but not modify the manim.cfg file in the default text editor, yes?

I think so, yes. If users open it like that and make changes in the text editor that should be up to them. So after opening the write command can and should end itself without further action.

@leotrs @naveen521kk  @huguesdevimeux @XorUnison
I think I've addressed all your recommendations. Feel free to tell me if there's anything else!

On my first review, I asked how can we add tests for this. Were those tests added? If not, please open a separate issue to that effect. Merging now!

On my first review, I asked how can we add tests for this. Were those tests added? If not, please open a separate issue to that effect. ~Merging now!~
EDIT: tried to merge but there are conflicts. @Aathish04 please resolve conflicts and feel free to merge.

no need to create an issue. Add the test required in #193

On my first review, I asked how can we add tests for this. Were those tests added? If not, please open a separate issue to that effect. ~Merging now!~
EDIT: tried to merge but there are conflicts. @Aathish04 please resolve conflicts and feel free to merge.

Yes, the tests mentioned were added.


Powershell is used ignoring settings

I've updated it to version 1.60 and by default powershell is used unless I defined to use git bash shell. Git bash shell still is defined in settings for internal and external terminal for windows
"terminal.external.windowsExec": "C:\Program Files\Git\bin\bash.exe",
"terminal.integrated.automationShell.windows": "C:\Program Files\Git\bin\bash.exe",

I'm also having the same issue after updating to 1.60, the terminal that is opened while starting the app is PowerShell. If I open a new terminal then the terminal that I set as my default is opened.

I have a more important issue. When I start npm script from NPM SCRIPTS VIEW it starts in PowerShell and cannot be executed.

This is a duplicate of #132150 and will be fixed in upcoming recovery release

/duplicate


about code pointfusion

dear wang ：
I want to do some comparative experiments of 6D pose estimation on PointFusion recently, but the code of PointFusion is not public yet. I see that there are some relevant experiments in your paper, so I wonder if you can send me the source code of PointFusion if possible. My email is<EMAIL_ADDRESS>I will be very appreciated if you can help！
Best wishes.

Hi, the code of PointFusion belongs to the company that published the work and we also don't have access to it. But I do think you can modify DenseFusion to PointFusion. Basically, you can skip all the steps of pixel-level fusion and directly use the global feature from the pointnet as the input to the pose estimation network.

Hi, the code of PointFusion belongs to the company that published the work and we also don't have access to it. But I do think you can modify DenseFusion to PointFusion. Basically, you can skip all the steps of pixel-level fusion and directly use the global feature from the pointnet as the input to the pose estimation network.

Hi, the code of PointFusion belongs to the company that published the work and we also don't have access to it. But I do think you can modify DenseFusion to PointFusion. Basically, you can skip all the steps of pixel-level fusion and directly use the global feature from the pointnet as the input to the pose estimation network.

Thanks for your reply. Actually, I have tried to modify DenseFusion to PointFusion. But I can't get as good a result as in your paper, and I don't know where the problem is. All I want is to calculate the add and AUC score of PointFusion on ycb-video,  If you obtained these data in your previous experiments, I wonder if you can send me a copy. Thank you again for your reply！

I see. I really wish I can help but since it's too long ago, I could not find these results anymore. I would still recommend trying the modification idea from DenseFusion to PointFusion.

Thank you very much for your patience and recommendation. Actually，I followed the first part of PointFusion network and got the feature that size is nx3136, and then used the final regression part of DenseFusion to predict pose, but the result is not good enough. Do you have any suggestions?

Hi, I cannot find my modified PointFusion code at this moment. But I do remember I tried very hard to get the best PointFusion performance reported in the paper. It's really a long time ago to catch up all the changes. Did you use all the data augmentation steps for training the PointFusion?


buildNeeded doesn't take into account difference between compile and testCompile dependencies, and so fails with circular dependency error

buildNeeded doesn't take into account difference between compile and testCompile dependencies, and so fails with circular dependency error
Imagine a project with the following modules:

domain-model
domain-model-testing (common definitions for testing things that use the domain model)
web-service

And the following dependencies:
domain-model-testing -[compile]-> domain-model
domain-model -[testCompile]-> domain-model-testing
web-service -[compile]-> domain-model
web-service -[testCompile]-> domain-model-testing
There is no circular dependency in this project.
If I compile the whole project, it works fine.
If I compile a single module, using buildNeeded, it fails with a circular dependency error.
Expected Behavior
It should compile the main and test sources in the right order.
Current Behavior
It fails with a circular dependency error.

Sorry for the late reply.
The issue is in the backlog of the relevant team and is prioritized by them.


Demo gives request too fast

Do I need to do something to limit the requests on such a simple demo?

This is something I'd like to know too. Can we adjust the intervals ?

I assume that you are getting the following message:
We are sending requests too fast, sleeping for 30000 milliseconds.
It happens when RpcClient.Startup() is called there is a flood of request sent out to the server. This is a simple way of preventing the response from falling into the status code 52.
In the RcpClient class the Startup() tell the thread to sleep for a certain amount of time in between requests like so:
internal bool Startup()
{
    try {
             ByteString response;
             // Send GetPlayer to check if we're connected and authenticated
             GetPlayerResponse playerResponse;

             do {
                  .....
             } while (!playerResponse.Success);

             Thread.Sleep(1000);      <------- //here is where we want to pause for moment

              // Get DownloadRemoteConfig
              // ReSharper disable once RedundantAssignment
              response = SendRemoteProcedureCall(new Request
              {
                     .....
              });

              Thread.Sleep(1000);   <------- //and also here

             .....

       }  catch (Exception)  {
             return false;
       }

     return true;
}

This creates a lag time from once you launch the program and when you break into the handle commands loop, obviously this causes it to wait for two seconds, it think if you cut them both in half you should be fine.

@sodanakin you can adjust the interval in the Configuration.cs file

@Recio the value that you are referencing is the amount of time that you timeout for after you submit too many requests. It does nothing to limit actual time in between request.

@Eliminster0 you're absolutely right, I misread what you wanted, my bad.

@Recio you are gud mate, what you suggested would work also as far as returning control to the user just not what actually causes the timeout to fire

After running the new Demo, I noticed that the request in the Main function should be either be moved to its own function so the user can call or just sleep the thread right before it:
public static void Main(string[] args)   {
            Logger.Info("Booting up.");
            Logger.Info("Type 'q', 'quit' or 'exit' to exit.");
            Console.Title = "POGO Demo";

            var arguments = new Arguments();
            if (Parser.Default.ParseArguments(args, arguments))
            {
                 .....

                // Send initial requests and start HeartbeatDispatcher
                session.Startup();

                Thread.Sleep(500);  <--- //sleep here or just move the request below

                var fortDetailsBytes = session.RpcClient.SendRemoteProcedureCall(new Request
                {
                    RequestType = RequestType.FortDetails,
                    RequestMessage = new FortDetailsMessage
                    {
                        FortId = "e4a5b5a63cf34100bd620c598597f21c.12",
                        Latitude = 51.507335,
                        Longitude = -0.127689
                    }.ToByteString()
                });
                var fortDetailsResponse = FortDetailsResponse.Parser.ParseFrom(fortDetailsBytes);

                Console.WriteLine(JsonConvert.SerializeObject(fortDetailsResponse, Formatting.Indented));
            }

            HandleCommands();
        }

@Eliminster0 could you tell me how to disable debug log printing in the demo?

@joshk6656 quick and easy way, but no the best, is to comment out all the body's static methods in Logger.cs
(Debug, Notice, Error, Info, Warn)

@joshk6656 or comment the 'Console.WriteLine($"{timestamp,-10}{logLevel,-8}{message}");' @ line 51

@joshk6656 I don't recommend doing this and haven't I tried this myself, but I am pretty sure if you just line comment the Output function in  POGOLib/POGOLib/Logging/Logger.cs you could accomplish what you want. Like so.
private static void Output(LogLevel logLevel, string message)
{
          /*       <---- // add this

            if (logLevel < LoggerConfiguration.MinimumLogLevel) return;

            var foregroundColor = LoggerConfiguration.DefaultForegroundColor;
            var backgroundColor = LoggerConfiguration.DefaultBackgroundColor;
            var timestamp = DateTime.Now.ToString("HH:mm:ss");

            if (LoggerConfiguration.LogLevelColors.ContainsKey(logLevel))
            {
                var colors = LoggerConfiguration.LogLevelColors[logLevel];

                foregroundColor = colors.ForegroundColor;
                backgroundColor = colors.BackgroundColor;
            }

            Console.ForegroundColor = foregroundColor;
            Console.BackgroundColor = backgroundColor;
            Console.WriteLine($"{timestamp,-10}{logLevel,-8}{message}");
            Console.ResetColor();

            */       <--- and this
}

I believe this works try this and let me know if it does.

This issue is probably fixed or improved with async/await in the PCL branch

This should fix the timing issues https://github.com/AeonLucid/POGOLib/commit/c79603d0120d95d55ec33fd47de47f5eea5873d5

I was hoping that I could utilize the debug argument to disable the message, apparently not. I commented out one line in logger.cs
public static void Debug(string message)
{
//Output(LogLevel.Debug, message); //commented out this line.
}

I am using the others to write useful things (for me), I will just my debug
comment when i actually need to debug.
Great project btw guys.
On Fri, Aug 12, 2016 at 10:25 AM, João Récio<EMAIL_ADDRESS>wrote:

@joshk6656 https://github.com/joshk6656 quick and easy way, but no the
best, is to comment out all the body's static methods in Logger.cs
(Debug, Notice, Error, Info, Warn)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AeonLucid/POGOLib/issues/38#issuecomment-239477073,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAd2jSGXiYdDj8qDvKQDQTshYxrWJbrlks5qfJB6gaJpZM4JiRYZ
.

The new code allows you to specify the log provider.


merge package template from Kronos-Tools/npm-package-template

package.json

chore(devDependencies): add<EMAIL_ADDRESS>from template
chore(devDependencies): add<EMAIL_ADDRESS>from template
chore(devDependencies): update<EMAIL_ADDRESS>from template
docs(package): remove keyword null

Codecov Report

Merging #296 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #296   +/-   ##
=======================================
  Coverage   89.59%   89.59%
=======================================
  Files           1        1
  Lines         221      221
=======================================
  Hits          198      198
  Misses         23       23

Continue to review full report at Codecov.

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


Heat provisioning

Add an alternative provisioning method using Heat. Combine all installation steps including provisioning into a single heat_site.yml playbook. Add documentation for how to use the new installation method.

@tourunen Perhaps we could use "Rebase and merge" with this one since it's a big one?


Better determine when a culture is 'native' to a region

https://forum.paradoxplaza.com/forum/index.php?threads/the-eu4-to-v2-converter-project.707362/page-168#post-20413533
https://forum.paradoxplaza.com/forum/index.php?threads/the-eu4-to-v2-converter-project.707362/page-169#post-20414364
https://forum.paradoxplaza.com/forum/index.php?threads/the-eu4-to-v2-converter-project.707362/page-170#post-20438838
https://forum.paradoxplaza.com/forum/index.php?threads/the-eu4-to-v2-converter-project.707362/page-170#post-20439906
https://forum.paradoxplaza.com/forum/index.php?threads/the-eu4-to-v2-converter-project.707362/page-172#post-20454181
https://forum.paradoxplaza.com/forum/index.php?threads/the-eu4-to-v2-converter-project.707362/page-172#post-20454395

In summary - by determining if a culture is 'native' to a region:

Assigning cores based on culture can be more restricted with easier logic
We can dynamically generate successor cultures

implemented.


Upgrade to chronosphere tf provider v1.6.0

#26  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @bg451 and the rest of your teammates on  Graphite


Added support for iridescence

Solves https://github.com/gkjohnson/three-gpu-pathtracer/issues/96

I've updated this PR to remove conflicts with current main. Please let me know if there's anything you'd like me to add or change.
Below is a quick test showing Clear Coat, Sheen and Iridescence material properties in use simultaneously.

Apologies, I'd pushed with a malformed comment, fixed that, tested and pushed again.

This is great, thanks!

You're welcome, on to the next one.


Disordered writes in a connection-faiilure environment

Hi!
I'm trying to insert in some sequentials  writes in InfluxDB comming from a "not stable connection environment".  Td-agent, basically reads from rabbitmq, and insert into a measurement schema.
The configuration in the server side is this:
<source>
  @type amqp
  host localhost
  port 5672
  vhost /
  user admin
  pass mypass
  queue health_info
  format json
  durable true
  tag_key true
</source>

<match **>
  @type influxdb
  dbname health
  user admin
  password mypass
  use_ssl false
  retry 0
  num_threads 1
  sequence_tag _seq
</match>

The problem comes when i cut off the connection between my client and server: when RabbitMQ is reconnected, all the stored messages pass between host and server in order, and they are diferents (they have an additional "timestamp" field) but they are written totally disordered at InfluxDB
Some example messages:
{"disk_usage": 2, "cpu_usage": 1.0, "percent_mem": 20.9, "disk_percent": 57.7, "used_mem": 193, "timestamp": "2017-01-07T17:41:32Z"}
{"disk_usage": 2, "cpu_usage": 0.5, "percent_mem": 20.9, "disk_percent": 57.7, "used_mem": 193, "timestamp": "2017-01-07T17:41:42Z"}

Some considerations:
a) This is not happening when connection is not cutted off between AMQP server altough you're writing these at InfluxDB. All messages are written in order.
b) RabbitMQ is passing once message (line) at time.
c) If i replace InfluxDB for file output plugin, this works correctly and all lines are written sequentially onto the file, as we were passed across.
Can this be a bug?
Thanks!

I'm not sure this is a bug of influxdb plugin because influxdb output plugin simply sends incoming records into influxdb. This is same as file output plugin.
Maybe, you need to check which point causes disorderd problem.

I'm trying to enable some debug traces to see what's happening. Thanks for your help, i'll keep this ticket updated.

A note i forget to make.
Once the insertions becomes"disordered", they don't stop until you restart td-agent.
> select * from virtualbubuntu
name: virtualbubuntu
time			_seq	cpu_usage	disk_percent	disk_usage	percent_mem	timestamp		used_mem	value
----			----	---------	------------	----------	-----------	---------		--------	-----
1483819528000000000	0	0.5		57.7		2		21		2017-01-07T20:06:22Z	194
1483819528000000000	2	0.5		57.7		2		21		2017-01-07T20:06:32Z	194
1483819548000000000	1	1		57.7		2		21		2017-01-07T20:06:42Z	194
1483819548000000000	2	1		57.7		2		21		2017-01-07T20:06:52Z	194
1483819568000000000	0	1		57.7		2		21		2017-01-07T20:07:02Z	194
1483819568000000000	2	0.5		57.7		2		21		2017-01-07T20:07:12Z	194
1483819588000000000	0	2		57.7		2		21		2017-01-07T20:07:22Z	194
1483819588000000000	1	1		57.7		2		21		2017-01-07T20:07:32Z	194
1483819608000000000	2	1.5		57.7		2		21		2017-01-07T20:07:52Z	194
1483819608000000000	1	1		57.7		2		21		2017-01-07T20:07:42Z	194

I'm going to close this ticket, my problem is fixed, and i'll write some considerations before do this:
-Maybe, i missunderstood about how InfluxDB is works, writing and showing the data.
-I resolved my problem specifing a timestamp from origin BUT If you specify "time" as timestamp value for time value, for some reason, is not used, dropped, and inserted with insertion timestamp. I don't know if this is a bug, of if this comes from the broker (RabbitMQ in my case).-
Thanks for you help!