[Distribution Build Failure] JCenter Build issues - OpenSearch Could not resolve org.apache.maven:maven-model:3.6.2.

See the OpenSearch Forum Announcement
Execution failed for task ':buildSrc:compileJava'.
> Could not resolve all files for configuration ':buildSrc:compileClasspath'.
   > Could not resolve org.apache.maven:maven-model:3.6.2.
     Required by:
         project :buildSrc

Reproduce with
./build.sh manifests/1.2.4/opensearch-1.2.4.yml --component OpenSearch --snapshot
Full Error stack

> Task :buildSrc:reaper:check UP-TO-DATE
> Task :buildSrc:reaper:build
> Task :buildSrc:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildSrc:compileJava'.
> Could not resolve all files for configuration ':buildSrc:compileClasspath'.
   > Could not resolve org.apache.maven:maven-model:3.6.2.
     Required by:
         project :buildSrc
      > Could not resolve org.apache.maven:maven-model:3.6.2.
         > Could not parse POM https://jcenter.bintray.com/org/apache/maven/maven-model/3.6.2/maven-model-3.6.2.pom
            > Could not resolve org.apache.maven:maven:3.6.2.
               > Could not resolve org.apache.maven:maven:3.6.2.
                  > Could not parse POM https://jcenter.bintray.com/org/apache/maven/maven/3.6.2/maven-3.6.2.pom
                     > Could not resolve org.apache.maven:maven-parent:33.
                        > Skipped due to earlier error
   > Could not resolve org.apache.ant:ant-launcher:1.10.9.
     Required by:
         project :buildSrc > org.apache.ant:ant:1.10.9
      > Skipped due to earlier error
   > Could not resolve com.perforce:p4java:2015.2.1365273.
     Required by:
         project :buildSrc > com.netflix.nebula:gradle-info-plugin:7.1.3
      > Skipped due to earlier error
   > Could not resolve com.netflix.nebula:gradle-contacts-plugin:5.1.0-rc.1.
     Required by:
         project :buildSrc > com.netflix.nebula:gradle-info-plugin:7.1.3
      > Skipped due to earlier error
   > Could not resolve org.eclipse.jgit:org.eclipse.jgit:<IP_ADDRESS>806211838-r.
     Required by:
         project :buildSrc > com.netflix.nebula:gradle-info-plugin:7.1.3
      > Skipped due to earlier error
   > Could not resolve org.tmatesoft.svnkit:svnkit:1.8.12.
     Required by:
         project :buildSrc > com.netflix.nebula:gradle-info-plugin:7.1.3
      > Skipped due to earlier error
   > Could not resolve org.apache.rat:apache-rat-core:0.13.
     Required by:
         project :buildSrc > org.apache.rat:apache-rat:0.13
      > Skipped due to earlier error
   > Could not resolve org.apache.rat:apache-rat-tasks:0.13.
     Required by:
         project :buildSrc > org.apache.rat:apache-rat:0.13
      > Skipped due to earlier error
   > Could not resolve org.slf4j:slf4j-api:1.7.25.
     Required by:
         project :buildSrc > com.networknt:json-schema-validator:1.0.36
      > Skipped due to earlier error
   > Could not resolve org.apache.commons:commons-lang3:3.5.
     Required by:
         project :buildSrc > com.networknt:json-schema-validator:1.0.36
      > Skipped due to earlier error
   > Could not resolve org.jruby.joni:joni:2.1.31.
     Required by:
         project :buildSrc > com.networknt:json-schema-validator:1.0.36
      > Skipped due to earlier error
   > Could not resolve com.fasterxml.jackson.core:jackson-annotations:2.12.5.
     Required by:
         project :buildSrc > com.fasterxml.jackson.core:jackson-databind:2.12.5
         project :buildSrc > com.fasterxml.jackson.core:jackson-databind:2.12.5 > com.fasterxml.jackson:jackson-bom:2.12.5
      > Skipped due to earlier error
   > Could not resolve com.fasterxml.jackson.core:jackson-core:2.12.5.
     Required by:
         project :buildSrc > com.fasterxml.jackson.core:jackson-databind:2.12.5
         project :buildSrc > com.fasterxml.jackson.core:jackson-databind:2.12.5 > com.fasterxml.jackson:jackson-bom:2.12.5
      > Skipped due to earlier error

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 13s
2022-01-12 17:24:33 ERROR    Error building OpenSearch, retry with: ./build.sh manifests/1.2.4/opensearch-1.2.4.yml --component OpenSearch --snapshot
Traceback (most recent call last):
  File "./src/run_build.py", line 78, in <module>
    sys.exit(main())
  File "./src/run_build.py", line 66, in main
    builder.build(build_recorder)
  File "/var/jenkins/workspace/distribution-build-opensearch/src/build_workflow/builder_from_source.py", line 50, in build
    self.git_repo.execute(build_command)
  File "/var/jenkins/workspace/distribution-build-opensearch/src/git/git_repository.py", line 83, in execute
    subprocess.check_call(command, cwd=cwd, shell=True)
  File "/usr/local/lib/python3.7/subprocess.py", line 363, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'bash /var/jenkins/workspace/distribution-build-opensearch/scripts/components/OpenSearch/build.sh -v 1.2.4 -p linux -a x64 -s true -o builds' returned non-zero exit status 1.

What’s the problem?
JCenter, which is a repository used in our builds, ceased operations today. Gradle was pulling dependencies from JCenter, and some repos have a direct dependency on it. This broke that the build process for OpenSearch engine, all branches so that the last successful build of 1.3 was at 7:03 AM PT Jan 12th.
To Fix:

Remove any direct dependency on jcenter().  This would appear in a repositories block in build.gradle.  Example.
If your plugin depends on a gradle plugin that cannot currently be downloaded from https://plugins.gradle.org/ because its dependencies are failing to pull from jcenter.  A workaround is to define a repositories block at the top of your settings.gradle file that allows us to control the order and first search in maven central.

pluginManagement {
  repositories {
    mavenCentral()
    gradlePluginPortal()
  }
}

Remove JCenter Tasks

https://github.com/opensearch-project/OpenSearch/pull/1892
https://github.com/opensearch-project/alerting/issues/278
https://github.com/opensearch-project/anomaly-detection/issues/357
https://github.com/opensearch-project/asynchronous-search/issues/89
https://github.com/opensearch-project/common-utils/issues/110
https://github.com/opensearch-project/dashboards-notebooks/issues/110
https://github.com/opensearch-project/dashboards-reports/issues/276
https://github.com/opensearch-project/data-prepper/issues/870
https://github.com/opensearch-project/k-NN/issues/260
https://github.com/opensearch-project/notifications/issues/373
https://github.com/opensearch-project/sql/issues/377
https://github.com/opensearch-project/geospatial/issues/16
https://github.com/opensearch-project/cross-cluster-replication/issues/289
https://github.com/opensearch-project/ml-commons/issues/120
https://github.com/opensearch-project/observability/issues/372
https://github.com/opensearch-project/perftop/issues/34

jcenter bintray is down, https://isdown.app/integrations/bintray
Do note that jcenter bintray has been sunset, even though it will remain online, we need a campaign to remove our dependency on it.

Been looking at this a bit -
From a
./gradlew build --debug
2022-01-12T10:28:31.122-0800 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for org.yaml:snakeyaml:1.26 using repositories [BintrayJCenter, opensearch-downloads, opensearch-downloads2, opensearch-snapshots, elasticsearch-downloads, elasticsearch-snapshots, MavenRepo, MavenLocal, MavenRepo2, maven]
Most of these are coming from DistributionDownloader, but I don't see JCenter defined there.  I think this is being brought in by gradle.
From https://blog.gradle.org/jcenter-shutdown -

The Gradle Plugin Portal implicitly mirrors JCenter currently. If you’re using the Plugin Portal (via gradlePluginPortal() or the URL plugins.gradle.org/m2) to resolve your application’s dependencies, you may be relying on JCenter. You should avoid using the Plugin Portal as a repository, except for Gradle plugin projects.

We are using this here: https://github.com/opensearch-project/OpenSearch/blob/main/buildSrc/build.gradle#L98

Just noticed that 1.x branch is still explicitly referencing jcenter() here

Thanks for looking into it @mch2, let's fix OpenSearch on all branches, then I'll cascade this issue into plugins as needed to get rid of anything jcenter.

So I initiated that backport to 1.x to remove the explicit jcenter() dep in 1.x, but its still blowing up.  I think the isue is in gradle
Unfortunately without gradlePluginPortal() defined we are unable to resolve a few dependencies:
Could not determine the dependencies of task ':buildSrc:compileGroovy'.

Could not resolve all task dependencies for configuration ':buildSrc:compileClasspath'.
Could not find com.github.jengelman.gradle.plugins:shadow:6.0.0.
Searched in the following locations:
- https://repo.maven.apache.org/maven2/com/github/jengelman/gradle/plugins/shadow/6.0.0/shadow-6.0.0.pom
If the artifact you are trying to retrieve can be found in the repository but without metadata in 'Maven POM' format, you need to adjust the 'metadataSources { ... }' of the repository declaration.
Required by:
project :buildSrc
Could not find com.avast.gradle:gradle-docker-compose-plugin:0.12.1.
Searched in the following locations:
- https://repo.maven.apache.org/maven2/com/avast/gradle/gradle-docker-compose-plugin/0.12.1/gradle-docker-compose-plugin-0.12.1.pom
If the artifact you are trying to retrieve can be found in the repository but without metadata in 'Maven POM' format, you need to adjust the 'metadataSources { ... }' of the repository declaration.
Required by:
project :buildSrc

Apparently spotless also uses jcenter and it's on main.
Could not GET 'https://jcenter.bintray.com/com/diffplug/spotless/spotless-lib/2.7.0/spotless-lib-2.7.0.module'. Received status code 502 from server: Bad Gateway.
https://github.com/opensearch-project/OpenSearch/runs/4793525694?check_suite_focus=true

Tried an explicit dependency on plugins.gradle.org/m2/ instead of gradlePluginPortal() - looks like the version of spotless we are using is not there so it mirrors to jCenter.

A problem occurred configuring root project 'OpenSearch'.
Could not determine the dependencies of null.
Could not resolve all task dependencies for configuration ':classpath'.
Could not resolve com.diffplug.spotless:spotless-lib:2.7.0.
Required by:
project : > com.diffplug.spotless:com.diffplug.spotless.gradle.plugin:5.6.1 > com.diffplug.spotless:spotless-plugin-gradle:5.6.1
Could not resolve com.diffplug.spotless:spotless-lib:2.7.0.
Could not get resource 'https://plugins.gradle.org/m2/com/diffplug/spotless/spotless-lib/2.7.0/spotless-lib-2.7.0.module'.
Could not GET 'https://jcenter.bintray.com/com/diffplug/spotless/spotless-lib/2.7.0/spotless-lib-2.7.0.module'. Received status code 502 from server: Bad Gateway

@mch2 , Did you try to disable the Gradle module files as noted here? https://github.com/opensearch-project/OpenSearch/pull/1892#issuecomment-1011366685 I see that it is trying to load a .module file.

@mch2 , Did you try to disable the Gradle module files as noted here? opensearch-project/OpenSearch#1892 (comment) I see that it is trying to load a .module file.

Thanks @dlvenable for the suggestion.  I've tried it but still getting the same trace.  With debug enabled I can see plugins.gradle.com redirecting to bintray.  Spotless 5.6.1 declares other spotless dependencies that are sourced from bintray, so it redirects there - ex.
    <dependency>
      <groupId>com.diffplug.spotless</groupId>
      <artifactId>spotless-lib</artifactId>
      <version>2.7.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <optional>false</optional>
    </dependency>

2022-01-12T12:04:55.177-0800 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection released: [id: 1][route: {s}->https://plugins.gradle.org:443][total available: 2; route allocated: 2 of 20; total allocated: 2 of 20] 2022-01-12T12:04:55.177-0800 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection released: [id: 0][route: {s}->https://plugins.gradle.org:443][total available: 2; route allocated: 2 of 20; total allocated: 2 of 20] 2022-01-12T12:04:55.180-0800 [DEBUG] [org.gradle.internal.resource.transport.http.AlwaysFollowAndPreserveMethodRedirectStrategy] Redirect requested to location 'https://jcenter.bintray.com/com/diffplug/spotless/spotless-lib-extra/2.7.0/spotless-lib-extra-2.7.0.pom' 2022-01-12T12:04:55.180-0800 [DEBUG] [org.gradle.internal.resource.transport.http.AlwaysFollowAndPreserveMethodRedirectStrategy] Redirect requested to location 'https://jcenter.bintray.com/com/diffplug/spotless/spotless-lib/2.7.0/spotless-lib-2.7.0.pom'

Updates from gradle - https://status.gradle.com/?_ga=2.113826690.463275434.1641929099-1662752518.1641929099

@mch2 , The spotless plugin is also available in Maven Central:
https://repo1.maven.org/maven2/com/diffplug/spotless/spotless-lib/2.7.0/
It seems something is still preferring the load from the Gradle Plugin Repository rather than Maven Central.
I'm currently trying to move Data Prepper plugins to use the classic syntax of apply plugin. It appears this lets us control the order - Maven Central than Gradle Plugins.

@dlvenable yep been trying to figure out how to point there instead of jcenter.
I think this can be done by declaring a repositories block inside of settings.gradle
pluginManagement {
  repositories {
    mavenCentral()
    gradlePluginPortal()
  }
}

Testing it out - so far so good

Yep this worked for me
2022-01-12T12:32:35.273-0800 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Download https://repo.maven.apache.org/maven2/com/diffplug/spotless/spotless-lib/2.7.0/spotless-lib-2.7.0.jar' completed
2022-01-12T12:32:35.281-0800 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Downloaded artifact 'spotless-lib-2.7.0.jar (com.diffplug.spotless:spotless-lib:2.7.0)' from resolver: MavenRepo

@mch2 Can I please get some help here - can you edit the issue above with clear instructions of what a project/component/plugin needs to do to fix a similar error? thx

@mch2 Can I please get some help here - can you edit the issue above with clear instructions of what a project/component/plugin needs to do to fix a similar error? thx

will do - testing locally with job-scheduler and will update.

jcenter bintray is down, https://isdown.app/integrations/bintray
Do note that jcenter bintray has been sunset, even though it will remain online, we need a campaign to remove our dependency on it.

More accurate report link tho their website is having issues: https://status.bintray.com/incidents/d0yvk95zh58j

To mitigate this:

Remove any direct dependency on jcenter().  This would appear in a repositories block in build.gradle.  Example.
If your plugin depends on a gradle plugin that cannot currently be downloaded from https://plugins.gradle.org/ because its dependencies are failing to pull from jcenter.  A workaround is to define a repositories block at the top of your settings.gradle file that allows us to control the order and first search in maven central.

pluginManagement {
  repositories {
    mavenCentral()
    gradlePluginPortal()
  }
}

Thanks @mch2 I've added the fix to the top of this issue

Put a post up in the forums to let folks know what we were up to over here (https://discuss.opendistrocommunity.dev/t/jcenter-build-issues/8293)

Thanks for filing all the linked issues, I've updated the this issue to consolidate this information at the top.

@peternied , I don't see this issue tagged to a release, is this a target or 1.2.4 or 1.3 ?
fyi - @ps48 - thanks

@peternied , I don't see this issue tagged to a release, is this a target for 1.2.4 or 1.3 ? fyi - @ps48 - thanks

I labeled this 1.2.4 because we can't produce builds without fixing it.

@peternied , I don't see this issue tagged to a release, is this a target for 1.2.4 or 1.3 ? fyi - @ps48 - thanks

I labeled this 1.2.4 because we can't produce builds without fixing it.

Does this mean all fixes on plugin level as well even if build doesn't fail should be backported to 1.2 for 1.2.4 release.

@amitgalitz Yes, these changes need to be backported to all branches that we expect to build.  This event aside, JCenter will eventually be permanently offline, and we might as well get ahead of it.
If there are BWC tests that pull code and rebuild old versions those branches will need backports as well otherwise those tests will be unable to execute.  This might be a good opportunity to check on your BWC tests runs and confirm they are healthy.

There are still open subtasks, tracking this down

Lots of remaining hits in https://github.com/search?q=org%3Aopensearch-project+jcenter&type=code

We've got 22 open issues from this query I'll try to drive these all down

Down to 10 instances of jcenter, here is an updated query.

Down to 5 instances of jcenter

There are only 2 outstanding references, both in the alerting plugin

RE: https://github.com/opensearch-project/notifications/issues/373 - Notification team is not taking changes at this time.


Should mention IMaterializationInterceptor as well.

.NET EF Core 7.0 added support for IMaterializationInterceptor, it should be mentioned in the documentation.

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

 Unless you have a superpower of extending day beyond 24h.
I may disagree with priorities assigned to various issues =P, but I cannot blame you for not doing everything at once.


I am testing making changes on the Documentation (Readme file)

@Alcones1 and @rsamanez This looks okay.  As part of this initial test can you rename the folder?
Change this:
docs/user_manual/v1.5.0/JSON Configuration/README.md

To:
docs/user_manual/v1.5.0/markdown/README.md

due to the size of this change and conflicts can you confirm if this should be closed it sounds like you were testing something @Alcones1


VisibilityRequiredFixer not handling whitespaces very well

Currently VisibilityRequiredFixer given class:
class Foo
{
    public    int $a;
    public ? int $b;
    public int    $c;
    public    int    $d;
    public    \    Bar    \    Baz    $e;
    public
    int
    $f;
}

will  change it to:
class Foo
{
    public int $a;
    public ? int $b;
    public int    $c;
    public int    $d;
    public \    Bar    \    Baz    $e;
    public int
    $f;
}

So

it does not change whitespaces in and after type
it modifies class that already has all visibilities and scope of the fixer suppose to be adding visibility when missing (or in wrong place regarding to other keywords).

I wonder:

Should we fix the VisibilityRequiredFixer to handle whitespace better?
Should we make VisibilityRequiredFixer only adding (or moving to the correct place) visibilities and create new fixer (PropertiesSpaceFixer?) that will handle whitespace (should ? int vs ?int be configurable?)?

I would scope down to only add the visibility and than leave the single spacing after visibility and type to https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/4435 and ?[type] to compact_nullable_typehint

That syntax will actually be invalid as of PHP 8.0. Spaces in (fully) qualified class names are no longer permitted.

But is valid in PHP < 8 as well as all other cases are valid in PHP 8

Handled in  https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/4435


Download bars do not use the full 80 character width

e.g. in
jsonpatch  ------------------------------     0 B/12.90 kB
annotated-types ------------------------------     0 B/13.64 kB
aiosqlite  ------------------------------     0 B/15.56 kB
itsdangerous ------------------------------     0 B/16.23 kB
toml       ------------------------------     0 B/16.59 kB
requests   ------------------------------ 48.01 kB/64.93 kB
idna       ------------------------------ 50.66 kB/66.84 kB
python-dateutil ------------------------------ 193.45 kB/229.89 kB
alembic    ------------------------------ 188.19 kB/232.99 kB
rich       ------------------------------ 180.22 kB/240.68 kB
orjson     ------------------------------ 196.61 kB/250.63 kB
greenlet   ------------------------------ 212.99 kB/273.08 kB
regex      ------------------------------ 212.99 kB/278.54 kB

we allocate some space for the package names for alignment but we're only at 67 total characters in the longest line — we should probably make use of at least some of the remaining 13 characters of space for package names to keep things aligned more often.

Do you mean 80 here as in a conventional limit? Or does 80 have other significance?

Here I'm just referring to 80 as the conventional terminal width, yep.


[FLINK-22655]When using -i <init.sql> option to initialize SQL Client session It should be possible to annotate the script with --

What is the purpose of the change
this change is in order to use comments in the initialization script with '--' in the SQL Client
Brief change log
add cleanLine in CliStatementSplitter#splitContent
Verifying this change
This change added tests and can be verified as follows:
Modify the original test file CliStatementSplitterTest.java and CliClientTest.java
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable)

Other change looks good to me.

Could you add one more test in SqlClientTest#testInitFile? Because all these tests are not end to end tests. I think we can reproduce the bug in SqlClientTest#testInitFile without your patch.

OK ,I will add a test in SqlClientTest#testInitFile ,Thank you

Please also fix the broken test.. I just notice the test fails.

The reason why the test fails is because the actual statement is without comment but the expected statement still has comments. Therefore, you just modify the expected statement is enough...

hi, I fix the broken test in branch https://github.com/apache/flink/compare/master...fsk119:local_dev?expand=1
Please take a look.

hi, I fix the broken test in branch https://github.com/apache/flink/compare/master...fsk119:local_dev?expand=1
Please take a look.

OK , I got

hi, I fix the broken test in branch https://github.com/apache/flink/compare/master...fsk119:local_dev?expand=1
Please take a look.

OK, I got it  and I will fix it

Hi. The test still fails. Please take a look.. If you have any problems, please let me know.
Your modification is not as same as mine.. I think you can modify the expectedto make the actual line is as same as the expected.  By the way, you can run mvn verify to check your change passes all tests in flink-sql-client directory because ci test takes long time.

Hi. The test still fails. Please take a look.. If you have any problems, please let me know.
Your modification is not as same as mine.. I think you can modify the expectedto make the actual line is as same as the expected. By the way, you can run mvn verify to check your change passes all tests in flink-sql-client directory because ci test takes long time.

I know the reason for the error, because of the space problem, I will run mvn verify first locally, thank you

OK , Thanks for your review

The current implementation still have some problems when SQL expression contains -- characters. I help to fix this by just remove pure comment lines. @fsk119 please have a look.

In fact, I have some doubts that init and file use the same method parseStatement to parse SQL, but file can use comments and init cannot use comments. I think we should solve this problem from the root cause. What do you think ?

As far as I know, SQL Client can use comments in both mode(-i and -f). The main problem is we can't use comments around the SQL Client commands, e.g. SET/RESET.

The current implementation still have some problems when SQL expression contains -- characters. I help to fix this by just remove pure comment lines. @fsk119 please have a look.

Hi ,Thank you for your review and suggestion.
I used your code to test locally. The testInitFile method failed. The output is empty. I haven't found the reason. By the way, although the previous solution will delete the comments in the SQL, I want to know what impact it has on the future or something else ? @wuchong

@JasonLeeCoding , @fsk119  is fixing the problem.
It will make regular SQL queries failed, e.g. SELECT * FROM str = 'a--b';

@JasonLeeCoding , @fsk119 is fixing the problem.
It will make regular SQL queries failed, e.g. SELECT * FROM str = 'a--b';

OK ,got it thanks again.

After diving in this problem, I think there is no quick and easy way to fix these problems. I have opened a ticket in FLINK-22787 as a long term improvements.

The failed test case is not related to this PR. Will merge this.


fix typos in flash_shell

@dale-herman Your PR contains a commit to the ISO-TP protocol as well as changes to the flash shell. Yet, without a proper description of the your PR (it only has a title), it is difficult to know what your intentions are.
Please fix this by limiting the PR to one isolated change and provide a proper description for the reviewers.

@dale-herman ping


Using Shiki transformers with Nextra

Hey all, I'm curious if it's possible to use Shiki transformers with Nextra. I'm attempting to use the transformerNotationDiff for my code blocks on my Nextra site. See https://shiki.matsu.io/packages/transformers#transformernotationdiff.
From https://rehype-pretty.pages.dev/, it appears that we should be able to pass a transformers option to rehypePrettyCodeOptions in the next.config.js file:
const withNextra = require('nextra')({
  theme: "nextra-theme-docs",
  mdxOptions: {
    rehypePrettyCodeOptions: {
      theme: "one-dark-pro",
      transformers: [transformerNotationDiff()]

    },
  },

});

module.exports = withNextra()

The site is able to build and run with this config. However, this has no effect on the code blocks using the transformer notation. Are transformers currently supported?

Shiki transformers require rehype-pretty-code version 0.12 or higher. Nextra v2 doesn't support it, but v3 alpha does.

Shiki transformers require rehype-pretty-code version 0.12 or higher. Nextra v2 doesn't support it, but v3 alpha does.

This worked perfectly, I had to update my nextra and nextra-theme-docsdependencies. For anyone in the future, here's what I used: https://the-guild.dev/blog/nextra-3
After that, just had to add a CSS rule targeting the diff line classes added by Shiki!


pull fix from develop to master to get ready for hotfix release

Pull Request Checklist:

[x] Positive Test Case Written by Dev

[ ] Automated Testing

[ ] Sufficient User and Developer Documentation

[ ] Passing Jenkins Build

[x] Peer Code review and approval

Positive Test Case

[Enter positive test case here]

@aphelionz This PR pulls iRODS account creation get_or_create fix from develop to master to get ready for hotfix release 1.15.5. Please take a look and approve if it looks good to you. I'll then merge it once it passes tests.

What sparked this?  Is this a new issue?

Found it: https://github.com/hydroshare/hydroshare/issues/2816

Connecting this to ongoing discussions about upgrade scheduling and notifications, I am worried that adding more and more to hotfixes is not efficient use of team time.  It may be more productive and time efficient to get the code already merged into develop deployed following a systematic (i.e. not hotfix) deployment process.

@dtarb This isn't just a gratuitous cramming in -

@aphelionz Feel free to merge it when Jenkins check is complete to get it in for hotfix release. For some reason, it has been pending for a long time. Not sure whether there could be issues on Jenkins side or the waiting queue is just too long.

It was held up by my PR to merge develop into the composite resource branch.... It's been timing out at 3 hours.  I think it's just something to do with that branch so yours should come through.  I've extended the timeout to 4 hours to see if the tests really are just taking over 3 hours in the composite resource branch or not.


Dotnet example could be greatly simplified using library model objects

Using APIGatewayCustomAuthorizerResponse and related objects from Amazon.Lambda.APIGatewayEvents would greatly simplify the dotnet example.
https://github.com/aws/aws-lambda-dotnet/blob/master/Libraries/src/Amazon.Lambda.APIGatewayEvents/APIGatewayCustomAuthorizerResponse.cs

Thank you for posting this @hauntingEcho the Dotnet blueprint appears to be broken and putting in this change in my project allow it to work. I was seeing a AuthorizerConfigurationException because it wasn't able to parse the json response. I think it's because the Statement Resource and Action needed to be a HashSet instead of a string.


Remove InvalidOptionError class

Custom error classes without additional information in JavaScript add redundancy to the project.
Since the custom error class was originally defined for the use case of expressing optional irregularities, RangeError, a standard JavaScript error class, is used.
In addition, when CSV is handled as binary, the InvalidOptionError exception is raised when fatal: true is specified as an option, but TypeError is raised as the standard specification.

Summary by CodeRabbit

Bug Fixes

Enhanced error handling by removing InvalidOptionError and replacing it with standard JavaScript error types (RangeError, TypeError) across several functions.

Documentation

Updated documentation to reflect recent changes in error handling, ensuring clarity on expected error types in various functions.

@kamiazya
LGTM!


Move function values to golang duration

Moving function definitions from integers to golang duration
Signed-off-by: Martin Dekov<EMAIL_ADDRESS>

Thanks for the review @burtonr 👍

Thank you for this and @rgee0 for #84


updated postman collection and env and solved admin token issues

Can one of the admins verify this patch?

ok to test

retest this please

retest this please


[question] would it be an option to lower the requirements to php7.1?

as its often not that easy to have the latest php version available on the server. it would be awesome to lower the requirements to php7.1 (even better would be 7.0).
debian ships in its current stable realease php7.0, of course with the sury repo it is not that difficult to install 7.2 but often it is only allowed to use the official php version which would be 7.0 currently.
do you really have so much need for the 7.2 features? wouldn't 7.1 be enough?
is it worth to block some/many users from using your lib (semver 2.0)?

also if i start using the lib now, i would like to use the new method names and don't learn the old ones.

I think it's worth pointing out that this isn't just a language features thing, it's the support cost. The author maintains this library in his own free time, with no monetary support. To stretch this support over older versions of PHP just because you haven't upgraded is a really big ask IMO. Just my 2 cents, and I know not everyone really appreciates how much effort goes into these things, so just a friendly tip :)

There's more to life than just Symfony. If we're talking versions in use, firstly, Jordi's latest post indicates 7.2 adaption is gathering pace quickly (see https://seld.be/notes/php-versions-stats-2018-1-edition). Ubuntu 18.04 LTS is generally a good indicator (or driver?) of what PHP version to use as it's such a common distro - and they're on 7.2.
But I highlighted already that my point is not about "what version of PHP are most people using" it is a matter of "how much of @nikolaposa 's free time does he want to give up to support users". This is open source. No-one is paid here. Perhaps if you're working for an enterprise that has such a need of this on older PHP versions, you might consider hiring @nikolaposa to support older PHP versions. Otherwise, and I don't want to speak for him, but I think the answer is no.
So going back to your original post:

is it worth to block some/many users from using your lib (semver 2.0)?

Yes it is worth it because then @nikolaposa maintains his quality of work/life balance, has better mental health, more time with his family/friends.
From my perspective: this library is excellent. It's not the library author's fault if you're stuck on an older PHP version, so it's really unfair to ask him to give up HIS FREE TIME because your company who doesn't pay a single penny/cent/etc can continue digging their heels in.

@asgrim Thank you for you kind words, I could not have formulated that side of the story better.
@c33s Thank you for expressing your friendly opinion through this issue, I somewhat understand your point. I feel like I need to explain the intents behind my decision, instead of being a silent observer of this conversation.
Don't get me wrong, I haven't set 7.2 requirements just because cool kids do it. There's a saying in my country: what you can do today do not leave for tomorrow. After a long time I decided to upgrade some things in this library (very irresponsible on my end, I'm a lazy maintainer, I admit it), and I wanted to do as many things so that I don't have to worry for a while about making major changes except for bug fixes.
If you take a look at PHPs calendar (http://php.net/supported-versions.php), you will see that 7.1 will be actively supported just a few more months, which is another thing that goes in favor of my thinking.
PHP language evolves, but it cannot evolve if folks are stuck on older PHP versions, I hope you agree with that. One way to raise awareness and stimulate them upgrading is through this kind of initiatives.

@nikolaposa I just reviewed the code and couldn't find a single PHP 7.2 feature used. Did I miss something or could the requirement be lowered without changing anything in the library?

@kelunik Yes, it can be lowered for sure. The question is whether I should do it and then not being able to use latest features if I happen to need them for some future improvements.
IMO setting version requirement is not only about complying with the minimum language functionality that you're using, but more of being future-compatible in terms of having the opportunity to use latest features without needing to bump major version.

Yes: support scope would be changed.  Not sure what is not clear here:
supporting more versions of PHP means more of maintainers time. Simple. By
asking for more versions of PHP to be supported, you are asking the author
to give up potentially more of their own free time. It is no-one else's
decision except the maintainer's. Remember: this is open source, if you
don't like the way a project is run, fork it and support PHP 7.1 yourself,
but don't expect this, it is totally unfair to expect more of @nikolaposa
time than he already dedicates if he doesn't want to: even if it IS
technically possible. If he wants to do it, he can and and will.
On Thu, 17 May 2018, 08:50 Niklas Keller<EMAIL_ADDRESS>wrote:

@nikolaposa https://github.com/nikolaposa I just reviewed the code and
couldn't find a single PHP 7.2 feature used. Did I miss something or could
the requirement be lowered without changing anything in the library?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nikolaposa/version/issues/19#issuecomment-389777191,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAeSEakpR2qIiXOXjWeYGjaKWn7fnrAHks5tzSvEgaJpZM4T3fwv
.

@asgrim Of course, we all got that I think.
@nikolaposa You can raise the minimum version requirement at any time without releasing a new major version. I personally don't care, I was just trying to help.

You can raise the minimum version requirement at any time without releasing a new major version. I personally don't care, I was just trying to help.
@kelunik I'm still not sure whether raising minimum version requirement should be considered BC break or not. Opinions vary.


https://github.com/xdan/jodit/issues/150 - Fixed for emedding in a popout

Fixes #

Fixed bug where dialogs in popouts showed in the main window
Fixed references to instanceof to use nodeType instead which works across documents.
Fixed issue where passing in ownerDocument and ownerWindow in config was cloned and therefore did not work
Fixed issue where this.jodit.create did not work since this.create was unaware of the options ownerDocument and ownerWindow - we should improve how this is done at some point.
Fixed some spelling errors

Most of changes inside new version. I will close this PR


Clarify use of import() with ES2015 modules.

The examples on the page show usage with commonjs modules but not ES2015 modules, which was confusing for me when I tried to import ES2015 modules.
See https://github.com/webpack/webpack/issues/3829. My provided examples could probably use some work, though I was trying to come up with something generic that doesn't introduce too many concepts at once. My personal use case is for HMR with a React component and Redux reducers:
if (module.hot) {
  module.hot.accept('./root', async () => {
    mount((await import('./root')).default);
  });
  module.hot.accept('./reducers', async () => {
    store.replaceReducer((await import('./reducers')).default);
  });
}

I rebased this PR to resolve the conflicts (due to 11ee3885ad5d6c2bdb6e745a6d5ea962f1782481), and incorporated some changes.
Yet to be clarified+incorporated is the review https://github.com/webpack/webpack.js.org/pull/1109#pullrequestreview-32927159


Adding preact-cli's build location

Summary
Adding preact-cli to the static site generators list

@prateekbh it might not be real clear, but the folder location should be where to put the /admin directory and assets (config.yml, index.html) in the repository of your site. If someone put them in /build, they would get deleted during the build command, correct?

oh right, yes

@talves a question: if we introduce a folder e.g. static  by which we can site.com/admin/index.html and site.com/admin/config.yml are exposed as URLs would that suffice?

yeah, that is the way some other static site generators are accomplishing it. It is just important to not mislead what the column is being used for.

We do now support the same: https://github.com/preactjs/preact-cli/pull/866/files


Add file lock to system matrix

If multiple processes try to write the same system matrix file, there will be issues.
A file lock needs to be implemented for this.

Good News! We have finally gotten to the point that this is creating problems. When doing 4D reconstructions, the different 3D processes collide.
Here is what I propose, but Jordan is the expert:

The C code needs to check if the system matrix file exists immediately before it writes it out.
If the file exists, then it should not write anything out.
If the file doesn't exist, it should lock the file name, and write out the file.

What do you think?

Here is pseudo-code for fix.
sys_matrix_file_name = Desired name of System Matrix

int =write_system_matrix( system_matrix, sys_matrix_file_name )
{
        tmp_name = cat( sys_matrix_file_name, process_id, random number );
        if(tmp_name does not exist)
                write out SystemMatrix to tmp_name;
        else {
                print("Temporary file already exists")
                return(-1);
                }

        If(sys_matrix_file_name does not exist) {
                mv tmp_name to sys_matrix_file_name;
                return(0);
                }
        else {
                rm tmp_name;
                print("System matrix file already exists")
                return(-1);
                }
}

Bug fix in commit https://github.com/cabouman/svmbir/commit/217155cbbccb81d9852192cf8b33391f19af28b4
Ready to test.
Here's a what you'll see in std-out when no matrix file exists on disk:
Computing system matrix...
Writing system matrix...
C subroutine: Writing sysmatrix to file /Users/dyangsteven/.cache/svmbir/sysmatrix/7be71c6fa3b024f576ee_pid96793_rndnum296.2Dsvmatrix.
Move tmp file to location /Users/dyangsteven/.cache/svmbir/sysmatrix/7be71c6fa3b024f576ee.2Dsvmatrix

Here's what you'll see when a matrix file exists:
Computing system matrix...
Writing system matrix...
C subroutine: Writing sysmatrix to file /Users/dyangsteven/.cache/svmbir/sysmatrix/7be71c6fa3b024f576ee_pid97202_rndnum603.2Dsvmatrix.
('Found system matrix: /Users/dyangsteven/.cache/svmbir/sysmatrix/7be71c6fa3b024f576ee.2Dsvmatrix', '. Remove tmp matrix file.')

The std-out message C subroutine, Writing sys matrix to file ... is manually added in the submodule sv-mbirct, and is not included in the commit. To see this message please manually add the following line of code in line 699 of src/A_comp.c:
printf("C subroutine: Writing sysmatrix to file %s.\n", fname);

Modified code as advised by @sjkisner .
Std-out when matrix file exists:
Found system matrix: /home/yang1467/.cache/svmbir/sysmatrix/bc0b0940eb4abd0cc86e.2Dsvmatrix
Reading system matrix...

std-out when matrix file does not exist:
Computing system matrix...
Writing system matrix...
C subroutine: Writing sysmatrix to file /home/yang1467/.cache/svmbir/sysmatrix/bc0b0940eb4abd0cc86e_pid22699_rndnum592.2Dsvmatrix.

We added the fix by writing to a tmp file, and moving to the system file name.


fix port not assigned issue

fix port not assigned issue
port was not assigned so that by default notebook tests passed but javascript failed to load when using None for port

" but as an interpreted language, could the reassigning before validating be costly?"
not for a boolean on 100 tries, but logically it makes sense to put it after if anyway


Assignment 1

I had some problems with time. For example the last problem would have taken maybe an eternity to give a result, that solved with matrices and stuff. But I've solved them, so the results should be correct or close.

Yes, of course, the time for the recursive Fibonacci computing is exponential so it takes an eternity to run for large enough numbers

Good work otherwise, the code is clean, nicely organized and formatted


clearMocks clears mocks once and forever

You can only clear mocks once. Every "mocked" request after that will use real fetch.
describe('Auth API', () => {
  afterEach(() => {
    clearMocks()
  })

  test('GET foo', async () => {
    mock('https://example.com/', { data: { name: 'Foo' } })
    await fetch('https://example.com/')
    expect(res.status).toBe(200) // <<- OK
  })

  test('GET foo', async () => {
    mock('https://example.com/', { data: { name: 'Bar' } })
    await fetch('https://example.com/')
    expect(res.status).toBe(200) // <<- INTERNET
  })
})

Thanks for the contribution @SpeCT 🚀
Your PRs has been merged and are included in the 1.0.9 release.


Use pkg config

@billatarm how to test the pkg-config feature locally? The CI doesn't do it right now so want to test it manually.
Installing mbedtls with your pkg-config patch and then building this crate, is it sufficient? :)

Thanks for the steps @billatarm
I just tested the pkg-config changes with the mbedtls PR that you put up and it works all well.


dat.close() should probably also call dat.leave()

I was writing a scraper for Rotonde and seeing massive memory leaks in a short amount of time, this despite calling dat.close(). A friend debugged the cause to the network not being left; adding dat.leave() appears to have solved that issue.
Is this intended behaviour of dat.close()? If that's the case y'all might want to mention dat.leave() in the same paragraph as dat.close() in the readme.

Hey @cblgh , couldn't reproduce and I added a test. https://github.com/datproject/dat-node/pull/174
It seems like dat.leave() is getting called. I wonder if you can find out what your self.network is here when you run close, just to make sure the code path isn't getting skipped (it seems like if self.network doesn't exist, it will just return out with no message)
https://github.com/datproject/dat-node/blob/master/dat.js#L227

+1 to what karissa said while I was typing =)
If you can, run the one with a leak with DEBUG=dat-node to see if its trying to call leave, its possible the mutlicb thing isn't doing what is expected.

I have been having a similar, potentially related issue. I haven't been able to reproduce the problem in isolation, but it occurs reliably during the test suite for dat-friend. I've created an issue in that repo with some log details, such as an excerpt of results from DEBUG=* npm test

Hmm, thanks. Look likes neither bittorrent-dht or dns-discovery are getting closed. Will look into those!


FFC does not work on safari

Repro steps

Open FFC in Desktop Safari with people active in the room

Expected Result
You see everyone and can use FFC
Actual Result
You are the only person in the room. other people see you entered in chat.
System Info

maybe @coeneivan can help debug? @MathiasDeWeerdt  I don't have a mac myself, KVS reported the issue

Enable/disable camera&mic doesn't work

Safari can SOMETIMES join meetings

Safari can SOMETIMES join meetings

This is fixed now by changing the codec

Disabled the unsupported functions in safari


Exception in getVarInfo() when compiling blocks

Seeing this a lot in the telemetry:
TypeError: Cannot read property declaredVars of undefined
at getVarInfo
at lookup
at compileSet
at compileStatementBlock
at compileStatements
at compileEvent
at compileCall
at compileStatementBlock
Also shows up in minecraft

Closing this. Will do a new pass on telemetry.


Option for image preview nodes not to get upstream updates

or to limit how far upstream
In complex workflows, it can be a bit confusing for an image preview to show something that is nothing to do with it (eg a face detailer image preview showing the whole first stage image).
Option one: each image node has a toggle (show upstream progress / don't) defaulting to on
Option two: global limit on how far upstream to look
Option three: each node has limit on how far upstream to look

I prefer option one.
But I don't think none of them it's really necessary.
The current behavior it's perfect for the Controller.
You can see the current generation for all stages in the same large preview area.

This is my setup:

I have all the Image Preview nodes for each stage, in separate groups ( color coded ).
And I have a "Final Preview" group, just with an Image Preview ( in blue )
( this is not necessary, but it makes it less confusing, as you mentioned )

All these groups have buttons, in the large preview area.
The "Final Preview" group it's always selected. I only need to select the other preview groups to compare or save images.
In the sampler groups, I can see still a small preview, in the Sampler node
But I can always see the larger version of that, in the "Final Preview" group, as it's being generated.

And when the generation is finished, I have the final image in the large preview area. It works like magic !

With [ option one ] I could toggle off "show upstream progress", in all preview nodes, except the one in the "Final Preview" group.
The way I have it, I don't see that, anyways, but it could be useful in other configurations.

I think I prefer option one.
My workflow has a number of detailers, including previewers for the detail
areas. I find it unhelpful to see the initial image appearing in the detail
preview node.
But it's not a big issue.
On Wed, 11 Dec 2024 at 10:23, JorgeR81 @.***> wrote:

With [ option one ] I could toggle off "show upstream progress", in all
preview nodes, except the one in the "Final Preview" group.
The way I have it, I don't see that, anyways, but it could be useful in
other configurations.
—
Reply to this email directly, view it on GitHub
https://github.com/chrisgoringe/cg-controller/issues/434#issuecomment-2533205287,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBLMA3A6EMEL3YRFJ66V6L2E5ZWTAVCNFSM6AAAAABTMDGN2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMZTGIYDKMRYG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

Yeah, it if had the Image Preview, in each sampler/detailer group, I would want to disable "upstream progress", for them.
I think it could be usefull, in that configuration.

done on dev

I just tried the same workflow, in the main branch, and it works.
All Preview Image nodes have the "live preview", from the first stage.

I've just reverted the latest change on dev - can you look now?

I've updated dev and I don't have this feature.
But I still have this bug !
So the bug may be created by another change.

Could you file it as a separate bug
On Thu, 12 Dec 2024 at 7:54 am, Chris Goringe @.***>
wrote:

Yeah that’s what I thought
On Thu, 12 Dec 2024 at 7:39 am, JorgeR81 @.***> wrote:

I've updated dev and now I don't have this feature.
But I still have this bug !
So the bug may be created by another change.
—
Reply to this email directly, view it on GitHub
https://github.com/chrisgoringe/cg-controller/issues/434#issuecomment-2537093041,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBLMA7YLF5V2PMZBTTIKU32FCPGLAVCNFSM6AAAAABTMDGN2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMZXGA4TGMBUGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

Could you file it as a separate bug

OK, done.


Create an impl Nl for u64 to help support u64s in Netlink responses

In src/lib.rs there are implementations of the Nl trait for a number of common types. An unsigned 64 bit integer (u64) is another common type that does not have an yet have implementation. This type can be found in several Netlink apis, including Wireguard (see the attribute WGPEER_A_RX_BYTES). It would help developers using neli to interact with these apis if this impl was provided by the library.
The underlying libraries used by neli seem to provide the methods you would need to create impl Nl for u64 more or less the same way as the the impl Nl for u32 and impl Nl for u16 that already exist in neli. It should be a simple matter to add the support for u64 as well.
I think I will need this to go forward with a project I am working on now: interfacing with the Wireguard kernel api (generic netlink) using neli. I could submit a pull request with my impl added to this library.
I would love some feedback about adding support (Nl impls) for this type and other Wireguard related types to Neli.

@Dieff Hey there! I'm happy to accept a PR or work this into the 0.4.0 release. Either way, just let me know which you would prefer so we don't duplicate work.

If you would like it as soon as possible, let me know and I'll branch off of the last release and add a revision release and push that to crates.io then incorporate that into 0.4.0. Unfortunately I've been pulled in a few different directions so that release is taking a bit longer than I'd hoped.

I think I'll take a stab at writing the impl as it seems pretty simple and it would be nice for me to have quickly. I'll open a pr when I get it working.

#12 merged.
As discussed, please open another issue regarding the impl Nl discussion as I'd definitely like to resolve that with you. Thanks!


Segment users by interaction frequency and recent activity [JS]

Sample query here

Would need to add case for "high value user" (someone who's interacted more than 10 times over the past 30 days)
Also need some way of calculating the % of all-time users this represents

project_name
unique_devs
active_devs
high_value_devs
unique_users
active_users
high_value_users
shared_devs
shared_users

0xSplits
259
21
3
39
39
6
169
36

Safe
3985
258
31
27085
27085
2952
3984
19051

Uniswap
31492
747
31
61812
61812
4882
1765
45968

@ryscheng bumping this one, as it's blocking the remaining components in the Project Page
Definitions
Onchain

a user is a unique address that has interacted with a project's contract over a date range
a new user is a user that had their first interaction in the past 90 days
a churned user is a user that has not had an interaction in the past 90 days
a active user is a user that has had an interaction in a given month
a high frequency user is a active user that has more than 1000 interactions in that month
a high value user is an active user that has had 10-999 interactions in that month
a low value user is an active user that has had 1-9 interactions in that month

GitHub

a contributor is a unique account that has committed code, opened or closed issues, opened or merged PRs over a date range
a developer is a contributor that has committed code
a new contributor is a contributor that had their first contribution in the past 90 days
a churned contributor is a contributor that has not had made a contribution in the past 90 days
a active contributor is a contributor that has made a contribution in a given month
a full-time developer is an active developer that has contributed on 10+ days in that month
a part-time developer is an active developer that has contributed on <10 days in that month
a other contributor is any other contributor not included in the full-time and part-time developer sets in that month

@ryscheng update:
I have the user cards working now, we just need to get the Area Charts. I don't think we have the data to this currently ...
Summary of what we need:
Onchain
A stacked area chart of different types of onchain users. The total of the stack is the monthly active users. There are three types of active users.

[ ] a high frequency user is a active user that has more than 1000 interactions in that month
[ ] a high value user is an active user that has had 10-999 interactions in that month
[ ] a low value user is an active user that has had 1-9 interactions in that month

GitHub
A stacked area chart of different types of contributors. The total of the stack is the monthly active contributors. There are three types of active contributors.

[ ] a full-time developer is an active developer that has contributed on 10+ days in that month
[ ] a part-time developer is an active developer that has contributed on <10 days in that month
[ ] a other contributor is any other contributor not included in the full-time and part-time developer sets in that month

Just documenting some stuff I tried

Creating a view of artifacts that define your status as a high/low value user. Then filter out events where the 'fromId' can be joined against this view. This doesn't work because we want a sliding window -- you can be high value one month and low value another
For each event type, create separate "amount" columns for high vs low value. This doesn't work well because the definitions depend on the artifactType and/or eventType
Create a materialized view for every user definition. This explodes the space of materialized views, because we need one for every {day,week,month} and for {artifacts,projects}. So 6 views for every user definition. This also gets really messy wiring it up to the frontend, which has to switch which view we are querying.
Create new event types (e.g. COMMIT_CODE_FULL_TIME vs COMMIT_CODE_PART_TIME). The events_daily_by_artifact materialized view definitions will need to add new rows for each user definition, in addition to all the rows it already has.

We are going to go with option 4 for now, out of expediency.
Pros: This works without any code changes outside of the new definition/migration.
Cons: If we ever change a user definition, we have to rebuild all of our aggregates, which will be costly and painful.
What was nice about option 3 was that we could more easily add/remove new user definitions incrementally without tearing out our existing aggregates. But not worth the mess.
Worth some additional thought on how to get the best of both worlds in the future

OK, so this query appears to work for GitHub artifacts:
SELECT
    e."toId" AS artifact_id,
    e."fromId" AS contributor_id,
    TO_CHAR(e."time", 'YYYY-MM') AS month_year,
    CASE
        WHEN COUNT(DISTINCT CASE WHEN e."typeId" = 4 THEN e."time" END) >= 10 THEN 'FULL_TIME_DEV'
        WHEN COUNT(DISTINCT CASE WHEN e."typeId" = 4 THEN e."time" END) >= 1 THEN 'PART_TIME_DEV'
        ELSE 'OTHER_CONTRIBUTOR'
    END AS status,
    1 AS amount
FROM
    event e
WHERE
    e."typeId" IN (
        2, -- PULL_REQUEST_CREATED
        3, -- PULL_REQUEST_MERGED
        4, -- COMMIT_CODE
        6, -- ISSUE_CLOSED
        18 -- ISSUE_CREATED
    )
    -- AND e."toId" = 420126 -- uncomment for testing purposes
GROUP BY
    e."toId",
    e."fromId",
    TO_CHAR(e."time", 'YYYY-MM');

And this works for contract addresses and active onchain users:
SELECT
    e."toId" AS artifact_id,
    e."fromId" AS contributor_id,
    TO_CHAR(e."time", 'YYYY-MM') AS month_year,
    CASE
        WHEN SUM(e."amount") >= 1000 THEN 'HIGH_FREQUENCY_USER'
        WHEN SUM(e."amount") >= 10 THEN 'HIGH_VALUE_USER'
        ELSE 'LOW_VALUE_USER'
    END AS status,
    1 AS amount
FROM
    event e
WHERE
    e."typeId" = 25 -- CONTRACT_INVOCATION_DAILY_COUNT
    -- AND e."toId" = 2989 -- uncomment for testing purposes
GROUP BY
    e."toId",
    e."fromId",
    TO_CHAR(e."time", 'YYYY-MM');

Couple things

amount is variable, shouldn't be hard coded as 1.
I'm not sure the status definitions are correct?  As opposed to marking if the fromId represents a user that made a certain number of commits in a windowed month?
we need to use timescale aggregates to bucket by date (see Ron-entities)
and this just marks a status, we need to create new rows in the aggregate that are different event types depending on the status

Here's a sample result (for OSO repo):
[['artifact_id', 'contributor_id', 'month_year', 'status', 'amount'],
(420126, 38521, '2023-10', 'FULL_TIME_DEV', 1),
(420126, 38523, '2023-10', 'FULL_TIME_DEV', 1),
(420126, 127856, '2023-10', 'FULL_TIME_DEV', 1),
(420126, 35760, '2023-09', 'PART_TIME_DEV', 1),
(420126, 38521, '2023-09', 'FULL_TIME_DEV', 1),
(420126, 38523, '2023-09', 'FULL_TIME_DEV', 1),
(420126, 127856, '2023-09', 'FULL_TIME_DEV', 1),
(420126, 38521, '2023-08', 'FULL_TIME_DEV', 1),
(420126, 38523, '2023-08', 'PART_TIME_DEV', 1),
(420126, 127856, '2023-08', 'PART_TIME_DEV', 1),
(420126, 38521, '2023-07', 'PART_TIME_DEV', 1),
(420126, 38523, '2023-07', 'PART_TIME_DEV', 1),
(420126, 38521, '2023-06', 'OTHER_CONTRIBUTOR', 1),
(420126, 38523, '2023-06', 'OTHER_CONTRIBUTOR', 1),
(420126, 38891, '2023-06', 'OTHER_CONTRIBUTOR', 1),
(420126, 38521, '2023-05', 'OTHER_CONTRIBUTOR', 1),
(420126, 38523, '2023-05', 'OTHER_CONTRIBUTOR', 1),
(420126, 38521, '2023-04', 'OTHER_CONTRIBUTOR', 1),
(420126, 38523, '2023-04', 'OTHER_CONTRIBUTOR', 1),
(420126, 38521, '2023-03', 'OTHER_CONTRIBUTOR', 1)]

amount is variable, shouldn't be hard coded as 1.

This means that contributorId is a {event_type} to that artifactId in that month_year

I'm not sure the status definitions are correct?  As opposed to marking if the fromId represents a user that made a certain number of commits in a windowed month?

The Electric Capital definition of a full-time dev is anyone who commits more than 10 days in a month. (The same would be true if we indexed on projectId)

we need to use timescale aggregates to bucket by date (see Ron-entities)

The raw events are already aggregated by day; technically we only need these metrics for monthly buckets

and this just marks a status, we need to create new rows in the aggregate that are different event types depending on the status

hmm ...  status is the same asevent_type. the correct thing would be to create an eventId for FULL_TIME_DEV, etc. if you mean something else, then I'm confused

Okay, at the sprint meeting we realized there was a big misunderstanding.
My understanding = we wanted to be able to easily segment all events by the type of fromId. Ie. easily aggregate an event type by the user doing the actions. Like count all commits performed by full-time vs part-time devs. This led me down a rather convoluted design to try to make this work for any event type and any new user definition.
Turns out we want something simpler, which is just a monthly count of the different types of users interacting with the project.
I think we still might need to create new materialized views for this, but still easier than what I was trying to do.

@ryscheng
Part 1:
WITH Devs AS (

    SELECT
        p."id" AS "projectId",
        e."fromId" AS "fromId",
        TO_CHAR(DATE_TRUNC('MONTH', e."time"), 'YYYY-MM-01') AS "bucketMonthly",
        CASE
            WHEN COUNT(DISTINCT CASE WHEN e."typeId" = 4 THEN e."time" END) >= 10 THEN 'FULL_TIME_DEV'
            WHEN COUNT(DISTINCT CASE WHEN e."typeId" = 4 THEN e."time" END) >= 1 THEN 'PART_TIME_DEV'
            ELSE 'OTHER_CONTRIBUTOR'
        END AS "devType",
        1 AS amount
    FROM
        event e
    JOIN
        project_artifacts_artifact paa ON e."toId" = paa."artifactId"
    JOIN
        project p ON paa."projectId" = p.id

    WHERE
        e."typeId" IN (
            2, -- PULL_REQUEST_CREATED
            3, -- PULL_REQUEST_MERGED
            4, -- COMMIT_CODE
            6, -- ISSUE_CLOSED
            18 -- ISSUE_CREATED
        )
        AND e."toId" = 420126 -- uncomment for testing purposes
    GROUP BY
        p."id",
        e."fromId",
        TO_CHAR(DATE_TRUNC('MONTH', e."time"), 'YYYY-MM-01')
)
SELECT
    Devs."projectId",
    Devs."devType",
    Devs."bucketMonthly",
    SUM(Devs."amount") AS "amount"
FROM
    Devs
GROUP BY
    Devs."projectId",
    Devs."devType",
    Devs."bucketMonthly";

Couple minor changes

using time_bucket instead of string operations on the date.
joining on the event_type table so we can use names instead of typeId

WITH Devs AS (
      SELECT
        p."id" AS "projectId",
        e."fromId" AS "fromId",
        time_bucket(INTERVAL '1 month', e."time") AS "bucketMonthly",
        CASE
          WHEN COUNT(DISTINCT CASE WHEN t."name" = 'COMMIT_CODE' THEN e."time" END) >= 10 THEN 'FULL_TIME_DEV'
          WHEN COUNT(DISTINCT CASE WHEN t."name" = 'COMMIT_CODE' THEN e."time" END) >= 1 THEN 'PART_TIME_DEV'
          ELSE 'OTHER_CONTRIBUTOR'
        END AS "segmentType",
        1 AS amount
      FROM event e
      JOIN project_artifacts_artifact paa ON e."toId" = paa."artifactId"
      JOIN project p ON paa."projectId" = p.id
      JOIN event_type t ON e."typeId" = t.id
      WHERE
        t."name" IN (
          'PULL_REQUEST_CREATED',
          'PULL_REQUEST_MERGED',
          'COMMIT_CODE',
          'ISSUE_CLOSED',
          'ISSUE_CREATED'
        )
      GROUP BY
        p."id",
        e."fromId",
        "bucketMonthly"
    ),
    Users AS (
      SELECT
          p."id" AS "projectId",
          e."fromId" AS "fromId",
          time_bucket(INTERVAL '1 month', e."time") AS "bucketMonthly",
          CASE
              WHEN SUM(e."amount") >= 1000 THEN 'HIGH_FREQUENCY_USER'
              WHEN SUM(e."amount") >= 10 THEN 'HIGH_VALUE_USER'
              ELSE 'LOW_VALUE_USER'
          END AS "segmentType",
          1 AS amount
      FROM event e
      JOIN project_artifacts_artifact paa ON e."toId" = paa."artifactId"
      JOIN project p ON paa."projectId" = p.id
      JOIN event_type t ON e."typeId" = t.id
      WHERE t."name" = 'CONTRACT_INVOCATION_DAILY_COUNT'
      GROUP BY
        p."id",
        e."fromId",
        "bucketMonthly"
    )
    SELECT
      "projectId",
      "segmentType",
      "bucketMonthly",
      SUM("amount") AS "amount"
    FROM
      (
          SELECT * FROM Devs
          UNION ALL
          SELECT * FROM Users
      ) combined_data
    GROUP BY
      "projectId",
      "segmentType",
      "bucketMonthly";

https://github.com/opensource-observer/oso/pull/530/files

Add DataProvider here
https://github.com/opensource-observer/oso/pull/534

Wired it up! Shipped 🚀 🚀


Broken on Node v6: base_dir resolved incorrectly

The base_dir variable is resolved using the whole f.src Array instead of the single value filepath here: https://github.com/asciidoctor/asciidoctor-grunt-plugin/blob/master/tasks/asciidoctor.js#L83.
That was probably never correct (why resolve base directory from the full array of source files instead of the one being currently handled?), but worked on Node.js <v6 as path.dirname did not assert that the given argument be a String and gave some usable answer from a stringified Array.
That logic broke on v6.0.0 (see relevant change here: https://github.com/nodejs/node/pull/5348/files#diff-c0fae59301ef49fb71b43278db9ad881L738) resulting on this plugin not working on >= v6.0.0.

PR for fix: https://github.com/asciidoctor/asciidoctor-grunt-plugin/pull/10


docs: add TRANSLATION.md

Add TRANSLATION.md and link from README.md
@lstein @blessedcoolant
Here is a blub for the 2.3.1 release, needs editing to link to the docs correctly as I'm not sure about how the links are generated:
We have migrated our translation efforts to Weblate, a FOSS translation product. Maintaining the growing project's translations is now far simpler for the maintainers and community. Please review our brief [translation guide](LINK TO DOCS PAGE HERE) for more information on how to contribute.

Make this against the 2.3.1 branch please. Rest seems good.


Support custom celeryconfig modules

I wanted to use this but had a custom celery config module, so I made this change to support it.

Coverage increased (+0.2%) to 95.238% when pulling 8b1cc3581a08e7f2b70fdfa82cd392dd24b8bcc7 on phrfpeixoto:custom_celeryconfig into cf8aa80980e42f7235ad361874d3c35e19963b60 on sontek:master.

@phrfpeixoto Could you implement this a little differently:

Keep use_celeryconfig as a boolean.
Introduce a new field celery_config_module (or a better name if you have one) and load it from there if set

So use_celeryconfig = true + celery_config_module = app.celeryconfig would do what you want, otherwise without a module said it would use the default behavior

Will do.

@sontek Done.

Is this still relevant?


Is it clean to have Autofac Referenced in Infrastructure?

I've been looking through the code, I like it and it is very similar to how some projects I've written are laid out. I have an issue though with referencing Autofac in the DomainEventDispatcher class and therefore in the Infrastructure project.
As the web project acts as the composition root shouldn't this be the only place that uses an IoC container?  I work with some legacy projects that have Ninject referenced into internal Nuget packages and it's making it very hard to move away from Ninject cleanly or easily.

It's not unusual in my own projects for me to end up making a decision to rely on a particular IoC container throughout my entire architecture, because it provides some cross-cutting beneficial behavior. Most often, this is event-related, such as if I use Udi Dahan's static DomainEvents class, which relies on StructureMap (but could easily be modified to use another container). Often in that case it's not only in Infrastructure, but in Core or perhaps SharedKernel.
In an ideal world, I agree with you that the container would only be in the composition root / application entry point. However, this is one area where pragmatism often leads me to accept the dependency, at which point I just try to limit how many places know about the container implementation (typically just one class in a given project). As long as you're limiting it to 1-2 classes per project that know about the container implementation, I don't think it's too bad from a coupling/technical debt perspective.
I'm curious how you're using Ninject in your legacy projects that's making it hard to switch to another implementation. That sounds like you have many integration points with Ninject, which I agree is not ideal.

Closing. Feel free to reopen if you have more questions.


fix: flash bank impl visibility

Adjusts the visibility of various Flash Bank methods which will help users determine memory locations of sectors etc.
For example if the user is writing a bootloader beginning at Bank 1, Sector 6, and they need to know the address to jump to, this will allow them easily.

bors r+


Use Button Shortcut property

Suggestion from Lars:
The workaround where you manually call emit_signal("pressed") on the StartButton is not necessary. Buttons have a Shortcut property in the inspector where you can define what action can be used to press that button.

Setting the Shortcut property is complex too.  Maybe just remove this entirely - is pressing space to start necessary?

I'd prefer leaving it out altogether to using script code. A property has exactly one place and exactly one purpose. Script code could go pretty much anywhere and could do pretty much anything, so it will statistically introduce more bugs and will be harder to debug.
How about visually showing that this step is optional? For example you could use a shaded box like for the "Tip"-elements. Or even link to a new page if you worry that it might look complicated enough to demotivate people.

Well, I've confirmed that the button ShortCut property is currently broken in 3.0.  I'll keep an eye on this and hopefully by release we'll be able to use it.

That's unfortunate. On first sight it looked fixed since in version 2.1.x even setting a shortcut didn't work.


Effective usage of SVM for unknown faces and small datasets

face_recognition version: 1.2.3
Python version: 3.6
Operating System: OSX

Description
I've been experimenting with using SVMs for working with multiple faces per person, based on the example for SVM here.
Here are the challenges I am facing:

using clf.predict (ref)  always matches to at least one known category. How do we go about setting a threshold of some sorts to not match a category? We need this to say "I don't recognize that face"

Unfortunately, enabling probability=True while instantiating the SVC and then using predict_proba doesn't work at all for small datasets. All probabilities are almost evenly split between categories even when you directly supply the same image you used for training. The sklearn documentation also corroborates this -> 'Also, it will produce meaningless results on very small datasets'

knn works well, maybe SVM is not suited for this case?

Thanks.

I have used a KNN for a similar task to exploit the fact I can use the fact I can get a distance from the new observation. For instance if I have a 3 NN model, I use the kneighbors function on the trained model to get an array of distances, which I then average and compare to a certain threshold, that is if the average distance of the new observation is lower than my threshold, I would return the model's prediction, otherwise I would return that the face has not been recognized.
If you insist on using SVM, you should look into one-class SVM, which are generally used for outlier-detection, but could be used in your case to detect if a new observation is an 'outlier' to your training set.

Thank you. Yes I’ve abandoned SVMs and gone with KNNs. I did not realize this was still open.


Add Store and Set Actor Directions using Variables

Please check if the PR fulfills these requirements

[x] The commit message follows our guidelines
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Adding 2 script events:
Actor: Store Direction in Variable
Actor: Set Direction using Variable

What is the current behavior? (You can also link to an open issue here)
You could only set direction with arrow buttons.

What is the new behavior (if this is a feature change)?
Doesnt affect any previous features.

Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
No

Other information:

Works great! Thanks for adding this.

@ManuGamesDev Only just spotted it but looks like this pull request removed your Comment feature! I've just added it back in though. Ooops


Upgrade from 1.1.1-dev to 1.1.2-dev breaks html

This bug is IOS and "ionic run ios" only.
Unable to reproduce with "live reload".
Ionic info:
Cordova CLI: 6.5.0
Ionic Framework Version: 2.0.0
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
Ionic App Scripts Version: 1.0.0
ios-deploy version: 1.9.0
ios-sim version: 5.0.13
OS: macOS Sierra
Node Version: v7.2.0
Xcode version: Xcode 8.2.1 Build version 8C1002
After some hours of debugging, I finally found the source of my video not playing.
Inline or not, does not matter. 1.1.2-dev will not play this line of code:
<video id="video" autoplay loop webkit-playsinline playsinline poster="" class="loginvid">
    <source src="assets/vid/vid.mp4" type="video/mp4">
  </video>

To reproduce, clone ionic-conference-app, and run this code with this plugin installed (v.1.1.2-dev).
Then revert back to 1.1.1, which will play the video nicely.
The "preference name="AllowInlineMediaPlayback" value="true" />" must be added to the config.xml of course.

Thanks for the hint with 1.1.1. Got the same problem with 1.1.2-dev and reverting also helped in my case. So I guess something relevant changed in between.

Is this not related? https://github.com/driftyco/cordova-plugin-wkwebview-engine/issues/80

Also #80 is bugging me as well (which I solved using local webserver) I don't think it is related. In my case the video file is stored where WKWebview can read the content while in #80 WKWebview does not allow to access files outside www folder. Especially since downgrading helps it shows we are not talking about a WKWebview limitation.

We use a local device webserver to serve video via  successfully.

@repetier @michaelpeterlee @dylanvdmerwe this should be fixed in the current version, can you try reinstall?

Works thank you @manucorporat. I had to remove this Cordova plugin a few times for it to update to latest changes. This mitigates documenting GCDWebServer component for us; Just install this plugin!


deepEquals

Coverage increased (+0.06%) to 89.518% when pulling 4ccdb78b9399614ff8dddd2bf17b7c20b2e33de8 on deepEquals into a82ff4d6904454634a5cf365058b9ce05a75b170 on master.


containers: add support for pods network metrics

This PR adds the support for collecting pods network metrics (not that it's supported by heapster/hawkular).

@miq-bot add_label providers/containers, enhancement, metrics

cc @blomquisg @zeari @yaacov

@alongoldboim @yaacov @zeari @moolitayer please review.

LGTM :+1:

LGTM too :+1:

LGTM :+1:

@chessbyte @blomquisg @Fryguy :+1: ready for merge. Thanks!


[timeseries] DirectTabular & RecursiveTabular models fail if eval_metric = "WAPE"

Bug Report Checklist

[x] I provided code that demonstrates a minimal reproducible example.
[x] I confirmed bug exists on the latest mainline of AutoGluon via source install.
[ ] I confirmed bug exists on the latest stable version of AutoGluon.

Describe the bug
If eval_metric=="WAPE" in TimeSeriesPredictor, DirectTabular & RecursiveTabular fail during training.
Expected behavior
Models train normally.
To Reproduce
from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor
data = TimeSeriesDataFrame("https://autogluon.s3-us-west-2.amazonaws.com/datasets/timeseries/m4_hourly_tiny/train.csv")
predictor = TimeSeriesPredictor(eval_metric="WAPE").fit(data, hyperparameters={"DirectTabular": {}, "RecursiveTabular": {}})

Error message
Models that will be trained: ['RecursiveTabular', 'DirectTabular']
Training timeseries model RecursiveTabular.
	Warning: Exception caused RecursiveTabular to fail during training... Skipping this model.
	Can't pickle <function mean_absolute_error at 0x7f8fab2b0700>: it's not the same object as sklearn.metrics._regression.mean_absolute_error
Training timeseries model DirectTabular.
	Warning: Exception caused DirectTabular to fail during training... Skipping this model.
	Can't pickle <function mean_absolute_error at 0x7f8fab2b0700>: it's not the same object as sklearn.metrics._regression.mean_absolute_error
Training complete. Models trained: []

Installed Versions
AutoGluon v1.0

Hi, thank you for reporting the problem.
Unfortunately, I wasn't able to reproduce it on my machine. In a clean Python 3.10 environment on Linux with AutoGluon installed via pip install autogluon, the code that you shared results in both models train without failures.
Can you please share the output of the following command?
from autogluon.core.utils import show_versions
show_versions()

Are there any additional import statements in your script/notebook, or do you only execute the following 3 lines?
from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor
data = TimeSeriesDataFrame("https://autogluon.s3-us-west-2.amazonaws.com/datasets/timeseries/m4_hourly_tiny/train.csv")
predictor = TimeSeriesPredictor(eval_metric="WAPE").fit(data, hyperparameters={"DirectTabular": {}, "RecursiveTabular": {}})

I install autogluon.timeseries==1.0.0 via pip, as well as a private utilities package, whose requirements are :
boto3==1.24.59
pandas==1.3.5
freezegun==1.2.2
pyyaml==5.4.1
uritools==4.0.0
pyarrow==8.0.0
fsspec==2022.8.2
chispa==0.9.2
pydeequ==1.0.1

Then I only execute the 3 lines.

According to the documentation, ML Runtime comes with scikit-learn-1.1.1, while the AutoGluon installation installs version scikit-learn-1.4.1post1 (as you showed here https://github.com/autogluon/autogluon/issues/3927#issuecomment-1953952252).
I guess that the following happens (but I'm not sure how to verify that this is the source of the problem, or how to fix it):

scikit-learn v1.1 gets imported
You install autogluon.timeseries, which install scikit-learn v1.4 (probably in a notebook cell with !pip install autogluon.timeseries)
The predictor cannot pickle the metric during training because scikit-learn version changed

I would recommend trying one of the following:

restarting the Jupyter notebook after installing autogluon
running pip install outside of the notebook
executing the code in a .py script rather than a notebook

If that doesn't work, I would recommend using a CPU instance. From my experience, TimeSeriesPredictor may train even faster on a machine with 32 CPU cores and no GPU compared to a machine with a GPU but fewer CPU cores.

Unfortunately I tried any kind of installation (compute level, notebook level, forcing different versions of sklearn, etc.) and impossible to make the code work with the ML runtime (in notebook).
Otherwise for my experiments with CPU vs GPU, for the deep learning algorithms (this is what works best for my problem), with pytorch and G5 machines on AWS, 32 CPU cores cannot compete at all, it is about 10 times slower (except for RNN-based inference).

No more problems with version 1.2.0 :)


edge-ssr: bundle next/dist as ESM

Bug

[ ] Related issues linked using fixes #number
[ ] Integration tests added
[ ] Errors have helpful link attached, see contributing.md

Feature

[ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
[ ] Related issues linked using fixes #number
[ ] Integration tests added
[ ] Documentation added
[ ] Telemetry added. In case of a feature if it's used or not.
[ ] Errors have helpful link attached, see contributing.md

Documentation / Examples

[ ] Make sure the linting passes by running pnpm lint
[ ] The examples guidelines are followed from our contributing doc

Current dependencies on/for this PR:

canary

PR #1   👈

This comment was auto-generated by Graphite.


Misc fixes to schemaman

Issues:

Extraneous error messages during interpreter shutdown
incorrect return type from GetWorkingVersionData when the row didn't exist
Incorrect Gets from version_working (querying by id instead of user_id)

No, fixed in person.


fix: latest promise crash on StoreKit 1

Closes #2776
Fixes iOS bug on StoreKit 1 mode where making more than one request for products or subscriptions resulted in a crash
Now properly clears request and promise references on promise resolution, rejection or cancel

cc: @hyochan


Bug fix: PersonDisplay alignment

PersonDisplay attribute labels and values are misaligned when there are no tags present

Pull Request Test Coverage Report for Build 217

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 60.977%

Totals

Change from base Build 216:
0.0%

Covered Lines:
1261

Relevant Lines:
2068

💛  - Coveralls


WI non-max suppression

WI tend to pack in tightly and some birds are missed because they are too close to other birds and so their box is eliminated by nms.

This has been addressed as part of our model improvements in https://github.com/weecology/EvergladesSpeciesModel/ but we're probably still using an old model here so it needs to be updated.

We've done a bunch of work on this in the newest version of the species classification model. See https://github.com/weecology/EvergladesSpeciesModel/pull/40. Once we finish #159 if there are still problems with this we can reopen.


[SIL] Remove Builtin.copy and _copy.

The copy operator has been implemented and doesn't use it.
rdar://127502242

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please apple silicon benchmark

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please apple silicon benchmark

@lorentey @lorentey Is it safe to remove the _copy function?

It looks like the main concern is source compatibility with the removal of the always-emit-into-client _copy decl; I don't see any other changes that would affect clients of the stdlib. Hopefully there aren't any projects we can't break that have adopted it, but I can't evaluate that with confidence.

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please apple silicon benchmark

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please apple silicon benchmark

/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/swift/Swift.swiftmodule/x86_64-apple-macos.swiftinterface:12443:5: error: module 'Builtin' has no member named 'copy'
12441 | @_alwaysEmitIntoClient @inlinable @_transparent @_semantics("lifetimemanagement.copy") public func _copy<T>(_ value: T) -> T {
12442 |   #if $BuiltinCopy
12443 |     Builtin.copy(value)
      |     `- error: module 'Builtin' has no member named 'copy'
12444 |   #else
12445 |     value

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please apple silicon benchmark

Source compat failures match failures in baseline.


Allow for a single-file import of all elements stylesheets

Move the import of the govuk-elements styles into a single, standalone file so they can be imported as a single import statement without also including govuk_frontent_toolkit files.

What problem does the pull request solve?
We use a sass compiler which is npm-aware (https://npmjs.com/npm-sass), and so generally don't use configured includePaths when compiling. However, the main sass file in this repo is only compilable if the includePaths are set.
By moving the govuk-elements-sass code (as distinct from the govuk_frontend_toolkit code), we can @import "govuk-elements-sass" in our stylesheets and have them compile correctly (note the sass property added to package.json supports this shorthand, as opposed to having to specify a full file path)
This will also support any users who wish to import the elements code alone, without also importing govuk_frontend_toolkit for whatever reason.
What type of change is it?

Bug fix (non-breaking change which fixes an issue)

Has the documentation been updated?

I have read the CONTRIBUTING document.

Thanks @lennym!
The relationship between the govuk-elements-sass files and the govuk_frontend_toolkit isn't explicit (ideally the imports would be at the top of each file - not that it would resolve the issue with includePaths - but at least the relationship between the two would be clearer.)
I've been trying to avoid making breaking changes - which is why they're still listed at the top.
This looks good, I'm hoping to release a new version of govuk-elements-sass shortly and will include this in that release.

Thanks a lot @gemmaleigh.
One thing I might suggest,

I won't be able to merge this PR as-is, as the package is build from assets in assets/, which is where the files will need splitting. Are you happy to do this?

I think I see what you mean... the same set of changes should be made to the files in the assets directory in the repo root?
Will do. Give me 5 minutes.

You'll only need to make the changes once in the assets directory, there's a gulp package task which I'll run before publishing the package, that'll copy everything to /packages/.
https://github.com/alphagov/govuk_elements/blob/master/gulpfile.js#L127

I've pushed the changes in assets - actually an extra change to also group the govuk-frontend-toolkit files as well, as IMO this makes it a lot clearer what is coming from where.
If you want me to undo the changes in packages then I'll rebase -i them out.

If you could undo the changes in packages (aside from the change to the package.json file) and ensure those two new files are copied over, that would be great - thanks!

Done. Let me know if I need to do anything else.


32bit app oep disassembly error

Currently it's 32 bit debug target error

https://github.com/HyperDbg/gui/blob/main/ux%2Fcpu.go#L1060-L1107

Does it work on x64 apps? Is it a problem with Zydis? Could you please provide more information regarding the error?
它可以在 x64 应用程序上运行吗？这是 Zydis 的问题吗？您能否提供有关该错误的更多信息？

Does it work on x64 apps? Is it a problem with Zydis? Could you please provide more information regarding the error?
它可以在 x64 应用程序上运行吗？这是 Zydis 的问题吗？您能否提供有关该错误的更多信息？

The x64 parsing oep and disassembling oep buffer were executed correctly, and the x64 parsing process was just below the bitmap x86. The bug comes from the fact that some 32-bit programs have oeps that are not in the text section, which results in oep lookup failures. However, there are still a lot of apps that are 32-bit

Interesting, I didn't know that OEP might be outside '.text' section. Do you have any examples? I'm gonna test to see if our '.start' command could correctly find OEP in these apps or not.
有趣的是，我不知道 OEP 可能在 '.text' 部分之外。您有任何示例吗？我要测试一下我们的 '.start' 命令是否能在这些应用程序中正确找到 OEP。

Wait me make a gif.
---Original---
From: "Sina @.>
Date: Wed, Jul 10, 2024 15:01 PM
To: @.>;
Cc<EMAIL_ADDRESS>Subject: Re: [HyperDbg/gui] 32bit app oep disassembly error (Issue #170)
Interesting, I didn't know that OEP might be outside '.text' section. Do you have any examples? I'm gonna test to see if our '.start' command could correctly find OEP in these apps or not.
有趣的是，我不知道 OEP 可能在 '.text' 部分之外。您有任何示例吗？我要测试一下我们的 '.start' 命令是否能在这些应用程序中正确找到 OEP。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Could you send this tutorial1.exe to me? (email)
I want to check its headers.
您能将这个 tutorial1.exe 发送给我吗？（电子邮件）
我想检查它的标题。

Could you send this tutorial1.exe to me? (email)
I want to check its headers.
您能将这个 tutorial1.exe 发送给我吗？（电子邮件）
我想检查它的标题。

https://github.com/HyperDbg/gui/tree/main/32bit_oep_bug

Thanks


fix: navigation improvements #587 #590

affects: @haulmont/jmix-front-generator, @haulmont/jmix-react-antd, @haulmont/jmix-react-core,
@haulmont/jmix-react-web

@SvyatovetsD please resolve conflicts and merge


Fix aside being rejected as unclosed link

The current RegExp for validating HTML gets derived into includes this
value:
/(\<div|\<\/div>|\<span|\<\/span>|\<a|\<\/a>)/g

However, this leads to the following match on an <aside /> element:
> ('<aside>foo</aside>').match(tagRegex)
[ '<a' ]

...which looks to homebrewery like an unclosed <a /> element. This new
RegExp ensures that open tags are always matched with closing tags of
the same type.

Thanks for the diagnosis and patch. This now conflicts with master, so I've made the equivalent change in #678.


Moved babel runtime to dependencies

Summary
Moved babel's runtime dependency to regular dependencies as described in babel's official docs and NPM page

Changelog

[internal] [changed] - @babel/runtime from devDependencies to dependencies
Test Plan

This is not necessary for React Native because Metro bundles all dependencies up into a single bundle for production releases. Because React Native apps aren't deployed to npm as packages but to App Stores as binaries, we do not need to change this.

@cpojer say I have jest, eslint, etc as devDependencies, are those bundled up as well? just curious


Update widget links

close #604
only visual change is on task label mouseover (underline + title attribute):

I'd like to make this more visible, do I open a feature request for this?
also cc: @osanseviero


Symbol upload for Flutter framework

After some testing, It seems like the native profiler could be the way to go, at least for iOS and macOS. However, I'm having issues with the symbolication - all the flutter symbols (e.g. referencing /private/var/containers/Bundle/Application/2D6824B6-DC93-4F60-AFC2-ADE201585EC6/Runner.app/Frameworks/Flutter.framework/Flutter) in this profile are unresolved (symbol not found). I don't know - was there some custom handling in the symbolicator for flutter-specific symbols? Maybe that doesn't get triggered when the transaction comes from swift... Also I've tested triggering an error in swift and the image seems resolved but the frames say redacted. Do you know what that is about @marandaneto ?

OK so at least in errors, the issue of some stack frames not being symbolicated is due to dSYMs missing for the Flutter.framework (or FlutterMacOS.framework). They're currently not shipped with Flutter at the moment so the dart plugin won't upload them to Sentry and thus they can't be used for symbolication, see https://github.com/flutter/flutter/issues/117404#issuecomment-1360064880
Originally posted by @vaind in https://github.com/getsentry/sentry-dart/issues/1106#issuecomment-1650547779
Possible solutions:

upload in the dart plugin
use craft, although this is normally used to upload during an SDK release: https://github.com/getsentry/craft#symbol-collector-symbol-collector
introduce a flutter-specific symbol server - https://github.com/getsentry/team-processing/issues/83

Relates to https://github.com/getsentry/sentry-dart-plugin/issues/148
Maybe we can close https://github.com/getsentry/sentry-dart-plugin/issues/148 in favor of this one?

What's the status of the internal (team-processing) issue for symbol upload? This is pretty important for profiling UX.

@krystofwoldrich & @Swatinem - replying here so others who track this issue may be able to pitch in.

Is there a way to link the debug meta image that the SDK sends to the engine version hash needed to download the correct symbols?

No, I don't think we can - symbol files sources described here: https://github.com/flutter/flutter/wiki/Crashes are based on an engine build ID which isn't present anywhere in the native profiler payload (because it's not a debug ID of any of the debug images).
Although the engine build ID string is present in the built app binary, checked as:
flutter --version
Flutter 3.13.2 • channel stable • git@github.com:flutter/flutter.git
Framework • revision ff5b5b5fa6 (12 days ago) • 2023-08-24 08:12:28 -0500
Engine • revision b20183e040
Tools • Dart 3.1.0 • DevTools 2.25.0
...
strings build/ios/..../Flutter.framework/Flutter | grep b20183e040

it doesn't seem to be available in native code. So while in theory we could make changes to extract this at runtime and propagate it in all the SDKs, it seems a bit fragile. Together with having to do custom handling on the server, it doesn't seem like a best way to go.
Another alternative (to those I've mentioned above) - maybe just get all the stable-channel releases of Flutter SDKs and push them to a shared symbol server?

use craft, although this is normally used to upload during an SDK release: getsentry/craft#symbol-collector-symbol-collector

Symbol Collector today is only used for Android symbols (you can actually upload Mach-O files too but they won't be fetched from anywhere. Because the service is hooked up only to the Sentry built in Android symbol server.

I've had a look at the scripts in apple-system-symbols-upload and also a bit into the craft target & the symbol-collector CLI.
For Flutter, I imagine the workflow would look like this:

fetch all tags from https://github.com/flutter/flutter (optimized: if run in CI, we should only fetch stuff we haven't processed yet)
for each tag, get the engine version from https://raw.githubusercontent.com/flutter/flutter/3.13.4/bin/internal/engine.version - say 9064459a8b0dcd32877107f6002cc429a71659d1 in case of Flutter v3.13.4
Head over to https://console.cloud.google.com/storage/browser/flutter_infra_release/flutter/9064459a8b0dcd32877107f6002cc429a71659d1 and look for platforms and symbols we care about
I'd say it's mostly iOS, macOS and Android at this time, but we may want to just slip in other platforms if there are symbol servers that can be easily integrated
download zip files, extract symbols and upload to appropriate symbol servers

I'd create a (pwsh/dart) script to fetch stuff from the Flutter server and call the symbol-collector CLI to do the actual upload. This script would run in CI periodically. Yes, we could have yet another script/repo that uploads to all platform-specific symbol servers, but I don't really see why symbol-collector shouldn't be doing that instead. If it did, it would also be useful for other SDKs, for example IIRC we're uploading some shared Unity symbols but doing so for each app build instead of having this centralized.
I assume there will be some changes necessary in the symbol-collector (cli, server?) to make this work, but to me it seems like the best value for the effort - extending an existing solution instead of creating a new one.
WDYT @bruno-garcia? You know symbol-collector best.

the built-in Sentry Apple symbol server will lookup in the Symbol Collector symbol server once we merge: https://github.com/getsentry/getsentry/pull/11913

We still need to upload symbols so let's keep this tracking issue until it's actually finished and verified e2e

Works fine for iOS/macOS with:

profiles: https://sentry-sdks.sentry.io/profiling/profile/sentry-flutter/a45ec177220b452d885b6a241dec844d/flamegraph/?colorCoding=by+system+vs+application+frame&query=&sorting=call+order&tid=42499&view=top+down
and errors:  https://sentry-sdks.sentry.io/issues/4339846487/events/9eadfaa14fea41f2901abb9454481616/

We're also collecting Android symbols although I wasn't able to find an error that would have them in a stack trace...


Add first name field to email signup form

Users are statistically exceedingly more likely to open an email if it contains their first name
use the standard emailoctopus forms

Hey @DanGould , I would like to take on this issue.

Ok @ArtemSilka cool!
The field would need to be added to the existing one here: https://github.com/chaincase-app/website/blob/6b67673d0157f424756d3ebd5bec908a7138902f/app/views/static_pages/home.html.haml#L32-L54
here's the raw embedded form code containing the first name field from EmailOctopus (our mail list provider) it would need to be converted to haml first. maybe this tool can help:
<link rel="stylesheet"
      href="https://emailoctopus.com/bundles/emailoctopuslist/css/1.6/form.css"
>

    Subscribe to my list

  <form action="https://emailoctopus.com/lists/f0814c6a-30ea-11eb-a3d0-06b4694bee2a/members/embedded/1.3s/add"
        method="post"
        data-message-success="Thanks for subscribing!"
        data-message-missing-email-address="Your email address is required."
        data-message-invalid-email-address="Your email address looks incorrect, please try again."

        data-message-consent-required="Please check the checkbox to indicate your consent."
        data-message-invalid-parameters-error="This form has missing or invalid fields."
        data-message-unknown-error="Sorry, an unknown error has occurred. Please try again later."
        class="emailoctopus-form"
        data-sitekey="6LdYsmsUAAAAAPXVTt-ovRsPIJ_IVhvYBBhGvRV6"
  >

        Email address

      <input id="field_0"
             name="field_0"
             type="email"
             placeholder
             required="required"
      >

        First name

      <input id="field_1"
             name="field_1"
             type="text"
             placeholder
      >

      <input type="text"
             name="hpc4b27b6e-eb38-11e9-be00-06b4694bee2a"
             tabindex="-1"
             autocomplete="nope"
      >

      <input type="hidden"
             name="successRedirectUrl"
      >
      <button type="submit"
              style="background-color: rgb(224, 224, 224); color: rgb(0, 0, 0); font-family: inherit;"
      >
        Subscribe
      </button>

  </form>

    Powered by

      EmailOctopus

Hey @DanGould, just to clarify, how far should code. Seems like you'll need to expand db schema, since right now it only has email. Plus you probably will need to adjust controller, to be able to pass name in params.
Please let me know.
Because if you're looking only for ui,

yeah all the back end is handled on email octopus, the rails is just vestigial at this point I see the tests came through with first names. Please mark the name field optional if you can. Appreciate the ambition to help out :)

Got it! Ok, just changed firstname field to be optional.
I've created brunch and tried to push but getting access denied message
remote: Permission to chaincase-app/website.git denied to ArtemSilka.
Please let me know how should I upload everything.

You're going to want to fork the repo push your changes there and then create a pull request from there to here where we can review 😎

Got it, let me try! Thank you

closed by #16


deque: Provide a way for a stealer to steal more than one value at a time

For example, it could be nice for a stealer to a constant number of values (say 5) or a fraction of the current size of the deque (50%).

Would kind of interface would you like for this? Here's a suggestion:
fn steal_batch(&self, buf: &mut Vec<T>, count: usize);

I'm not sure what is technically possible... A Drain like iterator would be nicest. Of course, I don't know if that can work.