(PUP-3149) Add purge method to zypper provider

Added zypper purge to be able to remove packages using zypper instead of rpm, which in some cases could break systems due to lack of dependencies check.

Hey @abednarik, thanks for the contribution! Before we discuss this change, could you please create a new ticket at https://tickets.puppetlabs.com/browse/PUP describing the method and the need for it. Once it exists, please amend your commit message to include the ticket number in parentheses at the start I.e, '(PUP-XYZ) Add purge method to zypper provider'

Hi @whopper. Thanks for taking the time to review my PR. Hope now everything is just fine.
Cheers.

@abednarik excellent, thanks! Most of us are out until Monday, and I'll be spending more time to review this then.
In the meantime, I'm trying to figure out if zypper's remove semantically matches what we consider purge to mean. In yum and apt, we have yum erase and apt-get remove --purge, which are different than the lesser yum uninstall and apt-get remove in whether configuration files are left behind or not.
The other option would be to make this the uninstall method for zypper instead of purge, if that more closely maps to what zypper remove is doing under the hood (currently, the zypper provider is inheriting both the uninstall and purge methods from the RPM provider.)
I haven't had time to dig into the differences much yet, but you may already know significantly more than I do about it - in which case, feel free to correct me if I'm wrong on anything :).
One last point - whether this ends up being the purge or uninstall method, we'll want to get some updated tests in spec/unit/provider/package/zypper_spec.rb. We'll want to add some coverage around uninstalling, similar to how our yum provider tests do it. Depending on which route this PR goes, that could look like:
  describe 'when uninstalling' do
    it 'should use remove to purge' do
      Puppet::Util::Execution.expects(:execute).with(['/usr/bin/zypper', '--non-interactive', :remove, name])
      provider.purge
    end
  end

... or ...
  describe 'when uninstalling' do
    it 'should use remove to uninstall' do
      Puppet::Util::Execution.expects(:execute).with(['/usr/bin/zypper', '--non-interactive', :remove, name])
      provider.uninstall
    end
  end

Many thanks!
Using just remove is similar to apt-get remove or yum uninstall. If we want to also remove any dependency no longer needed we need to append --clend-deps
I will fix the incorrect identation and a test. Finally i will need to squash all commits I think and probable rebase against the master.

Makes sense - so it sounds like we might want to add a uninstall method which does what your current code does, and a purge method that does zypper --non-interactive --clean-deps <package>.

Ok, will try to do that.
Thanks.

This is what i having at the end
  def uninstall
    execute([command(:zypper), "--non-interactive", :remove, @resource[:name]])
  end

  def purge
    execute([command(:zypper), "--non-interactive --clean-deps", :remove, @resource[:name]])
  end
```

I can't make tests to  work

With something like this

```puppet

  describe 'when uninstalling' do
    it 'should use remove to uninstall' do
      Puppet::Util::Execution.expects(:execute).with(['/usr/bin/zypper', '--non-interactive', :remove, 'mypackage'])
    end
  end

```

I get this

```puppet
 bundle exec rake spec TEST=spec/unit/provider/package/zypper_spec.rb
rspec spec/unit/provider/package/zypper_spec.rb
Run options: exclude {:broken=>true, :benchmark=>true}
......................F

Failures:

  1) Puppet::Type::Package::ProviderZypper when uninstalling should use remove to uninstall
     Failure/Error: Puppet::Util::Execution.expects(:execute).with(['/usr/bin/zypper', '--non-interactive', :remove, 'mypackage'])
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: Puppet::Util::Execution.execute(['/usr/bin/zypper', '--non-interactive', :remove, 'mypackage'])
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, not yet invoked: #<Mock:resource>.command(:zypper)
       - allowed any number of times, not yet invoked: #<Mock:resource>.[](:ensure)
       - allowed any number of times, not yet invoked: #<Mock:resource>.[](:name)
       - allowed any number of times, not yet invoked: #<Mock:resource>.[](any_parameters)
     # ./spec/unit/provider/package/zypper_spec.rb:225:in `block (3 levels) in <top (required)>'

Finished in 0.09244 seconds (files took 1.13 seconds to load)
23 examples, 1 failure

Failed examples:

rspec ./spec/unit/provider/package/zypper_spec.rb:224 # Puppet::Type::Package::ProviderZypper when uninstalling should use remove to uninstall

rake aborted!
Command failed with status (1): [rspec spec/unit/provider/package/zypper_sp...]
/Users/abednarik/work/code/puppet/puppet/Rakefile:67:in `block in <top (required)>'
Tasks: TOP => spec
(See full trace by running task with --trace)
```

Hey @abednarik, thanks for working on those tests! No worries - I'm off until Monday but I'd be glad to take a look and help you figure out what's going wrong then. I'll let you know when I've poked around!

Hey @whopper. Thanks :) It's holidays here, so i will be working to fix this.

@abednarik alright, I've had some time to look at this! A few things:
First, I believe I was wrong about needing both a purge and uninstall option. The --clean-deps option is not available in older versions of zypper (such as the case in SLES 10), and I believe just having the uninstall method is enough to fix this particular issue anyway, if that makes sense to you.
Secondly, looking at the rest of the provider, I realized that the uninstall method should be consistent with how install operates. It should look something like this (which will make it easier to test):
    def uninstall
      options = ['--non-interactive', :remove, @resource[:name]]
      zypper *options
    end

As for the test, something like this should work if you update the method as I did above:
  describe 'when uninstalling' do
    it 'should use remove to uninstall' do
      @provider.expects(:zypper).with('--non-interactive', :remove, 'mypackage')
      @provider.uninstall
    end
  end

(make sure to call the method with @provider.uninstall, which your previous example was missing.)
One last question: do you know how long the --non-interactive option has been available in yum? Every version I've tested supports it (SLES 10 -12, OpenSuSE 11), so I think it's safe, but if there are versions that don't support it we might look into the --no-confirm option, as the install method uses.

HI @whopper. Many thanks for help me up with this. Looks like using --no-confirm sounds better, since is compatible with all zypper version and also is consistent with install method.
Just updated PR, to make it clean, squashing previous commit and doing a rebase.
Hope things are better now.
I really appreciate your collaboration :)

Done.

@abednarik excellent - thanks a bunch, this looks good! We'll be having our weekly PR triage meeting tomorrow morning, and I'll bring this up for review and hopefully a merge :).

Thanks for your patience and dedication on this.

Oh there is one other very nit-picky thing :)! Could you change the commit title to say "Add uninstall method to zypper provider" rather than purge?
And no problem! Thanks for contributing to puppet core!

Sure thing. done :)

Hey @abednarik! We went over this PR today in our PR triage, and everything looks good except one issue with how old versions of zypper (present on SLES 10 and OpenSUSE 11) do dependency management. Using zypper 1.0.2, if I try to uninstall something like emacs which has dependencies, I get:
dinxjb1qymsvwyl:~ # zypper remove --no-confirm emacs
Loading repository data...
Reading installed packages...
Resolving package dependencies...

Problem: emacs-x11-22.3-4.6.x86_64 requires emacs = 22.3-4.6, but this requirement cannot be provided
 Solution 1: deinstallation of emacs-x11-22.3-4.6.x86_64
 Solution 2: do not ask to delete all solvables providing emacs
 Solution 3: Ignore some dependencies of emacs-x11

Choose from above solutions by number or cancel [1/2/3/C]: c

--no-confirm just cancels out and returns 0, so Puppet will think that it's uninstalled the package when in reality it did not. I've run into this in two versions of Zypper: 1.0.2 and 0.6.201. Version 1.0.2 has the ability to find a solution automatically, while 0.6 does not.
dinxjb1qymsvwyl:~ # zypper --version
zypper 1.0.2
dinxjb1qymsvwyl:~ # zypper help remove
...
  Command options:
-R, --no-force-resolution       Do not force the solver to find solution, let it ask.
    --force-resolution          Force the solver to find a solution (even an agressive).

We discussed this and decided that it'd be best to check for zypper version and do the right thing based on what we find. If the version is >= 1.6, we'll use your command. If it's less than 1.6 but >= 1.0, we can  simply add the --force-resolution option to the remove sub-command (zypper remove --force-resolution --no-confirm <package> does the right thing). Finally, if the version is less than 1.0, we should call super to fall back to the RPM provider, which will error as it does now rather than "succeeding" but silently failing. I think this is probably the right thing to do, since very old versions of zypper don't have a way to automatically determine dependency solutions, so the provider shouldn't lie about success.
The zypper version can be found in the same way it's done in the install method. The following is a proof of concept:
def uninstall
  #extract version numbers and convert to integers
  major, minor, patch = zypper_version.scan(/\d+/).map{ |x| x.to_i }

  if major < 1
    super
  else
    options = [:remove, '--no-confirm']
    if major == 1 && minor < 6
        options << '--force-resolution'
    end

    options << @resource[:name]
  end

  zypper *options
end

The tests would look something like this:
  describe 'when uninstalling' do
    it 'should use remove to uninstall on zypper version 1.6 and above' do
      @provider.stubs(:zypper_version).returns '1.6.308'
      @provider.expects(:zypper).with(:remove, '--no-confirm', 'mypackage')
      @provider.uninstall
    end

    it 'should use remove  --force-solution to uninstall on zypper versions between 1.0 and 1.6' do
      @provider.stubs(:zypper_version).returns '1.0.2'
      @provider.expects(:zypper).with(:remove, '--no-confirm', '--force-resolution', 'mypackage')
      @provider.uninstall
    end
  end

Sorry about all the changes! Let me know if you could use any more help, and thanks again - we really appreciate you running through all of this!

Hey, don't worry. I will have a look, should be easy since you already made near everything :)

HI @whopper  let see if this commit is just fine and working.

:+1:

You are absolutely right. It was my fault :)
@whopper  hope is fine now.

Thanks @abednarik - merged and going through internal CI!

Great,  thanks you.


PacReq: intel-undervolt

Types
nosuffix (Compiled off of the released source code)
URL
https://github.com/kitsunyan/intel-undervolt/archive/refs/tags/1.7.tar.gz
Building guide
https://github.com/kitsunyan/intel-undervolt#building-and-installing
Additional context
build-essentials and git are dependencies.

I'll work on this.


webpack-dev-server

Why is webpack-dev-server in dev dependencies? Doesn't seem to be required anywhere?

Yeah, it should be removed. One small PR ;)

@ronag do you want to get rid of it? Otherwise, I'll do it.

And eventemitter3 both in native and web I guess.

@grabbou: Be my guest.

Fixed.


Register UDFs as MetaData.Custom

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@7c0f96c). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #6076   +/-   ##
=========================================
  Coverage          ?   83.02%
  Complexity        ?    12424
=========================================
  Files             ?     1436
  Lines             ?    47065
  Branches          ?     5799
=========================================
  Hits              ?    39076
  Misses            ?     5286
  Partials          ?     2703

Impacted Files
Coverage Δ
Complexity Δ

sql/src/main/java/io/crate/plugin/SQLPlugin.java
100% <ø> (ø)
15 <0> (?)

Continue to review full report at Codecov.

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


Update sbt-scala3-migrate to 0.7.1

About this PR
📦 Updates ch.epfl.scala:sbt-scala3-migrate from 0.5.1 to 0.7.1
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "ch.epfl.scala", artifactId = "sbt-scala3-migrate" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "ch.epfl.scala", artifactId = "sbt-scala3-migrate" }
}]

labels: sbt-plugin-update, early-semver-major, semver-spec-minor, commit-count:1

Superseded by #1069.


Make more modules publicly runnable on dlang.org

Follow-up to #4943: this PR reduces the module exclusion for modules that can be run on dlang.org
For this all tests within a module need to pass separately without the module.

So if someone is interested in the motivation/rationale, please have a look at e.g.
https://dlang.org/phobos-prerelease/std_algorithm_searching.html#.minElement

rebased


add auto-linting pre-commit

Description

fixed eslint not picking up prettier config
installed and configured lint-staged
installed husky to run lint-staged pre-commit

Type of change
Please select everything applicable. Please, do not delete any lines.

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] This change requires an update to testing

Issue
Closes #317
Checklist:

[x] This PR is up to date with the development branch, and merge conflicts have been resolved
[x] I have executed npm run test-frontend and all tests have passed successfully or I have included details within my PR on the failure
[ ] I have executed npm run lint and resolved any outstanding errors. Most issues can be solved by executing npm run format
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings

Any idea how or why lint wasn't picking up prettier?

Great work!


💡 [FEATURE] - Integrate React.js Documentation

Idea Contribution

[X] I have read all the feature request issues.
[X] I'm interested in working on this issue
[X] I'm part of GSSOC organization

Explain feature request
React.js, a popular JavaScript library for building user interfaces, lacks comprehensive documentation to assist developers in efficiently utilizing its features and functionalities.
Explain your solution
I propose adding a dedicated section for React.js resources in the programming language documentation.
Contents of ReactJs/readme.md:
React.js Basics:
Setting up the React.js environment
Understanding JSX syntax
Core concepts like components, props, and state management
Advanced React.js:
Working with React Hooks for functional components
Implementing context API for global state management
Server-side rendering with Next.js
React.js Tools and Libraries:
Using Create React App for project scaffolding
Popular libraries and utilities like Redux, React Router, and Material-UI
Testing strategies with React Testing Library and Jest
Performance and Optimization:
Techniques for optimizing React.js applications
Code-splitting and lazy loading for improved performance
Utilizing React.memo and useMemo for memoization
React.js Projects:
Real-world examples and case studies
Showcase of React.js projects across various domains
Open-source projects for contributors to get involved in
Any alternative approaches/features
To enhance the learning experience, include interactive code examples and live demos within the documentation. Additionally, incorporating community-contributed tutorials and articles can provide diverse perspectives on using React.js in different scenarios.
Additional Context
No response

OOkay, one good example of formatting is this:
(https://github.com/jfmartinz/ResourceHub/tree/main/Programming Languages/TypeScript)
Take a look at other folders to avoid conflicts in the PR.

@jfmartinz What will be the level for this ??

@jfmartinz will this be level3 ??


[MBL-773] CircleCI Workspaces Integration

📲 What and  🤔 Why
So our CI pipeline has a lot of repeated steps in it:
Example all of these steps run for every test job (that's 3x for kickstarter-framework-ios, ksapi, library)
    - checkout
    - run:
        name: SPM SSH Workaround
        command: *spm_ssh_workaround
    - run:
        name: Store Xcode Version
        command: xcodebuild -version > xcode_version.txt
    - run:
        name: Bootstrap SPM
        command: xcodebuild -resolvePackageDependencies -clonedSourcePackagesDirPath SourcePackages
    - run:
        name: Bootstrap
        command: make bootstrap
    - run:
        name: Download GraphQL Schema
        command: bin/apollo-schema-download.sh
    - run:
        name: Pre-load simulator
        command: *preload_simulator
    - run:
        name: Run tests
        command: make test
        no_output_timeout: "20m" # 20 minutes
   - run:
       name: Install Bundler
       command: bundle check || bundle install
       environment:
          BUNDLE_JOBS: 4
          BUNDLE_RETRY: 3

Because these steps are run in parallel, they really don't blow up the time it takes for our suite to finish (approx. 30 min)
However why not run all the steps once, incorporate the environment they ran in (for example all the gems from bundle install) and re-use that environment for our test jobs.
Workspaces allows us to do this.
🛠 How
Workspaces has two steps essentially:
a persist_to_workspace step and attach_workspace step.
for our test_job  and distribute_job we attach_workspace. The build_and_cache step has persist_to_a_workspace step and sets up the environment with gems, swift package dependencies and the code itself.
🏎 Performance
Side-by-side comparison of reduction in time.

Last time an alpha build got deployed:

New alpha build deploy

Note the tests do not run until the build and cache step completes.

CircleCI reports a 14% decrease in average time to finish.

We might be expected it to be much faster but these jobs were run while CircleCI was in "maintenance" mode, so that probably effected the total time. Let's try this idea for now, and  judge its' efficiency after we get some builds distributed.
In theory it "should" improve total time to build, but we need CI to be out of maintenance mode to see the real results.
Noted for posterity
Quick smoke test for new ci build time vs old build time (2 suites running same on conditions in CircleCI):

top workflow is using workspaces, bottom workflow using caching.
Caching is faster for total time taken
Pros:

Concurrent workflows run, meaning even with repeated steps, the longest running test suit will be the bottle neck.

Cons:

Messier config.yml file, less maintainable.
Not using newer circleci options like orbs for MacOS and prelaunch-simulator commands.

Workspaces is faster for individual test suites
Pros:

More maintainable config.yml file, all downloads/config/gems/code/packages done in build and cache. Test job and distribute job just use the workspace.
Each test job after build-and-cache takes between 3-10 minutes less time.

Cons:

Consecutive workflows run, adds time. Meaning build and cache takes 10 min longer and runs first, before test suites. Bottleneck is build-and-cache time + longest test suite time.

✅ Acceptance criteria

[x] CirecleCI steps pass - and a deployment (alpha) should be passing as well.

⏰ TODO

[x] Restore SPM step doesn't have permisions to unarchive cache.
[x] Ensure tests passing and alpha gets deployed.

@scottkicks I know you  already approved this, but I just compared two workflows using the old config file and the newer. If you could take a look at Note for posterity and let me know if you think its' worth merging this PR.


Dockerized Image build service (with Kaniko?)

To simplify building Jenkins images in Docker, it would be great to be able to package and deploy images from the container itself. It is possible to use Kaniko or PodMan/Buildah for such purpose.
Acceptance criteria:

Update the Custom WAR Packager image to be based on Kaniko (or create a new image)
Update Docker build steps to support the Kaniko invocation from inside the container
Expose publishing option so that the created images can be deployed to DockerHub or private container images
Document the flow and create a demo for it

For evaluation purposes, https://github.com/jenkinsci/ci.jenkins.io-runner can be built with Kaniko out of the box

Has this function been implemented?


where china charset  "=" "Like"

In the Where statement, use the = operator does not properly Chinese, like normal operators
select xxx from tableName where col='中文' -- Chinese
This statement cannot find the data, even if data exist that meet the criteria.
but select xxx from tableName where col like '中文' -- Chinese
This statement execution results are normal.

sorry  "reindex"  success


Regex or normal find support on DEBUG console and OUTPUT window

VSCode Version: Insider
OS Version: OS X Sierra

Is there a way to do regex or normal search on debug console or output window?

In the output - simply click on the output and press cmd + F.
In teh debug console this is not yet implemented and is already requested https://github.com/Microsoft/vscode/issues/4338


Error: Can't contact LDAP server (-1) for user when using openldap

Using the following docker-compose file, I cannot log in on the phpLDAPadmin page:
#SNIPPED
  ldap-service:
    image: osixia/openldap:1.1.8
    hostname: ldap-service
  phpldapadmin-service:
    image: osixia/phpldapadmin:0.6.12
    hostname: phpldapadmin-service
    environment:
      - PHPLDAPADMIN_HTTPS="false"
      - PHPLDAPADMIN_LDAP_HOSTS="ldap-host"
    links:
      - ldap-service:ldap-host
    ports:
      - "80:80"

Gives errors:
error	Unable to connect to LDAP server "ldap-host"
Error: Can't contact LDAP server (-1) for user
error	Failed to Authenticate to server
Invalid Username or Password.

When I log into phpldapadmin-service using
sudo docker exec -t -i gkdbdocker_phpldapadmin-service_1 /bin/bash

and install ldap-utils, I can connect to the ldap-host correctly:
root@phpldapadmin-service:/# ldapsearch -x -H ldap://ldap-host -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.org
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example

# admin, example.org
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Z1g0TWRYdE9ocVlhbWtuRENwQmJxdDRqeTFKeWg3Ylg=

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Also, starting the containers using docker run works correctly:
docker run --name ldap-service --hostname ldap-service --detach osixia/openldap:1.1.8
docker run -p 80:80 --name phpldapadmin-service --hostname phpldapadmin-service --link ldap-service:ldap-host --env PHPLDAPADMIN_HTTPS=false --env PHPLDAPADMIN_LDAP_HOSTS=ldap-host --detach osixia/phpldapadmin:0.6.12

@Karel-van-de-Plassche, I got it working with the following docker-compose file. Note that it doesn't using docker links, since they are superseded by networks.
version: '2'

services:

  ldap-service:
    image: osixia/openldap:1.1.8
    networks:
      mynet:
        aliases:
         - ldap-host
    hostname: ldap-service
    environment:
      - PHPLDAPADMIN_LDAP_HOSTS=ldap-host

  ldap-admin:
    image: osixia/phpldapadmin:0.6.12
    networks:
      mynet:
    ports:
      - "6080:80"
      - "6443:443"
    hostname: phpldapadmin-service
    environment:
      - PHPLDAPADMIN_LDAP_HOSTS=ldap-host
      - PHPLDAPADMIN_HTTPS=false

networks:
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: <IP_ADDRESS>/16
          gateway: <IP_ADDRESS>

It's possible the two hostname settings aren't needed. I haven't experimented yet.

Thanks for this workaround. In the end, I worked around it by creating my own image. Somehow then it works with the default docker-compose network.

For all those poor souls that end up here alongside myself - the issue in this case (or at least what it was for me) was that you should NOT use quotation marks when defining the ENV variable
PHPLDAPADMIN_LDAP_HOSTS
Example (from first compose file snippet):

PHPLDAPADMIN_LDAP_HOSTS="ldap-host"
should be
PHPLDAPADMIN_LDAP_HOSTS=ldap-host

I face exactly the same problem. I have the following docker-compose file:
  openldap:
    image: bitnami/openldap:2.6-debian-10
    container_name: openldap
    environment:
      PUID: 1000
      PGID: 1000
      LDAP_ALLOW_ANON_BINDING: no
      LDAP_ADMIN_USERNAME: admin
      LDAP_ADMIN_PASSWORD:
      LDAP_CUSTOM_LDIF_DIR: /ldifs
      LDAP_ROOT: dc=example,dc=com
    restart: always
    networks:
      web:
        ipv4_address: <IP_ADDRESS>
    ports:
      - 1389:1389
    volumes:
      - ./containers/openldap/ldifs:/ldifs:ro
      - ./containers/openldap/ldap:/bitnami/openldap
    labels:
      - traefik.enable=true
      ## HTTP Routers
      - "traefik.http.routers.openldap-rtr.entrypoints=https"
      - "traefik.http.routers.openldap-rtr.rule=Host(`openldap.$DOMAINNAME_CLOUD_SERVER`)"
      - "traefik.http.routers.openldap-rtr.tls=true"
      ## Middlewares
      # - "traefik.http.routers.wiki-rtr.middlewares=middlewares-oauth@file"
      ## HTTP Services
      - "traefik.http.routers.openldap-rtr.service=openldap-svc"
      - "traefik.http.services.openldap-svc.loadbalancer.server.port=1389"
      - "com.centurylinklabs.watchtower.enable=true"

  phpldapadmin:
    image: osixia/phpldapadmin:latest
    container_name: phpldapadmin
    environment:
      PHPLDAPADMIN_LDAP_HOSTS: "openldap:1389"
      PHPLDAPADMIN_HTTPS: "false"
    ports:
      - "9214:80"
    command: --loglevel=debug
    depends_on:
      - openldap
    networks:
      web:
        ipv4_address: <IP_ADDRESS>
    restart: always

If i use ldapsearch inside the container, using either the env variable or directly specifying openldap:1389 it works perfectly.

Creating a new network solved the problem for me. It doesn't even need a subnet or a gateway.
The problem is that the default created network doesn't have dns_enabled, so when we only assign "PHPLDAPADMIN_LDAP_HOSTS=ldap-host" it is not able to resolve host name. Whereas creating any new network has dns_enabled by default, so it was able to resolve the ldap host name.

@Karel-van-de-Plassche, I got it working with the following docker-compose file. Note that it doesn't using docker links, since they are superseded by networks.
version: '2'

services:

  ldap-host:
    image: osixia/openldap:1.1.8
    networks:
      mynet:
    environment:
      - LDAP_ORGANISATION="My Company"
      - LDAP_DOMAIN=my-company.com
      - LDAP_ADMIN_PASSWORD=admin

  ldap-admin:
    image: osixia/phpldapadmin:0.6.12
    networks:
      mynet:
    ports:
      - "6080:80"
    environment:
      - PHPLDAPADMIN_LDAP_HOSTS=ldap-host
      - PHPLDAPADMIN_HTTPS=false

networks:
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: <IP_ADDRESS>/16
          gateway: <IP_ADDRESS>


Proper support for callbacks to [immediate] entry methods of node groups

Original issue: https://charm.cs.illinois.edu/redmine/issues/1909

Currently, we don't keep track of whether a node group method is [immediate] or not inside of our callback infrastructure. This is also needed inside the direct API for zero copy messaging.

Original date: 2018-05-16 23:20:30

Fix: ~~https://charm.cs.illinois.edu/gerrit/#/c/charm/+/4196/~~ https://github.com/UIUC-PPL/charm/commit/dc0317bf55a92d09cd7ae864599f5f81131d2b56


The paths

Is it normal that in some cases the flow-conservation constraint doesn't always return the shortests paths in the 'link_paths' of the solution ?

Could you provide some bad cases so that I can better understand this problem?


Add HTTP/3 support

Resolves #1208
Mostly docs update and adding new version into config validation.

We have some logic that's specific to HTTP/2 in HttpForwarder:
https://github.com/microsoft/reverse-proxy/blob/b6477b184191613db69c2826611c392cde07ba62/src/ReverseProxy/Forwarder/HttpForwarder.cs#L112
Should this be updated to handle Http2OrGreater?
It looks like it's also used in our downgrade log:
https://github.com/microsoft/reverse-proxy/blob/b6477b184191613db69c2826611c392cde07ba62/src/ReverseProxy/Forwarder/HttpForwarder.cs#L138-L143
This should likely be updated to notify on downgrade from HTTP/3 as well.

We have some logic that's specific to HTTP/2 in HttpForwarder:
https://github.com/microsoft/reverse-proxy/blob/b6477b184191613db69c2826611c392cde07ba62/src/ReverseProxy/Forwarder/HttpForwarder.cs#L112

It is also used for gRPC so I don't touch it. In your example I probably should replace condition

It is also used for gRPC so I don't touch it. In your example I probably should replace condition

gRPC is considered forward compatible with HTTP/3, so this check should be expanded to HTTP/2 or greater.

https://github.com/microsoft/reverse-proxy/blob/b6477b184191613db69c2826611c392cde07ba62/src/ReverseProxy/Forwarder/HttpForwarder.cs#L139-L143
Consider removing this downgrade check always logging something like: "Received HTTP/(version) response (status code)."

Consider removing this downgrade check and always logging something like: "Received HTTP/(version) response (status code)."

Done, it required event renaming as well. Should I mark the PR as "breaking-change" after that?


Support Summary metric in OTel datamodel for Prometheus

See https://github.com/open-telemetry/opentelemetry-specification/issues/1146

For supporting information, also see:

https://github.com/OpenObservability/OpenMetrics/blob/master/specification/OpenMetrics.md#summary
https://prometheus.io/docs/concepts/metric_types/#summary

See https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.proto#L525. Is that not enough for this?

Closing this as the support was added, please reopen if I missed something


Is there any way to provide multiple cookie.?

Hi@j3ssie,
is there any way to provide multiple cookie bcoz when ever the spider hit /logout the cookie gets expire.. it will be an amazing feature if the user can provide multiple cookie!

Dunno if the feature did exist at the time you commented.
Actually you can do :
gospider -s "http://your.url" --cookie "test=test;testbis=testbis"

Be careful, if you add a space in between the cookies it will just add the first cookie.


Check if a number is a palindrome or not

Explanation:
Given a number , find if the number is a palindrome or not.
Example:
Sample Input 1 : 12321
sample Output 1 : YES
Sample Input 2 : 12356
Sample Output 2 : NO
Hey @SKAUL05 sir , I want to add this question in the 'NeoAlgo/C-Plus-Plus/cp/'. Please have a look!

/assign

Kindly issue this probleme to me .I am participant of GSSOC'21 I would implement this in python or C


Error on Storage/Volumes

I'm getting the error Error caught: [ArgumentError] undefined class/module NmaHash on Storage/Volumes -> show a Volume.

@jzigmund can you grab a stack trace so we can see where this is happening and if we should get @roliveri involved?  Thx, Dan

At this point, I wouldn't expect much under the storage tab to be operational. The feature is disabled by default, and hasn't been used or tested across numerous updates to the code base.

@roliveri ah good to know... do we have any other support for the future ? or is not decided yet ?
@dclarizio at this point, can I skip the tests for ontap views ?

@jzigmund yes, you can skip those


fix EnableRemoteSource bug

return error when call AddSource

Coverage decreased (-0.08%) to 59.228% when pulling dd65c3bc5b8df799c096f1a419b6ec8c0c28a1e3 on Shonminh:master into d13df4a11573be0a19f445a1e7baf0a75e641d63 on go-chassis:master.


ignoring node_modules

I'm sure this has been talked about before, but I can't find a clear issue for it. I'm playing around with using webpack with server-side node modules (using target: node). I started to like the idea of bundling of everything into a single js file because that would be cool for deployment, but what kills that idea is binary dependencies. They definitely can't be bundled in, though you might know of a hack that lets me alias them or something.
Is there any way to tell the system ignore bundling anything coming from node_modules, and just leave it as a require statement?
I don't know if the IgnorePlugin means that, but if so, trying it results in an error: plugins: [ new webpack.IgnorePlugin(/.*/, /.*node_modules.*/) ]
% webpack --config webpack.node.config.js

/Users/james/projects/jlongster4/node_modules/webpack/lib/Compilation.js:203
                factory.create(module.context, dependencies[0], function(err, dependantModul
                                     ^
TypeError: Cannot read property 'context' of null
    at Tapable.<anonymous> (/Users/james/projects/jlongster4/node_modules/webpack/lib/Compilation.js:203:24)

Sounds like you may be looking for externals
http://webpack.github.io/docs/configuration.html#externals

I suppose this works:
  externals: [
    function(context, request, cb) {
      if(/^[a-z\-0-9]+$/.test(request)) {
        cb(null, 'commonjs ' + request);
        return;
      }
      cb();
    }
  ]

I haven't fully tested it though... I'd be surprised if nobody has tried this before?

That code actually doesn't work. It doesn't take any aliases into account. I only have one alias, but I really don't want to have to duplicate all the aliases in the regexp.
Is there any way to run webpack's resolution algorithm and be able to test on the resulting path?

So here's another solution. We could just manually list the modules in node_modules and check them explicity:
var node_modules = fs.readdirSync('node_modules').filter(function(x) { return x !== '.bin' });

// ...

  externals: function(context, request, cb) {
    if(node_modules.indexOf(request) !== -1) {
      cb(null, 'commonjs ' + request);
      return;
    }
    cb();
  }

I think this actually works pretty well. I'm still confused how anyone uses webpack with node without running into the binary dependency problem

Have you tried node-loader? I've never used it, but it may fix your native dependencies. Ignoring node_modules in its entirety kind of defeats the purpose of webpack, doesn't it?

what are you actually trying to do? package up identical code for node and the client? ignore some things for the client, but not for the server?

There's no way I'm going to load my node modules any differently (having to prepend them with node! or something)
It doesn't defeat the purpose at all; if I get this working, I can entirely get rid of my gulp setup. I get the exact same transformations for my server code as I do with my frontend code and I get the watcher for free that is based on my dependency tree.

what are you actually trying to do? package up identical code for node and the client? ignore some things for the client, but not for the server?

It's not even that complicated: I just have some node code. I want to transform it (6to5, etc). I'm tired of using gulp & webpack and having two systems implement the same transformations. webpack is better in that it is based on my dependency graph, so the watcher automatically knows what to watch, and I'd rather just use it.

var node_modules = fs.readdirSync('node_modules').filter(function(x) { return x !== '.bin' });

{
  target: "node",
  externals: node_modules,
  output: {
    libraryTarget: "commonjs2"
  }
}

You wouldn't have to load your node modules any differently. You would add a loader in your webpack config.
module.exports = {
  ...
  module: {
    loaders: [
      { test: /\.node$/, loader: 'node-loader' }
    ]
  },
  ...
};

@sokra yep, that's basically what I landed on in https://github.com/webpack/webpack/issues/839#issuecomment-76736465. thanks. How come I have to specify an external as { foo: 'commonjs foo' }? If I just pass 'foo' it turns this:
var foo = require('foo');

into this:
var foo = foo;

You wouldn't have to load your node modules any differently. You would add a loader in your webpack config.

Yes, you do, you have to now suffix all of them with ".node" which is unacceptable.

I thought that was the purpose of resolve-extensions

It goes hand in hand with the library type (output.libraryTarget).
So when emitting a script module (which is the default) it tries to access the global var foo.
When emitting a CommonJs module (output.libraryTarget = "commonjs2") it requires the module require("foo")
When emitting an AMD module (output.libraryTarget = "amd") it puts the external in the define dependencies define(["foo"], function(...) { ... }).
And when emitting an UMD module it decides depending on environment.
https://github.com/webpack/webpack/tree/master/examples/externals

@sokra ah interesting, thanks for the explanation. I actually want to generate a script module (my whole backend code) but I want it to use require("foo")... Ah well, I can do it with a custom function that manually forces the commonjs style. Still trying to figure out if this is worth it. Seems like the node target is supported but nobody really uses it.

You wouldn't have to load your node modules any differently. You would add a loader in your webpack config.
Yes, you do, you have to now suffix all of them with ".node" which is unacceptable.

I thought that was the purpose of resolve-extensions

yep: resolve.extensions: ["", ".js", ".json", ".node"] is what node.js does.

Seems like the node target is supported but nobody really uses it.

I'll do it for prerendering in https://github.com/webpack/react-starter/blob/master/make-webpack-config.js#L130

I'll do it for prerendering in https://github.com/webpack/react-starter/blob/master/make-webpack-config.js#L130

That's cool, but it's a pretty simple example that doesn't run into any of the issue that I'm running into. Just try to use it with redis and the hiredis parsing library and you'll run into the binary dependency problem.

node target is also useful when handling unit tests in the cli

That's cool, but it's a pretty simple example that doesn't run into any of the issue that I'm running into. Just try to use it with redis and the hiredis parsing library and you'll run into the binary dependency problem.

I would use externals for all node_modules and only bundle your app code. Or is there any reason you don't want to do that?

I would use externals for all node_modules and only bundle your app code. Or is there any reason you don't want to do that?

That's fine with me! I just didn't know if I was doing it right. It doesn't seem like a well-trodden path and requires a bunch of manual work. Thanks!

The externals node_modules solution seems to work for what I need.

@jlongster I tried your method and when my server code did import React from 'react', react was indeed marked "external", but then all of its library files got bundled anyway.
For example, these were all added to my bundle:
./~/react/lib/ReactComponentBrowserEnvironment.js
./~/react/lib/ReactDOMIDOperations.js
etc

Any idea why that happens?

Nevermind.  It was caused because I had this prefetch plugin defined for my server webpack config (taken from react-starter).  I guess I only need this for the client code:
new webpack.PrefetchPlugin("react/lib/ReactComponentBrowserEnvironment")

Hello, I have been struggling with this issue the last couple of days. I am trying to import redis into my project but webpack is not allowing me to.
How can I import redis into my project if I exclude it from webpack?

This thread is extremely helpful but the proposed solution does not account for submodules. I tried using npm ls --only=production --parseable to compile a flattened list of module names but couldn't figure out how to convert it into a utility method.

The solution that I found, which is a slight derivative of what is in the config docs is this:
  config.externals = [
    // Every non-relative module is external
    // abc -> require("abc")
    /^[a-z\/\-0-9]+$/i
  ];

The key difference between this and the docs is the addition of the i flag and the / character to the regular expression. It has a few holes, like if you have a . legitimately in the path name of the external require, but otherwise works great with things like:
import createMemoryHistory from 'history/lib/createMemoryHistory';

FWIW, I was following along @jlongster's excellent series on using Webpack with node, and ran into similar issues with React and others as above. In my experience, the only reliable way is to include all node modules in externals. I did it this way: https://gist.github.com/prashaantt/257cf2a8cf4e8ee7f847.

I've also had the same issue and based on the externals example I did this:
var node_modules = {}
fs.readdirSync('node_modules').forEach(function(module) {
  node_modules[module] = "require('"+module+"')"
})

And then use externals: node_modules.

This is all way too confusing for such a common use case: I have a universal ES6 Node app and I want webpack to transpile a server bundle without needlessly including node modules.
This is the only thing that has worked:
var Fs = require('fs')
var nodeModules = {}
Fs.readdirSync('node_modules').forEach(function (module) {
  if (module !== '.bin') nodeModules[module] = 'commonjs ' + module
})

Then using externals: nodeModules in the config.

I agree, this is a pretty common use case. There should be a configuration option to do just this.

Note that the above codes all have a bug when including a module with a "/" in its name to indicate a submodule,
e.g:
import ReactDOMServer from "react-dom/server"
This still will cause the entire react-dom package and all its subdependencies to be bundled. I was wondering why my hello world was 800kb, and saw that this import line was breaking it.
The following code can be used to handle this edge case and properly let it be imported by commonjs:
var Fs = require('fs')
var nodeModules = {}
Fs.readdirSync('node_modules').forEach(function (module) {
  if (module !== '.bin') {
    nodeModules[module] = true
  }
})
var nodeModulesTransform = function(context, request, callback) {
  // search for a '/' indicating a nested module
  var slashIndex = request.indexOf("/");
  var rootModuleName;
  if (slashIndex == -1) {
    rootModuleName = request;
  } else {
    rootModuleName = request.substr(0, slashIndex);
  }

  // Match for root modules that are in our node_modules
  if (nodeModules.hasOwnProperty(rootModuleName)) {
    callback(null, "commonjs " + request);
  } else {
    callback();
  }
}

...
externals: nodeModulesTransform

You can see my complete webpack config with this working here:
https://gist.github.com/lingz/14ad8ea44998f5009d5d

You can also use webpack-node-externals to achieve this result:
var nodeExternals = require('webpack-node-externals');
...
module.exports = {
    ...
    externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
    ...
};

@liady brilliant find.
On Thu, Feb 11, 2016 at 5:29 AM, Liad Yosef<EMAIL_ADDRESS>wrote:

You can also use webpack-node-externals
https://github.com/liady/webpack-node-externals to achieve this result:
var nodeExternals = require('webpack-node-externals');
...
module.exports = {
...
externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
...
};
—
Reply to this email directly or view it on GitHub
https://github.com/webpack/webpack/issues/839#issuecomment-182816233.

--
Brandon Wallace
Palladium Consulting
http://www.palladiumconsulting.com/

I just published webpack-externals-plugin. It has the advantage of supporting external modules that were installed after the initialization of the webpack compiler.
  plugins: [
    new ExternalsPlugin({
      type: 'commonjs',
      include: __dirname + '/node_modules',
    }),
  ],

@Morhaus: webpack-externals-plugin looks like a very neat solution. Going to give it a go. Thanks :)

Bit different take but this is my preference. Instead of reading the file system, this just reads the package.json's dependency names and includes them all as externals.
The benefit to this approach is that I only exclude node_modules when compiling webpack libraries, and those dependencies should all be in the package.json for the library being webpack'ed.
(I transpile my config with Babel)
import packageJSON from './package.json'
const { dependencies = {}, devDependencies = {}, peerDependencies = {}, optionalDependencies = {} } = packageJSON
const dependencyNames = Array.from(new Set( [ ...Object.keys(dependencies)
                                            , ...Object.keys(devDependencies)
                                            , ...Object.keys(peerDependencies)
                                            , ...Object.keys(optionalDependencies)
                                            ] ))
const externals = dependencyNames.reduce((externals, name) => ({ ...externals, [name]: true }), {})
export default { externals
               , /** rest of config here */
               }

I have a few issues with the two popular approaches:
regex to externalize non-relative paths

Almost good but frail when using webpack aliases to common areas in your app (they will look as though they are a node_module when really they should be bundled).

Reading node_modules approach

Scoped modules go in a subdirectory within node_modules, if you try and import '@myscoped/package' the external is only good for '@myscoped' and your scoped modules will be bundled when they shouldn't.
If you haven't npm pruned prior to running webpack and your dependencies have changed there will be extra externals pulled in than should be.
There should be no scenario when you are importing a node_modules package within your library that is not called out in your package.json dependencies, but there will likely be many sibling libraries that get pulled in by NPM that you do not need to externalize.
npm 2 / 3 handle dependencies differently and there will be varying levels of recursion. Seems prone to breakage as library gets larger / more dependencies.

If I am off on anything here please set me straight.

@cchamberlain Great suggestion. I updated webpack-node-externals to accept modulesFromFile flag, that will read the modules from the package.json file instead of the node_modules dir:
// webpack.config.js
var nodeExternals = require('webpack-node-externals');
...
module.exports = {
    ...
    externals: [nodeExternals({
        modulesFromFile: true
    })], // in order to ignore all modules in package.json when bundling
    ...
};

Here is my way to prevent node_modules from being bundled:
{ externals: [function (context,req,cb) {
        !/^\./.test(req)
          ? cb(null,req)
          : cb(null,false);
  }]
}

Output bundle requests then look like this (require isn't declared in result bundle):
/***/ (function(module, exports) {

module.exports = require("path");

/***/ }),

Can the filtered external module be output to a node_modules dir?

Still getting
ERROR in ./node_modules/realm/lib/browser/index.js Module not found: Error: Can't resolve 'react-native' in '/Volumes/Others/Project/realm-exporter/node_modules/realm/lib/browser'.
Any updates?


Position footnotes (endnotes) at the bottom of the last page of the chapter

By default the footnotes appear after the text of a chapter. But it doesn't look that great. I think it would be much nicer if we could position them at the bottom of the last page of a chapter, keeping as much vertical space after the text and before the footnotes as possible.
Could I please ask how this can be done?

This seems like a reasonable request. Before writing the footnotes to the last page of the chapter of a book or the end of the document for an article, we can dry run the footnotes to see how tall they are. If they're shorter than the available space on the page, the cursor should be moved down by that distance before writing them. That will make them effectively vertically aligned to the bottom.

Thank you very much for taking this into consideration, really appreciate that 🙂
I am not sure where I could ask this, and I couldn't find any information on that anywhere, but is the positioning of all footnotes all lumped together at the end of the book possible right now? They seem to be numbered across chapters, which would indicate that might be the case, but I couldn't find any information on how to do this, how to move them all into a 'footnotes' section at the end.
(I am really not a big fan of where the footnotes begin directly after the text as it is right now, hence me asking - sorry for the bother, and thank you very much for all your help!)

I am not sure where I could ask this

The best place to ask general questions is either the mailing list at https://discuss.asciidoctor.org or the Gitter channel at https://gitter.im/asciidoctor/asciidoctor

is the positioning of all footnotes all lumped together at the end of the book possible right now

No, it is not. When the doctype is book, the footnotes are per chapter. Many, many people asked for us to implement footnotes as chapter endnotes (since the converter cannot place them at the bottom of the page), so that is what we did.

I've decided to backport this feature to the v1.6.x branch.


Multi project - initial Docker support

Initial (and not yet fully tested) Docker support added to multiProject branch.
Notes:

At the moment (for simplicity) all modules are executed in a single container.

All Docker-related scripts and configuration settings are located in the new "./docker" folder.

To start container:

switch current folder to ./docker
$ docker-compose build
$ docker-compose up

While created image should utilize GPU, docker-compose doesn't support gpus at the moment. To enable GPU, container needs to be started directly from docker (it requires mapping volumes as done in docker-compose.yml though). Appropriate script will be added in the future.

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


[AppConfig] Validate key and feature names before setting and importing

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR has modified HISTORY.rst describing any customer-facing, functional changes. Note that this does not include changes only to help content. (see Modifying change log).

[x] I adhere to the Command Guidelines.

@avanigupta please resolve conflicts first.


Console plugin does not fail on error on Firefox

I'm trying to use the console plugin with Firefox and it seems to work only partially. The only thing that works is logs filtering (the exclude option), but none of failOnError, failOnWarning doesn't seem to work properly, they work when I tested on Chrome.

This is because the firefoxdriver implements log grabbing slightly differently. We should clarify that the console plugin is only guaranteed against chrome.

@juliemr Do you think it would make sense to report it to Selenium to make the Firefox driver work similarly to the Chrome one?

One more thing - I'm getting random NS_ERROR_XPC_BAD_CONVERT_NATIVE  errors in console when running tests in Firefox (no idea why) that actually make tests fail:
Fail:  Console output
       SEVERE: NS_ERROR_XPC_BAD_CONVERT_NATIVE:

so it looks like it works in some cases :)


Prev/Next Links are strange

I am at the bottom of Compatibility
The prev/next links at the bottom are strange:

Yeah, that's because Compatibility is sourced from prometheus-operator and not from prologue. Seems like an issue in how we categorize pages.
Thanks for reporting this! If you have more issues regarding usage of prometheus-operator, join us on kubernetes slack in #prometheus-operator channel.

It seems to be fixed now

yes, I can confirm. Looks good now. Thank you!


Question about order of plugin lifecycle events when client disconnected due to multiple sessions

Environment

VerneMQ Version: 1.2.3
OS: Debian Jessie

We are using lua script for authentication, and we store some state per client in the kv table during the auth_on_register hook. We clean this state up in the on_client_offline and on_client_gone hooks.
When a duplicate client connects, what is the order of hook calls?
I'm guessing it needs to perform the auth first before it can remove the first client, otherwise a non-authed client could DoS authed ones. If this is true, then our cleanup will remove the new session's info from the kv table. We could use the peer info in the key, but the offline and gone hooks only have the ClientId, I think issue #169 is related here.

@kellycampbell Hi, thanks for your question.
Are you saying that the order of hooks for the duplicate client is the same, or that it SHOULD have another order?
Before I send you in a wrong direction, I'll ping @larshesel and @dergraf here.

My question is what is it expected to do in the current implementation.
My "guess" is regarding what I think it currently does and why it has to be that way, but I don't have exact test data about it.
If it works as my guess postulates, then our cleanup for disconnecting clients won't work for the case of a client replacing an existing session.

Hi @kellycampbell the auth_on_register hook is evaluated before the client is registered and it is the registration which will disconnect any existing clients with the same client id. So the on_client_ hooks on the existing session are called after the auth_on_register hook for the new session with the same client id.


how can i create E2E cypress tests?

how can i create E2E cypress tests?

Have you reviewed our documentation on e2e testing? https://single-spa.js.org/docs/testing/e2e/
Any specific details you still have questions for?

i would like example config cypress and single spa

We don't have any examples for this. If you create one, please do share with the us and the wider single-spa community!

Any community contributed examples for this are welcome!


Support specifying target architectures for Android

This PR  adds the possibility to specify a target architecture for Android via the -arch flag.
It also introduces the universal architecture constant.
Fixes #52

I wonder if it needs to be more specific about what universal is - the docs simply say multiple architectures.
Or maybe not, I guess this is platform specific.
Does it need to be applied to iOS and macOS as well?

I wonder if it needs to be more specific about what universal is - the docs simply say multiple architectures.
Or maybe not, I guess this is platform specific.
Good point. I'll update to use multiple architectures.

Does it need to be applied to iOS and macOS as well?
That would be great. Wondering if we should implement this feature into the fyne cli tool.

Sorry @lucor. I don't have any Android phone to actually test this on.

That would be great. Wondering if we should implement this feature into the fyne cli tool.

We can look at it. Let's chat to @changkun who is working on many elements of Fyne iOS just now :)

(sorry I didn't meant "approve", but just want to write some comments..)

Going to merge, created https://github.com/fyne-io/fyne/issues/2515 to keep track of macOS / iOS discussion.


Option to Disable Double Click menu

Is your feature request related to a problem? Please describe.
新功能是否与解决某个问题相关, 请描述
I think that the double click menu on any webpage can be distracting and at times annoying
Describe the solution you'd like
你期望的新功能实现方案
I would like an option to toggle the ability to double click to open the chatGPTBox menu
Additional context
其他
I simply think that the menu can be annoying, I personally prefer it only being available as a double click but other users might think otherwise, hence why it should be an option

After looking through the settings I found that you can disable it by turning off all the module > selection tools options
Sorry that I wasn't able to find this before opening this feature request

This design is indeed somewhat subtle.
I mentioned it in the guide: https://github.com/josStorer/chatGPTBox/wiki/Guide#want-to-disable-selection-tools


Container build fails for 3D-UNet-99

Running the command for ResNet50 works correctly:
cm run script --tags=run-mlperf,inference,_performance-only,_full     --division=open    --category=edge    --device=cuda    --model=resnet50    --precision=float32    --implementation=nvidia    --backend=tensorrt    --scenario=Offline    --execution_mode=valid    --power=no    --adr.python.version_min=3.8    --clean    --compliance=no    --quiet    --time    --docker    --docker_cache=no
But 3d-unet-99 fails
cm run script --tags=run-mlperf,inference,_performance-only,_full     --division=open    --category=edge    --device=cuda    --model=3d-unet-99    --precision=float32    --implementation=nvidia    --backend=tensorrt    --scenario=Offline    --execution_mode=valid    --power=no    --adr.python.version_min=3.8    --clean    --compliance=no    --quiet    --time    --docker    --docker_cache=no
Error log:
`Loading TensorRT plugin from build/plugins/conv3D3X3X3C1K32Plugin/libconv3D3X3X3C1K32Plugin.so
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/base.py", line 189, in subprocess_target
return self.action_handler.handle()
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/generate_engines.py", line 176, in handle
total_engine_build_time += self.build_engine(job)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/generate_engines.py", line 159, in build_engine
builder = get_benchmark(job.config)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/init.py", line 83, in get_benchmark
cls = get_cls(G_BENCHMARK_CLASS_MAP[benchmark])
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/init.py", line 66, in get_cls
return getattr(import_module(module_loc.module_path), module_loc.cls_name)
File "/usr/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1014, in _gcd_import
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 671, in _load_unlocked
File "", line 848, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/3d-unet/tensorrt/3d-unet.py", line 25, in
import onnx
ModuleNotFoundError: No module named 'onnx'
[2024-06-19 10:30:07,499 generate_engines.py:173 INFO] Building engines for 3d-unet benchmark in Offline scenario...
Loading TensorRT plugin from build/plugins/pixelShuffle3DPlugin/libpixelshuffle3dplugin.so
Loading TensorRT plugin from build/plugins/conv3D1X1X1K4Plugin/libconv3D1X1X1K4Plugin.so
Loading TensorRT plugin from build/plugins/conv3D3X3X3C1K32Plugin/libconv3D3X3X3C1K32Plugin.so
Process Process-2:
Traceback (most recent call last):
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/base.py", line 189, in subprocess_target
return self.action_handler.handle()
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/generate_engines.py", line 176, in handle
total_engine_build_time += self.build_engine(job)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/generate_engines.py", line 159, in build_engine
builder = get_benchmark(job.config)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/init.py", line 83, in get_benchmark
cls = get_cls(G_BENCHMARK_CLASS_MAP[benchmark])
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/init.py", line 66, in get_cls
return getattr(import_module(module_loc.module_path), module_loc.cls_name)
File "/usr/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1014, in _gcd_import
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 671, in _load_unlocked
File "", line 848, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/3d-unet/tensorrt/3d-unet.py", line 25, in
import onnx
ModuleNotFoundError: No module named 'onnx'
Traceback (most recent call last):
File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/main.py", line 231, in
main(main_args, DETECTED_SYSTEM)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/main.py", line 144, in main
dispatch_action(main_args, config_dict, workload_setting)
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/main.py", line 202, in dispatch_action
handler.run()
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/base.py", line 82, in run
self.handle_failure()
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/base.py", line 186, in handle_failure
self.action_handler.handle_failure()
File "/home/cmuser/CM/repos/local/cache/be4b540d34434756/repo/closed/NVIDIA/code/actionhandler/generate_engines.py", line 184, in handle_failure
raise RuntimeError("Building engines failed!")
RuntimeError: Building engines failed!
make: *** [Makefile:37: generate_engines] Error 1
CM error: Portable CM script failed (name = app-mlperf-inference-nvidia, return code = 256)`
However, running 3d-unet-99 within the container built for ResNet50 works correctly.

Thanks for reporting this. The problem should be fixed now. We typically launch one docker image for nvidia implementation and run all the benchmarks there - so missed this issue for 3d-unet.

Seems to be working now, thanks!


Rest Framework integration

Due to it's "managed" implementation, django-taggit is not easy to use with django-restframework.
Since I couldn't find anything but ugly and bad written hack on the internet to interface django-taggit with the rest framework, I think it would be a great thing to implement a working serializer for taggit. It could be either directly implemented into django-taggit or be an interface third-party application.
I'm not used to the rest-framework, but since I currently need this feature, I'm developing a small app to do the job. I may release it if I find it clean enough.

@xaralis I am trying to use your solution in my project but am running into issues. Can you spot any mistakes?
from django.forms import widgets
from core import serializers as custom_serializers
from datapoint.models import Datapoint, Annotation
from rest_framework import serializers

class TaggedModelSerializer(serializers.ModelSerializer):
    """
    xaralis's solution from https://github.com/alex/django-taggit/issues/223

    Rest framework doesn't work with django taggit very well since it is not
    ready for fields being in fact TaggitManager instance.

    This class solves it by pulling out the incorrectly resolved data and saving
    them manually thereafter.
    """
    tag_fields = ['tags']

    def save_object(self, obj, **kwargs):
        tags_to_set = {}

        # Try to find tag data.
        if getattr(obj, '_m2m_data', None):
            for f in self.tag_fields:
                if f in obj._m2m_data:
                    # pop() is important. We don't want the data to be set by
                    # rest framework.
                    tags_to_set[f] = obj._m2m_data.pop(f)

        # When data has been cleaned, save the object as usual.
        super(TaggedModelSerializer, self).save_object(obj, **kwargs)

        # If some tag data was previously found, save them now.
        for f, tags in tags_to_set.items():
            # Pull out the tag manager class.
            mngr = getattr(obj, f)

            # Decide which class for tags is being used.
            TagClass = mngr.through.tag.field.rel.to
            tgs = TagClass.objects.filter(slug__in=tags)

            # Finally, set the data using manager class.
            mngr.set(*tgs)

class DatapointSerializer(TaggedModelSerializer):
    class Meta:
        model = Datapoint
        fields = ('pk', 'owner', 'project', 'collections', 'name', 'description', 'author', 'source', 'url',
                                                        'publish_date', 'tags')

I don't know if anyone is interested, but I've been working on a serializer for the django taggit package. Take a looksies and if you have any issues or changes you wanna make, let me know!
https://github.com/glemmaPaul/django-taggit-serializer

Kudos @glemmaPaul ! Will definitely give this a go!

@glemmaPaul stellar job, I was afraid I would have to do some long, arduous task to get taggit and DRF to play nice. For anyone reading this, definitely use his serializer.

Are there any solutions for filtering from tags in a GET URL for DRF + Taggit?

I have used this serializer for DRF  + django-taggit - https://github.com/glemmaPaul/django-taggit-serializer it works fine..

Since this issue appears to be resolved, I am closing it. Please open a new issue for any new concerns.


Webeditor thinks a group is a blob

I draw a 2 monomer peptide, create a group and link a CHEM to the group.

If I right-click where the bond attaches to the outside of the group, I get the blob menu

This should not be available as the group is not a blob.

Fixed in 2018-05-06 update

Confirmed fixed, however I can no longer access the context menu for the bond between group and CHEM or the context menu for the group as a whole. I will raise these as separate issues.


Make project multiplatform

Description
This disconnects the project from node, and makes the project multi platform. This adds esbuild as a build system and separates the test system into platform specific pieces. This also adds a few dependencies so that might be something you want to avoid.
Type of change

[X] New feature (non-breaking change which adds functionality)
[?] This change requires a documentation update (it now works on browser, so potentially)

Checklist:

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[?] I have made corresponding changes to the documentation (see above)
[X] My changes generate no new warnings
[X] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] I have checked my code and corrected any misspellings

This looks great! I'll review the changes and do some testing. Meanwhile, could you fix the conflicts?
Thank you.

So, unfortunately bundling is a tough problem, and we can't really use --keep-names because that just assures that the legacy variable name is the same throughout minification which doesn't really help us in this case. The best solution I could come up with is to include source maps which will map the minified code to the actual source, and in environments like the browser it will automatically look the same.
Types should work after this change, unless you use explicit imports of build/node.js, build/browser.js, etc. which sadly for us because our tests do not use a bundler, means that types will be unavailable there, but to any end user it should look normal. Just an aside, the issue with idb was just a missing lib.dom.d.ts because typescript thought it was just a node environment.


Flights Page Search Subfleet Column

I see this by default.
https://prnt.sc/r6fj4f

Uhh that's really weird, showing a list of flights. Would you be able to do a SQL dump of your subfleets and aircraft tables and attach them as a file to a comment?

Downloads.zip

Are you still getting this with the latest dev?

Let me know if this is still open in the latest dev versions


broad synonym

From<EMAIL_ADDRESS>on March 10, 2011 09:56:42
label for the new term
Broad synonym
textual definition
def: "Information artifact that links an ontology term to a term in language that, within some specified publication or discipline, has a broader set of referents then the ontology term." Please provide any additional information below. (e.g., proposed position in the IAO hierarchy) is_a: synonym
Original issue: http://code.google.com/p/information-artifact-ontology/issues/detail?id=104

This issue was moved to information-artifact-ontology/ontology-metadata#18


Fixed KNN crashing when training data >4GB

Issue #, if available:
Description of changes:
Fixed KNN crashing when training data >4GB
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Job PR-361-1 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-361/1/index.html


feat: support full slice in __getitem__

I feel uneasy about overloading __getitem__ too much, but I think df[[0, 2], :] at least should be supported

Closed by #839


compass rotation angle bug

to rotate compass we use eulerAngles:
-cameraNode.eulerAngles.y
But it works not in a proper way. The compass always jumps in different directions during rotation.

I've found the solution. Instead of
-cameraNode.eulerAngles.y
use rotation:
let v1 = SCNVector3(0, 0, 1)
let v2 = cameraNode.presentation.convertPosition(v1, to: nil)
let rotation = atan2(v2.z, v2.x) - (.pi / 2)

I've found the solution. Instead of
-cameraNode.eulerAngles.y
use rotation:
let v1 = SCNVector3(0, 0, 1)
let v2 = cameraNode.presentation.convertPosition(v1, to: nil)
let rotation = atan2(v2.z, v2.x) - (.pi / 2)

Had the same problem. Good fix. This fix should be merged into the latest version.


Website link on repo broken

The URL on the side of this repository goes to https://regro.github.io/conda-press-docs/ which is a 404.

IMO it would be nice to have those docs simply put into a Wiki on the repo itself.
The docs are almost completely in markdown, so this shouldn't be an issue.
The wiki in github can also have a changelog and versioning as outlined here.


Broken DAG: [/usr/local/airflow/dags/example_variables.py] 'var1'

After adding the example_variables.py variable, I am getting a broken dag error
Broken DAG: [/usr/local/airflow/dags/example_variables.py] 'var1'

Duplicate issue https://github.com/tuanavu/airflow-tutorial/issues/14

Thanks for reporting this error, I have commented out the example_variables.py to avoid the missing variable error.


Add more stuff on the high-score (lookup)

when you move your mouse on top of the total level (skill:Overall) it should show

which skills the player done last? so as in last action?

Example: if i done thieving and i didn't log in for a week it will still show thieving? till i do another skill.
-which skill is the closest to level up, and if your level 99 the next xp will be 200m xp so which skill is the closest to 200m xp.

Since this panel was redesigned a long time back with the Obsidian redesign, this gap no longer exists and thus does not need filling.


Result output in a non-root directory (

Describe the bug
If I run this command: robot -d ./../DCS/results -v
images_dir:./../DCS/results/visual_images/baseline --test "PDF Visual
Overflow" ./../DCS  generate_report fail
If I run this command: robot -d results -v
images_dir:./../DCS/results/visual_images/baseline --test "PDF Visual
Overflow" ./../DCS  generate_report pass
Screenshots
robot -d ./../LTSA/DCS/results -v images_dir:./../LTSA/DCS/results/visual_images/baseline --test "Verify Strata Property Act Filing PDF Visual Overflow" ./../LTSA/DCS

robot -d results -v images_dir:./../LTSA/DCS/results/visual_images/baseline --test "Verify Strata Property Act Filing PDF Visual Overflow" ./../LTSA/DCS

Desktop (please complete the following information):

OS: Win 10
Browser Firefox
Version 1.5.1

Hello, I have same problem.
It seems that the issue is in this line
https://github.com/jz-jess/RobotEyes/blob/master/RobotEyes/__init__.py#L246
when absolute windows path (e.g. C:\Results) is provided, the first letter is stripped and therefore report_path is set to \Results - which doesn't exist

Fix released in 1.5.2


Please add maxWidth option

Added option max-width: string
https://github.com/drozhzhin-n-e/ng2-tooltip-directive/commit/8cbe87cba775af6fce7d13647529adaf60ee4983

Awesome! thank you very much!


Configuring @datadog/mobile-react-native alongside native DataDog libraries

Is your feature request related to a problem? Please describe.
The @datadog/mobile-react-native package does not specify an option to configure DataDog in native code instead of in the react-native portion or detail if react-native & native iOS/Android DataDog support can coexists.
Additional context
We are in the process of adding dd-sdk-reactnative to our React Native project. We already have the DatadogSDK iOS SDK installed and configured for logging some iOS native code we have for our React-Native project. Is setting up DataDog for react-native + native iOS/Android supported? If we find that it does work, should we rely on it? There is not documentation (that I know of) that has DataDog implemented in RN & native code.
Describe the solution you'd like
A documented option for configuring DataDog natively in iOS and Android instead of within react-native for @datadog/mobile-react-native.
Describe alternatives you've considered
I have considered continuing to configure DatadogSDK in native iOS, configure it in Android, and then not configure it in react-native code. I believe this would work as-is since dd-sdk-reactnative uses the DataDog iOS package. However, it would be nice to see documentation in react-native setup that specifies this is an option if you need both react-native and native iOS/Android DataDog support.

Hi @akinzalowevidation, thank you for reaching out!
As of now, it should be possible to use Datadog both in the React Native and native sides :)
It's not officially documented as it's not a highly requested feature, but if this issue gets a lot of attention we'll look into it. In the meantime, here are some indications on how to achieve it.
Constraints
Before getting started, I need to mention a few constraints to keep in mind.

We currently cannot initialize more than 1 instance of  the native DatadogSDK, we use a singleton pattern. That means that as we can initialize the native SDK in the native side or on the RN side (by calling DdSdkReactNative.initialize) and then it will be configured for both.
If we try to call any Datadog method before the initialization, we might end up with things not working.
For errors, resources and interactions tracking,  SDKs can work in 2 ways: through auto-instrumentation (we modify some framework classes and methods to automate this) or through manual instrumentation - for instance if you want to report something you consider an error but that is not going to crash the app. Auto-instrumentation for JS errors, resources and interactions can only be started from javascript code.

Solutions
We have 3 solutions, depending on your needs
Recommended: initialize the SDK on the React Native side only
The idea is to initialize the RN SDK, by calling DdSdkReactNative.initialize at the start of your RN application. This will also initialize the native SDK.
If you are sure that you don't call the native SDK before the RN SDK (e.g. if you only use logging in some native code that is not called during the initialization), you're fine with this solution.
Potential issues
You cannot call the native SDK before the RN SDK has been initialized. You can mitigate it by creating a queue on the native side to check if the SDK has been initialized before calling it, but events' timestamps might be wrong then.
Initialize the SDK on the native side
If you have to call the native SDK before the RN SDK and don't need the auto instrumentation for JS errors, resources or interactions, (i.e. passing false as 4th, 5th and 6th arguments to DdSdkReactNative.initialize) you can initialized the SDK in the native code.
Potential issues
You won't have auto instrumentation for JS errors, resources or interactions. You can mitigate this triggering this auto instrumentation yourself. All you have to do is to do what the enableFeatures function does. Note that you will have to use imports to the path to the file (e.g. import {DdRumErrorTracking} from '@datadog/mobile-react-native/src/rum/instrumentation/DdRumErrorTracking';) and that the path to these files might change across SDK versions.
Initialize the SDK on both sides
You can still initialize the SDK on both sides, but this can lead to unexpected results, so be sure to test it well. With this solution you will have to maintain 2 configurations. This can cause issues if the first SDK to initialize is not consistently the same and your configurations are not the same.
I hope this makes sense to you and that can help you make the SDK work on both native and JS sides.
I'd also be interested to know what you're use case is and which solution you think fits you best :)
Feel free to reply if you have any question, or close the issue if this resolved it.

@louiszawadzki Thank you for the detailed and very useful response!
I ended up going with option 2. Everything seems to work well except for two things:

I am not seeing any logs appear for my service when logging from react-native after initializing in iOS native.
I do not see errors under the Error Tracking feature of UX Monitoring, but I do see them under the dashboards for the RUM Application. I can see the errors there and click on them to go to the Error Tracking feature, and when I get there it is empty for that application.

Regarding logging, this is how I am using it:
Datadog.initialize(
      appContext: .init(),
      trackingConsent: .granted,
      configuration: Datadog.Configuration
        .builderUsing(
            rumApplicationID: rumApplicationID,
            clientToken: clientToken,
            environment: environment
        )
        .set(serviceName: "...")
        .set(tracingSamplingRate: 100.0)
        .set(rumSessionsSamplingRate: 100.0)
        .set(endpoint: .us1)
        .trackUIKitRUMActions()
        .trackURLSession(firstPartyHosts: Set(["..."]))
        .enableCrashReporting(using: DDCrashReportingPlugin())
        .build()

Datadog.verbosityLevel = .debug
Global.rum = RUMMonitor.initialize()

import { DdLogs } from "@datadog/mobile-react-native";

...

DdLogs.info(...);

I notice the dd-bridge-ios sets up its own logger. By initializing in native, is this step being skipped?
Everything else appears to be working correctly :+1:

Regarding the error feature, I discovered that RUM javascript errors do not appear there. No worries though as I can just see them under the RUM application dashboard.
The tracing is working well after that addition :+1:. I am still not seeing logs though.
It says that they are uploading:
[DATADOG SDK] 🐶 → 15:01:18.530 [DEBUG] ⏳ (logging) Uploading batch...
[DATADOG SDK] 🐶 → 15:01:18.914 [DEBUG]    → (logging) accepted, won't be retransmitted: [response code: 202 (accepted), request ID:XXX]

But I do not see any logs for our serviceName. I did .set(serviceName: "...") on both Logger.builder and Datadog.initialize.
I also have set Datadog.verbosityLevel = .debug.
Are there any other requirements for logs to be sent from the RN package or iOS SDK?

Hi @akinzalowevidation, I've not managed to recreate the issue on my side, even when setting the service name.
Could you try to share a small repo on which you can reproduce the issue to help us troubleshooting?

Hi @akinzalowevidation, unfortunately I've not managed to recreate the issue on my side, even when setting the service name 😞
Could you try to share a small repo on which you can reproduce the issue to help us troubleshooting?

After much investigation I found out that the missing logs were a permission issue in my organization. The team that manages our DataDog services fixed and and I see all of them now :+1: Thank you for the assistance!


docs: Sliding list link leads to wrong github example

Type: docs
Ionic Version: 2.x
Platform: all

- go to [Components: Sliding list page](http://ionicframework.com/docs/v2/components/#sliding-list)

click demo source

You land on thumbnail list example. The correct url should be: https://github.com/driftyco/ionic-preview-app/blob/master/app/pages/lists/sliding/template.html

This issue was moved to driftyco/ionic-site#471


Plot enhancement

Description

Use rangebreaks parameter in plotly to handle gaps in datetime axises. (Fix # FIXME: support HIGH-FREQ)
Able to plot both IC and RankIC in model_performance_graph.
Horizontally layout the bar plots in risk_analysis_graph for better looking.
New style

v.s. Old style

Some improvement in plot style

Motivation and Context
Improve the report graphs.
How Has This Been Tested?
Create a simple fake pred_label df
from pandas.tseries.offsets import CustomBusinessHour
import pandas as pd
import numpy as np
from qlib.contrib.report import analysis_model, analysis_position

cbh = CustomBusinessHour(start=["09:30", "13:00"], end=["11:30", "15:00"])
dt_idx = pd.date_range("2022-12-01", "2022-12-10", freq=cbh)
fake_label_df = pd.DataFrame(np.random.randn(392, 2)*0.01, index=pd.MultiIndex.from_product([dt_idx.to_list(), list("abcdefghigklmn")], names=['datetime', 'instrument']), columns=['label', 'score'])
analysis_model.model_performance_graph(fake_label_df, show_nature_day=False)

see the result as expected

Screenshots of Test Results (if appropriate):

Pipeline test:
Your own tests:

Types of changes

[x] Fix bugs Enhancement
[ ] Add new feature
[ ] Update documentation

@you-n-g do you mind review please?

@you-n-g
pytest fails in rl module which looks weird since my change should have nothing to do with it.

Thanks!
It looks great!


tzk init doesn't work for me

I have just tried to initialize a new Zettelkasten wiki on my Mac using the instructions provided. Here are my vital statistics:
MacOS Ventura 13.4.1
$python -v
Python 3.9.16 (main, Mar  8 2023, 04:29:44)

$tzk --version
tzk version 0.3.0

$npm --version
9.6.7

$git version
git version 2.41.0

My set up process was
$tzk preflight
You're all set! Change into a directory you want to turn into your tzk repository and run 'tzk init'.

$mkdir my-zettle-kasten
$cd my-zettle-kasten

The error message is:
$tzk init
tzk: Creating new tzk_config.py...
tzk: Creating new package.json...
tzk: Installing npm packages from package.json...

added 1 package, and audited 2 packages in 3s

found 0 vulnerabilities
tzk: Creating new TiddlyWiki...
Traceback (most recent call last):
  File "/Users/eechris/anaconda3/bin/tzk", line 8, in <module>
    sys.exit(launch())
  File "/Users/eechris/anaconda3/lib/python3.9/site-packages/tzk/__main__.py", line 440, in launch
    args._cls().execute(args)
  File "/Users/eechris/anaconda3/lib/python3.9/site-packages/tzk/__main__.py", line 166, in execute
    tw.install(args.wiki_name, args.tiddlywiki_version_spec, args.author)
  File "/Users/eechris/anaconda3/lib/python3.9/site-packages/tzk/tw.py", line 197, in install
    _init_tw(wiki_name)
  File "/Users/eechris/anaconda3/lib/python3.9/site-packages/tzk/tw.py", line 117, in _init_tw
    subprocess.check_call((_tw_path(), "--init", "tzk"))
  File "/Users/eechris/anaconda3/lib/python3.9/site-packages/tzk/tw.py", line 21, in _tw_path
    return _npm_bin() + "/tiddlywiki"
  File "/Users/eechris/anaconda3/lib/python3.9/site-packages/tzk/tw.py", line 17, in _npm_bin
    return subprocess.check_output(("npm", "bin"), text=True).strip()
  File "/Users/eechris/anaconda3/lib/python3.9/subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/Users/eechris/anaconda3/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '('npm', 'bin')' returned non-zero exit status 1.

I'll dig a bit more to see if I can find out what's happening on that last line. But maybe you have seen this before?

It's this:
https://github.com/sobjornstad/tzk/issues/8
Hopefully I can get around to finding a fix for that soon. You could work around it by installing npm<9 if you don't need the newer version for anything else.
On Wed, Jun 28, 2023, at 10:57, Chris P. Jobling wrote:

If it matters, node, npm, and git are all installed using homebrew. My Python is anacoda3 but installed as a homebrew cask.
—
Reply to this email directly, view it on GitHub https://github.com/sobjornstad/tzk/issues/10#issuecomment-1611695155, or unsubscribe https://github.com/notifications/unsubscribe-auth/AARUZRSIFX3NWOJRJVP4343XNRH7NANCNFSM6AAAAAAZXKSS5U.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Thanks, @sobjornstad. I'll do that. I think that I'll also write up the process that tzk init goes through so that folks can work around it manually. Can I assume that the other tasks that the tzk CLI performs do work?

Should be fixed in new release 0.4.0.


redo the bowling exericse to match the canonical tests and description

#488
the bowling exercise now strictly matches the canonical tests

@danielj-jordan sorry to see this has lingered so long.
It looks as if in the meantime two more tests have been added to the canonical set, but let's leave that for another PR.
Thanks for the great work!