Drupal VM 4.7.2 / BLT 9.x-dev give error on vagrant up

Issue Type

Bug Report / Support Request

Your Environment

C:\WINDOWS\system32>vagrant --version
Vagrant 2.0.2
C:\WINDOWS\system32>vboxmanage --version
5.2.6r120293

Ansible show as being uninstalled, but runs when after vagrant up, why is that?

C:\WINDOWS\system32>ansible --version
'ansible' is not recognized as an internal or external command,
operable program or batch file.

Your OS

Windows 10

Full console output
skipping: [agency]
TASK [geerlingguy.varnish : Copy varnish secret.] ******************************
skipping: [agency]
TASK [geerlingguy.varnish : Ensure Varnish services are started and enabled on startup.] ***
skipping: [agency] => (item=varnish)
TASK [geerlingguy.varnish : Ensure Varnish services are started enabled on startup (Xenial specific)] ***
skipping: [agency] => (item=varnish)
TASK [geerlingguy.nginx : Include OS-specific variables.] **********************
skipping: [agency]
TASK [geerlingguy.nginx : Define nginx_user.] **********************************
skipping: [agency]
TASK [geerlingguy.nginx : Enable nginx repo.] **********************************
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx is installed.] **************************
skipping: [agency]
TASK [geerlingguy.nginx : Add PPA for Nginx.] **********************************
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx will reinstall if the PPA was just added.] ***
skipping: [agency]
TASK [geerlingguy.nginx : Update apt cache.] ***********************************
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx is installed.] **************************
skipping: [agency]
TASK [geerlingguy.nginx : Update pkg cache.] ***********************************
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx is installed.] **************************
skipping: [agency]
TASK [geerlingguy.nginx : Create logs directory.] ******************************
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx is installed.] **************************
skipping: [agency]
TASK [geerlingguy.nginx : Create logs directory.] ******************************
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx is installed.] **************************
skipping: [agency]
TASK [geerlingguy.nginx : Remove default nginx vhost config file (if configured).] ***
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx_vhost_path exists.] *********************
skipping: [agency]
TASK [geerlingguy.nginx : Add managed vhost config files.] *********************
skipping: [agency] => (item={u'is_php': True, u'root': u'/var/www/agency/docroot', u'server_name': u'agency.local www.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/opt/adminer', u'server_name': u'adminer.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/usr/share/php/xhprof_html', u'server_name': u'xhprof.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/usr/share/php/pimpmylog', u'server_name': u'pimpmylog.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/var/www/dashboard', u'server_name': u'<IP_ADDRESS> dashboard.agency.local'})
TASK [geerlingguy.nginx : Remove managed vhost config files.] ******************
skipping: [agency] => (item={u'is_php': True, u'root': u'/var/www/agency/docroot', u'server_name': u'agency.local www.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/opt/adminer', u'server_name': u'adminer.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/usr/share/php/xhprof_html', u'server_name': u'xhprof.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/usr/share/php/pimpmylog', u'server_name': u'pimpmylog.agency.local'})
skipping: [agency] => (item={u'is_php': True, u'root': u'/var/www/dashboard', u'server_name': u'<IP_ADDRESS> dashboard.agency.local'})
TASK [geerlingguy.nginx : Remove legacy vhosts.conf file.] *********************
skipping: [agency]
TASK [geerlingguy.nginx : Copy nginx configuration in place.] ******************
skipping: [agency]
TASK [geerlingguy.nginx : Ensure nginx is started and enabled to start at boot.] ***
skipping: [agency]
TASK [drupalvm.www : Define drupalvm_webserver_user (Debian).] *****************
ok: [agency]
TASK [drupalvm.www : Define drupalvm_webserver_user (RedHat).] *****************
skipping: [agency]
TASK [drupalvm.www : Register information about the /vagrant directory.] *******
ok: [agency]
TASK [drupalvm.www : Ensure a group with the same GID as used to sync directories exist (Ansible 2.3+).] ***
skipping: [agency]
TASK [drupalvm.www : Ensure the webserver user is in the same group as the owner of synced directories (Ansible 2.3+).] ***
ok: [agency]
TASK [drupalvm.www : Detect if group used to sync directories already exist (Ansible 2.2).] ***
skipping: [agency]
TASK [drupalvm.www : Ensure a group with the same GID as used to sync directories exist (Ansible 2.2).] ***
skipping: [agency]
TASK [drupalvm.www : Ensure the webserver user is in the same group as the owner of synced directories (Ansible 2.2).] ***
skipping: [agency]
TASK [drupalvm.www : Ensure admin group exist.] ********************************
ok: [agency]
TASK [drupalvm.www : Ensure vagrant user is in admin group.] *******************
ok: [agency]
TASK [drupalvm.www : Set nicer permissions on Apache log directory.] ***********
ok: [agency]
TASK [geerlingguy.drupal : Add backwards-compatibility shims.] *****************
included: /vagrant/vendor/geerlingguy/drupal-vm/provisioning/roles/geerlingguy.drupal/tasks/backwards-compatibility.yml for agency
TASK [geerlingguy.drupal : build_makefile shim] ********************************
skipping: [agency]
TASK [geerlingguy.drupal : build_composer shim] ********************************
skipping: [agency]
TASK [geerlingguy.drupal : build_composer_project shim] ************************
skipping: [agency]
TASK [geerlingguy.drupal : install_site shim] **********************************
skipping: [agency]
TASK [geerlingguy.drupal : drupalvm_database shim] *****************************
skipping: [agency]
TASK [geerlingguy.drupal : Check if Drupal is already set up.] *****************
ok: [agency]
TASK [geerlingguy.drupal : Define drush_path if it's not already defined.] *****
skipping: [agency]
TASK [geerlingguy.drupal : Define drupal_site_exists.] *************************
ok: [agency]
TASK [geerlingguy.drupal : Ensure drupal_deploy_dir directory exists.] *********
skipping: [agency]
TASK [geerlingguy.drupal : Check out Drupal to the docroot.] *******************
skipping: [agency]
TASK [geerlingguy.drupal : Check if a composer.json file is present.] **********
skipping: [agency]
TASK [geerlingguy.drupal : Run composer install if composer.json is present.] ***
skipping: [agency]
TASK [geerlingguy.drupal : Define drupal_deploy_updated] ***********************
ok: [agency]
TASK [geerlingguy.drupal : include] ********************************************
skipping: [agency]
TASK [geerlingguy.drupal : include] ********************************************
skipping: [agency]
TASK [geerlingguy.drupal : include] ********************************************
skipping: [agency]
TASK [geerlingguy.drupal : include] ********************************************
skipping: [agency]
TASK [geerlingguy.drupal : Check if a project specific Drush binary exists.] ***
ok: [agency]
TASK [geerlingguy.drupal : Use project specific Drush if available.] ***********
ok: [agency]
TASK [geerlingguy.drupal : include] ********************************************
skipping: [agency]
TASK [geerlingguy.security : Include OS-specific variables.] *******************
skipping: [agency]
TASK [geerlingguy.security : Install fail2ban.] ********************************
skipping: [agency]
TASK [geerlingguy.security : Install fail2ban.] ********************************
skipping: [agency]
TASK [geerlingguy.security : Ensure fail2ban is running and enabled on boot.] ***
skipping: [agency]
TASK [geerlingguy.security : Update SSH configuration to be more secure.] ******
skipping: [agency] => (item={u'regexp': u'^PasswordAuthentication', u'line': u'PasswordAuthentication no'})
skipping: [agency] => (item={u'regexp': u'^PermitRootLogin', u'line': u'PermitRootLogin no'})
skipping: [agency] => (item={u'regexp': u'^Port', u'line': u'Port 22'})
skipping: [agency] => (item={u'regexp': u'^UseDNS', u'line': u'UseDNS no'})
skipping: [agency] => (item={u'regexp': u'^PermitEmptyPasswords', u'line': u'PermitEmptyPasswords no'})
skipping: [agency] => (item={u'regexp': u'^ChallengeResponseAuthentication', u'line': u'ChallengeResponseAuthentication no'})
skipping: [agency] => (item={u'regexp': u'^GSSAPIAuthentication', u'line': u'GSSAPIAuthentication no'})
skipping: [agency] => (item={u'regexp': u'^X11Forwarding', u'line': u'X11Forwarding no'})
TASK [geerlingguy.security : Add configured user accounts to passwordless sudoers.] ***
TASK [geerlingguy.security : Add configured user accounts to passworded sudoers.] ***
TASK [geerlingguy.security : Install yum-cron.] ********************************
skipping: [agency]
TASK [geerlingguy.security : Ensure yum-cron is running and enabled on boot.] ***
skipping: [agency]
TASK [geerlingguy.security : Configure autoupdates (RHEL 7).] ******************
skipping: [agency]
TASK [geerlingguy.security : Install unattended upgrades package.] *************
skipping: [agency]
TASK [geerlingguy.security : Copy unattended-upgrades configuration files in place.] ***
skipping: [agency] => (item=10periodic)
skipping: [agency] => (item=50unattended-upgrades)
TASK [Do not accept locale environment variables passed over SSH.] *************
ok: [agency]
TASK [Allow client to pass PHP and XDEBUG environment variables over SSH.] *****
ok: [agency] => (item=PHP_IDE_CONFIG)
ok: [agency] => (item=XDEBUG_CONFIG)
ok: [agency] => (item=PHP_OPTIONS)
TASK [Check if local known_hosts file is present.] *****************************
ok: [agency]
TASK [Copy known_hosts file from host into Drupal VM.] *************************
skipping: [agency]
TASK [Set SSH home directory.] *************************************************
ok: [agency]
TASK [Install extra apt packages (if any are configured).] *********************
ok: [agency] => (item=[u'sqlite'])
TASK [Install extra yum packages (if any are configured).] *********************
skipping: [agency] => (item=[])
TASK [Detect if AppArmor is working.] ******************************************
[WARNING]: Consider using service module rather than running service
ok: [agency]
TASK [Ensure MySQL AppArmor profile is disabled (for slow query log).] *********
ok: [agency]
TASK [Restart the AppArmor if necessary.] **************************************
skipping: [agency]
TASK [Check if local Drush configuration folder exists.] ***********************
skipping: [agency]
TASK [Create Drush configuration folder if it doesn't exist.] ******************
skipping: [agency]
TASK [Configure host machine drush aliases.] ***********************************
skipping: [agency]
TASK [Ensure drush directory exists for vagrant user inside VM.] ***************
ok: [agency]
TASK [Configure drush aliases for vagrant user inside VM.] *********************
skipping: [agency]
TASK [Ensure drush directory exists for root user inside VM.] ******************
ok: [agency]
TASK [Configure drush aliases for root user inside VM.] ************************
skipping: [agency]
TASK [Ensure configured cron jobs exist in user account's crontab.] ************
TASK [Ensure the dashboard directory exists.] **********************************
ok: [agency]
TASK [Copy dashboard page into place.] *****************************************
ok: [agency]
TASK [Copy phpinfo file into place.] *******************************************
ok: [agency]
TASK [Run configured post-provision shell scripts.] ****************************
failed: [agency] (item=../../../acquia/blt/scripts/drupal-vm/post-provision.sh) => {"changed": false, "item": "../../../acquia/blt/scripts/drupal-vm/post-provision.sh", "msg": "Could not find or access '../../../acquia/blt/scripts/drupal-vm/post-provision.sh'\nSearched in:\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/files/../../../acquia/blt/scripts/drupal-vm/post-provision.sh\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/../../../acquia/blt/scripts/drupal-vm/post-provision.sh\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/files/../../../acquia/blt/scripts/drupal-vm/post-provision.sh\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/../../../acquia/blt/scripts/drupal-vm/post-provision.sh"}
to retry, use: --limit @/vagrant/vendor/geerlingguy/drupal-vm/provisioning/playbook.retry
PLAY RECAP *********************************************************************
agency                     : ok=208  changed=0    unreachable=0    failed=1
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
Summary
I am trying to upgrade a site to 8.5 and have required the following in composer.json:
"acquia/blt": "9.x-dev",
"acquia/lightning": "3.1.x-dev",
"geerlingguy/drupal-vm": "4.7.2"
Composer builds the site fine (using Windows 10 WSL for that).
But vagrant up fails with the above message.
Perhaps this is a BLT issue rather than a Drupal VM issue?
Note from above, ansible fails to run in the Windows command prompt but vagrant up is able to run ansible, not sure why that is?
C:\WINDOWS\system32>ansible --version
'ansible' is not recognized as an internal or external command,
operable program or batch file.

@captaindav - The error message:
TASK [Run configured post-provision shell scripts.] ****************************
failed: [agency] (item=../../../acquia/blt/scripts/drupal-vm/post-provision.sh) => {"changed": false, "item": "../../../acquia/blt/scripts/drupal-vm/post-provision.sh", "msg": "Could not find or access '../../../acquia/blt/scripts/drupal-vm/post-provision.sh'\nSearched in:\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/files/../../../acquia/blt/scripts/drupal-vm/post-provision.sh\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/../../../acquia/blt/scripts/drupal-vm/post-provision.sh\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/files/../../../acquia/blt/scripts/drupal-vm/post-provision.sh\n\t/vagrant/vendor/geerlingguy/drupal-vm/provisioning/../../../acquia/blt/scripts/drupal-vm/post-provision.sh"}

indicates this is a problem with the BLT post provision script (/acquia/blt/scripts/drupal-vm/post-provision.sh) and not with Drupal VM.
I would suggest opening an issue in the BLT issue queue to troubleshoot further: https://github.com/acquia/blt

Thanks, will do!  I was able to get around this issue by first running composer to install the dev versions of Core 8.5, BLT, and Lighting (all of which require Drush 9 and  PHP 7.1).  Then I switched the branch back to my 8.4 branch, and I built a VM there, then switched back to the 8.5 branch.  So now the 8.5 branch has a working VM but is hitting other errors.

This issue was continued in the BLT issue queue: https://github.com/acquia/blt/issues/2560


Compilation error on fedora copr

https://download.copr.fedorainfracloud.org/results/remilauzier/zemeroth/fedora-rawhide-x86_64/02303655-rust-ab_glyph/builder-live.log.gz
error[E0432]: unresolved import owned_ttf_parser::AsFaceRef
--> src/ttfp.rs:10:5
|
10 | use owned_ttf_parser::AsFaceRef;
|     ^^^^^^^^^^^^^^^^^^---------
|     |                 |
|     |                 help: a similar name exists in the module: AsFontRef
|     no AsFaceRef in the root
error[E0433]: failed to resolve: could not find Face in owned_ttf_parser
--> src/ttfp.rs:113:31
|
113 |             owned_ttf_parser::Face::from_slice(data, index).map_err(|_| InvalidFont)?,
|                               ^^^^ could not find Face in owned_ttf_parser
error[E0433]: failed to resolve: could not find OwnedFace in owned_ttf_parser
--> src/ttfp.rs:177:31
|
177 |             owned_ttf_parser::OwnedFace::from_vec(data, index).map_err(|_| InvalidFont)?,
|                               ^^^^^^^^^ could not find OwnedFace in owned_ttf_parser
error[E0412]: cannot find type Face in crate owned_ttf_parser
--> src/ttfp.rs:71:45
|
71 | pub struct FontRef<'font>(owned_ttf_parser::Face<'font>);
|                                             ^^^^ not found in owned_ttf_parser
error[E0412]: cannot find type OwnedFace in crate owned_ttf_parser
--> src/ttfp.rs:134:38
|
134 | pub struct FontVec(owned_ttf_parser::OwnedFace);
|                                      ^^^^^^^^^ help: a struct with a similar name exists: OwnedFont
|
::: /usr/share/cargo/registry/owned_ttf_parser-0.6.0/src/owned.rs:6:1
|
6   | pub struct OwnedFont(Pin<Box>);
| ----------------------------------------------- similarly named struct OwnedFont defined here
error[E0277]: the size for values of type dyn Iterator<Item = (glyph::GlyphId, char)> cannot be known at compilation time
--> src/ttfp.rs:306:29
|
306 |                 let inner = Box::new(
|                             ^^^^^^^^ doesn't have a size known at compile-time
...
338 | impl_font!(FontRef<'_>);
| ------------------------ in this macro invocation
|
= help: the trait Sized is not implemented for dyn Iterator<Item = (glyph::GlyphId, char)>
= note: required by Box::<T>::new
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the size for values of type dyn Iterator<Item = (glyph::GlyphId, char)> cannot be known at compilation time
--> src/ttfp.rs:306:29
|
306 |                 let inner = Box::new(
|                             ^^^^^^^^ doesn't have a size known at compile-time
...
339 | impl_font!(FontVec);
| -------------------- in this macro invocation
|
= help: the trait Sized is not implemented for dyn Iterator<Item = (glyph::GlyphId, char)>
= note: required by Box::<T>::new
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 7 previous errors

That log shows trying to build against owned_ttf_parser/ttf-parser 0.6 whereas the manifest for ab_glyph 0.2.11 states owned_ttf_parser must be compatible with 0.12. So the compile error is not surprising.
This is an external build issue, I don't support whatever build system is butchering the dependency semver guarantees here.


Add asking for password: CA, server-cert and client-cert

Add additional switches:

For setup CA password
For setup server's certificate password
For setup client's certificate password

How to setup password?

How to setup password?

How to setup password?

By questions while script running

How to setup password?

By questions while script running

It does not ask for any password when connecting to the server. I tried editing the config but it doesn't work. I want to ask for password when connecting to server

How to setup password?

By questions while script running

It does not ask for any password when connecting to the server. I tried editing the config but it doesn't work. I want to ask for password when connecting to server

you dont need to edit .ovpn config.
maybe your OpenVPN client doesnt provide configs with password?
or maybe you skip password setup when script executing?
and last question: doesnt work at all or your ovpn client doesnt asking you for password?

I can connect. But I have a VPN app and I want to put user-pass on servers

I can connect. But I have a VPN app and I want to put user-pass on servers

as i understand, your problem doesnt related to script executing, but related to passing password when ovpn server is starting?
i cant remember which command i used for solving this problem.
but when i setup my vpn-server on ubuntu, system told me this command by broadcast message to console.

I can connect. But I have a VPN app and I want to put user-pass on servers

as i understand, your problem doesnt related to script executing, but related to passing password when ovpn server is starting?
i cant remember which command i used for solving this problem. but when i setup my vpn-server on ubuntu, system told me this command by broadcast message to console.

try this:
$ sudo systemd-tty-ask-password-agent

I can connect no problem. I just want to set a password for the server. I want to login with: auth-user-pass

I can connect no problem. I just want to set a password for the server. I want to login with: auth-user-pass

tell me how you solved the problem when you figure it out

I can connect no problem. I just want to set a password for the server. I want to login with: auth-user-pass

tell me how you solved the problem when you figure it out

I found this https://medium.com/@vantintttp/how-to-setup-openvpn-authentication-by-username-and-password-589a97cafd8b
I didn't know how to use

Sorry but this will not be merged into the master branch. You can search for previous discussion on the matter.


Add nexpose collector.

Looking for an initial review pass on this collector.
Collector is configured as follows:
[[Nexpose]]
Username = "nexposeacct"
Password = "nexposesucks"
Host = "nexposehost.blah.com"
Insecure = false

For each monitored asset, it sends metrics with the vuln count, malware count, risk score, exploit count, and last scan time (represented in seconds since last scan). The asset name is either the detected hostname, or the IP address of the host.
For each site, it sends nexpose.site metrics which are an aggregate of the aforementioned device metrics.
It also sends a nexpose.scan.running metric indicating if a scan is currently running on a site.
Note that not all of the defined functions are used at this time. They'll probably come in handy for other metrics, so I'd like to keep em in. I'll probably end up creating a generic Go package for nexpose and rip a lot of that stuff out of this collector.
:eyeglasses: @kylebrandt @captncraig

Very cool. Forwarding to my infosec group...
On Oct 20, 2015 19:23, "Jason Harvey"<EMAIL_ADDRESS>wrote:

Looking for an initial review pass on this collector.
Collector is configured as follows:
[[Nexpose]]
Username = "nexposeacct"
Password = "nexposesucks"
Host = "nexposehost.blah.com"
Insecure = false
For each monitored asset, it sends metrics with the vuln count, malware
count, risk score, exploit count, and last scan time (represented in
seconds since last scan). The asset name is either the detected hostname,
or the IP address of the host.
For each site, it sends nexpose.site metrics which are an aggregate of
the aforementioned device metrics.
It also sends a nexpose.scan.running metric indicating if a scan is
currently running on a site.
[image: :eyeglasses:] @kylebrandt https://github.com/kylebrandt
@captncraig https://github.com/captncraig
You can view, comment on, or merge this pull request online at:
https://github.com/bosun-monitor/bosun/pull/1407
Commit Summary

Add nexpose collector.

File Changes

A cmd/scollector/collectors/nexpose.go
https://github.com/bosun-monitor/bosun/pull/1407/files#diff-0 (405)
M cmd/scollector/conf/conf.go
https://github.com/bosun-monitor/bosun/pull/1407/files#diff-1 (8)
M metadata/metadata.go
https://github.com/bosun-monitor/bosun/pull/1407/files#diff-2 (154)

Patch Links:

https://github.com/bosun-monitor/bosun/pull/1407.patch
https://github.com/bosun-monitor/bosun/pull/1407.diff

—
Reply to this email directly or view it on GitHub
https://github.com/bosun-monitor/bosun/pull/1407.

For dealing with 2 versions of xml apis and the worst json api I've ever seen, I'd say it looks pretty good.

@captncraig Requested changes made. I've left the fixup commits separate to facilitate easy review. Will squash before merge.

@alienth I really like how you address individual issues with separate commits. Good call. Merge at will.


Linux mount command is incorrect

# mount -o remount, rw / mnt / DataBoxDisk / mountVol1 ß
It is unclear why there is a stray 'ß' at the end, also, the path i.e. /mnt/D... should not contain spaces.

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

ID: 544bfa1a-4e25-de4a-bc20-b9b0f09fe23c
Version Independent ID: bc627abd-0e75-7e99-422e-249a3950c6e7
Content: Azure Data Box Disk troubleshooting
Content Source: articles/databox/data-box-disk-troubleshoot.md
Service: databox
GitHub Login: @alkohli
Microsoft Alias: alkohli

@akumria This change was merged via this PR: https://github.com/MicrosoftDocs/azure-docs-pr/pull/65519. The change should go live sometime tomorrow. #please-close


Option Code in Custom Tabular Exporter misses unchecked columns

Original author: thadguidry (September 20, 2012 23:01:27)
If you uncheck a column you do not want to export, and then save the Option Code for later applying, that previously unchecked column is rechecked when you later paste and apply the Option Code back in.
Original issue: http://code.google.com/p/google-refine/issues/detail?id=617

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/62643-option-code-in-custom-tabular-exporter-misses-unchecked-columns?utm_campaign=plugin&utm_content=tracker%2F32795&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F32795&utm_medium=issues&utm_source=github).

in current master code base, it works fine. Should we close it? @thadguidry

@jackyq2015 In that case, yes, we can close.


Drag and drop ;) ?

For calendar entries, to reschedule, any plans?

Hi @dux, I think I'll do it.

Drag-and-drop on desktop is now available in version 0.1.0-beta.1.
See demo and check out the docs for eventStartEdiatble, eventDragStart, eventDragStop, eventDrop and dragScroll.

king! thx :)

I'm closing this issue. New feedback/ideas are welcomed.


Docker container logs are not rotated

Currently CDK does not configure any log rotation for docker containers. This is causing problems because ingress controller pods can log a lot in busy environments. Ingress controller pods are also long-lived which makes the problem worse.
According to k8s official docs deploy tool is responsible for setting it up:
Kubernetes currently is not responsible for rotating logs, but rather a deployment tool should set up a solution to address that

Could you please add log rotation support to the CDK?

One way to do this today is:
juju config kubernetes-worker docker-opts="--log-opt max-size=10m --log-opt max-file=3"

Another possibility would be to use the logrotate subordinate.

We just ran into disk space issues after running a CDK cluster for a few months. Wouldn't it make sense to make this a default setting?

@joedborg it may be worth taking a look at filebeat, since that's what we recommend in our graylog/logging solution for cdk.  Looks like there are a couple options that could enable rotation:
https://www.elastic.co/guide/en/beats/filebeat/5.6/configuration-logging.html#_files_rotateeverybytes
(specifically rotateeverybytes and keepfiles) It may be as simple as modifying the template here to include that config:
https://github.com/juju-solutions/layer-filebeat/blob/master/templates/filebeat.yml
And potentially exposing that config in the charm if we want that to be customizable.

This was fixed with new configurable daemon-opts in layer-docker. By default, docker now rotates when the log gets to 10M, and keeps 100 logs around.
If a different logging approach is needed here, please raise a new issue at https://bugs.launchpad.net/charmed-kubernetes


[question] Purpose of setReplicas

Thanks for creating this project.
I'm trying to understand how the setup works:
Can you explain a bit what the purpose of the setReplicas function in configmap.yaml/run.sh is?
I understand that this is to make each Keycloak Pod aware of all other Pods.
Is this only required to ensure the correct operation of the distributed Infinispan cache? Or are there other reasons why this is needed?
Also, I saw in your docs that AUTO_INJECT_HOSTS is "not used right now".
Does this mean that the number of Pods must remain constant while the StatefulSet is running?
Which steps would be required to change the number of Pods later?

Can you explain a bit what the purpose of the setReplicas function in configmap.yaml/run.sh is?

This repo currently is simply adding the Pods to the list of infinispan nodes. There are better ways, e.g, the helm chart which uses DNS discovery for the infinispan node discovery.
Setting the "nodes" is needed for the infinispan cache.

Does this mean that the number of Pods must remain constant while the StatefulSet is running?

No, you can change it.

Which steps would be required to change the number of Pods later?

Just scale it as needed, though you may want to scale down one by one so the infinispan cache doesn't "break" for whatever reason. In general you shouldn't go below the set KEYCLOAK_OWNERS_COUNT as otherwise the cache doesn't have enough "owners" and should go bad then.

Closing as questions have been answered and there has been no response for some time.

Thanks a lot for the explanation.


Overriding .options() method from express

Setting the options object is making it hard to create a route handler for an OPTIONS method request in express.

hmm yea this is true, you are forced to do something like app.router.options() since we do not have it on the top level

I am fine with changing this to something like _options.

Actually lets rename it to given

Fixed by #63.


Sonic testnet explorer URL does not work

The explorer URL does not work: https://public-sonic.fantom.network/.
  {
    "alias": "sonic-testnet",
     ...
    "explorer": {
      "browserUrl": "https://public-sonic.fantom.network/"
    },
    ...
    "testnet": true
  },

For me that URL redirects to https://testnet.soniclabs.com/ which is also what the docs describe.


VRP: Does every pickup node must correspond to an unique delivery node?

In pickup and delivery setting, does every pickup node must correspond to an unique delivery node?
In the pickup and delivery example:
https://developers.google.com/optimization/routing/pickup_delivery
each pickup-delivery pair is unique. i.e.
data['pickups_deliveries'] = [
    [1, 6],
    [2, 10],
    [4, 3],
    [5, 9],
    [7, 8],
    [15, 11],
    [13, 12],
    [16, 14]
]

This works fine. However, if I make some pickups having the same deliveries (i.e. destinations/unload location) , like:
data['pickups_deliveries'] = [
            [0, 3],
            [0, 10],
            [1, 4],
            [1, 5],
            [1, 6],
            [1, 7],
            [2, 8],
            [2, 9],
]

Yes, you must duplicate the node...

Hello @Mizux . I have a similar problem. The problem I am trying to solve is to have one starting point which is the depot that will start with a full loaded truck and then deliver to all the other locations which will have their own demands.
In this case do I need to  put the pickups_delivers data as below ?
        [0, 3],
        [0, 10],
        [0, 4],
        [0, 5],
        [0, 6],
        [0, 7],
        [0, 8],
        [0, 9]

I a new to OR tools and I am missing some documentation from the CVRP example that is on google for pickups but nothing available for only deliveries . If you ca help me , it will be great.

@nimishdesai1989 your problem seems to be a pure delivery problem, so don't try to use a P&D approach here + you can't have several pairs sharing the same index.


Some error

Hi, I found some error when I tried to test this program.
1.When just using mouse to rotate the model, the program stopped.
And here is the log.
(gs-view) C:\Users\Up2U\Desktop\gaussian_viewer>python main.py --data_path="C:\Users\Up2U\Desktop\week\2024\0219-0223"
Traceback (most recent call last):
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 163, in <module>
    main()
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 158, in main
    viz.draw_frame()
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 115, in draw_frame
    self._async_renderer.set_args(**self.args)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\viz\async_renderer.py", line 48, in set_args
    something_changed = not equal_dicts(args, self._cur_args)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\viz_utils\compare_dict.py", line 11, in equal_dicts
    if not torch.equal(dict1[key], dict2[key]):
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument other in method wrapper_CUDA__equal)

After using mouse to change the camera rotation, then click Set current direction in Camera tag, the model went to a wrong position and the program stopped.
Here is the log.

(gs-view) C:\Users\Up2U\Desktop\gaussian_viewer>python main.py --data_path="C:\Users\Up2U\Desktop\week\2024\0219-0223"
Traceback (most recent call last):
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 163, in <module>
    main()
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 158, in main
    viz.draw_frame()
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 115, in draw_frame
    self._async_renderer.set_args(**self.args)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\viz\async_renderer.py", line 48, in set_args
    something_changed = not equal_dicts(args, self._cur_args)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\viz_utils\compare_dict.py", line 11, in equal_dicts
    if not torch.equal(dict1[key], dict2[key]):
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument other in method wrapper_CUDA__equal)

When try to use the Video function, the program stopped.
Here is the log.

(gs-view) C:\Users\Up2U\Desktop\gaussian_viewer>python main.py --data_path="C:\Users\Up2U\Desktop\week\2024\0219-0223"
Traceback (most recent call last):
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 163, in <module>
    main()
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 158, in main
    viz.draw_frame()
  File "C:\Users\Up2U\Desktop\gaussian_viewer\main.py", line 103, in draw_frame
    self.video_widget(expanded)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\gui_utils\imgui_utils.py", line 85, in decorator
    res = method(self, *args, **kwargs)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\widgets\video_widget.py", line 45, in __call__
    extrinsic = LookAtPoseSampler.sample(x, np.pi / 2 + self.cam_height, torch.tensor([0., 0., 0.]), radius=self.radius)[0]
TypeError: LookAtPoseSampler.sample() missing 1 required positional argument: 'up_vector'

(not error) What does Radius mean in Camera tag?

Thank you.

Thanks for the reply.

I have decided to separate the camera parameters of the viewer from the camera parameter used in the video generation, in order to easily reproduce videos across different scenes.

So Radius just means the distance betweent camera and the target view point, right?
This is cool.

1~2 fixed.
But 3 still has problem.
Folder path is not correct.
(gs-view) C:\Users\Up2U\Desktop\gaussian_viewer>python main.py --data_path="C:\Users\Up2U\Desktop\week\2024\0219-0223"

Traceback (most recent call last):
  File "C:\Users\Up2U\Desktop\gaussian_viewer\viz\renderer.py", line 47, in render
    self._render_impl(res, **args)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\viz\renderer.py", line 114, in _render_impl
    self.render_video(f"./videos/{current_ply_name}", video_cams)
  File "C:\Users\Up2U\Desktop\gaussian_viewer\viz\renderer.py", line 146, in render_video
    os.makedirs(save_path, exist_ok=True)
  File "C:\Users\Up2U\miniconda3\envs\gs-view\lib\os.py", line 225, in makedirs
    mkdir(name, mode)
NotADirectoryError: [WinError 267] : './videos/C:_Users_Up2U_Desktop_week_2024_0219-0223_point_cloud_asuna_2k.cleaned.cleaned.cleaned.ply'

Btw, mouse control seems to be weird when rotating to some angle.

I believe this is due to the ":" in the save path. I pushed a change that replaces ":" with "_". This should resolve the problem hopefully.
Yes, I also notice that the mouse control behaves strange sometimes. I think this happens when pressing "Set current direction" in the camera tab. I will look into that.

The Video function is very cool!
I usually just capture the screen to save a video.
The latest version, path bug is fixed.
And I think it will be better if there is parameter to control rotating speed.

And I found some more bug.
When try to record video more than one time,
and just change some camera parameter like fov / radius / height (not sure which on is actually effect),
sometimes y axis could be inverted.


System.InvalidOperationException: 'Process has exited, so the requested information is not available.'

System.InvalidOperationException: 'Process has exited, so the requested information is not available.'
When I run the code below in visual studio 2017 and windows 10 pro, I got the above error, please help.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using FlaUI.Core.AutomationElements;
using FlaUI.Core.Input;
using FlaUI.Core.WindowsAPI;
using FlaUI.UIA3;
namespace testclick
{
class Program
{
static void Main(string[] args)
{
        var app = FlaUI.Core.Application.Launch("C:\\Windows\\System32\\calc.exe");
        using (var automation = new UIA3Automation())
        {
            var window = app.GetMainWindow(automation);
            var button1 = window.FindFirstDescendant(cf => cf.ByText("1"))?.AsButton();
            button1?.Invoke();

        }
    }
}

}

calc.exe on Windows 10 is just some kind of shim which starts the Windows Store App Calculator and immediately closes itself afterwards. That's why you get that exception.
Have a look at https://github.com/Roemer/FlaUI/blob/master/src/FlaUI.Core.UITests/CalculatorTests.cs on how to use the Windows Store calculator in FlaUI.

thanks for explanation


Face Landmark Detection grid is shifted

Have I written custom code (as opposed to using a stock example script provided in MediaPipe)
None
OS Platform and Distribution
Android 11
Mobile device if the issue happens on mobile device
Samsung Galaxy A02
Browser and version if the issue happens on browser
Google Chrome 125.0.6422.53
Programming Language and version
Javascript
MediaPipe version
No response
Bazel version
No response
Solution
Face Landmark Detection
Android Studio, NDK, SDK versions (if issue is related to building in Android environment)
No response
Xcode & Tulsi version (if issue is related to building for iOS)
No response
Describe the actual behavior
When I choose the grid renderer in the face landmarker demo, the grid is shifted to the top left by a few pixels
Describe the expected behaviour
The grid should be placed exactly on the face.
Standalone code/steps you may have used to try to get what you need
https://mediapipe-studio.webapps.google.com/studio/demo/face_landmarker

Other info / Complete Logs
W0522 18:28:37.938080 1885424 landmarkprojection_calculator.cc:189] Using NORM_RECT without IMAGE_DIMENSIONS is only supported for the square ROI. Provide IMAGE_DIMENSIONS or use PROJECTION MATRIX.
onFilePicked: {"0":{}}
Graph finished closing successfully.
I0522 18:29:37.060000 1885424 gl_context webgl.cc:132] Successfully destroyed WebGL context with handle 2
W0522 18:29:37.141080 1885424 face_landnarker_graph.cc.180] Sets FaceBlendshapesGraph acceleration to xnnpack by default. T0522 18:29:37.502000 1885424 gl_context.cc:374] GL version: 3.0 (OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))), renderer: WebKit WebGL
Graph successfully started running
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
INFO: XNNPack weight cache not enabled.
INFO: Created TensorFlow Lite XNNPACK delegate for CPU
INFO: XNNPack weight cache not enabled.

Hi @Merligus,
We need your help to test this on a another device, if possible. We believe the issue might be specific to the device you are currently using. Please let us know your findings so we can further investigate this issue.
Thank you!!

Ok. I'll check if the same error happens on another device. I'll let you know as soon as I discover.

Hey, I found this one. Moto E22 Android 12 Chrome 125.0.6422.52.

Hi @mbrenon,
I successfully ran the Face Landmarker Mediapipe Grid Render demo on a Pixel 6a without any grid shifting issues. It appears this problem is device-specific. Attached is a screenshot for your reference. Could you please investigate why the rendering differs across devices?

Thank you!!


Support for exclusion exception pattern in .dockerignore

Using an innerclass around the PathMatcher to support the
exclusion exception.
Removing the 'pre-visit' of a directory to make sure that
a specific file is included.
Storing the PathMatchers in a list instead of a set because
the order in which they are declared matters (the list should
be read from bottom to top)
Added more files in the test case.
Also added .checkstyle in the .gitignore (this file is
generated by the Eclipse checkstyle plugin but does not
need to be shared)
Fixes https://github.com/spotify/docker-client/issues/338
Signed-off-by: Xavier Coulon<EMAIL_ADDRESS>

Current coverage is 36.40%

Merging #339 into master will increase coverage by +0.69% as of 6908535

@@            master   #339   diff @@
=====================================
  Files           65     64     -1
  Stmts         3144   3115    -29
  Branches       761    748    -13
  Methods          0      0
=====================================
+ Hit           1123   1134    +11
  Partial        109    109
+ Missed        1912   1872    -40

Review entire Coverage Diff as of 6908535

Powered by Codecov. Updated on successful CI builds.

Hello @davidxia and @rohansingh,
I just updated this PR to resolve the merge conflicts.
Would you have time to review it, please ?

@davidxia thanks for the review ! I just updated the pull request with the changes that your requested ;-)

Thanks I haven't reviewed all of it yet, but will soon.
On Thursday, March 3, 2016, Xavier Coulon<EMAIL_ADDRESS>wrote:

@davidxia https://github.com/davidxia thanks for the review ! I just
updated the pull request with the changes that your requested ;-)
—
Reply to this email directly or view it on GitHub
https://github.com/spotify/docker-client/pull/339#issuecomment-191843536
.

--
David Xia
Software Engineer
<EMAIL_ADDRESS>

@davidxia ok. I'll follow-up with your comments, then.

Other than my comments, things look good. Thanks for updating the test.

@davidxia I updated the patch by removing the unwanted META-INF/MANIFEST.MF file in src/main/resource.

Thanks a lot, @davidxia !


How do I map Inheritance?

I have this classes:
class Base {
   private Type type;
}

class A extends Base {
}

class B extends Base {
}

class C {
    private List<Base> bases;
}

And then I have the same structure for BaseDTO, ADTO, BDTO,and CDTO. When I convert from C to CDTO I want the A and B instances in bases to be converted to ADTO and BDTO respectively. Is there a way to do that through configuration??
Thanks for your time.

No, there currently is not a way to do hierarchies.  It's a one to one mapping.

oh no! all my hopes for using DTO without manual work are gone :(

Hi, I think this issue is a little different to the problem that #209 want to solve.
But I'm not sure I'm fully understand about the scenario.
If somebody can provide a more completed code for me, I think I can help with this, thanks!

I believe that's exactly what I want. We want to be able to reuse other
property maps whether that's via inheritance or via this include method.
Basically, so I don't have to enter the same properties again.
On Tue, May 9, 2017 at 2:20 AM Chun-Han, Hsiao<EMAIL_ADDRESS>wrote:

Hi, I think this issue is a little different to the problem that #209
https://github.com/modelmapper/modelmapper/pull/209 want to solve.
But I'm not sure I'm fully understand about the scenario.
If somebody can provide a more completed code for me, I think I can help
with this, thanks!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/modelmapper/modelmapper/issues/182#issuecomment-300072064,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB2PIxAJexwipW--ND39IAvVjLg1-97Zks5r4AXJgaJpZM4Io9u5
.

--
Sincerely,
Kevin Daub
Email<EMAIL_ADDRESS>Mobile:<PHONE_NUMBER>

The TypeMap inheritance had been release on ModelMapper v1.0.0, please give it a try!

@chhsiao90 - maybe I understood the documentation from http://modelmapper.org/user-manual/type-map-inheritance/ not very well, but for the issue is still not working :-(
I implemented an example in my fork of modelmapper repository. implhttps://github.com/ehmkah/modelmapper/blob/feature/182/examples/src/main/java/org/modelmapper/inheritance/InheritanceExample1.java Can you see what I do wrong there?

@ehmkah -
First, you need a setter on your destination object CcDTO.
And second, please try following code
    public static void main(String... args) {
        C c = new C(Arrays.asList(new BaseSrcA(), new BaseSrcB()));

        ModelMapper modelMapper = new ModelMapper();

        modelMapper.createTypeMap(BaseSrc.class, BaseDest.class)
            .include(BaseSrcA.class, BaseDest.class)
            .include(BaseSrcB.class, BaseDest.class);

        modelMapper.typeMap(BaseSrcA.class, BaseDest.class).setProvider(new Provider<BaseDest>() {
            public BaseDest get(ProvisionRequest<BaseDest> request) {
                return new BaseDestA();
            }
        });
        modelMapper.typeMap(BaseSrcB.class, BaseDest.class).setProvider(new Provider<BaseDest>() {
            public BaseDest get(ProvisionRequest<BaseDest> request) {
                return new BaseDestB();
            }
        });

        CcDTO ccDTO = modelMapper.map(c, CcDTO.class);

        assertEquals(2, ccDTO.getBases().size());
        assertEquals(BaseDestA.class, ccDTO.getBases().get(0).getClass());
        assertEquals(BaseDestB.class, ccDTO.getBases().get(1).getClass());
    }

And I agreed that our docs still need to improve about this and maybe we should have some examples for this as you said.

I made the changes you suggested and now it seams to work. :-) Interested in a pullrequest for the example?

Do you mean you to have a PR for the example? Sure! PR is welcome~

pull request has been opened. Any comments are welcome

@ehmkah Although this works for a list it does not work for a single object, have you found how to convert a single object?

@thelo-gaultier : I am sorry, I do not know it. To much time passed since then. Maybe transforming you Object to a list with one entry helps? Ugly, I know. But you could write a unit test with your setup and someone will help you, at least me they helped. And than make a pull-request and they have an other great example.

I still have problems with inheritance. Starting from the example in modelmapper/examples/src/main/java/org/modelmapper/inheritance, if you add a property on BaseSrcA and BaseDestA, its value never gets copied.
Is this a bug in ModelMapper inheritance implementation, or is there something missing in the configuration in the example? Anyway, the provided example/test to simplistic, and only validates mapped types, but not their content.

Ok, for those interested in a workaround. You can force population of the properties if you explicitly map the target object in the provider, like this:
`    TypeMap<BaseSrc, BaseDest> typeMap = modelMapper.createTypeMap(BaseSrc.class, BaseDest.class)
// the workaround only works if you uncomment these
//            .include(BaseSrcA.class, BaseDestA.class)
//            .include(BaseSrcB.class, BaseDestB.class)
;
modelMapper.typeMap(BaseSrcA.class, BaseDest.class).setProvider(new Provider<BaseDest>() {
  public BaseDest get(ProvisionRequest<BaseDest> request) {
      BaseDestA baseDestA = new BaseDestA();
      // explicit mapping here
      modelMapper.map(request.getSource(), baseDestA);
      return baseDestA;
  }
});

`

The problem in here is twofold.
First, by going from a general class' typemap (BaseSrc > BaseDest) to a more specific one (BaseSrcA > BaseDestA), you end up with a specific typemap not having property mappings for specific properties - the ones defined in BaseSrcA/BaseDestA.
So what you should do is create a general mapping first and then includeBase it into a more specific one(s):
modelMapper.createTypeMap(BaseSrc.class, BaseDest.class);
modelMapper.createTypeMap(BaseSrcA.class, BaseDestA.class).includeBase(BaseSrc.class, BaseDest.class);

You will also need a provider defined for general-to-specific typemap which used when mapping C.bases's specific instance of BaseSrcA to an element of CcDTO.bases which declared as BaseDest
modelMapper.typeMap(BaseSrcA.class, BaseDest.class).setProvider(request -> new BaseDestA());

But you still will need to manually force a specific mapping as @error84 suggested. Because, second, when MappingEngineImpl starts type-mapping of a specific object BaseSrcA to a general BaseDest in MappingEngineImpl:126 and gets a specific destination object of type BaseDestA in MappingEngineImpl:140, it won't switch to a specific-to-specific typemap but will continue with specific-to-general one. Which obviously doesn't have property mapping for specific properties.
I could provide a pull request with a test case and suggested changes for MappingEngineImpl.

@error84 @chhsiao90
I tried version 3.0.0 but still having issues w.r.t inheritence.  I used @ulisesbocchio 's example but added additional properties to child class.  The child properties are not being set.
class Base {
private String type;
// setters and getters go here
}
class A extends Base {
private Sting  propertyA;
// setters and getters go here
}
class B extends Base {
private Sting  propertyB;
// setters and getters go here
}
class C {
private List bases;
// setters and getters go here
}

Is there a solution to typemap inheritance with an extra property yet.
I have run into the same problem and reading through the comments, it doesn't seem like there's much luck

@dozievouchrapp I had the same problem.
I found this solution on stackoverflow: https://stackoverflow.com/a/53307578.
This works for me, even with extra properties.

I was able to make an example that uses Inheritance and Self Reference to work, like I described here:
https://github.com/modelmapper/modelmapper/issues/523
But I had two problems, the list inside C that can be either B or C does not map automatically, I had to use recursion to map the inner lists. It worked, but then I notice another problem. The properties are not mapped.
Look my response in my controller. Consider the following model:
public abstract ShareEntity{}
public ApplicationUser extends ShareEntity{}
public ShareGroup extends ShareEntity{
    List<ShareEntity> shareEntities;
}

To be able to get to this point I have the following code:
public ShareEntityService(){
        this.modelMapper = new ModelMapper();
        this.modelMapper.getConfiguration().setFieldAccessLevel(Configuration.AccessLevel.PRIVATE);
        this.modelMapper.getConfiguration().setFieldMatchingEnabled(true);

        this.modelMapper.createTypeMap(ShareEntity.class, ShareEntityDTO.class)
                .include(ApplicationUser.class, ShareEntityDTO.class)
                .include(ShareGroup.class, ShareEntityDTO.class);
        this.modelMapper.typeMap(ApplicationUser.class, ShareEntityDTO.class).setProvider(new Provider<ShareEntityDTO>() {
            @Override
            public ShareEntityDTO get(ProvisionRequest<ShareEntityDTO> provisionRequest) {
                return new ApplicationUserDTO();
            }
        });

        this.modelMapper.typeMap(ShareGroup.class, ShareEntityDTO.class).setProvider(new Provider<ShareEntityDTO>() {
            @Override
            public ShareEntityDTO get(ProvisionRequest<ShareEntityDTO> provisionRequest) {
                return new ShareGroupDTO();
            }
        });

        this.modelMapper.addMappings(entityToDtoProfileMapping);
        this.modelMapper.addMappings(dtoToEntityAddressMapping);
        this.modelMapper.typeMap(ApplicationUser.class, ApplicationUserDTO.class)
                .addMappings(mapper -> mapper.skip(ApplicationUserDTO::setPassword));
        this.modelMapper.typeMap(ApplicationUserDTO.class, ApplicationUser.class)
                .addMappings(mapper -> mapper.skip(ApplicationUser::setPassword));
    }

    public List<ShareEntityDTO> findAllShareEntities(){
        List<ShareEntity> shareEntities =  shareEntityRepository.findAll();
        List<ShareEntityDTO> shareEntityDTOS = Arrays.asList(modelMapper.map(shareEntities, ShareEntityDTO[].class));
        convertToShareEntityDTO(shareEntities, shareEntityDTOS);
        return shareEntityDTOS;
    }

    private void convertToShareEntityDTO(List<ShareEntity> shareEntities, List<ShareEntityDTO> shareEntityDTOS) {
        for (Integer i = 0; i < shareEntities.size(); i++) {
            ShareEntity shareEntity = shareEntities.get(i);
            ShareEntityDTO shareEntityDTO = shareEntityDTOS.get(i);
            if (!(shareEntityDTO instanceof ShareGroupDTO)) return;
            ShareGroup shareGroup = (ShareGroup) shareEntity;
            ShareGroupDTO shareGroupDTO = (ShareGroupDTO) shareEntityDTO;
            List<ShareEntity> shareGroupEntities = shareGroup.getShareEntities();
            if (shareGroupEntities.isEmpty()) return;
            List<ShareEntityDTO> shareGroupEntitiesDTO = Arrays.asList(
                    modelMapper.map(shareGroupEntities, ShareEntityDTO[].class));
            shareGroupDTO.setShareEntities(shareGroupEntitiesDTO);
            convertToShareEntityDTO(shareGroupEntities, shareGroupEntitiesDTO);
        }
    }

But the properties are all null for some misterious reason.

So after a few more readings through this post I was able to map the properties.
This is the final code that I have:

    PropertyMap<ApplicationUser, ApplicationUserDTO> entityToDtoProfileMapping = new PropertyMap<ApplicationUser, ApplicationUserDTO>() {
        @Override
        protected void configure() {
            map().setProfileName(source.getProfile().getName());
        }
    };

    PropertyMap<ApplicationUserDTO, ApplicationUser> dtoToEntityAddressMapping = new PropertyMap<ApplicationUserDTO, ApplicationUser>() {
        @Override
        protected void configure() {
            map().getAddress().setCountry(source.getAddress().getCountry());
            map().getAddress().setCity(source.getAddress().getCity());
            map().getAddress().setPostalCode(source.getAddress().getPostalCode());
            map().getAddress().setStreet(source.getAddress().getStreet());
            map().getAddress().setState(source.getAddress().getState());
            map().getAddress().setNeighborhood(source.getAddress().getNeighborhood());
            map().getAddress().setAdditionalInformation(source.getAddress().getAdditionalInformation());
            map().getAddress().setNumber(source.getAddress().getNumber());
        }
    };

    public ShareEntityService(){
        this.modelMapper = new ModelMapper();
        this.modelMapper.getConfiguration().setFieldAccessLevel(Configuration.AccessLevel.PRIVATE);
        this.modelMapper.getConfiguration().setFieldMatchingEnabled(true);
        this.modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);

        this.modelMapper.createTypeMap(ShareEntity.class, ShareEntityDTO.class)
                .include(ApplicationUser.class, ShareEntityDTO.class)
                .include(ShareGroup.class, ShareEntityDTO.class);
        this.modelMapper.typeMap(ApplicationUser.class, ShareEntityDTO.class).setProvider(new Provider<ShareEntityDTO>() {
            @Override
            public ShareEntityDTO get(ProvisionRequest<ShareEntityDTO> provisionRequest) {
                ApplicationUserDTO applicationUserDTO = new ApplicationUserDTO();
                modelMapper.map(provisionRequest.getSource(), applicationUserDTO);
                return applicationUserDTO;
            }
        });

        this.modelMapper.typeMap(ShareGroup.class, ShareEntityDTO.class).setProvider(new Provider<ShareEntityDTO>() {
            @Override
            public ShareEntityDTO get(ProvisionRequest<ShareEntityDTO> provisionRequest) {
                ShareGroupDTO shareGroupDTO = new ShareGroupDTO();
                modelMapper.map(provisionRequest.getSource(), shareGroupDTO);
                return shareGroupDTO;
            }
        });

        this.modelMapper.addMappings(entityToDtoProfileMapping);
        this.modelMapper.addMappings(dtoToEntityAddressMapping);
        this.modelMapper.typeMap(ApplicationUser.class, ApplicationUserDTO.class)
                .addMappings(mapper -> mapper.skip(ApplicationUserDTO::setPassword));
        this.modelMapper.typeMap(ApplicationUserDTO.class, ApplicationUser.class)
                .addMappings(mapper -> mapper.skip(ApplicationUser::setPassword));
    }

    public List<ShareEntityDTO> findAllShareEntities(){
        List<ShareEntity> shareEntities =  shareEntityRepository.findAll();
        List<ShareEntityDTO> shareEntityDTOS = Arrays.asList(modelMapper.map(shareEntities, ShareEntityDTO[].class));
        convertToShareEntityDTO(shareEntities, shareEntityDTOS);
        return shareEntityDTOS;
    }

    private void convertToShareEntityDTO(List<ShareEntity> shareEntities, List<ShareEntityDTO> shareEntityDTOS) {
        for (Integer i = 0; i < shareEntities.size(); i++) {
            ShareEntity shareEntity = shareEntities.get(i);
            ShareEntityDTO shareEntityDTO = shareEntityDTOS.get(i);
            if (!(shareEntityDTO instanceof ShareGroupDTO)) return;
            ShareGroup shareGroup = (ShareGroup) shareEntity;
            ShareGroupDTO shareGroupDTO = (ShareGroupDTO) shareEntityDTO;
            List<ShareEntity> shareGroupEntities = shareGroup.getShareEntities();
            if (shareGroupEntities.isEmpty()) return;
            List<ShareEntityDTO> shareGroupEntitiesDTO = Arrays.asList(
                    modelMapper.map(shareGroupEntities, ShareEntityDTO[].class));
            shareGroupDTO.setShareEntities(shareGroupEntitiesDTO);
            convertToShareEntityDTO(shareGroupEntities, shareGroupEntitiesDTO);
        }
    }

Im really liked to use your Lib, but your doc is very poor and explains nothing. Im really sorry to say that but it is true. I think you should focus on writing a better doc to avoid new open issues.

Based on @error84 and @chhsiao90 i came with the following solution in Kotlin.
DTOs (aka source class)
abstract class BaseRequirementDTO()
class AttributeRequirementDTO(

        var attribute: Attribute = Attribute.STRENGTH,
        var attributeValue: Long = 10

) : BaseRequirementDTO()
class LevelRequirementDTO(

        var requiredLevel: Long = 1

) : BaseRequirementDTO()

My Models (aka destination class)
abstract class BaseRequirement() : Model()
class AttributeRequirement(

        var attribute: Attribute = Attribute.STRENGTH,
        var attributeValue: Long = 10

) : BaseRequirement()
class LevelRequirement(

        var requiredLevel: Long = 1

) : BaseRequirement()

Mapper configuration
val mapper = ModelMapper()
mapper.configuration.matchingStrategy = MatchingStrategies.STRICT
mapper.createTypeMap(BaseRequirement::class.java, BaseRequirementDTO::class.java)
mapper.typeMap(AttributeRequirementDTO::class.java, BaseRequirement::class.java)
        .setProvider { request -> mapper.map(request.source, AttributeRequirement::class.java) }
mapper.typeMap(LevelRequirementDTO::class.java, BaseRequirement::class.java)
        .setProvider { request -> mapper.map(request.source, LevelRequirement::class.java) }

ModelMapper version: 2.3.7


tool: newsfeed mailing

This PR includes a tool for watching Matricula's newsfeed in a fixed interval and send a mail if certain keywords appear.

See last commit's message: moved to another repo to develop this tool independently


Setup Okta(OIDC) with Headlamp

Describe the bug
Hello. I'm trying to integrate Okta(OIDC) with Headlamp follow with this document https://headlamp.dev/docs/latest/installation/in-cluster/oidc. But it doesn't work :( (I have already done clusterRole and clusterRoleBlinding)
Here my error

To Reproduce
Steps to reproduce the bug:

Open Headlamp URL
Sign in
See error

Environment (please provide info about your environment):

Installation type: EKS version 1.30
Headlamp Version: Latest
Okta: Version 2024.10.0 E

Headlamp.yaml
kind: Service
apiVersion: v1
metadata:
  name: headlamp
  namespace: devops
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
    service.beta.kubernetes.io/aws-load-balancer-scheme: internal
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
spec:
  ports:
    - port: 80
      targetPort: 4466
  selector:
    k8s-app: headlamp
  type: LoadBalancer

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: headlamp
  namespace: devops
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: headlamp
  template:
    metadata:
      labels:
        k8s-app: headlamp
    spec:
      serviceAccountName: headlamp-admin
      containers:
      - name: headlamp
        image: ghcr.io/headlamp-k8s/headlamp:latest
        args:
          - "-in-cluster"
          - "-plugins-dir=/headlamp/plugins"
          # Check if externalSecret is disabled
          # Check if clientID is non empty either from env or oidc.config
          - "-oidc-client-id=$(OIDC_CLIENT_ID)"
          # Check if clientSecret is non empty either from env or oidc.config
          - "-oidc-client-secret=$(OIDC_CLIENT_SECRET)"
          # Check if issuerURL is non empty either from env or oidc.config
          - "-oidc-idp-issuer-url=$(OIDC_ISSUER_URL)"
          # Check if scopes are non empty either from env or oidc.config
          - "-oidc-scopes=$(OIDC_SCOPES)"
        ports:
        - containerPort: 4466
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /
            port: 4466
          initialDelaySeconds: 30
          timeoutSeconds: 30
        env:
        - name: OIDC_CLIENT_ID
          value: "values"
        - name: OIDC_CLIENT_SECRET
          value: "values"
        - name: OIDC_ISSUER_URL
          value: "values"
        - name: OIDC_SCOPES
          value: "values"
        volumeMounts:
        - name: kubeconfig-volume
          mountPath: /home/headlamp/.config/Headlamp/kubeconfigs/
          readOnly: true
      nodeSelector:
        'kubernetes.io/os': linux
      volumes:
      - name: kubeconfig-volume
        configMap:
          name: kubeconfig-configmap

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: headlamp-admin
  namespace: devops
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user-clusterrolebinding
subjects:
  - kind: User
    name: system:anonymous
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: headlamp-admin
  namespace: devops
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: headlamp-admin
  namespace: devops

Are you able to fix this issue?
[No.]

Do you want to help fix this issue? Please see our contribution docs. For any non-trivial contributions, we advise you to join our our slack channel to discuss the implementation with Headlamp's core developers.

Additional Context
[If needed, add any other info or screenshots about the bug here.]
[Is it a regression? What version of Headlamp did not have this bug?]

@SimonHope Does your kubernetes API is setup to use OIDC?
I had the same Issue with OIDC but it works with the ServiceAccount Token Login.
As fas as I understand headlamp either uses OIDC for Login and k8s API or ServiceAccount.
And not a combination like Login with OIDC and access on k8s API with ServiceAccount.
But I can be wrong ;)


Driver optimizations

I know, many changes

Since the code had drifted, I manually made most of these changes and have committed that


Allow users to disable fp contract optimizations ?

Recently I ran into a surprising (for me) behavior demonstrated by the MWE below
using CuArrays, CUDAnative, GPUifyLoops

function kernel(rho, T)
  P = rho[1] * T[1]

  if (abs(P - P) > 1e-16)
    @cuprintf("diff = %.16e\n", P - P)
  end
  nothing
end

rho = CuArray([1e-1])
T = CuArray([300.0])
@launch CUDA() kernel(rho, T, threads=1, blocks=1)

with the output
diff = 1.6653345369377348e-15

Basically, if my understanding of the generated PTX is correct, what happens
is that P - P is calculated as fma(rho[1], T[1], -P) which is probably not the smartest move by the compiler. However, clang with LLVM-6.0.1 also does this for CUDA C so I guess that's expected. This issue goes away if I disable contracts. In clang there's an option for that called -ffp-contract Maybe adding a similar option in GPUifyLoops would be helpful for debugging ?
For convenience, the generated PTX can be found here:
https://gist.github.com/mwarusz/5ab4ac99b02e77b54178cd95c9820d7b

Thanks for bringing this up, the goal in #55 was indeed to match Clang (we were hunting down a performance gap).
I agree that the fact that we use contract unconditionally is probably not what we want in the long-term. Julia in general tries to provide localised control to the user (compare @fastmath).
But yeah:
	mul.f64 	%fd4, %fd1, %fd3;
	neg.f64 	%fd5, %fd4;
	fma.rn.f64 	%fd2, %fd1, %fd3, %fd5;
	abs.f64 	%fd6, %fd2;

is kinda funny, the only explanation I have is that the fma units are the fastest thing.


better stacktrace info on write errors

This is a subset of https://github.com/tebeka/fastavro/pull/41 that only includes the error path tracking for write operations. I unrolled some of the decorators from that PR (which while much more elegant, probably added more overhead).
An example stacktrace looks like this:
Traceback (most recent call last):
  File "/Users/scott/.virtualenvs/fastavro/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/scott/git/scottbelden/fastavro/tests/test_fastavro.py", line 329, in test_repo_caching_issue
    fastavro.writer(new_file, other_schema, records)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 457, in writer
    write_data(io, record, schema, path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 310, in write_data
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 254, in write_record
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 310, in write_data
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 375, in <lambda>
    path),
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 310, in write_data
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 254, in write_record
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 310, in write_data
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 254, in write_record
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 315, in write_data
    raise AvroValueError.from_traceback(datum, schema, path, tb)
AvroValueError: Exception traceback: Traceback (most recent call last):
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 310, in write_data
    path=path)
  File "/Users/scott/git/scottbelden/fastavro/fastavro/writer.py", line 51, in write_int
    datum = (datum << 1) ^ (datum >> 63)
TypeError: unsupported operand type(s) for <<: 'str' and 'int'

Path is: <record[0]>.<field[aa]>.<field[b]>.<field[c]>
Datum is 2 of type <type 'str'>
Expected avro schema type: int

I did some profiling and the results are here: https://gist.github.com/scottbelden/418e2523dee10da0798978ec97226627
I would ignore the overall timing and rather just note that every function call has the exact same number of calls except of course {method 'append' of 'list' objects} which is only present in the run which included the changes in this PR. While there are 336,365 calls, it doesn't add that much overhead (i.e. 32 thousandths of a second).
Please let me know what you think.

After thinking about this some more, I think there might be a better way to go about this. Instead of keeping track of the path information as the serialization happens, it would probably be better to have wrap the outer most calls in a try/except and if it hits an exception then execute a validation function (more thorough than just the writer.validate()) that will walk through the schema and figure out the problem.
This is a bit redundant since it would walk the data structure and schema twice, but I don't think there is a need to be as efficient when an exception happens. Therefore, the actual serialization code can stay fast and if an exception happens, the less efficient but thorough data validation can take place and pin point exactly where the problem is.
I should be able to make a PR this weekend that can show that approach.

Alternative approach here: https://github.com/tebeka/fastavro/pull/53

Error messages still aren't all that useful, it is impossible to determine which part of the schema triggered the error. E.g.:
  File "fastavro/_writer.py", line 439, in fastavro._writer.writer (fastavro/_writer.c:9956)
  File "fastavro/_writer.py", line 291, in fastavro._writer.write_data (fastavro/_writer.c:7311)
  File "fastavro/_writer.py", line 234, in fastavro._writer.write_record (fastavro/_writer.c:7203)
  File "fastavro/_writer.py", line 243, in fastavro._writer.write_record (fastavro/_writer.c:7079)
  File "fastavro/_writer.py", line 291, in fastavro._writer.write_data (fastavro/_writer.c:7311)
  File "fastavro/_writer.py", line 216, in fastavro._writer.write_union (fastavro/_writer.c:6884)
  File "fastavro/_writer.py", line 227, in fastavro._writer.write_union (fastavro/_writer.c:6708)
ValueError: ['b', 'b'] (type <class 'list'>) do not match ['null', 'string']

That's probably because it's just using the normal validate function which doesn't include that bit of useful information. You could steal this validate function (https://github.com/scottbelden/fastavro/blob/415a37a07b8bfe71bef852da494eae9c0fee3c1a/fastavro/validate.py#L29-L152) which is from https://github.com/tebeka/fastavro/pull/53 and it would probably give you the type of validation you are looking for.
However, that validate function is expensive and not really ideal to run before every write call. My suggestion would be to wrap the fastavro.write call in a try/except and run the better validator on exception. Technically it would add a tiny bit of overhead, but I feel like that overhead is worth it and is what I do in my fork of fastavro.


fixed issue #79

fixed issue #79

Codecov Report
Base: 92.99% // Head: 92.99% // No change to project coverage :thumbsup:

Coverage data is based on head (fb3abe2) compared to base (01efb4b).
Patch coverage: 100.00% of modified lines in pull request are covered.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@           Coverage Diff           @@
##           master      #80   +/-   ##
=======================================
  Coverage   92.99%   92.99%
=======================================
  Files           7        7
  Lines         257      257
=======================================
  Hits          239      239
  Misses         18       18

Impacted Files
Coverage Δ

R/utils.R
100.00% <100.00%> (ø)

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

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

fixed issue #79


get merchant account going with braintree

Stripe isn't working out (#67). Let's migrate to Braintree next, I guess.

Now see #3287.


help() output is not displayed in interactive window

If I type help(print) in a Python 3 interactive window, the help text is not displayed.
However, if I then immediately reset the window, the text is displayed as an error message.
Testing with py -3.6 -c "help(print)" >nul, it's clearly sending the text to stdout and not stderr, so we are probably misdirecting it.

On Python 2.7, it works fine (with a valid help parameter, not print). The stdout is redirected in the repl backend, and we read if from our socket in PythonInteractiveEvaluator.CommandProcessorThread.HandleOutput.
On Python 3.6, it doesn't work. The stdout is not redirected in the repl backend, instead we get it via the Process.OutputDataReceived, our event handler is PythonInteractiveEvaluator.CommandProcessorThread.StdOutReceived.
There, we stash the output in a "pre-connection output" string builder, and when the process exits, we print the content of the string builder with WriteError.
            private StringBuilder _preConnectionOutput;

            private void StdOutReceived(object sender, DataReceivedEventArgs e) {
                if (e.Data != null) {
                    if (!AppendPreConnectionOutput(e)) {
                        _eval.WriteOutput(FixNewLines(e.Data));
                    }
                }
            }

            private bool AppendPreConnectionOutput(DataReceivedEventArgs e) {
                var pco = Volatile.Read(ref _preConnectionOutput);
                if (pco != null) {
                    lock (pco) {
                        pco.Append(FixNewLines(e.Data) + Environment.NewLine);
                        return true;
                    }
                }
                return false;
            }

AppendPreConnectionOutput  returns true, _preConnectionOutput is initialized in ctor.

Looks like the easiest fix is to set os.environ["TERM"] = "dumb" so that pydoc doesn't use redirection through an external process to display help.


Automator: update<EMAIL_ADDRESS>in<EMAIL_ADDRESS>

Generated by Automator - 2020-07-22T22:38:16+00:00

@istio-testing: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio_release-1.7
205745818a6452c8700ac22eb55048c1b8a8c184
link
/test release-notes_istio_release-1.7

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Fix Prometheus bucket calculation

There was a bug in the bucket calculation logic that would cause it to
generate out-of-order buckets, which induced a panic in metrics-server.
This fixes that issue, and adds in a test to ensure that it doesn't
happen again.

cc @serathius

merging this once tests pass to ensure we have a working master.  We need to stand up integration tests to make sure this doesn't happen again.


opentabletdriver package crashes due to missing GSettings schema path

Describe the bug
If you install the opentabletdriver package, then click the Load Settings menu option, the application crashes trying to find the GSettings for the file picker.
I'm pretty new to nix, so I don't know if maybe I'm missing some configuration? :)
Steps To Reproduce
Steps to reproduce the behavior:

nix-shell -p opentabletdriver
otd-gui
Click File => Load Settings
(OpenTabletDriver.UX.Gtk:118957): GLib-GIO-ERROR **: 17:47:44.092: No GSettings schemas are installed on the system Aborted (core dumped)

Expected behavior
The file picker opens.
Additional context
I was able to fix this with the following overlay
(self: super: {
    opentabletdriver = super.opentabletdriver.overrideAttrs (old: {
        nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.gtk3 ];
        preFixup = (old.preFixup or "") + ''
            makeWrapperArgs+=("--prefix XDG_DATA_DIRS: \"$GSETTINGS_SCHEMAS_PATH");
            '';
    });
})

Notify maintainers
@thiagokokada
Metadata
 - system: `"x86_64-linux"`
 - host os: `Linux 5.15.55, NixOS, 22.05 (Quokka), 22.05.2099.1e5d0fbd82f`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.8.1`
 - channels(root): `"nixos-22.05"`

I'm pretty new to nix, so I don't know if maybe I'm missing some configuration? :)

Yeah, I think you're missing some configuration, because it works fine for me:

CC @jtojnar, maybe he knows the reason and if we should add the --prefix XDG_DATA_DIRS: "$GSETTINGS_SCHEMAS_PATH" or not.

Looks like opentabletdriver correctly uses wrapGAppsHook as required for apps using GTK:
https://github.com/NixOS/nixpkgs/blob/8849b7ae5c1c1fa1da78edb625b2c8b95def3add/pkgs/tools/X11/opentabletdriver/default.nix#L45
but looks like the ${gtk3}/share/gsettings-schemas/${gtk3.name} is missing from XDG_DATA_DIRS in the bin/otd-gui wrapper. Probably because buildDotnetModule is doing something weird again.
cc @IvarWithoutBones

I cannot currently test this, but the issue might be because gtk3 is only in runtimeDeps, and not in buildInputs.

I currently cannot test this, but the issue might be because gtk3 is only in runtimeDeps, and not in buildInputs.

Is there any reason they should not be the same by default :thinking: ?

Adding gtk3 to buildInputs seems to do the trick. I decided to make buildInputs = runtimeDeps since this should avoid forgetting to add something in the future, but I am not sure if this will cause any problems.
CC @IvarWithoutBones.

It looks like it might actually be a bug in wrapGAppsHook – it should already propagate gtk3. I would expect wrapGAppsHook.tests.basic to include the GTK schemas but it looks like it only does that when gobject-introspection is also present like in wrapGAppsHook.tests.typelib-user.

FWIW, I updated my overlay to only include nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.glib ]; without messing with makeWrapperArgs based on what's done in the inkscape package, and that seemed to be enough as well. Inkscape uses uses wrapGAppsHook as well, though it doesn't list gtk3 as a dependency at all.

Merged #184846, however will keep this issue open since @jtojnar mentioned the possibility of this being a bug in wrapGAppsHook.

I can confirm that the directory containing the settings schemas is getting correctly added to the wrapper's XDG_DATA_DIRS environment variable, and it no longer crashes after removing my overlay. Thanks!

bug prolly got fixed by https://github.com/nixos/nixpkgs/commit/2c471e647963e8bf50934580fe38c5ea176c6b34


null or undefined object throws error

here: https://github.com/75lb/object-get/blob/9584df49f0fead4409123a07550d364b570dcac6/lib/object-get.js#L45
probably arguments.length !== 2 would be better.

hi! but arguments.length !== 2 doesn't test the truthiness of the inputs (i.e. passing in junk like objectGet(undefined, null) would pass your test..)
what's your high-level issue out of interest? I assume you traced a bug to this module from somewhere higher up the tree..

the current behaviour of objectGet(object, expression) is that it will throw if either object or expression are undefined or null - this is the desired behaviour, anything else would be a breaking change.
What do i need to fix, here?

I usually expect "get" to be error resistant, kinda like _.get in lodash. To me it doesn't really matter if the input is null, I want object-get to be silent (probably that's why I'm using it in the first place). I can understand that the thrown error is a design decision and not a bug, so I close this issue. Thank you!


Long stream name can overflow recipient header

If a stream's name is too long to fit in the recipient header, it can take up the whole row and overflow. Here's what that looks like in a debug build:

In a release build, there isn't the loud striped warning, but it's still an overflow:

In particular there's no room left for the topic, or after #172 for the date.
Just how long the stream name needs to be to trigger this depends, naturally, on the size of the device's screen and on the font size. A user who has their system font size set to very large for readability may encounter this at a fairly ordinary length of stream name. It'll also become easier to trigger after #172, with the date occupying part of the width.
Even when things fall short of outright overflow, we'll currently show a long stream name in full even if that leaves very little room at all for the topic:

(The details of how this looks will change when we refresh the message list to the 2023 redesign, #157. But I think the basic layout challenge here will be unchanged.)
So we should adjust this behavior. I think what we ideally want is something like:

When both stream and topic name are long, they each get a fixed fraction of the available width — perhaps 50/50, or perhaps something like 40/60 to give somewhat more space to the topic.
(Where "available" means what's left after the fixed widths that go to the date, or to padding, etc.)

When there's room to fit both in full, though, we show them both in full, even if that means one of them takes 90% of the available width.

Moreover the container for the stream name doesn't take up any slack — the topic always appears right after the text of the stream name.

In between, something reasonable happens. For example if one wants 90% of the available width and the other wants 20%, probably the latter gets all 20% that it wants and the other gets the other 80%.

In CSS I think this could be expressed with a fairly straightforward use of flexbox, and in particular the distinction between flex-grow (which would be nonzero only on the topic) and flex-shrink (which would be positive on both topic and stream name).
I'm not sure offhand how to express it in Flutter. Hopefully it can be done by using the basic Row widget, and its friends like Expanded and Flexible, in the right way. If not, it's always possible to do it with our own render object; but before reaching for that, I'd want to look around to see if someone in the community has produced a good implementation of a port of CSS flexbox, and consider using that instead.

can I work on this issue?

Pretty much implemented the behaviour you mentioned in your comment above, might need to tweak the values a little bit to adjust them according to your needs.

How does this look?


change "isDesktopOnly" to false

change "isDesktopOnly" to false so that the plugin can be used on iPad or android devices

That's of course super easy to merge, but the question is, does it really work ok? e.g. doesn't "yank to clipboard" cause loops of endless notifications on iOS?

That's of course super easy to merge, but the question is, does it really work ok? e.g. doesn't "yank to clipboard" cause loops of endless notifications on iOS?

On my iPadOS 16.2 devices, I can yank to clipboard ("+yy) successfully without any notification. And when I set the "Paste from Other Apps" of Obsidian to Allow, system will only show "obsidian paste from xxx" on the upper part of screen

Great! Mind adding something about "paste from other apps" to the README of the plugin?

Great! Mind adding something about "paste from other apps" to the README of the plugin?

I've added it :smile:


How to use the code in a real-world weighted network?

Hello,
I hope you are doing well, it would be nice if you update the documentation of the distance closure package and put a tutorial of using it in a real world weighted network.
Thank you in advance.

Dear @aliyassin4,
Thank you for the message. Indeed I need to update the documentation since the last major update. I plan to have something up in the next couple of weeks. In the meantime, here's a simple example on how to compute the metric backbone (for relatively small & sparse networks). I hope it helps.
Assuming you have a G = networkx.Graph() object where edges have a distance attribute,
from distanceclosure.dijkstra import all_pairs_dijkstra_path_length
#
for i, metric_distances in all_pairs_dijkstra_path_length(G, weight='distance', disjunction=sum):
    for j, metric_distance in metric_distances.items():
        if G.has_edge(i, j):
            G[i][j]['metric_distance'] = metric_distance
            G[i][j]['is_metric'] = True if ((metric_distance == G[i][j]['distance']) and (metric_distance != np.inf)) else False

Edges in the Backbone are then marked with the flag is_metric.
With kind regards,

I installed the latest PyPI stable released, and I am getting the following error ImportError: cannot import name all_pairs_dijkstra_path_length when trying to import all_pairs_dijkstra_path_length.

When trying to install the latest development release on GitHub. I also get this error:
File "setup.py", line 3, in <module>
    from distanceclosure import __package__, __description__, __version__
  File "/Users/ali/Desktop/distanceclosure/distanceclosure/distanceclosure/__init__.py", line 15, in <module>
    from distanceclosure.dijkstra import *
  File "/Users/ali/Desktop/distanceclosure/distanceclosure/distanceclosure/dijkstra.py", line 120
    raise nx.NodeNotFound(f"Source {source} not in G")

Dear Ali,
I apologize you are still having issues. Unfortunately, I could not replicate your errors on my end. The errors look like a python version (2 vs 3) issue, but I'm not sure. Make sure you are running python 3 (I'm running python 3.7.7) and are able to install and work with the necessary requirements (e.g. NetworkX & Cython).
Please try uninstalling any installed versions, by running
pip uninstall distanceclosure

and then installing directly from the latest github version, by running
pip install git+git://github.com/rionbr/distanceclosure

I also just pushed a small update to the readme file and some other minor fixes.
Thank you for your patience.
With kind regards,

Indeed it was a python version error. Using python 3.7.7 and the requirement packages(networkx, pandas, numpy, scipy and Cython) was able to install the distanceclosure directly from the latest GitHub version. However, trying the example available in the readme file results in this error:
NameError                                 Traceback (most recent call last)
/var/folders/y_/k_c4gj5x3rv1kmhprsdpc3lm0000gn/T/ipykernel_54333/3673363907.py in <module>
     21
     22 # Compute closure (note this will be a fully connected graph. It can be slow for large graphs)
---> 23 C = dc.distance_closure(G, kind='metric', weight='distance')
     24
     25 # You can now access the new 'metric_distance' value and whether the edge is part of the metric backbone.

~/opt/anaconda3/envs/python3.7.7-env/lib/python3.7/site-packages/distanceclosure/closure.py in distance_closure(D, kind, algorithm, weight, only_backbone, verbose, *args, **kwargs)
     62
     63     # Dense
---> 64     if w == 'dense':
     65
     66         raise NotImplementedError('Needs some fine tunning.')

NameError: name 'w' is not defined

I also tried this code:

Dear @aliyassin4, Thank you for the message. Indeed I need to update the documentation since the last major update. I plan to have something up in the next couple of weeks. In the meantime, here's a simple example on how to compute the metric backbone (for relatively small & sparse networks). I hope it helps.
Assuming you have a G = networkx.Graph() object where edges have a distance attribute,
from distanceclosure.dijkstra import all_pairs_dijkstra_path_length
#
for i, metric_distances in all_pairs_dijkstra_path_length(G, weight='distance', disjunction=sum):
    for j, metric_distance in metric_distances.items():
        if G.has_edge(i, j):
            G[i][j]['metric_distance'] = metric_distance
            G[i][j]['is_metric'] = True if ((metric_distance == G[i][j]['distance']) and (metric_distance != np.inf)) else False

Edges in the Backbone are then marked with the flag is_metric.
With kind regards,

It gives the following error:
TypeError                                 Traceback (most recent call last)
/var/folders/y_/k_c4gj5x3rv1kmhprsdpc3lm0000gn/T/ipykernel_53787/1532817936.py in <module>
     20 from distanceclosure.dijkstra import all_pairs_dijkstra_path_length
     21
---> 22 for i, metric_distances in nx.all_pairs_dijkstra_path_length(G, weight='distance', disjunction=sum):
     23     for j, metric_distance in metric_distances.items():
     24         if G.has_edge(i, j):

TypeError: all_pairs_dijkstra_path_length() got an unexpected keyword argument 'disjunction'

Thank you fro your patience and help,
Best regards.

You are right, the last push introduced a bug. It's already corrected. Please uninstall and install again like last time. The sample from the Readme.md file should work now.
Thank you! With kind regards,

Everything works now, thank you so much!


Release Notes v0.1.5

Support for capabilityChain in LD proofs PR #2285

for WebKMS changes:

Add remote Webkms client as RemoteKMS kms.KeyManager implementation and RemoteCrypto crypto.Crypto implementation (#2313, #2307)
RemoteKMS and RemoteCrypto are Aries pluggable services (using WithKMS() and WithCrypt())  (#2313, #2307)

for Crypto changes:

JWE key wrapping is extracted from the tinkcrypto keys and into the crypto.Crypto api (ie introduction of WrapKey()/UnwrapKey() calls)  (#2301, #2300, #2299, #2271, #2257, #2256)

Encrypted Storage Capability (#2199):

Support for encrypted storage. Encryption format and underlying storage providers are both pluggable.
Concrete implementation of the EDV encryption format (data model).
Concrete implementation of the EDV REST API as a storage provider.
Support for TrustBloc EDV Server extensions. These are optional and default to being disabled in order to ensure compatibility with purely standard EDV server implementation.

For BBS+ Signatures 2020 (https://github.com/hyperledger/aries-framework-go/issues/1725):

BBS+ signer of VC
BBS+ selective disclosure of VC
Interoperability with Mattr


Async validators prevent tags from being added

I'm submitting a ...  (check one with "x")
[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request/question

Current behavior

If I add an async validator that always resolves to null, tags won't be added by pressing enter. They just disappear like not passing the validation.
Expected behavior

Minimal reproduction of the problem with instructions (if applicable)

Code:
import { Component } from '@angular/core';
import {FormControl} from '@angular/forms'

@Component({
  selector: 'app-inbox',
  templateUrl: './inbox.component.html',
})
export class InboxComponent {
  emails = []
  async = []
  constructor() {
    const emailAvaliable = (control: FormControl) => {
      return new Promise(resolve => {
        return resolve(null)
      })
    }
    this.async = [emailAvaliable]
  }
}

Markup:
<tag-input [(ngModel)]="emails" [asyncValidators]="async"></tag-input>
What do you use to build your app? (SystemJS, Webpack, angular-cli, etc.). Please specify the version
Angular version:

@angular/cli: 1.1.0
node: 6.10.3
os: linux x64
@angular/animations: 4.2.3
@angular/common: 4.1.3
@angular/compiler: 4.1.3
@angular/core: 4.1.3
@angular/forms: 4.1.3
@angular/http: 4.1.3
@angular/platform-browser: 4.1.3
@angular/platform-browser-dynamic: 4.1.3
@angular/router: 4.1.3
@angular/cli: 1.1.0
@angular/compiler-cli: 4.1.3

ng2-tag-input version:

1.3.5
Browser: all

i have the same problem here, sync validator works well, but async validators doesn't add tags

Seems due to https://github.com/angular/angular/issues/13200

To be fixed in https://github.com/Gbuomprisco/ng2-tag-input/pull/461/files

Hi @ahushh and @ahushh,
would you be able to check v1.3.6? thanks

Works fine. Thanks!


Lambda fails with 'unable to import module' and 'Cannot find module '_process'' errors

Deploying from El Capitan with Node.js 4.1.2.
This bug seems to be the cause: https://github.com/substack/node-browserify/issues/1277

I changed insertGlobalLets to insertGlobalVars in DeployLambda.js and that fixed it for me.

+1


switch to go modules & update dependencies

Also suggest adding the container image build to the ci make target so that the Dockerfile is also verified in the ci.

done and done. I'm planning to migrate to github actions for CI next, and as part of that I think I want to do the container build as its own job so it can run in parallel.


feature: Tabs for code blocks with OS-specific instructions in Getting Started

Feature scope
Other
Description
In the Getting Started guide, there are code blocks like the following which contain commented commands for use by different OSes.
#For Windows (PowerShell): New-Alias Python3 Python
python3 -m pip install --user pipx
python3 -m pipx ensurepath
#For Windows (PowerShell): Open up a new powershell instance to load your new path variables
source ~/.bashrc

In these cases, it would be much nicer to have code blocks with separate tabs for each OS, like this:

This would be a much nicer user experience.

Love this!


fix(stylelint_lsp): update root directory pattern

Hi! dear maintainers - this little contribution is to extend the root_pattern lookup by supporting all StyleLint config files and based on the eslint.lua method.
Signed-off-by: Wuelner Martínez<EMAIL_ADDRESS>

maybe can abstract the root_with_package to util.lua .

Ok I'll abstract: https://github.com/neovim/nvim-lspconfig/blob/b5bb6e3d7c775c241726d1ef564902263e93e2cd/lua/lspconfig/server_configurations/eslint.lua#L53-L64 [...] to util.lua and implement it in stylelint_lsp.lua and eslint.lua, right ??

yep.

Done.

Ok, done.
Sorry for the big function name, I thought I had to be as detailed as possible 😅


MQTT certs extraction on getting started guide

Used oc extract command for extracting MQTT certs
Updated MQTT receiver and sender command lines
Removed useless MQTT receiver command line

@ppatierno This command will not work for kubernetes, so this is why I used this way for extractions.

I'm goint to close this and just removing the useless receiver command line on the master


[FEATURE] Parameters for plate editor operations.

Would be great if I can edit parameters of a notch.

Is it possible to use a dxf to generate a cross section for the negative volumes? The square cutout will likely cause high stress concentrations at the corners of the cutouts. I am unable to generate a general crosssection with rounded corners.


Problematic usage on MacOS Catalina

Hello, I am new to GitHub so please be patient with me. I have installed spotdl to my mac using basic terminal but I am unable to find the config file. Would you please help me? Thank you.

There is no config file in V3.

V3 doesn't have any config file.

Oh, my bad - is it possible to change the folder where the songs are being downloaded to?

You'd have to run spotdl from within the folder - you wanna download the songs to. See this

Thank you for you help! 🙂