Packaging issues

I am currently working on packaging tensorboardX for https://conda-forge.org/ and for the AUR.
For making a package, we generally need either an sdist of a released version or a tagged release on Github (or even better: both).
This shouldn't be much work and doesn't break anything:
Instead of
python setup.py build wheel
twine upload dist/*

you'd just need to run
python setup.py build sdist wheel
twine upload dist/*

I also have two quick questions:

Am I correct that the official name of this project is now "tensorbaordX" and the name "tensorboard-pytorch" will be 100% replaced by it? If yes, would you mind also renaming your repository and the documentation page so it's less confusing for new users?
In setup.py, you specify the license as MIT, but there is no explicit license file. Package repositories like having a very clear licensing situation, so it would help if you'd add a LICENSE with the MIT license text to your repository.

Thanks a lot for your work on making tensorboard available from pytorch, @lanpa and contributors! I am impressed with how easy it was to integrate into my pytorch code.

Hi,
Does a tagged release on Github enough for packing?
I have think of renaming too, and my concern is that when people google: "tensorboard pytorch", will the renamed repo be listed on top as well? I think keeping the repository name unchanged but add additional information about tensorboardX should be clear enough.
For the license, is the following text OK? (I am not familiar with this lol)
============
MIT License
Copyright (c) 2017, Tzu-Wei Huang
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

If you don't want to upload any sdists, then tagging releases on Github would also work, yes (like you did for v0.6).
I don't know how renaming the repo would affect the rank on Google/Github search (I believe it won't matter because of all the relevant keywords inside the readme etc., but I can't guarantee it).
The license text looks good!

I remember some guys have compile issue when the sdist is uploaded to PyPI (long time ago). Therefore I prefer not uploading it. BTW,  I will make a 0.9 release on github this weekend. So you can try your packing script later :)


Table issue with header row not aligning with content rows.

Unsure if I am doing something wrong, but I can't ever get my header row to align with the content rows. It is always off... either too far left or right.
Even copying the example code from the documentation I can't get it to align:

https://codesandbox.io/s/evergreen-table-position-bug-i2el8
I've tried wrapping the table in a  but that doesn't seem to help.
In the code-sandbox linked above, how can I fix that alignment issue? Any ideas?
In this one, I've removed the search header and added more columns, still not working.
https://codesandbox.io/s/evergreen-table-position-bug-more-columns-ffgjd

The red boxes are just drawn on top and aren't exact - but you can see the gap changes with each column, typically getting more exaggerated with the distance from the left.

What browser are you on?
I'm on chrome 80.0.3987.87

I'm using Brave browser (current version).

Super weird...I'd expect all of those browsers to have the same behavior... Would it be possible for you to inspect those elements and try to highlight where exactly the discrepancy in width is stemming from?

I think I found where the issue is coming from... but can't work out why it is displaying inconsistently...
See this extra padding on the right (red box is mine).

In my browser when checking:

All the header cells are equal width: 295.25 (1181px)

All the content cells are equal width: 299.5 (1198px)

17px difference, which is the same as that right-padding.

My code doesn't add any padding:
<Table>
  <Table.Head>
    <Table.TextHeaderCell>Date</Table.TextHeaderCell>
    <Table.TextHeaderCell>User</Table.TextHeaderCell>
    <Table.TextHeaderCell>Entry</Table.TextHeaderCell>
    <Table.TextHeaderCell>Data</Table.TextHeaderCell>
  </Table.Head>
  <Table.Body>{pages}</Table.Body>
</Table>

I am seeing the same thing in the code-sandbox examples from my original post too...

I can confirm that if I simply delete the 17px right padding class in the inspector 📦pr_17px the table aligns perfectly...
https://github.com/segmentio/evergreen/blob/326c4a2cc283b89b76a410d4d7809e62b949f685/src/table/src/TableHead.js#L48
This looks to be the culprit?

It's there to account for the table scroll bar, not the window scrollbar.
https://github.com/segmentio/evergreen/blame/21feaa5491752a8f612ec123312b35b980ff709f/src/table/src/TableHead.js#L15-L16

So strange though, I checked and my windows settings.
I've toggled this on/off and done full reboot in case the browser doesn't honor the setting immediately. No difference.
There is no scrollbar in the table in any examples where I am seeing the incorrect padding.

I updated my comment above.
Looking at the docs - it does incorrectly appear there too - only where there is no scrollbar in the table as @mshwery pointed out...
Wrong. ❌

Right. ✔

What browser are you on?
I'm on chrome 80.0.3987.87

I dont know how you got this to work.
I've even used browser test suites which test websites in VMs (http://browsershots.org/ and https://www.browserling.com/) and I get the same alignment issues.

On my Macbook I don't have the issue. The 17px scrollbar class does not get applied.
Windows seems to be the common thread here... are you using Windows?

I think we're all on macs, let me boot up my windows machine and see what happens after work. I'll update you tonight!

@cstrat I apologize for the late reply, I came down with a cold the last few days...
Anyway, I was able to reproduce this instantly on a windows machine... so it seems like a pretty common windows issue. I'll dig into it more when I get some time

All good @Chrischuck, no need to explain - hope you're better.
I spent a good amount of time trying to work it out but was left pulling my hair out. 😭


Readme shows wrong php version compared to composer.json

Rinvex Language is framework-agnostic, so it's compatible with any PHP framework whatsoever without any dependencies at all, except for the PHP version itself ^7.0.0. Awesome, huh?

Should be updated to

^7.1.3

According to the composer.json file

Thank you, fixed in 1d06d9c 👍


Convert kube-proxy cmdline flags to config file

/kind technical-debt
All cmdline flags are deprecated and kubelet should be configured with a YAML file now. We should make this the default for clusters >= 1.11

/assign


Plugin Logo Disappears from pinned items upon Remediation

When Plugin is installed & pinned to Chrome Browser the Lifecycle Logo is clearly visible in the tray when you open a new browser tab - for my computer it's BLUE on WHITE background.
If you select a version of OSS with vulnerabilities, the logo for LC turns to RED on WHITE background.
If you Select the Remediation Tab in the plugin and select a fix version - the page will switch to that version of the component and the Browser Plugin Lifecycle Logo will turn to WHITE on WHITE background.

This was fixed when we updated the extension logo color to match the policy severity.


Only mark classes as anonymous if they are a number

A fix for the problem that you mentioned in my other issue #1350

@yotamN great! Thanks :+1:


Convert government type

This may be closely tied with ideologies

I think the government mappings should be just reviewed.

Probably, but it's closely tied with other systems and the code is a complete mess.


Added PowerBI Embedded sample

Q
A

Bug fix?
no

New feature?
no

New sample?
yes

Related issues?
no

What's in this Pull Request?
A sample client-side web part that embeds a PowerBI report PowerBI Embedded.

Hi @rolandoldengarm, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

thx Roland, we'll have a look on this and will get it merged on the dev branch later today. Looks really good and thx for sharing.

thx Roland, we would have one ask around this, which is the folder naming for the sample solution. We just updated our contribution guidance with details on this, so sorry for the additional ask, since that was missing when you submitted your sample - https://github.com/SharePoint/sp-dev-fx-webparts/blob/master/.github/CONTRIBUTING.md.
Key point to notice would be the folder naming. So we should use angular-, react- etc. in the name, so that sample is getting grouped with similar technologies in the folder. If you are not using any generic library, we would ask that folder name starts with js- prefix. So in this case folder name would be "js-powerbi-embedded".
This is really nice sample showing the integration and great to get it included. Hopefully folder rename works for you, but obviously can do that afterwards as well, if you are running out of time.

@VesaJuvonen No worries at all. I've renamed the folder to js-powerbi-embedded!

thx Roland, great stuff.


Solution: Fix link migration-v2.html -> migrate-v2.html

This doc page is generated from MIGRATE-V2.md

Coverage remained the same at 86.923% when pulling 4ffa2aa7b68262128b2344c29113fde2a1c7bbcb on ImJoeWebb:fix-migrate-link into ae534bb18293074590964ca5ad2bd8621e81a392 on c-rack:master.

Coverage remained the same at 86.923% when pulling 4ffa2aa7b68262128b2344c29113fde2a1c7bbcb on ImJoeWebb:fix-migrate-link into ae534bb18293074590964ca5ad2bd8621e81a392 on c-rack:master.

Coverage remained the same at 86.923% when pulling 4ffa2aa7b68262128b2344c29113fde2a1c7bbcb on ImJoeWebb:fix-migrate-link into ae534bb18293074590964ca5ad2bd8621e81a392 on c-rack:master.

Thanks! ❤


Using Review App with AKS: Cannot create namespace

When using an AKS cluster with the Setup Review App functionality as described in this page, I'm getting an error saying "User "[service account for resource namespace]" cannot get resource "namespaces" in API group "" in the namespace "[the review app namespace]".
Is there something else I need to do with the AKS cluster to allow this functionality?

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

ID: 7730ae4d-4101-9c83-1823-4ff43ff161ce
Version Independent ID: 20a7e263-4819-783e-c984-c4f3b459e22f
Content: Environment - Kubernetes resource - Azure Pipelines
Content Source: docs/pipelines/process/environments-kubernetes.md
Product: devops
Technology: devops-cicd
GitHub Login: @juliakm
Microsoft Alias: jukullam

@geofflamrock Thank you for the feedback, assigning this to the author for review.
In the meantime, please see if https://github.com/Azure/AKS/issues/954 or https://github.com/MicrosoftDocs/azure-docs/issues/41012 can resolve this issue.
Please note since this is the documentation forum, our support options are limited to the example provided.
For additional resources, you can refer to:

Azure DevOps community
Azure DevOps Support
Azure DevOps on StackOverflow

are there any updates?

This is an issue for me too.
Current workaround is to use the Azure ResourceManager connectionType and to force admin user (useClusterAmind: true) to avoid being scoped to namespace in the environment.
- task: Kubernetes@1
  displayName: 'Create a new namespace for the pull request'
  inputs:
    connectionType: 'Azure Resource Manager'
    azureSubscriptionEndpoint: '$(azureSubscription)'
    azureResourceGroup: '$(resourceGroup)'
    kubernetesCluster: '$(clusterName)'
    command: apply
    useClusterAdmin: true
    useConfigurationFile: true
    inline: |
      {
        "kind": "Namespace",
        "apiVersion": "v1",
        "metadata": {
          "name": "$(k8sNamespaceForPR)",
          "labels": {
            "azds.io/space": "true"
          }
        }
      }

Variables azureSubscription, resourceGroup and clusterName must be added as they cannot be inferred from the environment's resource.
Hope this helps someone else.

@geofflamrock , @Chelaris182 , @msebolt
After playing trying to get my head around for hours on this. I realized the problem is not AKS but really the docs on Azure DevOps. The docs state that you can update an existing pipeline to use review apps with AKS. Unfortunately, this is not possible. To get review apps to work, you must use the user interface (i.e. creating a new pipeline) to have the environment, resource, and connection to the AKS cluster. This is because admin credentials are required for the task to create a new namespace and also to deploy to a namespace that is not the current resource.
Here are the differences:

The service connection created when adding a resource to an existing environment has the format {environment name}.{namespace}.{timestamp} (e.g. kubernetes1.default.1607687352) whereas that created by the review app experience has the format {aks clustername}.{namespace} (e.g. testcluster.default)
The service connection created when adding the resource to an existing environment uses a Kubernetes service account with a role binding scoped to the namespace whereas the one created by the review app experience has the Use Admin Credentials checkbox ticked giving it super rights.

Workaround:

Use the UI experience to set up the connection with the super rights then use the created environment and resource.
Grant service account in main K8S namespace rights (via RoleBinding) to the review app namespace. Tedious work every time there's a new reviewApp namespace.

Note:
The workaround in my previous post only works for the creation of namespace but not deployment.
Suggestion:

Please update the docs so that others can know it is not currently possible to create a reviewApp with a resource added to an environment, instead, the environment and resource must be created for you using the UI experience.

Raised a fix for this. @msebolt We can close this issue.

@anraghun thanks for update. I see the docs now guide one to update the connection to Use cluster admin credentials. However, once a Service Connection is created by adding a resource to an environment, you cannot change that flag in the Project Settings.
Is this functionality that is expected to come in the future?

I was able to solve this. If you've manually linked a cluster into an environment, delete the resource. Then create a new service connection manually and set the Use cluster admin credentials checkbox.  Take note of the following pieces of information:

Environment Id (numeric)
Service Connection Resource Id (GUID)

Now, use the Azure DevOps API to re-create the resource within the environment using the new service connection. You'll need to fill in the JSON payload with some item names and the Service Connection's GUID; the Environment Id is part of the URL:
POST https://dev.azure.com/{Organization}/{Project}/_apis/distributedtask/environments/{EnvironmentId}/providers/kubernetes?api-version=5.0-preview.1

{
    "name":"name-of-the-resource",
    "namespace":"namespace-of-the-resource",
    "clusterName":"name-of-the-cluster",
    "serviceEndpointId":"GUID-of-service-connection"
}

The resource is added into the environment and is linked to the new service connection. However, the list of deployments/jobs on that environment/resource will disappear. The good new is that as soon as you deploy to it once, the history reappears in full. More importantly, the Review App resource can be created from within the job (as per the examples)
I'll note that I had a little bit of trouble because I kept overlooking one thing. The value passed to the reviewapp task should be the name of the REAL namespace and not the PR namespace (matching the non-PR job). The resource name of the PR job should be the PR namespace:
jobs:
- deployment: Deploy
  environment: Environment.real-namespace
  condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
  # ELIDED

- deployment: Deploy-Review
  environment: Environment.pr-namespace
  condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/pull/'))
  strategy:
    runOnce:
      deploy:
        steps:
        - reviewApp: real-namespace  # <---- REAL NAMESPACE!
        - task: Kubernetes@1
          displayName: 'Create PR Namespace'
          inputs:
            command: apply
            useConfigurationFile: true
            inline: |
              apiVersion: v1
              kind: Namespace
              metadata:
                name: '$(Environment.ResourceName)'

Thanks @pinkfloydx33 , the HTTP call works like a charm


Requirement for Substantial Sepolia Quantities

Hello everyone,
I kindly request 9800 sepolia ETH to be sent to the following address: 0xd0A2E844A4DE367C6587b4612Da87a6e874Cd2Ca.
These funds are crucial for advancing security projects that heavily rely on having ETH on various testnets: L1 (ETH sepolia), L2 (ARB sepolia), and OP sepolia. Your assistance in this matter is greatly appreciated as it will facilitate the continued development of these projects.
Thank you for your support.

Hi @q9f  pls!

Please make the request in this repository instead: https://github.com/ethpandaops/fundingvault/


add makefile and depify

@tgruben if you wouldn't mind reviewing this since you used it today, I'd appreciate it


Not support internal function redefined.

When run phpunit with php 7.1 in macos:

phpunit example-phpunit/ExampleTest.php --bootstrap example-phpunit/bootstrap.php
PHPUnit 5.7.5 by Sebastian Bergmann and contributors.

FFFFE                                                               5 / 5 (100%)
Time: 128 ms, Memory: 14.00MB
There was 1 error:

ExampleTest::testGenerator
TypeError: Argument 3 passed to QA\SoftMocks::redefineGenerator() must be an instance of Generator, instance of Closure given, called in /Users/lancer/Downloads/soft-mocks-master/example-phpunit/ExampleTest.php on line 65

/Users/lancer/Downloads/soft-mocks-master/src/QA/SoftMocks.php:1160
/Users/lancer/Downloads/soft-mocks-master/example-phpunit/ExampleTest.php:65
--
There were 4 failures:

ExampleTest::testFunction
Failed asserting that 1 matches expected 2.

/Users/lancer/Downloads/soft-mocks-master/example-phpunit/ExampleTest.php:33

ExampleTest::testConstant
Failed asserting that 3 matches expected 4.

/Users/lancer/Downloads/soft-mocks-master/example-phpunit/ExampleTest.php:40

ExampleTest::testClassConstant
Failed asserting that 5 matches expected 6.

/Users/lancer/Downloads/soft-mocks-master/example-phpunit/ExampleTest.php:46

ExampleTest::testMethod
Failed asserting that 24 matches expected -1.

/Users/lancer/Downloads/soft-mocks-master/example-phpunit/ExampleTest.php:52
ERRORS!
Tests: 5, Assertions: 4, Errors: 1, Failures: 4.

@lancerhe, we will publish 7.1-compatible version soon.

@lancerhe, could you check it?
We added php7.1 support in 1.3.0 version.

See result, there is something wrong.
➜  soft-mocks-master phpunit example-phpunit/ExampleTest.php --bootstrap example-phpunit/bootstrap.php
PHPUnit 6.3.1 by Sebastian Bergmann and contributors.
Runtime:       PHP 7.1.8
Configuration: /Users/lancer/soft-mocks-master/phpunit.xml
FFFFF                                                               5 / 5 (100%)
Time: 170 ms, Memory: 16.00MB
There were 5 failures:

ExampleTest::testFunction
Failed asserting that 1 matches expected 2.

/Users/lancer/soft-mocks-master/example-phpunit/ExampleTest.php:33

ExampleTest::testConstant
Failed asserting that 3 matches expected 4.

/Users/lancer/soft-mocks-master/example-phpunit/ExampleTest.php:40

ExampleTest::testClassConstant
Failed asserting that 5 matches expected 6.

/Users/lancer/soft-mocks-master/example-phpunit/ExampleTest.php:46

ExampleTest::testMethod
Failed asserting that 24 matches expected -1.

/Users/lancer/soft-mocks-master/example-phpunit/ExampleTest.php:52

ExampleTest::testGenerator
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
Array (

0 => 3
1 => 4
2 => 5

0 => 1
1 => 2

/Users/lancer/soft-mocks-master/example-phpunit/ExampleTest.php:69
FAILURES!
Tests: 5, Assertions: 5, Failures: 5.

@lancerhe looks like you didn't patch phpunit, see Using with PHPUnit instructions. Also, if didn't install phpunit through composer, you should require bootstrap. Or write your own bootstrap with require your autoloader through soft mocks.
For my installation through composer it works:
$ php7.1 vendor/bin/phpunit example-phpunit/ExampleTest.php --bootstrap example-phpunit/bootstrap.php
PHPUnit 5.7.22 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.1.10-1+ubuntu16.04.1+deb.sury.org+1 with Xdebug 2.5.5
Configuration: /home/mougrim/Private/development/badoo/soft-mocks/phpunit.xml

.....                                                               5 / 5 (100%)

Time: 86 ms, Memory: 8.00MB

OK (5 tests, 6 assertions)

@mougrim
Thanks, I see the patch.
Pass.


Fix bug in SvgXmlRecursivelySetFill

On line 104, node.children may be of type HTMLCollection, which does not have a forEach method. Calling the recursive function in this case will result in type error: node.children.forEach is not a function.
Creating an array from node.children will allow the forEach method to be called.

@JohnMayes thank you. Published your changes as v2.5.0. Keep in mind I'm not dog fooding the this pkg anymore so you'll want to verify everything works


check more case for empty binding patten

Fixes #24634

🙋🏻♂

@Kingwl I promise to merge after the conflict is resolved! 👋

@typescript-bot test this.


Allow extending toEqual

Clear and concise description of the problem
I would like to make toEqual extensible so that I can easily compare objects that contain custom classes. This is a feature that is also included in Jest and would be very useful if added.
class Volume {
  constructor(public amount: number, public unit: "L" | "mL") {}

  equals(other: Volume): boolean {
    if (this.unit === other.unit) {
      return this.amount === other.amount;
    } else if (this.unit === "L" && other.unit === "mL") {
      return this.amount * 1000 === other.amount;
    } else {
      return this.amount === other.amount * 1000;
    }
  }
}

it("Object Assertion", () => {
  const obj1 = { volume: new Volume(1, "L") };
  const obj2 = { volume: new Volume(1000, "mL") };

  // Expect to succeed, but we actually fail
  expect(obj1).toEqual(obj2);
  // This is a bit redundant
  assert(obj1.volume.equals(obj2));
});

Suggested solution
Like Jest, it provides an API that allows toEqual to be extended. It is not necessary to make everything the same as Jest, but a similar API format would be easier to use.
function areVolumesEqual(a: unknown, b: unknown): boolean | undefined {
  const isAVolume = a instanceof Volume;
  const isBVolume = b instanceof Volume;

  if (isAVolume && isBVolume) {
    return a.equals(b);
  } else if (isAVolume !== isBVolume) {
    return false;
  } else {
    return undefined;
  }
}

expect.addEqualityTesters([areVolumesEqual]);

Alternative
It is still possible to compare classes using assert, but the test becomes redundant if the class is contained in an object or if there are a large number of classes in the object.
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Hey! Can I work on this one?

Hey! Can I work on this one?

Sure


feat(scope): upgrade project to node 16 fixes #29

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

check the action run : https://github.com/kritikash18/aio-cloudmanager-create-execution-action/actions/runs/9463566288 to see the results


--require-kubeconfig deprecated in kubernetes 1.10.0

Kubernetes deprecated --require-kubeconfig parameter in v1.10.0 . So we need to change our launching script when starting kubelet.

K8s version >= 1.10, need to remove --require-kubeconfig and specify config file path with --kubeconfig.
In old K8s version, there are two ways to specify the master (refer to v1.7 doc https://v1-7.docs.kubernetes.io/docs/admin/kubelet/ ):

With flag –api-servers
With flags --require-kubeconfig + --kubeconfig.  --kubeconfig is path to a kubeconfig file (default is "/var/lib/kubelet/kubeconfig", specifying how to connect to the API server, if --require-kubeconfig is not set, --api-servers will be used.

In higher version of K8s, the --api-servers and --require-kubeconfig are both deprecated.
Currently PAI use k8s v1.9, it just throw a warning, in >=v1.10, they are totally removed in this PR (https://github.com/kubernetes/kubernetes/pull/58367 ), note that it also removed the default path of –kubeconfig, which means we must specify --kubeconfig in >= 1.10 version

We can keep our current k8s version for now. as I do not see a reason to upgrade. We can come back to his issue when we need to upgrade.

@YitongFeng would be good to provide a reason to close this issue.


Create listing for new create dialog [no merge]

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)


Support signatureVersion v4 for s3 upload

When using upload() to upload a file (or stream) to the s3 mock, it always worked, but it did not store any content. When retrieving the stored file, it was of Content-Length: 0.
To make it work with the s3mock, I have to add signatureVersion: 'v2' to the params when initializing the s3 aws client.
Not sure if that applies to other "upload stuff"-functions as well.

Hey @Junkern ,
thanks for the report! Would you be interested in creating a PR to support v4?

When testing against "master" branch I can't reproduce this problem. Can you please post some sample project to illustrate this issue?

@Junkern: Any updates here? This sounds similar to Issue #85. See my comment there, I pushed a branch that modifies upload behaviour. Can you please try that out?

Closed due to inactivity


live <= main, add garry t

Docs Build status updates of commit 7e9a27f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

advocates/garry-trinder.yml
:white_check_mark:Succeeded
View

advocates/index.html.yml
:white_check_mark:Succeeded
View

advocates/media/profiles/garry-trinder.jpeg
:white_check_mark:Succeeded
View

advocates/toc.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


UI fixes

[x]  fix design issues
[ ]  introduce headless ui
[x]  no edit for public words

Maybe try this out:


await writeCharacteristic crash

If writeCharacteristic is called too quickly (using await), it'll crash. => PlatformException(write_characteristic_error, writeCharacteristic failed, null) in messsage_codecs.dart , decodeEnvlope method.
Version: 0.4.2
Same as reported in:
https://github.com/pauldemarco/flutter_blue/issues/79#issuecomment-434938557

After read some code,I think for WriteWithoutResponse, it is also needed to wait for writeResponse, but not return immediately.


terraform changes adding recorder service and recorder_vhs

What is this PR trying to achieve?
Terraform changes for pipeline recorder service and recorder_vhs

@mklander is this PR up to date with the most recent changes?

Resolves: https://github.com/wellcometrust/platform/issues/1565

closing as superseded by https://github.com/wellcometrust/platform/pull/2006


Feature Request: Like button in interface

Both Apple Music and Spotify have buttons to indicate you like a song.
It's called "Love" for Apple Music:

and "Save to favorite songs" for Spotify:

It would be nice to have a button like this in the interface
Example idea:

Thanks for making such a great little app.

I came here specifically to request this feature. This would be so great to have!

here is some info on why this hasn't been implemented yet


Disable preview globally

- Do you want to request a feature or report a bug?
Feature
- What is the current behavior?
You can only disable preview using preview: false per collection
- What is the expected behavior?
You can add code in the top at config.yml like the following to disable preview globally
editor:
  preview: false

Is still a required feature? In that case, I could work on it

Thanks @lomby92, I assigned you to the issue. Please let me know if you need anything from the maintainers to get started.


[PUB,EDU?] Add to pipeline: Preview for images

This concerns 81 products for Publinova. It does not include profile pictures, because persons do not go through the pipeline at all. They are instead proxy-ed through sources service.
By contrast. Almost 4000 products for Edusources use "image" as type. So there the impact would be significantly larger. Marking it as an Edusources ticketfor now, but we need to check with them if they really want it. This would mostly add previews for AnatomyTOOL materials. There are 10 other image materials. The problem with AnatomyTOOL is that they don't provide links to source files, but links to landing pages. We would need to change that with AnatomyTOOL or build our own tooling around their way of displaying "files"

@peterdubbeldsurf added some numbers about how much products are affected by this story ...

Publinova test case: hva:hva:077f1ef8-e1e7-4934-a8c1-f1e46c603225
{
    "previews": {
        "preview": "https://publinova-harvester-content-dev.s3.amazonaws.com/thumbnails/files/previews/image/20240509180246490815.ColumnLogistiek_juni2017_2_-thumbnail-400x300.png",
        "full_size": "https://publinova-harvester-content-dev.s3.amazonaws.com/files/previews/image/20240509180246490815.ColumnLogistiek_juni2017_2_.png",
        "preview_small": "https://publinova-harvester-content-dev.s3.amazonaws.com/thumbnails/files/previews/image/20240509180246490815.ColumnLogistiek_juni2017_2_-thumbnail-200x150.png"
      }
}

Harvester API output:


Do not fork off extra processes if only a single file needs inspection

This MR makes it so that if there is only a single file to be inspected, we do not split off extra worker processes to do the work. This is because doing the work in a separate process can never be faster than doing it inline. I benchmarked this change on my dev machine (with 6 physical cores) and it saves 40-50 ms per run (only if only a single file is inspected of course, otherwise it will take as long as before).
I did not know what to update the test with, so I just made it expect the new text. Let me know if this should be different.

Before submitting the PR make sure the following are checked:

[x] The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
[x] Wrote good commit messages.
[ ] ~Commit message starts with [Fix #issue-number] (if the related issue exists).~
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Updated tests.
[x] Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
[ ] Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.

Sigh, only commit 39a942d contains the changes I made. The rest comes from rebasing where I think I did something wrong when adding this repo as a remote :thinking:

I like this idea but you have to clean up the commits. It looks like you somehow got a merge of master in between your two commits a653a0e and 39a942d. You should be able to do a git rebase —interactive against master and remove the other commits, but if you can’t figure that out you could create a new branch off of master and cherry pick those two commits (and then squash them together)
git checkout master
git pull master

# interactive rebase (it’ll open an editor with instructions)
git  rebase master —interactive

# or, create a new branch and cherry pick
git checkout -b [branch name]
git cherry pick a653a0e
git cherry pick 39a942d

The proposed change looks good to me. Don't forget to add a changelog entry about it.

I made https://github.com/rubocop/rubocop/pull/10903, which only contains the relevant changes.


Move connection-config.js to site config value

src/main/resources/lib/frontend-proxy/connection-config.js: exports.FRONTEND_ORIGIN = "http://localhost:3000" should not be hardcoded.
Also, better name? It's not the origin of a request to CS, it's the target of a request from XP.

Side note: since the postprocessor text-replaces all occurrences of the URL to the frontend server, with the URL to the mapped proxy itself (this must happen for assets to behave properly in the preview), artefacts like this may happen:

Here, the frontend server URL is an actual prop, dumped to render with the default behavior in NextJS, then fetched by the proxy which postprocesses it into another value - giving the impression that the value is something else.
Corner case, so I'm just making a note of it for now. But it's possible this may create unforeseen consequences for someone in the future, and without knowing why this happens, it might be a weird and maybe frustrating debug experience for them.
@pmi, @sigdestad


Make sure ESP_PLATFORM is defined when processing CMake files. (IDFGH-1721)

So this is a PR I have a strong feeling I've submitted once before, but the functionality seems to have been lost in IDF master.
Given the following project layout:
Top CMakeList.txt:
cmake_minimum_required(VERSION 3.10)

set(CMAKE_CXX_STANDARD 17)

if(${ESP_PLATFORM})
    include($ENV{IDF_PATH}/tools/cmake/project.cmake)
    set(FOO 1)

    # Include Smooth as a component
    set(EXTRA_COMPONENT_DIRS
             externals/smooth/smooth_component)
    project(g3)
else()
    add_subdirectory(main)
    add_subdirectory(externals/smooth/lib)
endif()

main/CMakeList.txt:

cmake_minimum_required(VERSION 3.10)

include(${CMAKE_CURRENT_LIST_DIR}/files.cmake)

if(${ESP_PLATFORM})
    idf_component_register(SRCS ${SOURCES}
            INCLUDE_DIRS
            ${CMAKE_CURRENT_LIST_DIR}
            $ENV{IDF_PATH}/components
            REQUIRES
            smooth_component
            )
else()
    project(g3.elf)
    include(files.cmake)
    add_executable(${PROJECT_NAME} ${SOURCES})
    target_link_libraries(${PROJECT_NAME} smooth)
    target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR})
endif()

When running  cd build && cmake .. -G "Ninja" -DESP_PLATFORM=1 -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-esp32.cmake, ESP_PLATFORM is defined in the top CMakeList.txt however, it is not when processing main/CMakeList.txt resulting in the wrong script path being processed.
Would be awesome if this can be included in v4.

@renzbagaporo Shameless ping since the JIRA sync failed - can you do something about it so this PR can be marked with "all checks passed"?

So this is a PR I have a strong feeling I've submitted once before

You're definitely not wrong! Thanks for catching this regression @PerMalmberg.
Regarding the sync issue, I don't think you have to mind this. Somehow this still got synced to our internal JIRA anyway.

So I see this has been merged into IDF-master six days ago, is there a reason the PR is kept open?

@PerMalmberg No reason, thanks for contributing the patch. Sorry for the hassle about the regression and the JIRA sync problem, something has changed on the GitHub Actions side now they're out of beta and we need to debug it.

Sorry to bring this one up again, but it seems this didn't make it into v.4.0-beta-1. Will master be merged again to v.4.0 before final release or will I have to continue working off master to get this fix?


Update to Bevy 0.14

This updates the main branch to use Bevy 0.14, though it does not touch the other branches. As part of this change, I also added publish = false to Cargo.toml to prevent it from accidentally being published on https://crates.io.

Though I technically have merge rights, I'm going to wait for a maintainer or @JMS55 to approve this. :)


rename 'regEx' to 'regex' or 'RegExp'

I'd like to suggest renaming 'regEx' for the regular expression rules option to 'regex' since commonly used shorthands for Regular Expression are 'regex' or 'RegExp'. I was writing a schema and I naturally wrote regex instead of regEx and ended up spending half an hour struggling to find why I'm getting "Invalid definition for email field" error.

I'm not sure I want to rename it just because it could cause additional confusion, and supporting both would add complexity. BUT, the error message for misnamed options needs to be made much more clear.

Thanks for your patience. SimpleSchema 2.0.0-rc.1 is now released and should fix this bug.
There are a number of breaking changes when updating to 2.0, so be sure to check out the change log. If you use aldeed:collection2, you will need to use 2.10.0 or higher of that package in order to use SimpleSchema 2.0. If you use autoform, it is not yet updated to work with SimpleSchema 2.0, but hopefully soon.
SimpleSchema is now an isomorphic NPM package, so you can check out the updated readme and file issues over at the other repo. The Meteor wrapper package will exist for now but eventually I will probably deprecate support for it.
This is still a beta/RC and I do expect people will find issues, so use with caution. Production use is not yet recommended. That said, there are more and better unit tests than ever before, and the codebase should be much easier for others to read through and debug quickly.


chore(main): release 1.4.8

:robot: I have created a release beep boop
1.4.8 (2024-02-11)
Miscellaneous Chores

deps: bump psr/http-message from 1.1 to 2.0 (#82) (8fbbc05)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/cedricziel/mattermost-php/releases/tag/v1.4.8 :sunflower:


Peer dependency is using old CodeceptJS 3.5.12

I am using a rather new CodeceptJS version 3.6.5 in my project.
When I want to install "mailslurp-helper"
npm i @codeceptjs/mailslurp-helper --save-dev
I get this error:
npm error Found<EMAIL_ADDRESS>npm error node_modules/codeceptjs
npm error<EMAIL_ADDRESS>from the root project
npm error
npm error Could not resolve dependency:
npm error peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>
I guess tagging master of this library could be sufficient as there is already "3.6.5" mentionned as peer dependency.

Wow!
That was super quick reaction.
I saw "1.4.1" got tagged.
And now npm i @codeceptjs/mailslurp-helper --save-dev worked with my CodeceptJS "3.6.5". ✅


Provide API reference

The documentation is clear, it says you how you do some things, but not how it works. For example:

first_or_fail will return the first object from collection or raise a ModelException if it does not exists.

However, there is no information about this class. We need a API reference to consult classes, methods, hierarchy of classes and packages, etc.

I agree that having an API reference is useful.
I will see if I can add one and integrate it to the documentation.

Would be great. Thanks for considering it.


Replace antibody shell plugin manager

Per the GitHub Repository for antibody it's now deprecated:

Antibody is now in deprecated. No new features or bugfixes will be included.
Most managers have caught up on performance so Antibody does not differ in this sense anymore. Also, if you static load your plugins (like the Antibody docs suggest), the plugin manager is pretty much irrelevant performance-wise.

A possible solution as recommended might be to use antidote
Installation guide
Usage guide

65de067e7d53b3a23177e44e0818f9ea112dd57b


Add sensitive custom fields

Person objects have customSensitiveInformation which are only visible to admins, counterparts, and users whose position is in the authorizationGroup. Admins can edit all sensitive fields while superusers can edit only the ones they are authorized for.
Closes #3342
User changes

Authorized users can see sensitive information of people.

Super User changes

Superusers can see and edit sensitive information of people if they are authorized.

Admin changes

Admins can see and edit any sensitive information of people.

System admin changes

[x] anet.yml or anet-dictionary.yml needs change
Sensitive fields should be added to the person and  showPageOrderedFields in the dictionary:fields:
  person:
    customSensitiveInformation:
      birthday:
        type: date
        label: Date of birth
        authorizationGroupUuids: [...]
        tooltipText: "This field contains sensitive information!"

  …

  principal:
    person:
      showPageOrderedFields:
        …
        - birthday
        …

[x] db needs migration
[ ] documentation has changed
[x] graphql schema has changed

Checklist

[x] Described the user behavior in PR body
[x] Referenced/updated all related issues
[x] commits follow a repo#issue: Title title format and these 7 rules
[x] commits have a clean history, otherwise PR may be squash-merged
[x] Added and/or updated unit tests
[ ] Added and/or updated e2e tests
[x] Added and/or updated data migrations
[ ] Updated documentation
[ ] Resolved all build errors and warnings
[ ] Opened debt issues for anything not resolved here

Black font color on darkish blue is makes the text harder to read. Not a vital issue though.

Black font color on darkish blue is makes the text harder to read. Not a vital issue though.

Black font color on darkish blue makes the text harder to read. Not a vital issue though.

This dark blue color can be configured in the dictionary but maybe we can change it in our dev environment too.

This dark blue color can be configured in the dictionary but maybe we can change it in our dev environment too.

Changed the colours in the demo dictionaries to ones that have a black font with the most contrast ( with guidance from https://www.w3schools.com/cssref/css_colors.asp ).


Added: async logger

Async logger for biscuitdb.
Description
Uses spdlog for c++. Fixes clang-tidy to ignore build directory header files.
Defines
#define LOG_DEBUG(s)
#define LOG_INFO(s)
#define LOG_WARN(s)
#define LOG_ERROR(s)

Log file: build/logs/biscuitdb.log

Debug profile active by default. -DCMAKE_BUILD_TYPE=Release will auto remove debug logs.
Testing
Manual testing

testing static classes sucks
async flush to file

Codecov
https://github.com/del-systems/swatcher/issues/129

TODO

Log Rotator
Log Rotate on SIGHUP

Do let me know if you need any help. Thanks


Playing FullScreen Video in Fragments like a Signle Screen

I am Using framents horizantally three like ----> |1|2|3|  and in each fragment the video is not playing full screen if i set fullscreen the frist fragment gets full rest two will be playing videos in background.

Hi @Nadeembhat ,
The way the player view is set to fullscreen is by changing both the height and width layout params to MATCH_PARENT see here
That explains why setting the first fragment to full screen will "hide" the other views (they get pushed out by the first fragment). If you're looking to make all 3 views fullscreen at the same time, consider setting just the height layout param of all the player views to MATCH_PARENT


Added support for Partial Custom Exports and Added Sub-Levels to the replay result header.

hey, any chance u can fix the replay parser? it doesnt work with any replays from this season


Scheduler improvement

Time spent on deploying multiple VMs/volumes are very long. First VM started only after 10 minutes.

Basically a duplicate of #144

@cjellick Yeah. Though #144 remains open only because I need to check what's happened to empty volume name.


docs(table): change docs to use MatTableDataSource

Drastically simplifies the examples
@willshowell

Made the suggested changes, thanks for the thorough review! I'm currently in the process of revamping the docs, and I'll share the doc with you for suggestions on what should be included (like a custom data source)

@ErinCoughlan how do these example changes look to you?

Add merge-ready when ready

Hi, I noticed that the selection of rows was removed from the examples (table-overview-example) with these changes.
If I'm not completely wrong it was the only example out there how to use selection in the data-table. Is there an other example page or will there be one in the future?


Typo introduced in v1.1.0 - ecres replaced by fi

https://github.com/Sahamati/aa-redirection-guidelines/blob/f45a6d73ac3ea8f49e20ba1e775249511786b137/specification/response-specification.md?plain=1#L13-L17

Fixed in v1.2.0


Set initial color

Reading the instructions I don't understand how do we set initial color using options. And how do we change initial color during renderCallback on show event?
Using
	renderCallback: function($elm, toggled) {
		// on show
		if( toggled == true ){
			this.color.setColor("#0000FF");
		}
  }

Doesn't do anything.

Hi @vanowm ,
I don't really understand what colour you want to set (and when and why).
Could you please tell me what you want to achieve, maybe I can give you some instructions...

I want to "attach" the same tcp to different buttons on website. Because only one colorpicker is "allowed" to be opened at any time, I just move it from one button to another when user clicks a button.
What I was looking for was ability set a color that tcp will show when opened, which depends on the button it was opened from.
The instructions doesn't seem to address situations how to set default color dynamically upon opening tcp or even when it's already opened (hell it doesn't even show how to set default color during initialization!).
So far it seems using this.color.setColor() actually works, but it doesn't show the new default color, for that this.render() must be executed afterwards.
	renderCallback: function($elm, toggled) {
		// on show
		if( toggled == true ){
			this.color.setColor("#0000FF");
			this.render();
		}
  }

If one need change color outside of tcp, then it can be done with something like this:
var pickerObj = $('.color').colorPicker(/* optinal options */); // that's it
pickerObj.colorPicker.color.setColor("#00FF00");
pickerObj.colorPicker.render();

Finally, just out of curiosity, if I don't have access to pickerObj, is there a way access already initialized tcp?

Hi @vanowm again,
well, the buttons on the test page (http://www.dematte.at/tinyColorPicker/) show how to do that (actually also the input fields). They are not buttons but DIVs but work like all other elements, so also buttons (shown also by the input fields):
You can put attributes to all kinds of DOMElements, even if they would't make sense. In this case we're talking about the attribute "value".
So, if you put a value on your button:
<button value="#999999">Hello</button>

then tcp will pick it up automatically. So no need for javascript interaction.
If there is no value present, it will take the background color if any is set. (On the demo page you can see that if clicking on the gray boxes showing the code parts, there also appears a color picker that changes the color of the box. So the color picker takes the value from the background color...)
If this is also not the case, it will assume #fff as the standard.
So, if you want anything being picked up by tcp, set a value to the element...

"Finally, just out of curiosity, if I don't have access to pickerObj, is there a way access already initialized tcp?"
Well, I guess not, not that I can think of. Why would you need that?

Website that uses tcp incorrectly sets default color and incorrectly saves new color via renderCallback function. I'm trying fix it with userscript.
Website initializes tcp via anonymous function therefore not accessible via userscript.

Ok, I see...
You have to understand that the colorPicker is not responsible for the color value when clicking or focusing an item on the page. ColorPicker just picks up the value when opened and presents it. Then, when UI is used, it changes the value (you actually don't need the renderCallback, it does that by default).
So, don't try to make the colorPicker do something, just update the value.
$('.color').val('#999');

That's how you would fix wrongly initialized items.


textwriter is still usable after close(), which can result in unexpected behavior

Once closed, a writer should no longer be usable.
let ion = require("../../dist/commonjs/es6/Ion.js");

let writer = ion.makeTextWriter();
writer.writeInt(1, ["false"]);
writer.close();
console.log(ion.decodeUtf8(writer.getBytes()));

writer.writeInt(1, ["1"]);
writer.close();
console.log(ion.decodeUtf8(writer.getBytes()));

produces:
'false'::1
'false'::1
'1'::1

Related to #396


Web paint branch

Title and Issue number

I have mentioned the issue number in PR
Close #1045

Checklist:

[X] I have mentioned the issue number in my Pull Request.
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have created a helpful and easy to understand README.md

@pranjay-poddar can you please review this.

sir, can you please suggest me to work over the codes.

@shaifkhan2859 sure what do i have to do?

@shaifkhan2859 can you go through the code?

@pranjay-poddar can you please go through this?

@Saurabh-kumar09 can you please go through this pr? And tell me if I need to make any changes?

Sir, I want to access and debug your codes
On Tue, May 23, 2023, 12:43 PM Aman Kumar @.***> wrote:

@shaifkhan2859 https://github.com/shaifkhan2859 sure what do i have to
do?
—
Reply to this email directly, view it on GitHub
https://github.com/pranjay-poddar/Dev-Geeks/pull/1264#issuecomment-1558670759,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A4FO47KUH2IDUDEN726PIJTXHRPSTANCNFSM6AAAAAAYLNFOMQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


Merge upstream v2018.09 release

Merge upstream release as part of the lwAFTR release process.

@dpino: Tagged you as a reviewer on this because I had to modify some code from your PR #1159 to make new tests that were merged into lib.yang.data pass. Would appreciate a quick look. :)

Whoops, hadn't realized @dpino is on holiday at the moment. @xray7224 do you think you could take a look at the merge-related fixes instead?

CI is still failing due to flakiness with the snabbnfv test ERROR testlog/program.snabbnfv.selftest.sh. I think this problem occurs mainly with the docker image used to run CI but not on our CI servers outside of docker.
I'm going to debug it and fix it, but in a separate PR since it's not tied to any of the changes in this release.
I think otherwise this PR should be ready to merge. Commit 9703dd0 fixes an issue that came up with code introduced for this lwAFTR release (though not related to the upstream merge itself).

I've been testing this branch and your script on snabb1 produces:
>> Running loadtest: 1 instance, 2 NIC interface
>> Success: 7.44
>> Running loadtest: 1 instance, 2 NIC interfaces (from config)
>> Success: 7.65
>> Running loadtest: 1 instance, 1 NIC (on a stick)
>> Success: 9.999
>> Running loadtest: 1 instance, 1 NIC (on-a-stick, from config file)
>> Success: 9.999
>> Running loadtest: 2 instances, 2 NICs (from config)
>> Running loadtest 2: 2 instances, 2 NICs (from config)
>> Success: 0
>> Success: 5.591
>> Running loadtest: 2 instances, 1 NIC (on a stick, from config)
>> Running loadtest 2: 2 instances, 1 NIC (on a stick, from config)
>> Success: 9.999
>> Success: 9.996
>> Running loadtest: 1 instance, 1 NIC, 2 queues
>> Success: 9.999

So it's looking pretty good I think. The 2 instances 2 NICs looks a bit iffy at 5.591 and failing the first time. I'm also wondering if 7.65 for the 1 NIC 2 interfaces is within the level of acceptability, seems a bit low.


Inconsistent JSON output on errors

Hello
Let's say we have file test.rego with following content,
package test

default allow := true

Running regal with JSON format regal lint --format json test.rego - the successful output will be
{
  "violations": [],
  "summary": {
    "files_scanned": 1,
    "files_failed": 0,
    "rules_skipped": 0,
    "num_violations": 0
  }
}

Let's introduce a syntax error into test.rego, so it becomes
package test

def ault allow := true

Running regal with JSON format once again gives inconsistent output
error(s) encountered while linting: errors encountered when reading files to lint: 2 errors occurred:
test.rego:3: rego_parse_error: var cannot be used for rule name
test.rego:3: rego_parse_error: var cannot be used for rule name

The inconsistency is that error format is not JSON.
It makes a difficulty when creating Editor/IDE plugin that tries to parse JSON for the list of error.
Since in this case there's no JSON and error has no predefined format.

That's an excellent point 👍 I'll take a look at how OPA does this, as ideally we'd provide the same JSON error output as OPA does for errors that originate in OPA (like the parser error above).


Try again to bundle all permissive static libraries into a single static camada library

Discussed here: https://github.com/esbmc/esbmc/pull/440
I want to release a static camada library that contains symbols and code from all the other permissive libraries (Boolector, CVC4, STP and Z3), mostly because only STP and Z3 are available over apt/brew. Currently, while you can build camada statically, you'll still need all the other dependencies when linking against camada.
The problem is that there is no native support in CMake to repack the libraries. I actually found a few scripts that claim that can do that but I didn't manage to get it to work... Here's an in-depth explanation of the problem and a script to bundle the libs:
https://cristianadam.eu/20190501/bundling-together-static-libraries-with-cmake/
https://gist.github.com/cristianadam/ef920342939a89fae3e8a85ca9459b49
But when I tried, I remember not being able to install the lib (CMake complained about IMPORTED libs?). Maybe I'm just not that well-versed in CMake...
Patches are welcome!

SMT-switch seems to be doing it already:
https://github.com/makaimann/smt-switch/blob/master/bitwuzla/CMakeLists.txt#L25

It's a requested feature for CMake:
https://gitlab.kitware.com/cmake/cmake/-/issues/19224

The CMake custom command is working quite nicely, so I plan to create a release that includes the permissive solvers (boolector, cvc4, STP, and z3) plus its headers (so a user that wants to override the solver constructor doesn't need to get the solver header).
I'll also need to edit the CMake camada files manually to remove the libraries from the list of dependencies. I'll probably only need to leave -lpthread, -ldl and -lz in the CMake camada files.
This also needs to be automated, a release.py script is a must.


Modified the Title and updated the version of Maven project.

I modified the Title of the DNS libraries and changed the current version of the Maven Project.

Docs Build status updates of commit 677d369:
:clock10: Full build: the average full build time is 70 min(s) 52 sec(s), this is based on the last 246 build(s) for this repository.
:warning: This is a FULL build due to the incremental build being disabled in configuration file (.openpublishing.publish.config.json in 'live' branch). For more detailed info, please click here.

Docs Build status updates of commit 677d369:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-services/dns.md
:white_check_mark:Succeeded
View (azure-java-stable) View (azure-java-preview) View (azure-java-legacy)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Is there any reason to use this repo over bosh create-env ?

There are some prominent links[1] to this repo and I'm concerned that it should be mentioned that the bosh-init tool has basically been incorporated into bosh-cli v2, so we should fairly prominently in the README link to the official docs for that workflow[2].
I'm happy to PR the README with this notice, but was hoping for discussion to understand if folks still find this tool crucial and why. We wouldn't want to dissuade people from using this tool if there are use-cases that are still exclusively served by bosh-init
[1] https://en.wikipedia.org/wiki/BOSH_(software)#Deploying_BOSH
[2] https://bosh.io/docs/init.html

No, this repository should not be used, and it is not being maintained. Consumers should switch to the functionally-equivalent bosh create-env like you mentioned, if they haven't already.
Made #153372223 to update this, but you might beat us to it with a pull request.

I'll reserve the right to PR if I see folks getting confused in the short term, but otherwise it should just go into the queue.


Unable to match DN in<EMAIL_ADDRESS>version

I want to match subject and get output "true" but getting "false" in ldapjs version 3.0.0, it was "true" in ldapjs version 2.3.3.
import ldapjs from 'ldapjs';
function subjectMatches(actual, expected) {
try {
const actualDN = ldapjs.parseDN(actual);
const expectedDN = ldapjs.parseDN(expected);
const actualRDNs = actualDN.rdns.map(rdn => rdn.toString());
const expectedRDNs = expectedDN.rdns.map(rdn => rdn.toString());
const checker = (arr, target) => target.every(v => arr.includes(v));
if (actualRDNs.length != expectedRDNs.length || !checker(expectedRDNs, actualRDNs)) {
throw new Error('invalid tls_client_auth_subject_dn claim');
}
} catch (err) {
return false;
}
return true;
}
//   Certificate, eidas, subject DN, RDNs
console.log(
subjectMatches(
'CN=875HGJHJHJ,organizationIdentifier=xyz-abc-123,O=ABC,C=GB',
'CN=875HGJHJHJ,organizationIdentifier=xyz-abc-123,O=ABC,C=GB',
),
);

How to Extract RDNs

They did provide a MRE, albeit terribly formated and obviously a coding error, a catch all that returns false and an error before.
rdns is now considered private and you cannot call map on it.
I suggest to look at
https://github.com/ldapjs/node-ldapjs/blob/master/docs/dn.md
how to compare DNs
Note that dns a few more public function than mentioned in the docs (but I think not needed here)
https://github.com/ldapjs/dn/blob/master/lib/dn.js
IMO with this this can be closed.


Bump toolchain version

Before releasing 1.0.0 let's bump version to latest "stable" nightly

Done


Examples in User Guide out of date

The example configuration here suggests
- examples.devices.trampoline.RandomTrampoline:
    name: rand_tramp
    inputs: {}
- tickit.devices.sink.Sink:
    name: tramp_sink
    inputs:
      input:
      - rand_tramp:output

should work. Running this gives
Traceback (most recent call last):
  File "/home/qan22331/.pyenv/versions/3.10.12/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/home/qan22331/.pyenv/versions/3.10.12/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/dls/athena/tickit/src/tickit/__main__.py", line 5, in <module>
    main()
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/dls/athena/tickit/src/tickit/cli.py", line 82, in all
    configs = read_configs(config_path)
  File "/dls/athena/tickit/src/tickit/utils/configuration/loading.py", line 52, in read_configs
    configs = deserialize(
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/apischema/utils.py", line 424, in wrapper
    return wrapped(*args, **kwargs)
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/apischema/deserialization/__init__.py", line 912, in deserialize
    return deserialization_method(
  File "/dls/athena/tickit/env/lib/python3.10/site-packages/apischema/deserialization/__init__.py", line 252, in method
    raise ValidationError([], elt_errors)
apischema.validation.errors.ValidationError: ValidationError(messages=[], children={1: ValidationError(messages=[], children={'inputs': ValidationError(messages=[], children={'input': ValidationError(messages=['expected type string, found array'], children={})})})})

Changing the config to
- examples.devices.trampoline.RandomTrampoline:
    name: rand_tramp
    inputs: {}
- tickit.devices.sink.Sink:
    name: tramp_sink
    inputs:
      input: rand_tramp:output

makes it run successfully but I'm not sure if it's still doing the same thing.

The config in the docs was just wrong, the change you made is to the correct format.


Updated Readme.md - fixed maven-dependency

Changed dependecy-type from "pom" to "compile" in readme - when using pom it will only add the dependecies declared in the meilisearch-java-pom, but not the SDK itself. Below the definition for gradle uses "implementation", this means "compile" in Maven-Slang. To afford the same goal (use the SDK in the project), it should be compile, not only pom.
Pull Request
Related issue
none
What does this PR do?

changes documentation for using SDK with maven

my mistake, ignore it.


Reimplement hover events

Although only show_text hover events are implemented (see #28), I'm closing this issue as implementing the rest is gonna be a long shot and most likely won't be needed by anyone anyway.


Enforce E2E test prerequisites when building individual solutions only

This looks good to me. I suggest also cherry-picking cd5106f into this branch because the devserver-based tests will fail without it (or if they somehow pass without it, that's crazy and we need to investigate).
Also one of the E2E tests about benchmarks will fail until we merge https://github.com/aspnet/AspNetCore/pull/11649

Questions though I suspect this is ready to go (once tests pass):

Have you confirmed the Selenium tests in all the places run on the CI now?
What requires 56336622fbeb and the --applicationPath changes in this PR? Seems fairly unrelated and difficult to review together w/ the simpler MSBuild / scripting changes. I also thought the test fixes were being done in separate PRs.

Have you confirmed the Selenium tests in all the places run on the CI now?

Yes

2. What requires 5633662 and the --applicationPath changes in this PR? Seems fairly unrelated and difficult to review together w/ the simpler MSBuild / scripting changes. I also thought the test fixes were being done in separate PRs.

Failing tests as part of fixing the E2E tests. I'll have @SteveSandersonMS take a look at that tomorrow. Don't worry about it.


Wrong stopCh type in Watch/WatchTree

As defined in the interface https://github.com/docker/libkv/blob/master/store/store.go#L64-L69 the stopCh won't work as intended.
I see from the tests that it's not used at all and I guess you're not using it anywhere else.
https://github.com/docker/libkv/blob/master/testutils/utils.go#L102-L103
This poppedup to me when trying to use a watch in my project.
At least in etcd the stopCh must be a send-only type ch. for the purpose of stopping the watch. Also in libkv it's the intended usage: https://github.com/docker/libkv/blob/master/store/etcd/etcd.go#L227
I can take care of this refactor. Note that may result in breaking API changes.

The tests confused me sorry, declaring the channel as bidirectional solves the issue I was having.


[ENHANCEMENT] Database can get a single user saved search

Collapsing into #804

re-purposing this one as the delete card


The loaded pre-trained TF-slim model (inceptionV3) cannot achieve the same results as it states

Recently, I'm working on my research based on the inceptionV3 model. But somehow, I cannot achieve the same results as it claims on ILSVRC12 ...
DETAILS: I've managed to load all necessary variables from a checkpoint file of a pretrained inceptionV3 model by applying TF-Slim defined modules and naming the tensor variables the same in the checkpoint file (because the log after loading is: The following variables are in the checkpoint, but not found in the graph: global_step:0). Besides that, I changed the data pipeline (both the train pipeline and the test one) to make it the same as the preprocessing of that pretrained inceptionV3 model (available on https://github.com/tensorflow/models/blob/master/slim/preprocessing/inception_preprocessing.py). I've checked it several times, but still fail to achieve the same performance: the stated results are 78.0 (top1) | 93.9 (top5), but I can just get 70.0 (top1) | 90.8 (top5).
Have you ever met the same or similar problem?
Besides, have you ever met some problems in training a neural network defined with TF-Slim module? Since there are a few conflict between API of TF-Slim and that of Tensorpack. For example, batch_norm in TF-Slim doesn't use scale (i.e., gamma) by default, while in Tensorpack, batch_norm would use scale by default ...

This is not something I can help with because any tiny difference between your code and the original ones can cause this and I couldn't know what that difference is.
You can actually just call slim.inception_v3 inside tensorpack, and this might help reduce the differences.

Thank you for such a quick response!
I would check even further to try to solve it...
Thanks anyway!

btw, our examples contain an inceptionv3 code which reaches 74% accuracy. This is what you should expect to get. 78% will need super large batch size (e.g. 1600). See Google's comments (https://github.com/tensorflow/models/blob/master/research/inception/inception/inception_train.py#L66)


Feat: join/exit Aura swap trade

Description
With the release of new Balanced SDK version, it is now possible to perform a new type of swap, "Join/Exit" swap. This uses batch relayer to perform multiple transactions which join and exit given pool.
Example of how to use this:
https://github.com/balancer-labs/balancer-sdk/blob/develop/balancer-js/examples/swapSor.ts
The swap type priority is this:

If user selected "Gasless" AKA "CoW swap" AKA "Gnosis" > use Gnosis trade.
If user unselected "Gasless" or it's not available > check if JoinExit is available and use it.
If JoinExit trade is not available > use SOR

Please see below on how to test.
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Dependency changes
[ ] Code refactor / cleanup
[ ] Documentation or wording changes
[ ] Other

How should this be tested?
On Mainnet, test different trade types.
On Polygon, BAL -> AVAX swap should use JoinExit.
On Polygon, BAL -> MATIC swap should not use JoinExit.
Check other networks.
Visual context
N/A
Checklist:

[x] I have performed a self-review of my own code
[x] I have requested at least 2 reviews (If the PR is significant enough, use best judgement here)
[x] I have commented my code where relevant, particularly in hard-to-understand areas
[x] If package-lock.json has changes, it was intentional.
[x] The base of this PR is master if hotfix, develop if not

@garethfuller In terms of gas used and transaction fees, this new route seems to be more expensive than "balancer" route. There is also an additional initial step. E.g.:
Tested on Polygon:
BAL -> MATIC (“balancer” route)

Approve BAL (52,072 gas)
Confirm swap (109,642 gas)

BAL -> AVAX (“joinExit” route)

Approve Batch relayer (49,327 gas)
Approve BAL (52,072 gas)
Confirm swap (162,562 gas)

@alter-eggo Thanks. Sorry, I should have mentioned this: as part of this merge request, file TradePreviewModalGP.vue has been renamed to TradePreviewModal.vue. This makes the diff seem like there are many changes in this file. However, it should be compared to https://github.com/balancer-labs/frontend-v2/blob/develop/src/components/modals/TradePreviewModalGP.vue
I think if we refactor all the points you've suggested, it should be a separate merge request as they don't relate to joinExit.

@garethfuller hmm I can't seem to reproduce this. It's swapping okay for me. Would you mind recording the screen and console for this please?

@garethfuller I tried finding a pair of tokens which would help testing this live, however it only WETH <> AuraBAL pair was the only one I could find. It also depends on the amounts and market conditions.
I swapped using this pair:
https://etherscan.io/tx/0xa74e7983a383fb4e5ac0b6cff102703e6716cbea23c5fb1da938a3365370ed9b
Seems to be using the correct swap route method?

Continued in https://github.com/balancer-labs/frontend-v2/pull/2678


swig compilation on macOS

just FYI:
I had to add --undefined dynamic_lookup to the linker command in compile.sh to get it to work on the mac.
what that does exactly is beyond me, but it might be worth adding to the readme to save other people some headache.

Thanks! I'm on macOS too but did't need the flag, though adding it seems to produce no negative effect. So I'm putting it in compile.sh anyways, in case other people run into the same issue. Commit: 607373b69c32f76088f8005ee357ba2dea2b89ce
BTW seems like it should be -undefined dynamic_lookup (single dash), otherwise clang does not recognize it.

👍


Directly import JsString literals from JavaScript

Motivation
With the JS String Builtins proposal having been stabilized in Chrome and soon stabilizing in Firefox, it would be a great idea to start supporting it from wasm-bindgen. Most importantly I think it would be great to be able to directly import JsString literals directly from the browser without having to run any code to do the UTF-8 to UTF-16 conversion at all.
Proposed Solution
Provide a macro js_sys::string! macro that can be used like so:
string!("Hello, World!")

this expands to an internal wasm-bindgen machinery similar to describe which wasm-bindgen's CLI can then interpret and transform into an imported externref like so:
(global (import "strings" "Hello, World!") (ref extern))

a fallback to constructing the JsString at runtime should be available in case the feature is disabled in wasm-bindgen.
Alternatives
One alternative would be to not make use of the proposal at all and instead simply generate the literals into the __wbindgen_init_externref_table function where other types of literals could even be supported such as BigInt literals. This would also directly put the literals at a constant index of the externref table, whereas the proposal will give us a global which would need to be placed in the table at runtime.
Additional Context
None yet

And turns out it's already a thing: https://rustwasm.github.io/docs/wasm-bindgen/reference/static-js-objects.html#static-strings

Reopening, because the functionality as it exists it very impractical to use.


AMBARI-24764: StackMerger utility tool for flattening stack definitons

What changes were proposed in this pull request?
Add StackMerger utility tool to flatten HDP-2.6 stack definition from Ambari-2.7 and export the flattened stack definition for use in Ambari 2.8
How was this patch tested?
Deployed cluster with generated stack definition. Verified config recommendations, themes, widgets etc work. Only manual change required was renaming Smartsense service advisor from HDP21SMARTSENSEServiceAdvisor to HDP26SMARTSENSEServiceAdvisor.
mvn clean test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:49 min
[INFO] Finished at: 2018-10-25T23:46:44-07:00
[INFO] ------------------------------------------------------------------------

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4239/
Test FAILed.
Test FAILured.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4395/
Test FAILed.
Test FAILured.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4396/
Test FAILed.
Test FAILured.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/4398/
Test PASSed.


Short Urls link internally instead of to the target link

Hi
I have newly setup yourls (v 1.71, mySQL 5.5,).
Now, what is happening is that short URLs do not link to the external target link, i.e.
instead of:
www.ownsite.www/shorturl ==> link to www.externalsite.www/longurl
I get this:
www.ownsite.www/shorturl ==> www.ownsite.www/shorturl
Anybody have an idea, what I am missing here?
Thanks!

So your YOURLS is redirecting to itself? 😕

Yes

Am 03.06.2016 um 07:10 schrieb dgw<EMAIL_ADDRESS>So your YOURLS is redirecting to itself? 😕
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

If it was redirecting to itself, it would exceed the redirect limit and your browser would display an error. So more likely, the server is not configured correctly and isn't redirecting at all.

:+1: @dgw :)
@seniorrossi feel free to add more details that we may use to be able to help you. Closing the issue, this is obviously a config issue and most likely not in YOURLS itself.


Update akka-stream, akka-testkit to 2.6.11

Updates

com.typesafe.akka:akka-stream
com.typesafe.akka:akka-testkit

from 2.6.10 to 2.6.11.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.typesafe.akka" } ]

labels: library-update, semver-patch

Pull Request Test Coverage Report for Build 147

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 72.327%

Totals

Change from base Build 144:
0.0%

Covered Lines:
115

Relevant Lines:
159

💛  - Coveralls

Pull Request Test Coverage Report for Build 147

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 72.327%

Totals

Change from base Build 144:
0.0%

Covered Lines:
115

Relevant Lines:
159

💛  - Coveralls

Superseded by #55.

Superseded by #55.


List possible completions

Hi! Is it possible to get a list of all possible next items? E.g. if I json {"foo": "hello", "bar": {"baz": true}}, I'd like to generate a list of all possible items that are valid, such as:

.foo
.bar
map
join
... other functions

Notice that .bar.baz isn't there. If I were to update the so-to-say "starting point" to .bar, it would return:

.baz
map
join
... other functions

Reason for this is that I want to try my hand at #74, so I want to use see if auto completion can be created based on the json itself. This will be as part of the library rather than anything else.

Listing next possible tokens is a hard problem in general because it it tightly coupled with the syntax, lexer, parser, as well as executors. When user defines some filters the completion should list them within their scopes. Filter arities are also related to this topic; no ( follows after to_entries filter (but it does when user defined their own to_entries/1). I don't have plan to provide such complex and unmaintainable feature from this library. Instead, you can simply list map keys, track parenthesis, and use builtins to list internal functions.

Great! That seems reasonable enough. Thanks.


CPP: add support for cleanup function

In the predefined EXASOL UDF languages, users can create a cleanup function which is called when a UDF container is shut-down.
This feature is missing for CPP UDFs at the moment.

Won't fix in the current version


fix watchQuery fetchResults docs

Hi,
I have implemented watchQuery as specified in example but it is not hit:
client.watchQuery(
  WatchQueryOptions(
    document: myQuery,
    variables: {},
  ),
)
.stream
.listen((r) {
print(r);
});
;

print never triggered
however if i do simple .query everything works fine

Looks like the docs are wrong – you need to either pass fetchResults: true or call client.watchQuery().fetchResults() to trigger the operation

Then it could be cool if doc is fixed.
Also, correct me if I am wrong - stream should fire twice

result from cache
result from network with cache update

right?
then why we need to unsubscribe? This stream has an end - so why under the hood it does not do .take(2) ?

@vytautas-pranskunas- watchQuery has a pollInterval option for periodic refetches, as well as a cache rebroadcasting which sends an updated version of the query when underlying data in the cache changes

fixed this in #830


Add HeaderCommentFixer

In most projects, every php file has a header comment with information about copyright and license. This PR introduces a new fixer to add, rewrite or remove this header comment in order to standarize it. This is a particular fixer, because it needs a configuration parameter, the header text, that varies with the project.
I made a first implementation where a new method getHeader was added to ConfigInterface, so the fixer implementing the ConfigAwareInterface could read the header text, but this new method was BC break.
In my second implementation, the header is statically set into the HeaderCommentFixer class so it can be set from the config file without any BC break. If you think there is a better way to accomplish this, ping me.
The fixer only modifies files with php extension starting with a T_OPEN_TAG token. It will add a header comment, or rewrite the existing one to update the header text. If the header text is empty, it will remove the header comment.
This PR adds the fixer to the .php_cs config file for this project. Another PR #1003 has been opened to update the header comments in this project after running this new fixer.

Cool idea. :)

Interesting fixer indeed @ajgarlag
I will need to have a deeper look. I plan some major interface changes at 2.0 line and don't want to break interface twice in short period of time. Yes, currently you won't break it, but I need to think more of this fixer.

Cool, we actually have something similar in Gush :)
https://github.com/gushphp/gush/blob/master/src/Command/Util/MetaHeaderCommand.php
But its not using a Tokenizer (because we support multiple file-types) and it only works when you have configured at least one adapter for repository operations.

array("<?\n", true),

You test this with short_open_tag enabled, but you should elso test <?\n returns false when short_open_tag is disabled.

Please fix Travis' jobs (ignoring hhvm)

I've rebased 1.5
When you think that the PR is ready to be merged, please, notify me to squash it.

I don't like that matrix configuration. Yes, it is not our bug, but with it we will ignore it, don't see any other errors on hhvm and... forget about it.
Nevertheless PR looks good for me.
You have set WIP flag in title, do you want add something more here?

please, notify me to squash it.

You don't need to squash it ;)

I don't like that matrix configuration. Yes, it is not our bug, but with it we will ignore it, don't see any other errors on hhvm and... forget about it.

Yeah, that what I was talking about. HHVM decided to work differently than PHP and break compatibility. We must hande it by ourself. Please remove that matrix in place of #1011

Matrix removed. Work finished for me.
I'm not very happy with static method to set the header text, but it looks our best option without breaking BC. Hope we can fix it in 2.0.

Yes, exactly that I have in my mind (comment).
Just need to bump the major to break the BC.
The static method is a temporary solution.

Please make Travis happy.

BTW, please don't ping user in commit logs.
When you do that they got notification every time you do the rebase.

ping @ajgarlag

At first, sorry for the ping on rebase, my fault :(
I'm working on fixing the HHVM bugs. You can see the progress at https://github.com/ajgarlag/PHP-CS-Fixer/tree/feature/header-fixer-hhvm and https://travis-ci.org/ajgarlag/PHP-CS-Fixer/builds
I've found two bugs:

In HHVM short_open_tag always Off but ignored, this can be solved ignoring the short_open_tag value when HHVM_VERSION is defined.
The token <?= is parsed by HHVM as T_ECHO. I'm working on a solution.

The token <?= is parsed by HHVM as T_ECHO. I'm working on a solution.

Could you report it to hhvm repo ? (like https://github.com/facebook/hhvm/issues/4796) ?
Maybe they will handle it...

@keradus Is there one last bug: HHVM parses #!/usr/bin/env php as T_HASHBANG so the phar-stub.php file is detected as monolithic PHP. We have two options here:

Allow this file to be detected as monolithic PHP, modify the HeaderCommentFixer so it does not assume that the T_OPEN_TAG is at index 0 and HHVM will rewrite comment headers in php files with hashbang.
Detect this token when testing if the code is monolithic and return false.

Could you post it firstly as a second bug on hhvm please?

The two bugs has been submitted to HHVM:

https://github.com/facebook/hhvm/issues/4809
https://github.com/facebook/hhvm/issues/4810

Which solution do you prefer? I like the first one, but I think we should go with the second one for consistency.

I dislike both tbh...
Let us wait a bit for response from hhvm...

But if we ignore HHVM the code with the hashbang is detected as not monolithic, so I think the second is the way to go.
You can see the final code for Tokens::isMonolithicPhp implementing the second option at https://github.com/ajgarlag/PHP-CS-Fixer/blob/ecace3cec45878b8c1793d79e9043f68f4339435/Symfony/CS/Tokenizer/Tokens.php#L1093

@keradus finally I've implemented the function solving HHVM incompatibilities. Now, it works consistently.
I think the code could be merged. If the HHVM bugs are solved, we can review the HHVM conditionals later.

btw please rebase ;) I wanna merge it and can't

Thank you @ajgarlag.

Thank you @keradus for guiding me over the process.


SurfaceTool's AppendFrom is extremely slow on separate thread.

Godot version
3.3.stable.mono.official
System information
Windows 10, RTX 2080, GLES3
Issue description
There may be a good reason for this that I am unaware of, however it seems like the SurfaceTool's AppendFrom method is unusually slow if you execute it from a separate thread.
For my minimal reproduction project, I have a fairly small mesh, 507 verts, and I am looping 125 times to create 125 instances inside of my surface tool. I have written the code such that the only thing that should be running on a separate thread is

Creating the SurfaceTool.
Calling Begin with Mesh.PrimitiveType.Triangles.
Calling AppendFrom

Anything else, like generating normals, committing, setting the material, etc., should all be done back on the main thread.
If I execute the code synchronously (on the main thread), it takes ~1100ms.
If I execute the code asynchronously it takes ~11,000ms.
This is 10x slower.
Steps to reproduce

Add some mesh to your project and create a scene with the mesh.
Get the Mesh from the MeshInstance.
Create the surface tool and call AppendFrom.

public SurfaceTool Generate()
{
    SurfaceTool surfaceTool = new SurfaceTool();
    surfaceTool.Begin(Mesh.PrimitiveType.Triangles);

    for (int x = 0; x < _length; x++)
    {
        for (int y = 0; y < _height; y++)
        {
            for (int z = 0; z < _width; z++)
            {
                surfaceTool.AppendFrom(_monkeyMesh, 0, Transform.Identity.Translated(new Vector3(x * 3, y * 3, z * 3)));
            }
        }
    }

    return surfaceTool;
}

Call this asynchronously.

Task<SurfaceTool> task = Task.Run(Generate);

Minimal reproduction project
SurfaceToolAppendFromRepo.zip

@Delpire Can you reproduce this in a GDScript project to rule out C#/Mono being the issue here?

@Calinou - Sorry it took me a little bit to recreate it in gdscript as I am not very familiar with gdscript. I am sure the code can be a lot better. I went ahead and downloaded Godot 3.3.2 (the regular build, no mono support).
SurfaceToolAppendFromGDScript.zip
I also realized my benchmark isn't exactly correct. I was timing both the AppendFrom as well as the rest of the surface tool stuff like generating normals, committing, etc. If I just benchmark the AppendFrom the performance is even worse.
~140ms synchronously
~10500ms synchronously
So AppendFrom is like ~75x slower.

The AppendFrom function internally calls VisualServer.mesh_surface_get_arrays() which retrieves the mesh data from the GPU instance of the mesh. E.g. it makes an OpenGL API call to read back data from the GPU.
OpenGL has to run from the main thread only. Not only that, but when you request data back from the GPU, the main thread has to stall while it waits for the data to be returned. That is likely what is happening in your case. You are asking for GPU data 125 times and the main thread stalls while the GPU transfers 125 copies of your mesh to the CPU. (See https://docs.godotengine.org/en/stable/tutorials/optimization/using_servers.html#getting-data-from-the-servers)
In your case, you will be much better off by requesting a single copy of the mesh, converting it to an ArrayMesh once and then adding that ArrayMesh's arrays manually. You can even just copy the logic from the AppendFrom function (with the key difference being that you dont request a copy of the mesh each time you call the function)
https://github.com/godotengine/godot/blob/8db0bd44249e9cac56cf24c7c192bc782c118638/scene/resources/surface_tool.cpp#L776-L811

@clayjohn - Thank you so much for the explanation. I wanted to use the ArrayMesh originally, but didn't want to have to apply the transforms myself. I should be able to do this myself, although it would be nice if the SurfaceTool provided a way of doing this since its possible there could be some performance gain doing this in the C++ layer. If anyone feels strongly about it, I could write a proposal in the proposal repo.
Regardless, I think this sufficiently resolves my issue, and I think it would be valuable to document APIs that are good candidates for multithreading and APIs that are not.
Thank you!

@Delpire I agree, if there is enough interest a append_from_arrays function could be really beneficial. Having regular API calls silently stall the main thread to await data from the GPU is not good.

Closed by #54982.

The AppendFrom function internally calls VisualServer.mesh_surface_get_arrays() which retrieves the mesh data from the GPU instance of the mesh. E.g. it makes an OpenGL API call to read back data from the GPU.
OpenGL has to run from the main thread only. Not only that, but when you request data back from the GPU, the main thread has to stall while it waits for the data to be returned. That is likely what is happening in your case. You are asking for GPU data 125 times and the main thread stalls while the GPU transfers 125 copies of your mesh to the CPU. (See https://docs.godotengine.org/en/stable/tutorials/optimization/using_servers.html#getting-data-from-the-servers)
In your case, you will be much better off by requesting a single copy of the mesh, converting it to an ArrayMesh once and then adding that ArrayMesh's arrays manually. You can even just copy the logic from the AppendFrom function (with the key difference being that you dont request a copy of the mesh each time you call the function)
https://github.com/godotengine/godot/blob/8db0bd44249e9cac56cf24c7c192bc782c118638/scene/resources/surface_tool.cpp#L776-L811
The fact that append_from requests data from the GPU and will stall the main thread needs to be documented.

just to supplement @clayjohn comment - since OpenGL has to run from the main thread, VisualServer does a lot behind synchronization mechanisms. As a matter of fact, VisualServer locks semaphores heavily so if an extra thread needs to operate on VisualServer - it costs a lot.
See 3 random stack traces from Thread 7 (thread running async SurfaceTool processing from MRP here):
Thread 7 (Thread 0x7fe1b89fd640 (LWP 42374) "generate"):
#0  0x00007fe1e428d8ca in __futex_abstimed_wait_common64 () from /usr/lib/libpthread.so.0
#1  0x00007fe1e4287270 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#2  0x000000000355d671 in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#3  0x0000000002d6ecbb in Semaphore::wait (this=0x69b63e8) at ./core/os/semaphore.h:58
#4  CommandQueueMT::push_and_ret<VisualServer, int (VisualServer::*)(RID, int) const, RID, int, int> (this=this@entry=0x69b63d0, p_instance=0x6817bb0, p_method=<optimized out>, p1=<EMAIL_ADDRESS>p2=p2@entry=0, r_ret=0x7fe1b89fc054) at ./core/command_queue_mt.h:469
#5  0x0000000002d6ee6a in VisualServerWrapMT::mesh_surface_get_array_len (this=0x69b62b0, p1=..., p2=0) at servers/visual/visual_server_wrap_mt.h:167
#6  0x0000000002bb7ce8 in VisualServer::mesh_surface_get_arrays (this=0x69b62b0, p_mesh=..., p_surface=0) at servers/visual_server.cpp:1793
#7  0x000000000285f82b in ArrayMesh::surface_get_arrays (this=0x16b7c480, p_surface=0) at scene/resources/mesh.cpp:825
#8  0x0000000002969687 in SurfaceTool::_create_list (this=0x7fe1b4000c00, p_existing=..., p_surface=<optimized out>, r_vertex=0x7fe1b89fc1d0, r_index=0x7fe1b89fc1d8, lformat=@0x7fe1b89fc1cc: 279) at scene/resources/surface_tool.cpp:506
#9  0x0000000002969813 in SurfaceTool::append_from (this=0x7fe1b4000c00, p_existing=..., p_surface=0, p_xform=...) at scene/resources/surface_tool.cpp:786
#10 0x0000000002979491 in MethodBind3<Ref<Mesh> const&, int, Transform const&>::call (this=0x9282270, p_object=<optimized out>, p_args=0x7fe1b89fc2c8, p_arg_count=-1197489440, r_error=...) at ./core/method_bind.gen.inc:2303
#11 0x00000000030e534a in Object::call (this=0x7fe1b4000c00, p_method=..., p_args=0x7fe1b89fc6b8, p_argcount=3, r_error=...) at core/object.cpp:918
#12 0x00000000031891d1 in Variant::call_ptr (this=this@entry=0x7fe1b89fc538, p_method=..., p_args=p_args@entry=0x7fe1b89fc6b8, p_argcount=p_argcount@entry=3, r_ret=0x0, r_error=...) at core/variant_call.cpp:1185
#13 0x00000000008e1fcb in GDScriptFunction::call (this=0x16b3c510, p_instance=0x16b17510, p_args=<optimized out>, p_argcount=<optimized out>, r_err=..., p_state=<optimized out>) at modules/gdscript/gdscript_function.cpp:1046
#14 0x0000000000878138 in GDScriptInstance::call (this=<optimized out>, p_method=..., p_args=<optimized out>, p_argcount=<optimized out>, r_error=...) at modules/gdscript/gdscript.cpp:1184
#15 0x00000000030e54aa in Object::call (this=0x8dfa630, p_method=..., p_args=0x7fe1b89fcd10, p_argcount=1, r_error=...) at core/object.cpp:899
#16 0x0000000003398684 in _Thread::_start_func (ud=<optimized out>) at core/bind/core_bind.cpp:2685
#17 0x000000000323d655 in Thread::callback (p_self=<optimized out>, p_settings=..., p_callback=0x3398560 <_Thread::_start_func(void*)>, p_userdata=0x17399ed0) at core/os/thread.cpp:77
#18 0x00000000035d2c04 in execute_native_thread_routine ()
#19 0x00007fe1e4281259 in start_thread () from /usr/lib/libpthread.so.0
#20 0x00007fe1e405f5e3 in clone () from /usr/lib/libc.so.6

Thread 7 (Thread 0x7fe1b89fd640 (LWP 42374) "generate"):
#0  0x00007fe1e428d8ca in __futex_abstimed_wait_common64 () from /usr/lib/libpthread.so.0
#1  0x00007fe1e4287270 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#2  0x000000000355d671 in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#3  0x0000000002d6ecbb in Semaphore::wait (this=0x69b63e8) at ./core/os/semaphore.h:58
#4  CommandQueueMT::push_and_ret<VisualServer, int (VisualServer::*)(RID, int) const, RID, int, int> (this=this@entry=0x69b63d0, p_instance=0x6817bb0, p_method=<optimized out>, p1=<EMAIL_ADDRESS>p2=p2@entry=0, r_ret=0x7fe1b89fc054) at ./core/command_queue_mt.h:469
#5  0x0000000002d6edba in VisualServerWrapMT::mesh_surface_get_array_index_len (this=0x69b62b0, p1=..., p2=0) at servers/visual/visual_server_wrap_mt.h:168
#6  0x0000000002bb7d1b in VisualServer::mesh_surface_get_arrays (this=0x69b62b0, p_mesh=..., p_surface=0) at servers/visual_server.cpp:1796
#7  0x000000000285f82b in ArrayMesh::surface_get_arrays (this=0x16b7c480, p_surface=0) at scene/resources/mesh.cpp:825
#8  0x0000000002969687 in SurfaceTool::_create_list (this=0x7fe1b4000c00, p_existing=..., p_surface=<optimized out>, r_vertex=0x7fe1b89fc1d0, r_index=0x7fe1b89fc1d8, lformat=@0x7fe1b89fc1cc: 279) at scene/resources/surface_tool.cpp:506
#9  0x0000000002969813 in SurfaceTool::append_from (this=0x7fe1b4000c00, p_existing=..., p_surface=0, p_xform=...) at scene/resources/surface_tool.cpp:786
#10 0x0000000002979491 in MethodBind3<Ref<Mesh> const&, int, Transform const&>::call (this=0x9282270, p_object=<optimized out>, p_args=0x7fe1b89fc2c8, p_arg_count=-1197489440, r_error=...) at ./core/method_bind.gen.inc:2303
#11 0x00000000030e534a in Object::call (this=0x7fe1b4000c00, p_method=..., p_args=0x7fe1b89fc6b8, p_argcount=3, r_error=...) at core/object.cpp:918
#12 0x00000000031891d1 in Variant::call_ptr (this=this@entry=0x7fe1b89fc538, p_method=..., p_args=p_args@entry=0x7fe1b89fc6b8, p_argcount=p_argcount@entry=3, r_ret=0x0, r_error=...) at core/variant_call.cpp:1185
#13 0x00000000008e1fcb in GDScriptFunction::call (this=0x16b3c510, p_instance=0x16b17510, p_args=<optimized out>, p_argcount=<optimized out>, r_err=..., p_state=<optimized out>) at modules/gdscript/gdscript_function.cpp:1046
#14 0x0000000000878138 in GDScriptInstance::call (this=<optimized out>, p_method=..., p_args=<optimized out>, p_argcount=<optimized out>, r_error=...) at modules/gdscript/gdscript.cpp:1184
#15 0x00000000030e54aa in Object::call (this=0x8dfa630, p_method=..., p_args=0x7fe1b89fcd10, p_argcount=1, r_error=...) at core/object.cpp:899
#16 0x0000000003398684 in _Thread::_start_func (ud=<optimized out>) at core/bind/core_bind.cpp:2685
#17 0x000000000323d655 in Thread::callback (p_self=<optimized out>, p_settings=..., p_callback=0x3398560 <_Thread::_start_func(void*)>, p_userdata=0x17399ed0) at core/os/thread.cpp:77
#18 0x00000000035d2c04 in execute_native_thread_routine ()
#19 0x00007fe1e4281259 in start_thread () from /usr/lib/libpthread.so.0
#20 0x00007fe1e405f5e3 in clone () from /usr/lib/libc.so.6

Thread 7 (Thread 0x7fe1b89fd640 (LWP 42374) "generate"):
#0  0x00007fe1e428d8ca in __futex_abstimed_wait_common64 () from /usr/lib/libpthread.so.0
#1  0x00007fe1e4287270 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#2  0x000000000355d671 in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#3  0x0000000002d6ecbb in Semaphore::wait (this=0x69b63e8) at ./core/os/semaphore.h:58
#4  CommandQueueMT::push_and_ret<VisualServer, int (VisualServer::*)(RID, int) const, RID, int, int> (this=this@entry=0x69b63d0, p_instance=0x6817bb0, p_method=<optimized out>, p1=<EMAIL_ADDRESS>p2=p2@entry=0, r_ret=0x7fe1b89fc054) at ./core/command_queue_mt.h:469
#5  0x0000000002d6ee6a in VisualServerWrapMT::mesh_surface_get_array_len (this=0x69b62b0, p1=..., p2=0) at servers/visual/visual_server_wrap_mt.h:167
#6  0x0000000002bb7ce8 in VisualServer::mesh_surface_get_arrays (this=0x69b62b0, p_mesh=..., p_surface=0) at servers/visual_server.cpp:1793
#7  0x000000000285f82b in ArrayMesh::surface_get_arrays (this=0x16b7c480, p_surface=0) at scene/resources/mesh.cpp:825
#8  0x0000000002969687 in SurfaceTool::_create_list (this=0x7fe1b4000c00, p_existing=..., p_surface=<optimized out>, r_vertex=0x7fe1b89fc1d0, r_index=0x7fe1b89fc1d8, lformat=@0x7fe1b89fc1cc: 279) at scene/resources/surface_tool.cpp:506
#9  0x0000000002969813 in SurfaceTool::append_from (this=0x7fe1b4000c00, p_existing=..., p_surface=0, p_xform=...) at scene/resources/surface_tool.cpp:786
#10 0x0000000002979491 in MethodBind3<Ref<Mesh> const&, int, Transform const&>::call (this=0x9282270, p_object=<optimized out>, p_args=0x7fe1b89fc2c8, p_arg_count=-1197489440, r_error=...) at ./core/method_bind.gen.inc:2303
#11 0x00000000030e534a in Object::call (this=0x7fe1b4000c00, p_method=..., p_args=0x7fe1b89fc6b8, p_argcount=3, r_error=...) at core/object.cpp:918
#12 0x00000000031891d1 in Variant::call_ptr (this=this@entry=0x7fe1b89fc538, p_method=..., p_args=p_args@entry=0x7fe1b89fc6b8, p_argcount=p_argcount@entry=3, r_ret=0x0, r_error=...) at core/variant_call.cpp:1185
#13 0x00000000008e1fcb in GDScriptFunction::call (this=0x16b3c510, p_instance=0x16b17510, p_args=<optimized out>, p_argcount=<optimized out>, r_err=..., p_state=<optimized out>) at modules/gdscript/gdscript_function.cpp:1046
#14 0x0000000000878138 in GDScriptInstance::call (this=<optimized out>, p_method=..., p_args=<optimized out>, p_argcount=<optimized out>, r_error=...) at modules/gdscript/gdscript.cpp:1184
#15 0x00000000030e54aa in Object::call (this=0x8dfa630, p_method=..., p_args=0x7fe1b89fcd10, p_argcount=1, r_error=...) at core/object.cpp:899
#16 0x0000000003398684 in _Thread::_start_func (ud=<optimized out>) at core/bind/core_bind.cpp:2685
#17 0x000000000323d655 in Thread::callback (p_self=<optimized out>, p_settings=..., p_callback=0x3398560 <_Thread::_start_func(void*)>, p_userdata=0x17399ed0) at core/os/thread.cpp:77
#18 0x00000000035d2c04 in execute_native_thread_routine ()
#19 0x00007fe1e4281259 in start_thread () from /usr/lib/libpthread.so.0
#20 0x00007fe1e405f5e3 in clone () from /usr/lib/libc.so.6