GameUserSettings for Mods

Is it possible to define values for non-official settings introduced by mods and placed in their own sections in GameUserSettings?
In my current case I would like to set custom sell prices for the Capitalism Sell Table for each server instance: http://steamcommunity.com/workshop/filedetails/discussion/748358288/343785574516572681/
This requires to be able to set values in sections that are written to GUS on server start.
Maybe it could look like this to determine that it is a custom-section-value:
ark__SectionName__ConfigParameter="value"

if your using different instances for each server they all have their own gameusersettings.ini which is why i dont understand why you would need to have a start parameter for it
For instance my six servers all have their own folder setup for each install.
The have their own save directories as well don't know if this differs from other installations but from common practice sharing resources such as files and game data never works out well in the end plus i didn't think it was an option.
We have a user created in our linux directory called steam and it has full ftp and write and read prams on the directory. So while arkmanager runs as a service it allows the ability to change and edit files.
if your sharing the folders data directories between all their servers I wouldn't be able to help you. however what your asking for would be messy from a personal perspective.

So you do not just set individual AltSaveDirectoryName for your servers, you set different arkserverroot and have 8x the whole server setup?

No I use different instances like this
for instance center top lines read
config environment
arkserverroot="/home/steam/center"
And island reads
config environment
arkserverroot="/home/steam/island"
Each folder has it's own folder and on top of that each server has it's own gameusersettings.ini


Cannot click on demo button

Here is a picture of what is not working : (Link: https://vuejs.org/v2/guide/#Handling-User-Input)

The padding of the p comes above the button which makes it not clickable.
I think, the css should look like:
margin: 1.2em 0 -1.2em; // Correction: margin: 1.2em 0;
padding-bottom: 1.2em; // Correction: no padding.

Tested on Chrome:

More: I could also mention that there is an overflow-x: scroll; on the class .demo which makes every demo have a visible unused scroll. Why not simply replacing it by overflow-x: auto; ?

This should be fixed now. Thanks!


Add bzl filetype with syntax, ftplugin, and indent

Syntax highlighting and filetype configuration for the bzl filetype.
It's merged from https://github.com/google/vim-ft-bzl, which is itself under Apache license, but I have approval to license this patch under the Vim license.
Patch originally sent on vim_dev at https://groups.google.com/d/topic/vim_dev/Nf4TRDSg-yM/discussion.

I have included the files, will send out a runtime files update soon.

I saw some patches added today but still haven't seen the runtime files. How often do you normally update them?

included with commit https://github.com/vim/vim/commit/60cce2f


[bug] TypeScript decorators cannot be collected in a multi meta variable

⏯ Playground Link
Playground link with relevant code
💻 Code

Code:
import { Body, Controller, Get, Middlewares, Path, Post, Route, SuccessResponse } from 'tsoa';

import { Tags } from '@tsoa/runtime';
import { ExampleResource } from '~/models/ExampleResource';
import { apiKeyAuthMiddleware } from '~/middleware/security';

@Route('example-resource')
@Tags('Example tagging')
@Middlewares(apiKeyAuthMiddleware)
export class ExampleResourceController extends Controller {
  @SuccessResponse(201, 'Created')
  @Post()
  public async createExample(
    @Body() req: Omit<ExampleResource, 'id' | 'createdAt'>,
  ): Promise<ExampleResource> {
    this.setStatus(201);
    return response;
  }
}

Pattern:
I hadn't turned this into a YAML rule file, so the matching pattern that I expected to work was:
@$$$DECORATORS
export class $CLASSNAME extends Controller { $$$BODY }

That I then wanted to rewrite with:
@$$$DECORATORS
export class $CLASSNAME extends Controller {
    $$$BODY

    @Get('{id}')
    public async getNewExample(@Path('id') id: string): {
        this.setStatus(501);
    }
}

🙁 Actual behavior
This didn't match, due to decorators being parsed with no parent AST node grouping them together (see screenshot).

To get this to match, I had to use:
@$DECORATOR1
@$DECORATOR2
@$DECORATOR3
export class $CLASSNAME extends Controller { $$$BODY }

🙂 Expected behavior
I had expected to be able to collect multiple decorator nodes into a single multi meta variable.

It is not possible to construct a multi-metavariable to match decorator because $$$VAR will not be detected as decorator inside export statement.  Also see https://ast-grep.github.io/advanced/pattern-parse.html
You can instead use rewriter for multiple AST nodes modification. https://ast-grep.github.io/reference/yaml/rewriter.html https://ast-grep.github.io/advanced/find-n-patch.html

The problem is
@$$$DECO1
export class $CLASSNAME extends Controller { $$$BODY }

is parsed to a pattern like below

You can see @$$$DECO1 is parsed as one single AST under export.
You don't need to use one pattern for this rewrite, instead, using yaml rule is much easier.


Fix the vulnerability CVE-2020-15250

As you may see on project's page https://mvnrepository.com/artifact/com.jramoyo/indexed-file-reader/1.0 it's marked as non secure due to vulnerability CVE-2020-15250. This PR fixes this.

thanks


MINOR: Update JUnit to 4.13 and annotate log cleaner integration test

JUnit 4.13 fixes the issue where Category and Parameterized annotations
could not be used together. It also deprecates ExpectedException and
assertThat. Given this, we:

Replace ExpectedException with the newly introduced assertThrows.
Replace Assert.assertThat with MatcherAssert.assertThat.
Annotate AbstractLogCleanerIntegrationTest with IntegrationTest category.

Committer Checklist (excluded from commit message)

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

https://github.com/apache/kafka/pull/3333 and https://github.com/apache/kafka/pull/3977 were two previous attempts at annotating the log cleaner integration test.

Relevant sections of gradle's profile report that take more than 5 seconds:

:core | 1m56.36s | (total)
:core:compileScala | 47.057s |
:core:unitTest | 38.768s |
:core:compileTestScala | 29.112s
:clients | 1m18.65s | (total)
:clients:unitTest | 1m10.78s |
connect:runtime | 48.457s | (total)
:connect:runtime:unitTest | 46.623s |
:streams | 47.635s | (total)
:streams:unitTest | 40.710s |
tools | 30.031s | (total)
:tools:unitTest | 28.552s
:streams:streams-scala | 16.430s | (total)
:streams:streams-scala:unitTest | 12.939s |

@ewencp I was refreshing it regularly too and eventually decided that we don't need to wait for it since the rate or change in that branch is nearly 0 and the beta is in the central Maven repo. We'll just bump to final when that happens.

JDK 11 build passed, JDK 8 build had one flake:

java.lang.AssertionError:
Expected: <[KeyValue(0, 0), KeyValue(0, 1), KeyValue(0, 3), KeyValue(0, 6), KeyValue(0, 10), KeyValue(0, 15), KeyValue(0, 21), KeyValue(0, 28), KeyValue(0, 36), KeyValue(0, 45), KeyValue(0, 55), KeyValue(0, 66), KeyValue(0, 78), KeyValue(0, 91), KeyValue(0, 105), KeyValue(0, 120), KeyValue(0, 136), KeyValue(0, 153), KeyValue(0, 171), KeyValue(0, 190)]>
but: was <[KeyValue(0, 0), KeyValue(0, 1), KeyValue(0, 3), KeyValue(0, 6), KeyValue(0, 10), KeyValue(0, 15), KeyValue(0, 21), KeyValue(0, 28), KeyValue(0, 36), KeyValue(0, 45), KeyValue(0, 10), KeyValue(0, 21), KeyValue(0, 33), KeyValue(0, 46), KeyValue(0, 60), KeyValue(0, 75), KeyValue(0, 91), KeyValue(0, 108), KeyValue(0, 126), KeyValue(0, 145)]>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
at org.apache.kafka.streams.integration.EosIntegrationTest.checkResultPerKey(EosIntegrationTest.java:212)
at org.apache.kafka.streams.integration.EosIntegrationTest.shouldNotViolateEosIfOneTaskFailsWithState(EosIntegrationTest.java:440)

cc @guozhangwang @mjsax

@ewencp I've addressed the comments and fixed a few more things I noticed.

retest this please

retest this please

Tests passed, merging to trunk.


Meross garage door opener: what is this light entity?

I installed a Meross MSG200 smart garage door opener in my home, and installed the Meross integration in HA.
The integration created an entity called
"light.smart_garage_door_2307253970950561070248e1e9d32f7f_dnd"
Can anyone tell me what this entity represents?
I have two garage doors connected to the MSG200, but only one of these light entities is created -- so I don't think it's necessarily related to the overhead lights on the openers (although I wish it was, would like to control them).

In every Meross device the 'dnd' light entity just represents the 'do not disturb' mode of the (whole) device. It is usually associated with a visible led (most of the times the same used to show some transient state like initial connection/pairing or so).
So, turning off the dnd light in meross_lan  should also turn off the led (it will just blink now and then when device boots or so..)


Crash on disconnect of empty connections

I believe this is a bug:
Whenever a connection is closed, onDispatchRequest() will be called.
In onDispatchRequest(), you try to access ilastRequest. The problem is that if no requests were sent, ilastRequest is NULL, and this causes a crash.
I find that such empty connections are made by browsers, and this bug crashes the server every time I request resource from a browser (only tested on Chrome on Mac).
To reproduce, I just run the hello world example: ./xbin/helloworld  -p 8080 server
..and send an empty connection: echo "" | telnet localhost 8080

It might be sufficient to simply check for null, but I'm not familiar enough with the codebase to tell for sure:
if ( !ilastRequest || ilastRequest->d_func()->ireadState == QHttpRequestPrivate::ESent )

thank you so much for the report.
commit: 016c2b7

maybe the std::enable_shared_from_this<> is a nicer approach than QObject::deleteLater() for this special domain.


TypeError:Argument 3 passed to Keboola\Google\ClientBundle\Google\RestApi::decideRetry() must implement interface Psr\Http\Message\ResponseInterface

https://connection.keboola.com/admin/utils/logs?file=2019/10/01/02/2019-10-01-02-33-27-5d929ed77d5b3-exception

I think this is already solved in the latest version, but the components are not updated to it:
https://github.com/keboola/google-client-bundle/blob/master/src/Google/RestApi.php#L309.
Well, the Google Sheets Client finally is, but now I have to update Google Sheets and Drive Writers.

yes, sorry I noticed that when I checked the history here.  But I guess we can use this issue to checklist the updating of the components.


Filtering enhancements to DataLakeFileSystemClient.listPaths()

Is your feature request related to a problem? Please describe.
We are a provider of data integration software, and our customers use it to access Azure Data Lake g2 storage.
We occasionally find that a customer has a container or folder with 100K+ blobs.  When this happens, our user interface for listing blobs cannot enumerate them all in a reasonable time, leading to timeouts or cancelation in the UI.
Describe the solution you'd like
In order to support our users ability to browse to the blobs they are seeking, the following enhancements to DataLakeFileSystemClient.listPaths() are desired:

An option to exclude "normal files" and only return "folders"
An option to filter files by wildcard (glob) or regex

Describe alternatives you've considered
I've explored the ADL2 API and not found any options, but perhaps I've missed something.
Additional context
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[X ] Description Added
[X ] Expected solution specified

The "folders only" option is in the ABS REST API  showonly={deleted,files,directories}.  It is described as "Only for accounts enabled with hierarchical namespace.", which seems like that is ADL2?  But I'm unclear what that means and how that would become available to the ADL2 API.

Hi @wheezil
Thank you for reaching out with the feature suggestion! Unfortunately, although showonly is supported on HNS accounts, it is not supported for the Data Lake endpoint.  This is something we can bring up with the service team to get more clarity on this and the possibility of supporting this in the future, but as of now we are unable to support this feature request.
Please feel free to reach out with any additional questions, thank you!


Wrong case of require'fileutils'

verilog/rename.rb
Has:
require 'FileUtils'
Should be :
require 'fileutils'

Fixed in latest and or release 0.0.2


No space between ion-icon and text inside a ion-list element when using "rtl"

Ionic version:  (check one with "x")
[ ] 1.x (For Ionic 1.x issues, please use https://github.com/ionic-team/ionic-v1)
[X] 2.x
[ ] 3.x
I'm submitting a ...  (check one with "x")
[X] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
I'm using $app-direction: rtl;
When using
<ion-list>
                <ion-list-header> Generic </ion-list-header>
                <ion-item (click)="setCategory('back')">
                    <ion-icon item-start name="alarm"></ion-icon>
                    Alarm
                </ion-item>
</ion-list>

The text is being converted into: ion-icon & ion-label, but the CSS it receive is:
# main.css
[dir="rtl"] .label-ios {
  margin-right: 0;
  margin-left: 8px;
}

So there's no space between the icon and the text ...
I also tried to use margin-horizontal on ion-icon tag - but that didn't do anything.
Expected behavior:
For some reason, setting margin-right: 0; -> margin-right: 8px; fixes the issue,
but according to the docs - you were trying to keep "right" as a real "right" in rtl ...
Steps to reproduce:
too bad the plunker doesn't use SCSS ... :/

Can you please make a reproduction in StackBlitz? (create an ionic project, and set it up like you have set up your project).
It is odd, and I feel like you must be doing something wrong, as look at the images here - http://blog.ionic.io/ionic-and-rtl/ - seems great on RTL, including the toggle, icons, etc.
This is the project those screenshots were taken from.
Unrelated Tip:
Always use <ion-label> inside ion-item, as it will become mandatory in the next major release (^4.0.0), because of web components constraints

Actually nevermind. I just now saw that you are using version 2.
We did RTL support in 3.4.0, and it is a simple upgrade process (go over the changelog since v3, and do the steps)

Hello all! I am going to close this issue as a duplicate of https://github.com/ionic-team/ionic/issues/12630

This is a great tool: https://stackblitz.com/edit/ionic-ekw7sa?file=pages%2Fhome%2Fhome.html
But has no SCSS support, only CSS, so I'm not sure how I'm suppose to add $app-direction: rtl;
I'll take a look at the links you've added - and try to make a plunker


Docs not being loaded

I am using Laravel Lighthouse. I just installed it today, and this package. Ever since installing I'm getting the error below:
{
  "errors": [
    {
      "message": "Failed to fetch",
      "stack": "TypeError: Failed to fetch\n    at http://unpkg.com/graphiql/graphiql.min.js:65084:22\n    at Generator.next (<anonymous>)\n    at http://unpkg.com/graphiql/graphiql.min.js:65003:67\n    at new Promise (<anonymous>)\n    at __webpack_modules__.../../graphiql-toolkit/esm/create-fetcher/lib.js.__awaiter (http://unpkg.com/graphiql/graphiql.min.js:64985:10)\n    at http://unpkg.com/graphiql/graphiql.min.js:65083:85\n    at http://unpkg.com/graphiql/graphiql.min.js:64912:54\n    at fetchIntrospectionData (http://unpkg.com/graphiql/graphiql.min.js:58264:40)\n    at http://unpkg.com/graphiql/graphiql.min.js:58286:39\n    at http://unpkg.com/graphiql/graphiql.min.js:58298:5"
    }
  ]
}

Is this an issue or have I set something up improperly? I'm using Laravel 9 with PHP 8.

I am very curious how you are getting this error, as it appears to be a JavaScript error that is formatted as JSON. How can this be reproduced?

@spawnia this is what is produced when clicking docs. it is displayed in the query results area. This is what was shown after I installed the package and visited the gui.

I can not reproduce the issue in my installation. Have you tried https://github.com/mll-lab/laravel-graphiql#local-assets?

I did try that. It is not related to the JavaScript/CSS I don't think. It is having an issue fetching the schema for the docs.

Yeah, Failed to fetch probably indicates on issue with your GraphQL server. Anyways, this package is only a slim wrapper around GraphiQL, and the issue does not seem to be related to how GraphiQL is served or how its assets are delivered to the browser. Thus, I believe there is nothing we can change in this package and am closing the issue.


Fixing typo in two stage pipeline template

Issue #, if available:
Description of changes:
Fixing a small typo in the two stage template
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Also, I appreciate all of the hard work on the AWS SAM Pipeline command, it's made it really easy to get up and running!


Is it working with Viruses?

Hello,
I was wondering is it possible to have it work working with viruses to create vMAGs?
Best,

Also I don't know if GTDB-tk is suitable for viruses. But maybe I am wrong

No GTDB-tk does not annotate viruses (or eukaryotes), but maginator still profiles with clusters of bins that are unannotated


Update pyproject-toml to support PEP 639

PEP 639 is provisionally accepted, we were previously shipping definitions from an earlier draft.
We don't validate all that's in the PEP (license vs. license-files compatibility, SPDX expressions), only the overall structure of pyproject.toml.
Updates pep440_rs in the process.
Fixes #13869

I went ahead and disabled the pyproject_toml linting for wasm to unblock this PR. That's why I request review from someone else.

Looking at the ecosystem changes, it seems that we'll now create diagnostic for the old definition related to license-files: https://github.com/apache/airflow/blob/476e77d9aba492a2159b256bc7a4aa86e560dee5/clients/python/pyproject.toml#L27. Do we want to maintain backwards compatibility?

I don't think so, that syntax was only part of a draft and never of any (provisionally) accepted PEP. It makes sense to lint against it to migrate the early adopters to the final version (and i'm expecting that hatch will migrate, too).

Let's make this a breaking change.


On-Premises Support to modernize to SP Online

Category
[ ] Bug
[X] Enhancement
Expected or Desired Behavior
I would like the option to transform directly to SPO without needing to hop with a 3rd party migration tool to SharePoint Online. This applies to publishing portals.
Approach 1

Idea

Adapt PnP-PowerShell ConvertTo cmdlets to work with both on-premises and sharepoint online connections in the source target
Simplier approach that requires smaller modification that Approach 2
Avoids major refactoring in the modernization core + it can avoid issues with the built-in functions that get data from both source and target.

Challenges

Testing would require multiple farms, which could be a reasonable amount of work to setup including test publishing portals
We would need to refactor PnP PowerShell or create new cmdlets to accept On-Premises and Online connections

Opportunities

Significantly quicker transformation for those moving from on-prem to online, not necessary to do the double hop to get on-prem pages modernized as mentioned as previous issues. Using 3rd party tools to copy the site up, can take weeks (full copy) to get online.
The double hop migration appears to be a common approach in client engagements to going modern from on-premises
In theory the same script could work on 2013-2019 farms with the same support range as PnP-PowerShell

Approach 2

Idea

Consider writing a PowerShell script (preferably) for on-premises using standard SharePoint PowerShell to create a Xml file containing all the data required for the transformation to run
There are well publicised scripts to perform an inventory on client farms to produce CSV files - something similar could be used to target a page and extract all the metadata, web part content and config then supply transformation tool with all the data to convert to modern.
The source transformation could be XML or SPO pages, but the Target would remain as existing.

Challenges

Testing would require multiple farms, which could be a reasonable amount of work to setup including test publishing portals
We would need to refactor the transformation framework to abstract the inputs so it can process either SPO or XML input, if we can do this all the remaining aspects of the engine should still operate as expected
We would need to make it clear that for any built In functions that need extra input from SP needs to be gathered ahead of time.
Doing this move makes you handle possible incompatible customizations that are used by the on-premises portal

Opportunities

Significantly quicker transformation for those moving from on-prem to online, not necessary to do the double hop to get on-prem pages modernized as mentioned as previous issues. Using 3rd party tools to copy the site up, can take weeks (full copy) to get online.
The double hop migration appears to be a common approach in client engagements to going modern from on-premises
Improved unit testing, one we have a set of XML files the dependency on the farms is lowered.
In theory the same script could work on 2010-2019 farms.

Discussion Points
Def further investigation or POC needed to validate this approaches
Moving the classic portal from on-prem to online does have its advantages to:

Can serve as read-only copy
If the SharePoint Migration tool is introducing support for 2010 should we mirror that support range?

@jansenbe I've encorproated your feedback from discussion around the topic.

I've got some time Monday and Friday to looking into this in more detail. I'll see if i can list out the code changes or impact to any re-write to get this working.
To note from the recent community call in your demo @jansenbe , Vesa mentioned a WSP solution that could be used to install to provide a way to connect to server side for the transform, logging here for further consideration. The code adjustment could be similar Approach 2.

Approach 1 is an option - managed to perform a SP2013 to SharePoint Online modernization in a quick test with a small number of tweaks to the ConvertTo-PnPClientSidePage PnP cmdlet - by essentially just adding a second connection param for target, instead of Target URL, then install the cmdlets compiled for Online on the On-Prem box. There are some caveats, we can discuss after the conferences.

Approach 2 will def be a major change. Again we discuss later.
Thought id update on progress :)

That's indeed very exciting! Let's see to get option 1 available for our next release, even if it's just a 'preview' as that will enable more folks to test this

@jansenbe the trick is to connect an SharePoint Online PnP PowerShell release to the on-premises servers because the transformation tool depends on client page which in sites core is not included in 2013/2016 releases.
Does that break any PnP rules for use in this way?
I can provide sample script to get going and a submission to PnP-PowerShell, where would be the best place for the sample connection code?

The minor code change to PnP also enabled cross-tenant transformation e.g. Source Publishing Site in Tenant A with target communication site in Tenant B. I remember someone mentioned whether this is possible in a community call.

Sample script:
# This sample runs direct from a SharePoint 2013 box with a basic publishing site and a page with an image - asset transfers work.
# Target Tenant Connection - must be SPO and modern site
$target = Connect-PnPOnline https://<target-tenant>.sharepoint.com/sites/targetsite -Credentials CaPaDevTest -ReturnConnection

# Source Connection
Connect-PnPOnline http://portal2013 -CurrentCredentials

Get-PnPWeb

# Must have SkipItemLevelPermissionCopyToClientSidePage as two environments may not have knowledge of each others users.
ConvertTo-PnPClientSidePage -Identity "article.aspx" -PublishingPage -TargetConnection $target -SkipItemLevelPermissionCopyToClientSidePage -LogVerbose -LogType File -LogFolder c:\temp

Quick Update,

I have built SP2010/2013/2016/2019 test farms - needed to do this anyway for client scenario testing.
I have been doing more testing - had to rewrite TestCommon for dual contexts so should support on-premises, and try and keep existing tests working (ish).
The layout analyser doesn't work because of a API call to Web.GetListItem to the layout page loading isn't  working on SP2013 (strange, docs show this is supported - this may be a pitfall for this approach using CSOM SP Online against CSOM SP On-Premises). This however should be straight forward to work around.
Fixed some minor bugs around paths for root sites
So far OOB transforms are working ok - need to fix layout analyser to test custom layouts capability

Enjoy Collab Summit :)

I do have SP2013/2016/2019 up and running as well, once the Collab Summit is over I'll have some more time for this. But looking really promising :-)

Ok I have fixed some core issues blocking transform e.g. custom layouts, analyser and folders so can now do early PR, I have done some testing on existing transform scenarios which in my setup, work.

Closing this issue now @pkbullock as the key bits and pieces are checked in. I've added some new on-premises related issues for further tracking. Feel free to add more issues if there's something you would still need for on-premises support.


Check feasibility of splitting nri-kubernetes components

Preliminary work to plan the nri-kubernetes rearchitecture

Setup
So, I'm not sure if that's the right thing, but I implemented the following:
$ git diff src/kubernetes.go
diff --git src/kubernetes.go src/kubernetes.go
index f8f0c47..007bd61 100644
--- src/kubernetes.go
+++ src/kubernetes.go
@@ -54,6 +54,7 @@ type argumentList struct {
        ControllerManagerEndpointURL string `help:"Set a custom endpoint URL for the kube-controller-manager endpoint."`
        APIServerEndpointURL         string `help:"Set a custom endpoint URL for the API server endpoint."`
        NetworkRouteFile             string `help:"Route file to get the default interface from. If left empty on Linux /proc/net/route will be used by default"`
+       SkipKubelet                  bool   `default:"false" help:"Don't scrape kubelet"`
 }

 const (
@@ -356,16 +357,19 @@ func main() {
                jobs = append(jobs, cpJobs...)
        }

-       // Kubelet is always scraped, on each node
-       kubeletGrouper := kubelet.NewGrouper(
-               kubeletClient,
-               logger,
-               apiServerClient,
-               defaultNetworkInterface,
-               podsFetcher,
-               metric2.CadvisorFetchFunc(kubeletClient, metric.CadvisorQueries),
-       )
-       jobs = append(jobs, scrape.NewScrapeJob("kubelet", kubeletGrouper, metric.KubeletSpecs))
+       if !args.SkipKubelet {
+               kubeletGrouper := kubelet.NewGrouper(
+                       kubeletClient,
+                       logger,
+                       apiServerClient,
+                       defaultNetworkInterface,
+                       podsFetcher,
+                       metric2.CadvisorFetchFunc(kubeletClient, metric.CadvisorQueries),
+               )
+               jobs = append(jobs, scrape.NewScrapeJob("kubelet", kubeletGrouper, metric.KubeletSpecs))
+       } else {
+               logger.Error("Skipping kubelet")
+       }

        successfulJobs := 0
        for _, job := range jobs {

Then deployed it with the following patch for infra agent chart, copied from nri-kube-events:
$ git diff
diff --git charts/newrelic-infrastructure/templates/daemonset.yaml charts/newrelic-infrastructure/templates/daemonset.yaml
index d9f25a83..b8bdc041 100644
--- charts/newrelic-infrastructure/templates/daemonset.yaml
+++ charts/newrelic-infrastructure/templates/daemonset.yaml
@@ -177,6 +177,11 @@ spec:
             - name: NRIA_LOG_FILE
               value: {{ .Values.logFile }}
             {{- end }}
+            # Using FORWARD_ONLY mode to avoid the entity creation for the events.
+            - name: NRIA_IS_SECURE_FORWARD_ONLY
+              value: "false"
+            - name: NRIA_IS_FORWARD_ONLY
+              value: "true"
           volumeMounts:
             {{- if .Values.config }}
             - name: config

And with the following values for bundle chart:
newrelic-infrastructure:
  verboseLog: true
  image:
    repository: invidian/newrelic-infrastructure-k8s
    tag: with-skip-kubelet-flag2
  integrations_config:
    - name: nri-kubernetes.yaml
      data:
        integrations:
          - name: nri-kubernetes
            env:
              SKIP_KUBELET: true

Result
As a result:

K8sPodSample is no longer reported (kubelet scraping is disabled completely)
K8sDeploymentSample has the following difference, skipping fields which we expect to be different:

$ git diff regular.json standalone.json | grep -v -E '(clusterName|createdAt|entityGuid|entityId|entityKey|entityName|externalKey|integrationName|integrationVersion|reportingAgent|timestamp|beginTimeMillis|endTimeMillis|beginTime|endTime|guid|routerGuid|inspectedCount|responseTime)'
diff --git regular.json standalone.json
index 6fb0bb1..617f393 100644
--- regular.json
+++ standalone.json
@@ -3,38 +3,26 @@
     {
       "events": [
         {
-          "agentName": "Infrastructure",
-          "agentVersion": "1.18.0",
-          "awsRegion": "eu-central-1",
-          "coreCount": "1",
           "deploymentName": "coredns",
           "displayName": "coredns",
           "entityType": "KUBERNETES_DEPLOYMENT",
           "event_type": "K8sDeploymentSample",
-          "fullHostname": "ip-192-168-55-100.eu-central-1.compute.internal",
-          "host": "ip-192-168-55-100.eu-central-1.compute.internal",
-          "hostStatus": "running",
-          "hostname": "ip-192-168-55-100.eu-central-1.compute.internal",
-          "instanceType": "m5.large",
-          "kernelVersion": "5.4.129-63.229.amzn2.x86_64",
           "label.deployment": "coredns",
           "label.eks_amazonaws_com_component": "coredns",
           "label.k8s_app": "kube-dns",
           "label.kubernetes_io_name": "CoreDNS",
           "label.namespace": "kube-system",
-          "linuxDistribution": "Amazon Linux 2",
           "namespace": "kube-system",
           "namespaceName": "kube-system",
-          "operatingSystem": "linux",
           "podsAvailable": 2,
           "podsDesired": 2,
           "podsMaxUnavailable": 1,
@@ -42,10 +30,8 @@
           "podsTotal": 2,
           "podsUnavailable": 0,
           "podsUpdated": 2,
-          "processorCount": "2",
-          "systemMemoryBytes": "8125333504",
         }
       ]
     }
@@ -67,18 +53,18 @@
     "eventType": "K8sDeploymentSample",
     "openEnded": true,
     "messages": [],
     "rawSince": "5 MINUTES AGO",
     "rawUntil": "NOW",
     "rawCompareWith": ""
   },
   "performanceStats": {
   }
 }

So with additional change of:
diff --git Dockerfile Dockerfile
index c0e81c6..c8ee3aa 100644
--- Dockerfile
+++ Dockerfile
@@ -19,7 +19,7 @@ RUN mv /var/db/newrelic-infra/newrelic-integrations/bin/nri-kubernetes-${TARGETO

 # Warning: First, Edit sample file to suit your needs and rename it to
 # `nri-kubernetes-config.yml`
-ADD nri-kubernetes-config.yml.sample /var/db/newrelic-infra/integrations.d/nri-kubernetes-config.yml
+#ADD nri-kubernetes-config.yml.sample /var/db/newrelic-infra/integrations.d/nri-kubernetes-config.yml

 FROM base AS branch-normal
 USER root

Host entities are now not registered, so cluster with only controlplane and KSM metrics has only the following entities:

Splitting nri-kubernetes will also affect how newrelic-infra-operator is doing agent injection, as we will have to make it also not scrape the controlplane and KSM.

Splitting nri-kubernetes will also affect how newrelic-infra-operator is doing agent injection, as we will have to make it also not scrape the controlplane and KSM.

Could you open an issue on the infra-operator repo about this? Just to track the changes we'd need to make. Thanks! @invidian

Opened https://github.com/newrelic/newrelic-infra-operator/issues/104.

As suggested by @roobre, I was looking if all entities which has initially been there for cluster without kubelets being scraped, I found out the following:

Agent scraping KSM, which runs with support for K8s 1.22 periodically gets OOM killed
K8sClusterSample is only emitted once after a startup of agent, then we do not receive it until cluster entity disappears from UI. Restarting agent make it re-appear.

This turns out to be an issue with agent itself: https://github.com/newrelic/infrastructure-agent/pull/659. Once updated agent version, everything is fine again.


Add Introspection codegen config sample to docs (Update from 0.13.0)

Is your feature request related to a problem? Please describe.
Tried updating from 0.13.0 to 0.14.0.
There are no docs for introspection Pugin and how to provide auth header.
Had this npm script for introspection:
 "gql-gen:introspect": "gql-gen --schema http://localhost:4000  --header \"Authorization:[key]\" --template graphql-codegen-introspection-template --out ./src/app/graphql/generated/gql-gen-schema.json"
CLI suggested following config:
schema:
  - "http://localhost:4000"
documents: []
config: {}
generates:
  ./src/app/graphql/generated/gql-gen-schema.json:
    config: {}
    plugins:
      - "introspection"
require: []

Describe the solution you'd like
Add Docs for Introspection Plugin option and Auth header yaml config syntax.
Describe alternatives you've considered
roll back to 0.13.0
Additional context
Also some frustration stitching together the new yaml config.
Before I had the above introspect script and this generate script:
 "gql-gen:generate": "gql-gen --schema ./src/app/graphql/generated/gql-gen-schema.json --template graphql-codegen-apollo-angular-template --out ./src/app/graphql/generated/gql-types.ts src/app/graphql/graphql-queries/*.graphql"
Was trail and error to merge it into codegen.yml config:
schema:
  - http://localhost:4000
# not sure about Auth header syntax here
  - headers:
    Authorization:
      - "Bearer [key]"
generates:
  ./src/app/graphql/generated/gql-gen-schema.json:
    plugins:
      - "introspection"
  generates:
    ./src/app/graphql/generated/gql-types.ts:
      config:
        noGraphqlTag: true
    schema:
      - ./src/app/graphql/generated/gql-gen-schema.json
    documents: ./src/app/graphql/graphql-queries/*.graphql
    plugins:
      - typescript-common
      - typescript-client
      - typescript-apollo-angular

And not even sure if this is correct.
Congrats for launching docs and site looks great!

@qirex thank you for reporting it!
Actually, headers has moved to be an object under the url, so you should be able to do:
schema:
  - "http://localhost:4000":
    headers:
       Authorization: "Bearer [key]"
generates:
  ./src/app/graphql/generated/gql-gen-schema.json:
    plugins:
      - "introspection"

I'm leaving this open because I know there are some things that are not documented yet, but we are working on it now!

Done in: https://github.com/dotansimha/graphql-code-generator/pull/874
Docs for URL schema available now in: https://graphql-code-generator.com/docs/getting-started/schema-field#url

Follow up to this (v0.14.1):
Not working:
schema:
  - "http://localhost:4000":
      headers:
        Authorization: "Bearer [KEY]"
generates:
  ./src/app/graphql/generated/gql-gen-schema.json:
    plugins:
      - "introspection"

Output:
× Load schema
   → (schemaOptions.headers || []).map is not a funct…
   Generate outputs
(schemaOptions.headers || []).map is not a function

Working:
schema:
  - "http://localhost:4000":
      headers:
      Authorization: "Bearer [KEY]"
generates:
  ./src/app/graphql/generated/gql-gen-schema.json:
    plugins:
      - "introspection"

An error either in docs or implementation?

Thanks @qirex ! Re-opening until we'll fix the issue with headers as object.

Fixed in 0.14.2 🎉


Feature: Ability to filter scripts based on the number of Demons

Description
This is probably a broader requirement for an "Advanced Search", that allows you to search for example the number of townsfolk, outsiders, minions or demons (where Demon is likely to be the most popular).
Performance wise, this probably wants new database columns to track this sort of data since there's no easy way to filter this directly (because it requires understanding the JSON structure of the script and which characters are on it.

I've added an Advanced Search which allows filtering based on the number of minions/demons/townsfolk etc.


Include relevant licenses in the repo

Include license files for:

[ ] MIT
[ ] Apache v2

it's monday...


Usage of Undocumented Artifactory API Endpoints

Describe the bug
I unexpectedly was warned about using "Undocumented Artifactory API Endpoints". There is no mention of this in artifactory_general_security.
Requirements for and issue
Artifactory:
$ curl -sSL https://{host}/artifactory/api/system/version | jq -Mr '.version'
7.24.3

Terraform:
$ terraform version
Terraform v1.1.4
on darwin_amd64
+ provider registry.terraform.io/jfrog/artifactory v2.10.0

Code:
resource "artifactory_general_security" "security" {
  enable_anonymous_access = true
}

Expected behavior
No warning.
Actual behavior
│ Warning: Usage of Undocumented Artifactory API Endpoints
│
│   with artifactory_general_security.security,
│   on general-security.tf line 2, in resource "artifactory_general_security" "security":
│    2: resource "artifactory_general_security" "security" {
│
│ The artifactory_general_security resource uses endpoints that are undocumented and may not work with SaaS
│ environments, or may change without notice.

This isn't a bug. It uses APIs that aren't in the official documentation anywhere and are different between hosted and SaaS - This issue has been brought up before and it works as expected

Then this should be bubbled-up to the Markdown documentation, instead of being buried inside the Go source.

Is there any means of disabling this warning? I am aware of what it tells me and I want to do it anyways. I furthermore like a warning free run of terraform.

@knorx I'll removed the warning message from the OAuth and SAML resources. This message was added long time ago when the use of Artifactory Configuration API was not well documented.


Installation help

Hey, I'm trying to install the bot, but I just don't really know Java and stuff.

how do i install / build it?
where do I have to do which command? In the description there is only one command for docker.

Know me with the stuff relatively well just not with the build process and the structure of Java projects.

Hey 👋,
if you just want to use the bot you can deploy it to Heroku by clicking the "Deploy to Heroku" button.
You will be asked to enter some data, that's it. The free tier from Heroku is enough to run it.
If you have a server with docker installed (or you've installed it on your own system) you just have to enter

docker run -d --name vured-bot -e BOT__TOKEN="" -e DISCORD__GUILD=0 -e DISCORD__MUSIC_CHANNEL=0 -e DISCORD__ACCESS_ROLE=0 jonaznas/vured-bot:latest

(replace the ids before running the command).
To build the project download the repository, extract it and run ./gradlew.bat build (windows). The compiled files are generated in build/libs.

okay, and how do I start it then after the build finished?

Go into the build folder where the files are generated and type java -jar -Denv=prod vured-bot-(version).jar in your terminal.
To get the bot working you need to set this environment variables in your system or environment

Variable
Description

BOT__MAX_PLAYLIST_TRACKS
The maximum Tracks that can be in the queue

BOT__TOKEN
The discord bot token

DISCORD__ACCESS_ROLE
Role ID that can access the bot

DISCORD__GUILD
Discord Guild ID

DISCORD__LOG_CHANNEL
Text-Channel ID for logs

DISCORD__MUSIC_CHANNEL
Text-Channel ID for static message

environment variables are with an .env file right? if yes, in what folder?

If you compile it yourself you can also change it in src/main/resources/application-prod.conf but the bot token must be set as an environment variable. Here is a guide for it on windows: Create and Modify Environment Variables on Windows

hmm okay I can try that.. but please add complete installation or/and build instructions in the Readme or WiKi for the bot.

I plan to improve the docs in near future :)


Update LG package to latest one.

Update LG package to latest one.
Put LG service error information in Exception.

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


[Unit tests] Improve test coverage

Refactor remaining unit tests based on https://github.com/google/ground-android/pull/1027#issue-1034130097. This improves test coverage as we reduce dependency on mocks and use real instances.
Things done:

Replaces mocks with actual implementation / fakes. Only BitmapUtil is mocked right now as it couldn't be converted.
Adds a util class to mock system permissions instead of mocking PermissionsManager
Uses static imports for consistency

@nmhung00 PTAL?

/gcbrun

Codecov Report

Merging #1031 (0189af2) into master (1dec966) will increase coverage by 0.52%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #1031      +/-   ##
============================================
+ Coverage     30.41%   30.94%   +0.52%
- Complexity      753      785      +32
============================================
  Files           326      326
  Lines         11479    11480       +1
  Branches       1119     1119
============================================
+ Hits           3491     3552      +61
+ Misses         7441     7370      -71
- Partials        547      558      +11

Impacted Files
Coverage Δ

...d/com/google/android/gnd/system/CameraManager.java
66.66% <0.00%> (-3.34%)
:arrow_down:

.../com/google/android/gnd/system/StorageManager.java
80.00% <0.00%> (-3.34%)
:arrow_down:

.../google/android/gnd/repository/UserRepository.java
100.00% <0.00%> (ø)

...le/android/gnd/model/observation/DateResponse.java
50.00% <0.00%> (ø)

...le/android/gnd/model/observation/TimeResponse.java
46.66% <0.00%> (ø)

...ogle/android/gnd/repository/ProjectRepository.java
31.14% <0.00%> (+6.55%)
:arrow_up:

...com/google/android/gnd/system/ActivityStreams.java
80.00% <0.00%> (+6.66%)
:arrow_up:

gnd/com/google/android/gnd/rx/Loadable.java
35.71% <0.00%> (+35.71%)
:arrow_up:

...oid/gnd/ui/editobservation/DateFieldViewModel.java
100.00% <0.00%> (+37.50%)
:arrow_up:

...oid/gnd/ui/editobservation/TimeFieldViewModel.java
100.00% <0.00%> (+37.50%)
:arrow_up:

... and 5 more

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 1dec966...0189af2. Read the comment docs.

/gcbrun

ping!

/gcbrun


Split too long settings

Closes #455

Codecov Report
Base: 94.88% // Head: 97.20% // Increases project coverage by +2.31% :tada:

Coverage data is based on head (2525b21) compared to base (1f2ba82).
Patch coverage: 89.18% of modified lines in pull request are covered.

:exclamation: Current head 2525b21 differs from pull request most recent head ff959d2. Consider uploading reports for the commit ff959d2 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #460      +/-   ##
==========================================
+ Coverage   94.88%   97.20%   +2.31%
==========================================
  Files          45       45
  Lines        3971     4007      +36
==========================================
+ Hits         3768     3895     +127
+ Misses        203      112      -91

Impacted Files
Coverage Δ

robotidy/transformers/SplitTooLongLine.py
97.82% <89.18%> (-2.18%)
:arrow_down:

robotidy/cli.py
97.64% <0.00%> (+0.58%)
:arrow_up:

robotidy/app.py
93.47% <0.00%> (+1.08%)
:arrow_up:

robotidy/config.py
100.00% <0.00%> (+1.42%)
:arrow_up:

robotidy/transformers/ReplaceReturns.py
100.00% <0.00%> (+2.12%)
:arrow_up:

robotidy/transformers/MergeAndOrderSections.py
100.00% <0.00%> (+2.29%)
:arrow_up:

robotidy/transformers/NormalizeNewLines.py
99.05% <0.00%> (+10.37%)
:arrow_up:

robotidy/transformers/Translate.py
96.85% <0.00%> (+61.41%)
:arrow_up:

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

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


feature request: Deserialize from Read and Serialize into Write

toml_edit currently requires the entire file to be read into Vec<u8> to deserialize and requires an intermediate Vec<u8> to serialize.
Having APIs for deserializing from Read and serialize directly into Write would avoid the intermediate buffer, provides better performance and less memory usage.

So this isn't just supporting Read and Write but doing incremental parsing while doing using those traits.
Could you describe your use case where loading the toml into a buffer isn't sufficient?  Incremental parsing like that adds a lot of complexity and its hard to see the justification for it.

@epage Not sure whether "incremental parsing" is the right word, but I just want something like serde_json::from_reader and serde_json::to_writer where serializing/deserializing can be done without reading the entire file/writing the entire serialized content into Vec<u8>.
Looking at the implementation of serde_json::Serialize, this doesn't seem to be that hard and actually serde now recommends new format implementation to accept Read and Write and only provides a convenient function for reading from slice and writing to Vec<u8>.

this doesn't seem to be that hard

The parser has to be written with this use case in mind and can also potentially negatively impact performance to still get all of the desired feature (the error message with line/column information).  We have a very tight performance budget so we can be used in crates like cargo

I'd also like to re-iterate my question

Could you describe your use case where loading the toml into a buffer isn't sufficient?

Generally TOML files are meant to be human edited which means their size is more constrained.  The use case for a TOML file where it is parsed a chunk at a time rather than loaded upfront seems relatively small.  We'd need to understand the use cases to determine if the benefits outweigh the costs.

Could you describe your use case where loading the toml into a buffer isn't sufficient?

I need to update ~/.cargo/.crates.toml and I have no control on its size.

While in theory that file can be unbounded, are you aware of any cases where it exceeds 1000 entries?

While in theory that file can be unbounded, are you aware of any cases where it exceeds 1000 entries?

No, at least not on my computer.

Then the difference between using a Read and Vec<u8> is going to be negligible.

Ok, I will close this issue then.

I have a use case where I'd like to emit TOML directly to a file. The previous discussion in this issue seems to have been focused on the deserialization challenges, but streaming serialization is quite straightforward (see #610).
Are there any objections to generalizing the serializer from &mut String to impl std::fmt::Write?

Since you were aware of the issue, please move the conversation there.

As I raised in #578, my main concern is that someone will see these "lower level" functions and assume they are more performant when they aren't.
In the past, people have also brought up consistency with serde_json / following the recommendations at serde.rs.  To me, that motivation feels very weak.  Yes, this provides consistency but we aren't being consistent in their implementation.  For serde_json, they either are independent implementations or the higher-level ones (from_string) are implemented in terms of the lower level ones (from_writer).  For toml, we would be implementing the lower level ones (from_writer) in terms of the higher level (from_string).  So this becomes about expectation management.
For myself as well, I rarely interact with File but instead with std::fs::read_string.  The difference between the two is also negligible:
let data: MyStruct = serde_toml::from_reader(std::fs::File::open("sample.toml")?)?;
let data: MyStruct = serde_toml::from_string(std::fs::read_string("sample.toml")?)?;

If there was a significant benefit to File that might help tip the balance, but I don't really see that.

As I raised in #578, my main concern is that someone will see these "lower level" functions and assume they are more performant when they aren't.

They may not be strictly more performant, but they will have different performance characteristics. In particular writing to a File directly will use less memory than first writing to a String. Using a BufWriter will provide a compromise between speed and memory usage.

In the past, people have also brought up consistency with serde_json / following the recommendations at serde.rs. To me, that motivation feels very weak. Yes, this provides consistency but we aren't being consistent in their implementation. For serde_json, they either are independent implementations or the higher-level ones (from_string) are implemented in terms of the lower level ones (from_writer). For toml, we would be implementing the lower level ones (from_writer) in terms of the higher level (from_string). So this becomes about expectation management.

You seem to be talking about deserialization again (I assume you meant from_reader; from_writer doesn't make sense). I'm not looking to address deserialization.

For myself as well, I rarely interact with File but instead with std::fs::read_string. The difference between the two is also negligible:
let data: MyStruct = serde_toml::from_reader(std::fs::File::open("sample.toml")?)?;
let data: MyStruct = serde_toml::from_string(std::fs::read_string("sample.toml")?)?;

This seems to be focused on deserialization.

If there was a significant benefit to File that might help tip the balance, but I don't really see that.

I've outlined the reasoning at the top of this comment; passing a Writer allows the caller to make performance/memory tradeoffs that are presently unavailable.

They may not be strictly more performant, but they will have different performance characteristics. In particular writing to a File directly will use less memory than first writing to a String. Using a BufWriter will provide a compromise between speed and memory usage.

I would like to see a benchmark to back up how much of a difference this makes within a real world application.  I expect it will not make enough of a difference to make up for what other misunderstandings people will have based on exposing this.

Can you help me understand what such a misunderstanding might be?

Normally serde serializers immediately write to the writer as it gets each serde call. For the deserializers, they parse directly to serde calls. This offers the best performance. Bytes and string support is then built on top of this.
With toml, we deserialize a fully in-memory string into an AST and then into serde calls. For serialize, serde calls are used to generate a bare bones AST which we then clean up and then do a Write call to a string.
We can support all of the recommended API but the people will generally want that is for the performance benefits that are assumed with the implementation that we don't have. We could support dropping just the final string in serializations but it won't meet everyone's expectations and we wouldn't have symmetry.

With toml [...] serialize, serde calls are used to generate a bare bones AST which we then clean up and then do a Write call to a string.

Are you suggesting that if the destination was a File rather than a string, there would be a singlewrite syscall? My reading of the code suggests this is not the case.

We can support all of the recommended API but the people will generally want that is for the performance benefits that are assumed with the implementation that we don't have.

I don't understand. In my last comment I explained the performance tradeoffs that would become available to users if they could provide their own writer. You can in #610 that generalizing the writer is at once straightforward (almost entirely mechanical) and pervasive - that is, the change requires plumbing through all the serialization machinery. The latter point is telling: it strongly suggests that this does not amount to batching everything into a string and then making a single write call - rather we end up with a true streaming serializer.

We could support dropping just the final string in serializations but it won't meet everyone's expectations and we wouldn't have symmetry.

It's true that there won't be symmetry between serialization and deserialization. Is that a problem?

I was referring to the write! we do (which will translate to multiple Write::write calls in the end).
You mentioned theoretical performance improvements. I expect them to be minor compared to all the other work we are doing and in the bigger picture of your actually application. This is why I asked for numbers so that we can verify if it actually makes a difference.

Are there existing benchmarks I can use as a starting point? As I noted earlier, the change in #610 does not increase the complexity of the code; the need to justify it with proof of improvement (as opposed to proof of non-degradation) implies a status quo bias. I'd still be happy to enhance existing benchmarks to demonstrate the value.

This is not a status quo bias but managing expectations and by providing this, we would be setting the wrong expectation.  I'm looking for proof that the we wouldn't be setting the wrong expectation.
Since you have an application you are wanting to use this in, would a benchmark of that application work?  All of our benchmarks are for other operations.

I think it's possible to have a deserialize_from_reader API is hard to reuse and make sure people use buffered I/O:
fn deserialize_from_reader(reader: impl BufRead) -> ...

That would make sure the reader passed in buffered I/O input, either using std::io::BufReader or has some other custom implementation.
For serialization/write though, there's no such BufWrite trait in stdlib, so toml-edit could provide its own
/// Must be write buffered
trait BufWrite: std::io::Write {
}

impl<W: ?Sized + std::io::Write> BufWrite for std::io::BufWriter<W> {
}

It would prompt users to wrap the write in std::io::BufWriter, or they can implement it for their own type (or newtype) if they understand what they are doing and know that their writer already support buffering.

This is not a status quo bias but managing expectations and by providing this, we would be setting the wrong expectation. I'm looking for proof that the we wouldn't be setting the wrong expectation.

What's the wrong expectation? Using a writer will do exactly what any API that uses a writer does.

Since you have an application you are wanting to use this in, would a benchmark of that application work? All of our benchmarks are for other operations.

It's not exactly in a state I can contribute. I'll have to work up a benchmark, though I'm not sure how to benchmark memory use.

I've explained the expectation issue in a couple of different ways now. Please go back and provide concrete questions to avoid us continuing in counter-productive loops.

With toml, we deserialize a fully in-memory string into an AST and then into serde calls. For serialize, serde calls are used to generate a bare bones AST which we then clean up and then do a Write call to a string.

Thanks for explanation, in that case it's indeed hard to provide the reader/writer API with the expected performance.


Update license field in package.json to match LICENSE file

Apache-2.0 instead of ISC

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


chore: release 1.2.97

:robot: I have created a release *beep* *boop*
1.2.97 (2022-05-06)
Bug Fixes

helm: fix export-values in subcharts case, improve broken 3wm case handling (bf04268)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/werf/werf/releases/tag/v1.2.97 :sunflower:


Windows failing configtest

I am using this module, version 0.8.6 and deploy FileBeat to a Windows Server 2012 R2 machine. The init.pp file is as follows:
class { 'filebeat':
outputs => {
'logstash'     => {
'hosts' => [
'logstash1a:47001'
],
},
},
}
The deployed FileBeat version is 1.3.1 (386) and the filebeat.yml file contains the following output section:
#----------------------------- Logstash output --------------------------------
output.logstash:
hosts:
- logstash1a:47001
When running filebeat.exe -configtest filebeat.yml I get the following result:
Error Initialising publisher: No outputs are defined. Please define one under the output section.
Changing the filebeat.yml file to
#----------------------------- Logstash output --------------------------------
output:
logstash:
hosts:
- logstash1a:47001
makes the configtest pass.
I have puppet agent version 3.8.7 on the Windows Server and puppet master version 3.8.7 on Ubuntu 14.04.

It looks like the module is pushing the filebeat 5 config template out to windows boxes. I suspect this will get fixed if you set the major_version parameter to 1.
Ultimately extending the filebeat_version fact should fix this too, but I don't have a windows dev environment ready to go to test everything.

Yes, setting major_version to 1 worked fine. I was expecting the module to install Filebeat 5 if the default config format was version 5 compliant. I have a good Windows Environment, though I am a newbie when it comes to contributing on these kinds of projects. Let me know if I can assist in the development of this module in any way.


Why am I not able to send more than 40 replies?

I'm using this tutorial and i cannot send more than 40 replies, even spaced on different days. The rate limit is bigger than that, so why this is happening?
Error: 403:The request is understood, but it has been refused.
My app is locked and some funcionalities are limited.

I would expect that the API will allow you to post more than 40 replies but it is likely that you need to publish them over time and not all at once.
Twitter has many systems to prevent bots and spam which can flag this behaviour and prevent an app from doing this.

The error message explains what you need to do to have the application write access re-enabled.
If your app is only sending replies, and if they are unsolicited replies / mentions i.e. they are not responding to a Tweet directed at the bot account, then they will likely be detected as spammy. See the automation policy.


Error on homepage using more tags , data filter combination

Deploy the app
Login as joe user
Now select the date range filter using a hover select the bar lines
http://rh6-intel64-80-qa-dev-2:3000/?tags=javascript&date-ge=2011-09-01T07:00:00.000Z&date-lt=2013-06-01T07:00:00.000Z
Now Select the tag "javascript"
Click on more tags
Issues -> On the more tags page , remainign tags arent loaded
issue 2 , IF you cancel the "more tags " windows , there is error on the homepage .

@clockworked247 , can you take a look at this?

yep, will do.

The filters mentioned don't have an impact on the More Tags dialogue.     I see a slightly different message.
Exception:
Cannot read property 'aggregate-result' of undefined
Stack trace:
SsTagsSearchObject.onResponsePOST@http://rh6-intel64-80-qa-dev-2:3000/app/domain/ssTagsSearch.js:242:25
MlModel.onHttpResponse@http://rh6-intel64-80-qa-dev-2:3000/_marklogic/services/data/mlModelBase.js:235:18
{anonymous}()@http://rh6-intel64-80-qa-dev-2:3000/_marklogic/services/data/mlModelBase.js:437:18
processQueue@http://rh6-intel64-80-qa-dev-2:3000/deps/angular/angular.js:13170:27
{anonymous}()@http://rh6-intel64-80-qa-dev-2:3000/deps/angular/angular.js:13186:27
{anonymous}() (Scope.)$eval@http://rh6-intel64-80-qa-dev-2:3000/deps/angular/angular.js:14383:28
{anonymous}() (Scope.)$digest@http://rh6-intel64-80-qa-dev-2:3000/deps/angular/angular.js:14199:31
{anonymous}() (Scope.)$apply@http://rh6-intel64-80-qa-dev-2:3000/deps/angular/angular.js:14488:24
done@http://rh6-intel64-80-qa-dev-2:3000/deps/angular/angular.js:9646:47
completeRequest@http://rh6-intel64-80-qa-dev-2:3000/deps/angular/angular.js:9836:7

I don't understand this conment. The filters mentioned are supposed to have an impact on the More Tags dialog. Every bit of search criteria that is set on the explore page should be used as the basis from which the More Tags dialog operates.

@laurelnaiad What I mean is in the context of this bug... in order to reproduce the issue, you just need to open the more tags dialogue.   There is no need to set other filters to make this bug occur.
I believe wooldridge@aae4d8abcc41e83b389d318310102ece8c333041 changes to appserver/node-express/lib/db-client/tags/hookStartRequest.js are bringing back no tags.  I believe since the result set is empty, I think it's revealing an error elsewhere (which will also need to fix).
Looking into the issue now.   Prelim results:
remove:
operation.requestBody && operation.requestBody.search &&
(operation.requestBody.search.forTag ||
operation.requestBody.search.relatedTo)
which was what was added in that commit and we see tags again.
So I need to unpack what that's doing and fix it.

Turns out forTag is set to '' when initially loading the All Tags dialogue.  This results in the above expression being FALSE and no tags render.  So I'm changing that to check against undefined instead.

Hang on, I think we're working at cross purposes.  More info in a moment.

This is what the hook was supposed to look like:
mlrest.startRequest = function (operation) {

  if (
    operation.options.path === '/v1/search?format=json&category=content'
  ) {
    var valuesName = _.deepGet(
      operation,
      'requestBody.search.options.values.name'
    );
    if (valuesName === 'tags') {
      operation.options.path = '/v1/values/tags?' +
          'pageLength=10000&options=tags&start=1&aggregate=count';
      operation.options.headers.accept = 'application/json';
    }
  }
  return origStartRequest(operation);
};

It looks like somehow that got reverted back to a previous incranation which was doing the test you're describing, when it was intended (in the code I just copied) to avoid being sensitive to these properties at all.

Also, the hook file was supposed to get moved up one directory into db-client and get required by the index.js file there.

@laurelnaiad Is there a commit that reflects that directory move and new require?

There was. I've already got things the way I just described in locally and will push another commit on top.
5f36861850b4036758098d90c698b3b4fd6ddb12 had the version that already was set up to handle the relatedTags case as well as the regular case.
Stay tuned.

s/b resolved now @gghai

Verified


Register User Page

This register user functionality simply needs to create a new User on the backend whenever a user inputs their 5 digit ID. They should then be able to login with their Google credentials.
Imagine something like this:

[ Register ]

takes you to a page that looks like

+----------------------------------+
|  Email: ___________________
|  5 Digit ID: ______________
|  Confirm 5 Digit ID: ______
|  [ Confirm ]
+----------------------------------+

When you login, you should never have to input your 5 digit ID! It should only be a way to register yourself.
If someone tries to login with unregistered email, redirect them to the register page.

Blocked by https://github.com/CreativeSolutionsGroup/smart-events-user-dashboard/issues/25


贪婪洞窟4.0.25无法启动

Steps to reproduce
安装贪婪洞窟4.0.25无法打开，打开无响应

✔ Expected Behavior
open
❌ Actual Behavior
No response
Other Software
WSA 版本2307.40000.5.0
贪婪洞窟版本 4.0.25
Please specify the version of Windows Subsystem for Android
2307.40000.5.0

@Autumn0039. Can you please file feedback via Windows Feedback Hub (Windows key + F) under category Apps > Windows Subsystem for Android and include a recording of your issue. This forum is intended for app developer feedback.  The game also doesn't appear to be available in the Microsoft Store.  Can you also include information as to where to install it from?


Usage for positional subcommands

Display the names of positional arguments when they are not specified.

jenkins rebuild manager/presubmit

Jenkins job manager/presubmit passed

Jenkins job manager/presubmit passed

Jenkins job manager/e2e-smoketest passed


feat(included): generate new image with version 9.5.0

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

@BlueWinds can you revert the whitespace changes in this PR?

These changes appear to have been caused by @jordanpowell88's merge yesterday: https://github.com/cypress-io/cypress-docker-images/commit/607acb524a96e5c545c42b5244489e6bc993d205
Since these files are auto-generated, I think we should either adjust the whitespace in the generate-config script, or accept the new spacing.


LM Studio returns Unexpected endpoint or method.

I can't seem to get this extension to work with LM Studio. I've successfully used my server with other software, so I know the server works.
I have CORS enabled. I'm serving on the local network. I've set the port and ensured that the URL in BMO Chatbot includes the correct port for my LM Studio server. No glory. It can't detect the model. I just see No Model in the dropdown, and refreshing results in:
[ERROR] Unexpected endpoint or method. (GET /api/tags). Returning 200 anyway
I've tried multiple LLM's and I've tried every prompt template in the book. Am I missing something, or is this plugin broken for LM Studio?

Nevermind, ChatGPT to the rescue. Apparently I misunderstood the fact that there were two different URL's and apparently you need to set them both up. Once I setup
Ollama Rest API URL: http://localhost:/v1/chat/completions
and
REST API URL: http://localhost:4444/v1
I have victory!


[question] domain pollution

Hello @vardius
Thank you for sharing this library, it is very helpful in many regards!
My question is about your choice of appending the metadata in the aggregate itself. Eg.
func (u *User) trackChange(ctx context.Context, event *domain.Event) error {
	var meta domain.EventMetadata
	if i, hasIdentity := identity.FromContext(ctx); hasIdentity {
		meta.Identity = i
	}
	if m, ok := metadata.FromContext(ctx); ok {
		meta.IPAddress = m.IPAddress
		meta.UserAgent = m.UserAgent
		meta.Referer = m.Referer
	}
	if !meta.IsEmpty() {
		event.WithMetadata(&meta)
	}

	u.changes = append(u.changes, event)
	u.version++

	return nil
}

Seeing the UserAgent or IP exposed in the aggregate feels a bit like pollution of a domain with application/infra data.
I understand that the aggregate essentially proxies this data from the command handler, which usually is acceptable practice, as aggregate is not making use of that data.
I am wondering if you would not mind sharing your thoughts as to why you chose to enrich the event in the aggregate as opposed to eg. in the aggregate repository implementation.
Thanks again for sharing!

The reason why I did that is because with the message bus I am using the context is not carried over

Thank you for getting back on this question.
But aren't the events handled first by the repository, which then publishes them to the event bus?
The repository should still have access to the request context, or is this not so.
// Save current user changes to event store and publish each event with an event bus
func (r *userRepository) Save(ctx context.Context, u user.User) error {
	if err := r.eventStore.Store(ctx, u.Changes()); err != nil {
		return apperrors.Wrap(err)
	}

	for _, event := range u.Changes() {
		if err := r.eventBus.Publish(ctx, event); err != nil {
			return apperrors.Wrap(err)
		}
	}

	return nil
}

I don't mean to nitpick. I'm just drawing a lot from your code (very nicely written too), and want to see whether there are potential pitfalls in my implementation/thinking. And of course, it's best to think together :)

Yes, I can absolutely, glad you agree :).
I am tied up atm, but should have a gap next weekend, it won't be too long in any case :)

ok cool, will w8 ;)


Cannot read property 'service' of undefined

There is my code:
https://github.com/kozzztya/share-debt/tree/36cf4897219d4ac218a9a6210ab279de53269445
After test running ./node_modules/.bin/ava test/debt-add.test.js I have an error on login:
Cannot read property \'service\' of undefined

Can you look what's wrong?

Usually this happens when app.setup isn't called. This normally happens when the server is started through something other then app.listen.

I called it without any success https://github.com/kozzztya/share-debt/blob/36cf4897219d4ac218a9a6210ab279de53269445/src/index.js#L6
Also I didn't use sub app like in previous issues with the same error.

And I didn't see in examples of feathers-auth using app.configure(services()). Am I calling all stuff in the right order?

It looks like you are configuring authentication twice, once in https://github.com/kozzztya/share-debt/blob/36cf4897219d4ac218a9a6210ab279de53269445/src/app.js#L19 and another time in https://github.com/kozzztya/share-debt/blob/36cf4897219d4ac218a9a6210ab279de53269445/src/services/auth/index.js. If you remove https://github.com/kozzztya/share-debt/blob/36cf4897219d4ac218a9a6210ab279de53269445/src/app.js#L19 everything will probably work.

I tried to configure auth in different places. That what I forget to delete.
Still have the same issue with app.configure(authentication()) only in app.js.

app.setup wasn't called in test env. thanks for help.


Support for after_database_authentication callback

Devise supports an after_database_authentication callback immediately after authenticating via the DatabaseAuthenticatable strategy (when calling authenticate!).
However DTA uses the controller method sign_in directly, which does not call this callback after successfully authenticating - similar to this issue's cause.
Would you be okay with me opening a PR to call this callback after sign_in in  DeviseTokenAuth::Concerns::SetUserByToken? @lynndylanhurley Thanks!

I have the same issue. after_database_authentication is not getting triggered

Would you be okay with me opening a PR to call this callback after sign_in in  DeviseTokenAuth::Concerns::SetUserByToken? @lynndylanhurley Thanks!

Yes!


Integration Test - Release - 2019/06/12 18:08:09

Auto create for integration test. IssueCommandFlow

#pri1

Just type '#pri3'

#pri2

#pri3

#assign PRMergerTest1

#assign NonAllowedUser

NonAllowedUser is not a valid GitHub ID, or is not a collaborator on this repo.

#reassign PRMergerTest2

GitHub user PRMergerTest1 has been removed from the MicrosoftDocs organization, so they were automatically removed as an assignee.

#reassign NonAllowedUser

NonAllowedUser is not a valid GitHub ID, or is not a collaborator on this repo.

#please-close


OpenID Connect "iat" invalid claim

Subject of the issue
This used to pass before, but it no longer does. Either in the standalone launch or the ehr launch, the section open id connect, test number 6, always displays "Invalid iat". There aren't any further details as to why it is invalid.
Here is the test result:

I am retrieving the id token from clicking on the "Inputs" tab:

Here is the decoded token in jwt.io:

Everything seems fine to me...
Your environment

Edition of inferno (Community or Program): Community
Version of inferno: 2.7.0
Which browser and version(s) is the bug present on?: Firefox v70.0.1

Steps to reproduce
Follow through with the standalone or ehr launch sequences as normal. The error will occur once the sequence has completed.
Expected behavior
ID token validation should pass
Actual behavior
ID token validation fails with "Invalid iat" error.
Please let me know if there is any additional information required

That test has not been updated recently. The above iat claim looks like it's in the proper format, so I believe that the only reason it would be invalid would be that it represents a time in the future. The test is configured to allow 30 seconds of leeway, so to an invalid iat would have to represent a time more than 30 seconds in the future.
Can you do a launch and use this tool to compare the iat timestamp to the current UTC time?

So after trying this out a little more. It seems to be inconsistent. Sometimes I would pass the validation. Sometimes I would not...
Here is the most recent scenario where I did not pass validation. Below I have a screenshot of when I was redirected back to the test tool:

Taking the id token to jwt.io, I can see that the iat is listed as 11:40:45 in my local time, a 15 second difference:

Keep in mind it did take me a few seconds to take the screenshot, so the gap should be smaller, maybe a difference of 10-13 seconds at most.
I have also used the epoch converter tool you mentioned, it lists the same time: 11:40:45

After hard-coding a temporary solution for my other problem, I'm also getting this error.  I've tried subtracting 10, 30, 60 seconds to see if it effect the outcome, but I still get this error.  I'm able to verify the time difference is not greater than 30 seconds using the converter tool linked.
It shouldn't matter since we're using epoch time, but I'm also on EST.

Yeah, this is difficult to debug if I can't check the server time and token time when this actually happens. I've never seen this error when running the deployed or local versions of Inferno. Are either of your systems open so that I could try do a launch and inspect the token in real time?

I'm using the web version launched from
https://inferno.healthit.gov/inferno/
Fhir Server:
https://www.medentmobiletest.com/fhir/DSTU2/savcw235
client_id:<PHONE_NUMBER>
client_secret:<PHONE_NUMBER>1234567890
patient login: iattest /1234567
This connects to data that has no real PHI on it, but all the same let me know when you're done so I can disable this connection.  This connection might also fail sometime between 5pm-8am as I may need to rebuild the programs due to updates.

Can that client id/secret be setup to use these launch/redirect urls?
http://localhost:4567/inferno/oauth2/static/launch
http://localhost:4567/inferno/oauth2/static/redirect

I get a forbidden OperationOutcome when running locally, which I'm guessing is due to the unrecognized launch/redirect urls. I'm getting SSL errors when I try to run from the deployed version:

Yes, try again

It does look like the time contained in iat is correct, so this will require some additional investigation on my part.
Server time:<PHONE_NUMBER>
JWT time:<PHONE_NUMBER>

I'm able to generate JWTs the duplicate this error, so I shouldn't need access to your server anymore.

Thanks!

This has hopefully been resolved by #391, which has not yet been deployed.

Fix is released in v2.9.0


Add Automatic-Module-Name for JPMS

In order to work with the JPMS and do not conflict with
automatic names, one has been assigned org.testcontainers.<module-name>.

Sharing some output:
▶ tar xfO ~/.m2/repository/org/testcontainers/testcontainers/1.17.7-SNAPSHOT/testcontainers-1.17.7-SNAPSHOT.jar  META-INF/MANIFEST.MF
Manifest-Version: 1.0
Automatic-Module-Name: org.testcontainers.testcontainers
Implementation-Version: 1.17.7-SNAPSHOT

▶ jar --file ~/.m2/repository/org/testcontainers/testcontainers/1.17.7-SNAPSHOT/testcontainers-1.17.7-SNAPSHOT.jar --describe-module
No module descriptor found.  See comment


ClassNotFoundException: com.github.benmanes.caffeine.cache.WSSMSA when run as native with grallvm

Describe the bug
iam getting this error when running native output
this only happen when using caffeine
Caused by: java.lang.ClassNotFoundException: com.github.benmanes.caffeine.cache.WSSMSA
	at java.base@17.0.5/java.lang.Class.forName(DynamicHub.java:1132) ~[gateway-error:na]
	at java.base@17.0.5/java.lang.Class.forName(DynamicHub.java:1105) ~[gateway-error:na]
	at com.github.benmanes.caffeine.cache.LocalCacheFactory.loadFactory(LocalCacheFactory.java:84) ~[na:na]
	... 45 common frames omitted

Sample
this is a simple code that showing the error https://github.com/ashraf-revo/gateway-error.

Hello @ashraf-revo, thanks for reporting the issue. I was able to reproduce it. I will temporarily add some hints for Caffeine to SC Commons. They will then ultimately have to be moved over to GraalVM reachability metadata.

thanks @OlgaMaciaszek


Streaming job fails with error when restarting job after cancelling previous instance

Hi,
We are starting the kinesis stream read to read from kinesis and write to s3 in EMR instance, Intermittently job fails with the mentioned exception when we start a new instance of job after canceling previous
any idea how to resolve the issue
ERROR MicroBatchExecution: Query [id =****, runId = ****] terminated with error java.lang.IllegalStateException: Unable to fetch committed metadata from previous batch id 10. Some data may have been missed at org.apache.spark.sql.connector.kinesis.KinesisV2MicrobatchStream.latestOffset(KinesisV2MicrobatchStream.scala:231) ~[RawAggregation.jar:?] at org.apache.spark.sql.execution.streaming.MicroBatchExecution.$anonfun$constructNextBatch$4(MicroBatchExecution.scala:489) ~[spark-sql_2.12-3.4.1-amzn-1.jar:3.4.1-amzn-1] at org.apache.spark.sql.execution.streaming.ProgressReporter.reportTimeTaken(ProgressReporter.scala:411) ~[spark-sql_2.12-3.4.1-amzn-1.jar:3.4.1-amzn-1] at

val kinesis = spark
  .readStream
  .format("aws-kinesis")
  .option("kinesis.region", region)
  .option("kinesis.streamName", streamArn)
  .option("kinesis.consumerType", "GetRecords")
  .option("kinesis.endpointUrl", shttps://kinesis.$region.amazonaws.com/)
  .option("kinesis.startingposition", "LATEST")
  .option("kinesis.metadataCommitterType", "DYNAMODB")
  .option("kinesis.dynamodb.tableName", "tbleName")
  .load()

kinesis.writeStream.foreachBatch (…)
.outputMode("append")
  .start()

regards
GR

Thanks for reporting the issue.  From the error, shard info for the latest committed batch is missing.  Do you see the same error if kinesis.metadataCommitterType set to HDFS?
Can you share the data in application log, checkpoint path as well as data in dynamodb (or hdfs) for troubleshooting

I got the same issue:
kinesisStream: <class 'pyspark.sql.dataframe.DataFrame'>
Traceback (most recent call last):
File "/tmp/spark-6b195558-12b0-4563-b261-8731ff4ef459/play_events_sql.py", line 285, in
play_events_consumer.connect()
File "/tmp/spark-6b195558-12b0-4563-b261-8731ff4ef459/play_events_sql.py", line 271, in connect
self.process()
File "/tmp/spark-6b195558-12b0-4563-b261-8731ff4ef459/play_events_sql.py", line 61, in process
self.spark.streams.awaitAnyTermination()
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/streaming/query.py", line 596, in awaitAnyTermination
File "/usr/lib/spark/python/lib/py4j-<IP_ADDRESS>-src.zip/py4j/java_gateway.py", line 1322, in call
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/errors/exceptions/captured.py", line 185, in deco
pyspark.errors.exceptions.captured.StreamingQueryException: [STREAM_FAILED] Query [id = e079b09a-9190-49b9-8f3e-784fb8bf6ca1, runId = f5654ea9-9904-44d0-b214-5fc1813fe65d] terminated with exception: Unable to fetch committed metadata from previous batch id 0. Some data may have been missed
The code Im using:
df.writeStream
.format("parquet")
.partitionBy("year", "month", "day", "hour")
.option("checkpointLocation", "s3://some_bucket/folder")
.option("path", "s3://another_bucket")
.start()

A work around is to remove the last commit at /commits/.  It will restart from the last batch (To avoid data duplication, sink need to be idempotent )
I'll try to reproduce the issue.

@hwanghw
if this helps, here is the scenario where I faced the issue
checkpoint locaiton : dynamo table

create emr server less app in aws and run the job instance which reads from kinesis
stop current running job instance and start new
publish new set of messages to kinesis, new istance of job reads the message from kinesis after which it fails with reported error

as a workaround,
I switched to s3 as checkpoint locaition and started  batchDF.persist() at beginning of batch read and unpersist at end of loop, I am not facing the issue any more with s3

Thanks for the details.  If there are more than one action running for the same KDS stream e.g. df.count and df.write.  The two actions can trigger 2 jobs which may update the metadata at the same time. This is described in README(https://github.com/awslabs/spark-sql-kinesis-connector/blob/main/README.md#avoid-race-conditions).


RubyZip creates a corrupted docx file on Windows

I found this important info as the output docx file get corrupted on Windows.
https://github.com/rubyzip/rubyzip/issues/175
Would you please add "b" binary mode in render_to_file in template.rb?
File.open(output_path, 'wb') do |f|
This way it works correctly. Thank you.

@mawwerik thanks for the heads up :yellow_heart: I added b to the File.open call.


Issue #33 fix

I believe it's everything what is needed to fix issue #33. If you have any questions or doubts please feel free to ask.

Thanks for contributing ;)
Looks good, merged.

Thanks! :)


Create link.py

A module that prints titles of webpages

I think in the case of <title>     foo     </title>, will this show     foo     as the title, might want to trim whitespace on the title.

That issues should be fixed now


Be able to automatically send an email when an execution succeeds

Is your feature request related to a problem? Please describe.
Currently, ApplicationCore accepts a notify property and, if it is set to True, Airflow automatically sends an email to the adress defined in the NOTIFICATION_EMAIL environment variable if an execution fails. No such option exists to send an email when an execution finishes successfully.
Describe the solution you'd like
It would be convenient to have a similar funcionality to automatically send an email when an execution finishes succesfully. We could have a separate boolean property notify_successes in ApplicationCore, and use the on_success_callback to send the email. Ideally, it would be convenient to have a default template for the email, but that could be customized in the Application. It would also be convenient to be able to specify in the Application the name of the environment variable that contains the emails (because when several dags are deployed on a same server, we could want the emails to be sent to a different user for each). We should also have the option to send the email to several users instead of just one.
Describe alternatives you've considered
For now, when developping a DAG, it is possible to reproduce this behavior by sending the email at the end of the solve() function of the solvers, just before the return. However, if an error occurs after (for example, while ApplicationCore.solve() is executing the solution checks or sending the results to the server), the email will have been sent before the error occurs.
Additional context
I think the possibility to have a default template for the email that could be customized and the possibility to specify the name of the environment variable that contains the email addresses are funcionalities that should be extended to the failure emails as well.

More info for the issue:
https://stackoverflow.com/questions/76458756/pass-in-the-return-value-of-same-task-to-on-success-callback-parameter
The return value of the solve task should be the status codes that we currently use so that the callback can get them from the context with the xcom_pull function.


Fe/user profile

user profile FE completed
user profile mobile FE completed
user profile dynamic component data, completed

Summary by CodeRabbit

New Features

Added a new route for user profiles in the ProductRouter component.
Introduced a follow button style and updated the destructive button style for improved UI consistency.
Implemented a new UserProfile component to display user profile information and project details, enhancing user profile management.

@ArnavNath550: Hey conflicts are not being resolved properly in this PR, raising another PR resolving them.


Problem with Jupyter notebook

Hey guys,
I am following this tutorial to build Cython code using Jupyter Notebook (which is the easiest way to build) : http://docs.cython.org/en/latest/src/quickstart/build.html
And I have a problem when writing %load_ext cython :
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-2-a0787ba4fffb> in <module>()
----> 1 get_ipython().run_line_magic('load_ext', 'cython')

~/.local/lib/python3.6/site-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
   2129                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2130             with self.builtin_trap:
-> 2131                 result = fn(*args,**kwargs)
   2132             return result
   2133

<decorator-gen-65> in load_ext(self, module_str)

~/.local/lib/python3.6/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    185     # but it's overkill for just that one bit of state.
    186     def magic_deco(arg):
--> 187         call = lambda f, *a, **k: f(*a, **k)
    188
    189         if callable(arg):

~/.local/lib/python3.6/site-packages/IPython/core/magics/extension.py in load_ext(self, module_str)
     31         if not module_str:
     32             raise UsageError('Missing module name.')
---> 33         res = self.shell.extension_manager.load_extension(module_str)
     34
     35         if res == 'already loaded':

~/.local/lib/python3.6/site-packages/IPython/core/extensions.py in load_extension(self, module_str)
     83             if module_str not in sys.modules:
     84                 with prepended_to_syspath(self.ipython_extension_dir):
---> 85                     mod = import_module(module_str)
     86                     if mod.__file__.startswith(self.ipython_extension_dir):
     87                         print(("Loading extensions from {dir} is deprecated. "

/usr/lib/python3.6/importlib/__init__.py in import_module(name, package)
    124                 break
    125             level += 1
--> 126     return _bootstrap._gcd_import(name[level:], package, level)
    127
    128

/usr/lib/python3.6/importlib/_bootstrap.py in _gcd_import(name, package, level)

/usr/lib/python3.6/importlib/_bootstrap.py in _find_and_load(name, import_)

/usr/lib/python3.6/importlib/_bootstrap.py in _find_and_load_unlocked(name, import_)

/usr/lib/python3.6/importlib/_bootstrap.py in _load_unlocked(spec)

/usr/lib/python3.6/importlib/_bootstrap_external.py in exec_module(self, module)

/usr/lib/python3.6/importlib/_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)

~/.local/lib/python3.6/site-packages/cython.py in <module>()
     19 else:
     20     # Void cython.* directives.
---> 21     from Cython.Shadow import *
     22     ## and bring in the __version__
     23     from Cython import __version__

ModuleNotFoundError: No module named 'Cython.Shadow'; 'Cython' is not a package

I am on Linux Ubuntu 18.04.1 LTS with Python 3.6.5 installed.
Thanks for your help.
Joseph

I had to say Cython not cython

Probably just something wrong with your Cython installation and/or virtual env. Try reinstalling it from scratch.

Do you have a directory called "Cython" or "cython" lying around somewhere in your Python import path?

Actually this is working fine :

Thanks for answering my questions.
Have a nice day !

I am running into a similar issue. How did you fix the problem?

@mkumar097 Did you get anything new? I'm dealing with the same problem :(

Try running ipython2 and try it there... and then ipython3... most likely you installed in in Python2 instead of Python3... try sudo -H pip3 install cython and then python3 jupyter or sudo -H pip3 install jupyter

I fogot commenting here, but what I did was reinstalling my entire Python environment. A full reset. Although I didn't know what exactly was broken, everything was solved then.

place %load_ext cython in line 1, above any imports, then click run all or run the code. Then %%cython will work.


[typescript] Cannot define custom mixins

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior 🤔
Being able to define a custom mixins through the createMuiTheme function like this:
const theme =  = createMuiTheme({
    mixins: {
        border: {
             border: "1px solid black"
        }
    }
})

Current Behavior 😯
The typescript compiler complains that border is not a valid member of the Mixins type.
Examples 🌈
--
Context 🔦
We would like to style the border of stuff in the same way as some borders of components are styled (conditional to the theme type and with the borderRadius defined in the theme). Doing that creates some boilerplate that we would like to share by creating a custom mixin. The current typescript definitions prohibit that.

@thomaseizinger Have you checked out https://material-ui.com/guides/typescript/#customization-of-theme?

@eps1lon is that a new section in the docs? 😮
I swear I read through the whole thing! :D
Will checkout if that solves my problem and report back!

Yep works! Thanks a lot!

Yep works! Thanks a lot!

Hey can you share a snippet of your theme where the custom mixins are added?
I couldn't find any articles with a working example.
Thanks in advance

@stefanfrancis93 And anyone visiting this page looking for an answer, this is what I did. This is using MUI 5, however even older versions tend to have createMixins somewhere in them.
declare module "@mui/material/styles/createMixins" {
  interface Mixins {
    border: string;
  }
}