Unable to join a Windows node to a Docker swarm manager on Linux

Description
I have a preexisting swarm mode cluster that I started using 3 Linux nodes on v1.12. I upgraded a Linux worker to v1.13 and its still working fine. However, I can't add a Windows node running v1.13
Steps to reproduce the issue:

Set up swarm on an Ubuntu 16.04 LTS machine
Join from another Linux machine to confirm it works with docker swarm join --token ... <managerIP>:2377
Attempt to join it with a Windows Server 2016 VM

wget https://raw.githubusercontent.com/StefanScherer/docker-windows-box/master/swarm-mode/scripts/open-swarm-mode-ports.ps1 | invoke-expression
docker swarm join --token SWMTKN-1-0redacted --listen-addr <IP_ADDRESS>:2377 --advertise-addr <IP_ADDRESS>:2377 <IP_ADDRESS>:2377

Describe the results you received:
docker swarm join failed on the Windows node:
Error response from daemon: no valid certificate bundle found

Logs:
PS C:\Windows\system32> Get-EventLog -LogName Application -Source docker -Newest 3 | fl Source, TimeGenerated, Message

Source        : docker
TimeGenerated : 12/7/2016 11:28:14 PM
Message       : Handler for POST /v1.25/swarm/join returned error: no valid certificate bundle found

Source        : docker
TimeGenerated : 12/7/2016 11:28:14 PM
Message       : cluster exited with error: no valid certificate bundle found

Source        : docker
TimeGenerated : 12/7/2016 11:28:14 PM
Message       : failed to request save new certificate [module=node/tls error=no valid certificate bundle found]

Describe the results you expected:
I expected it to succeed.

With a Linux 1.13.0-rc3 swarm master I get this error trying to join a 1.13.0-rc3 windows worker:
Error response from daemon: rpc error: code = 13 desc = connection error: desc = "transport: x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"swarm-ca\")"

But it was just a quick test.

@PatrickLang i do have windows nodes working with linux master, however i am using the latest master builds.

Confirmed. With a fresh Win10 VM installing 1.13.0-rc3 I could easily join a Linux master, also running 1.13.0-rc3.

Thanks. I'll try creating a new rc3 Linux master and do if that works or not.
Are v1.12&13 swarm mode expected to interoperate?
Sent from a tiny keyboard
On Dec 8, 2016, at 5:32 AM, Stefan Scherer <notifications<EMAIL_ADDRESS>wrote:
Confirmed. With a fresh Win10 VM installing 1.13.0-rc3 I could easily join a Linux master, also running 1.13.0-rc3.

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/docker/docker/issues/29240#issuecomment-265739911, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AK0eF9_zmgHmwauvDfBT0zKVsDHr8Yheks5rGAbEgaJpZM4LHhkR.

Success. matching versions work across Linux & Windows, but v12 master + v13 worker only works on Linux.
patrick@plang-v13-l:~$ docker node inspect --pretty iz v6
ID:                     iz6q2tviob6eilm18hdm2i5yj
Hostname:               plang-v13-l
Joined at:              2016-12-09 05:02:48.528154926 +0000 utc
Status:
 State:                 Ready
 Availability:          Active
 Address:               <IP_ADDRESS>
Manager Status:
 Address:               <IP_ADDRESS>:2377
 Raft Status:           Reachable
 Leader:                Yes
Platform:
 Operating System:      linux
 Architecture:          x86_64
Resources:
 CPUs:                  1
 Memory:                3.359 GiB
Plugins:
  Network:              bridge, host, macvlan, null, overlay
  Volume:               local
Engine Version:         1.13.0-rc3

ID:                     v6f4jx37r76xhw2q71nl1bqrx
Hostname:               plang-v13-win
Joined at:              2016-12-09 05:03:25.602211049 +0000 utc
Status:
 State:                 Ready
 Availability:          Active
 Address:               <IP_ADDRESS>
Platform:
 Operating System:      windows
 Architecture:          x86_64
Resources:
 CPUs:                  1
 Memory:                3.5 GiB
Plugins:
  Network:              l2bridge, l2tunnel, nat, null, overlay, transparent
  Volume:               local
Engine Version:         1.13.0-rc3


feat: initial implementation of evpn gw cni

Initial implementation of EVPN GW CNI. Currently only Intel Mt.Evans IPUs are supported by this CNI. Target is to support more IPUs/DPUs in the future.  It has an integration with the EVPN GW API .

@glimchb Thank you for the review.
I will take a look

@mardim91 Any update on the resolution of the comments?

Hello @sandersms I have resolved all the above comments.

I have converted this to draft as the dependent PR in opi-evpn-bridge is still unmerged
opiproject/opi-evpn-bridge#380

The dependent PRs 0, 1 has been merged so this PR is ready

Hello @glimchb,
I have resolved all the comments that you have left. I will propose that maybe we can merge this one as the first PR to the project and then if we need to fix or add anything more we can create new PRs on top.
This PR is a working one and is quite some time open so I am thinking that we can merge it as the comments are resolved and all the dependent PRs in the OPI-EVPN-BR project are merged.

code dup
ci failed
no tests
no godpu usage
readme removed badges
readme : i want to contribute section must stay

code dup fixed
ci checks completed
godpu inclusion resolved
readme updated to include badges and contribution section
Tests for the feature are missing and should be included for validation.  Issue https://github.com/opiproject/opi-gateway-evpn-cni/issues/15 opened to cover the missing aspect that needs to be added.


Exclude a folder from Homebridge Backup as a plugin dev

Current Situation
Hi,
I am developing a plugin and am storing information in the homebridge storage path. Is it possible to exclude a folder from the homebridge backup as a dev for example by putting a .homebridgebackupignore file or something similar into the folder?
Logs
-

Configuration
-

Environment

OS:
Software:
Node:
npm:

Process Supervisor
hb-service
Additional Context
No response

I have also transferred this to the UI repo since it is the UI that creates that backup files

Could you give this a try and see how you get on?

Sure I can. I will give you an update as soon as I have the time to test it 👍

@bwp91 I just tried the Config UI Beta and it does indeed work. The .venv folder is excluded and the file size of the compressed target file goes down from 30MB to 10KB. When restoring the backup, my plugin recreates the python environment.


2.1.11 bad exit code

On 2.1.11 I'm getting a failed -1 exit code when the renewal worked correctly. Nothing to renew. I rolled back to 2.1.10 to verify the same renewal transaction was correctly exiting.  Unless the fact that we don't use the Windows scheduler to schedule the renewal task? But that's not an error it's a choice.
A simple Windows ACMEv2 client (WACS)
Software version <IP_ADDRESS>7 (RELEASE, TRIMMED, 64-bit)
ACME server https://acme-v02.api.letsencrypt.org/
IIS version 10.0
Running with administrator credentials
Scheduled task not configured yet
Please report issues at https://github.com/win-acme/win-acme
Renewal for www.xxxxxremovedxxx.com is due after 10/12/2020 11:58:02
==============================================================================
A simple Windows ACMEv2 client (WACS)
Software version <IP_ADDRESS>6 (RELEASE, TRIMMED)
ACME server https://acme-v02.api.letsencrypt.org/
IIS version 10.0
Running with administrator credentials
Scheduled task not configured yet
Please report issues at https://github.com/win-acme/win-acme
Renewal for www.xxxxxremovedxxx.com is due after 10/12/2020 11:58:02

Thanks for the bug report, it should be fixed in this build: https://ci.appveyor.com/project/WouterTinus/win-acme-s8t9q/builds/35581847/artifacts

It's not a release but an intermediate build, should perfectly usable though release notes and such are lacking obviously.

Fixed in 2.1.12


Delete redundant docutils expression

development/tools/documentation/docutils is also provided by pythonPackages; use that instead.

I've no idea what these errors are about, zathura, mpv & mupdf build on my end, and it's unclear to me how docutils could cause compile errors here ...

I restarted travis, let's see

Now I'm seeing g++: internal compiler error: Killed (program cc1plus) during the cmake build. Has to be unrelated.


Proposal: Show context menu options also in property boxes

solved in turn of
https://github.com/graphsense/graphsense-dashboard/issues/381


Discord link not working

Hello,
The Discord link is not working for me, it says the link is expired or I do not have access - can someone update the link?
I have a question about accessing raster band data and it seems more appropriate to ask on the discord than here.
Thanks.

My network was blocking the link - worked fine on other device.


Change the installation steps

As your project is using react-native-slider and if users don't install it hey will get an error

@rocknegi Thank you, I changed it a bit but merged it.

I am going to complete refactory of the library soon :)


Feat: Pointer movement is not professional

Describe the feature
Really website is good but pointer movement is not good so i want to make a pointer movement as professional.
please assign me @anur
Add ScreenShots
see the image:

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

how will u make the pointer look professional ?

@abhi03ruchi, like A web application's pointer . There are no back threads etc .that exist in your project.

Can I start the work tell me.. please

no , the custom cursor is ok .
u can work on other issues .


Metaclass member dictionaries are JS objects, not python dictionaries

I just noticed that the third argument in a metaclass __new__ gets  a Javascript, rather than a Python dictionary.  That breaks the common  metaclass pattern:
class Meta:
    def __new__(cls, name, parents, dct):
         for k,  v in dct.items():
               # do something clever with the key or value
    return type.__new__(cls, name, parents, dct)

you can iterate the dictionary with ___pragma___('jsiter') but it looks like the contents are already Transcrypted into JS so many python-style introspections are difficult.

This was an area of compromises.
Maybe there's indeed room for improvement here.
Will look into this.
KR
Jacques


[Hardware] 地端 PC for LLM training 建議配置

經驗談 : https://www.pugetsystems.com/solutions/scientific-computing-workstations/machine-learning-ai/hardware-recommendations/

作者的建議配置 : https://www.pugetsystems.com/labs/hpc/can-you-run-a-state-of-the-art-llm-on-prem-for-a-reasonable-cost/

LambdaLabs multi-GPU 工作站： https://lambdalabs.com/gpu-workstations/vector
PyTorch DDP 是透過 NVLink 運行： https://www.reddit.com/r/nvidia/comments/11aswyv/2x3090_rtx_or_1x4090_rtx_for_training_a_nn_model/

GPU 硬體相關知識

https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/


Build Oracle Database XE 18.4.0 container failed

Hi,
I have retrieve all the resources + put the package on the 18.4.0 version folder.
Enter this command: ./buildDockerImage.sh -v 18.4.0 -x
And got this at the end:
Total size: 5.2 G
Total download size: 56 k
Installed size: 5.2 G
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : file-5.11-35.el7.x86_64                                      1/2
[SEVERE] You have insufficient diskspace in the destination directory (/opt) to
install Oracle Database 18c Express Edition.  The installation requires at
least 7680 MB free on this disk.
error: %pre(oracle-database-xe-18c-1.0-1.x86_64) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package oracle-database-xe-18c-1.0-1.x86_64
  Verifying  : file-5.11-35.el7.x86_64                                      1/2
  Verifying  : oracle-database-xe-18c-1.0-1.x86_64                          2/2

Dependency Installed:
  file.x86_64 0:5.11-35.el7

Failed:
  oracle-database-xe-18c.x86_64 0:1.0-1

Complete!
Removing intermediate container 27005becfa56
The command '/bin/sh -c cd $INSTALL_DIR &&     yum -y install openssl oracle-database-preinstall-18c &&     yum -y install $INSTALL_FILE_1 &&     rm -rf /var/cache/yum &&     mkdir -p $ORACLE_BASE/scripts/setup &&     mkdir $ORACLE_BASE/scripts/startup &&     ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d &&     mkdir -p $ORACLE_BASE/oradata /home/oracle &&     chown -R oracle:oinstall $ORACLE_BASE /home/oracle &&     mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ &&     mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ &&     mv $INSTALL_DIR/$CHECK_DB_FILE $ORACLE_BASE/ &&     mv $INSTALL_DIR/$CONF_FILE /etc/sysconfig/ &&     ln -s $ORACLE_BASE/$PWD_FILE / &&     cd $HOME &&     rm -rf $INSTALL_DIR &&     chmod ug+x $ORACLE_BASE/*.sh' returned a non-zero code: 1

ERROR: Oracle Database Docker Image was NOT successfully created.
ERROR: Check the output and correct any reported problems with the docker build operation.

Docker info:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 9
Server Version: 18.09.3
Storage Driver: devicemapper
Pool Name: docker-253:0-872415477-pool
Pool Blocksize: 65.54kB
Base Device Size: 10.74GB
Backing Filesystem: xfs
Udev Sync Supported: true
Data file: /dev/loop0
Metadata file: /dev/loop1
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 5.309GB
Data Space Total: 268.4GB
Data Space Available: 121.6GB
Metadata Space Used: 20.69MB
Metadata Space Total: 2.147GB
Metadata Space Available: 2.127GB
Thin Pool Minimum Free Space: 26.84GB
Deferred Removal Enabled: true
Deferred Deletion Enabled: true
Deferred Deleted Device Count: 0
Library Version: 1.02.149-RHEL7 (2018-07-20)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: e6b3f5632f50dbc4e9cb6288d911bf4f5e95b18e
runc version: 6635b4f0c6af3810594d2770f662f34ddc15b40d
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.5.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.795GiB
Name: refenv
ID: HJN4:4DKA:3SMZ:UWP7:KVBH:JTSQ:DBF2:WWMR:VS3F:L2BN:E2ZM:DS2W
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
<IP_ADDRESS>/8
Live Restore Enabled: false
Product License: Community Engine

Running transaction
  Installing : file-5.11-35.el7.x86_64                                      1/2
[SEVERE] You have insufficient diskspace in the destination directory (/opt) to
install Oracle Database 18c Express Edition.  The installation requires at
least 7680 MB free on this disk.

I have like 50Gb free on my root folder.

But your Base Device Size it only 10GB:
 Pool Blocksize: 65.54kB
 Base Device Size: 10.74GB
 Backing Filesystem: xfs
 Udev Sync Supported: true

I wanted to start on a new VM. My previous try was with a VM with 100Gb disk size, 2vCPU and 4 Gb memory. But still 10Gb is more than 7.6Gb. So I don't get the error.

The error is when the install happens. At that point there is already an RPM inside the container to be installed with a couple of GBs. So at this point you don't have 10GB, nor 7.6GB left anymore.
Have a look here, increase your base device size to 20GB or more and try again. Make sure that you removed all images, otherwise Docker won't use the new size.

It's working thanks 👍
sudo service docker stop
sudo dockerd --storage-opt dm.basesize=50G
sudo service docker start

For the benefit of anyone else reading who is trying to apply the same change and not seeing any difference - you need to ensure that the old base container images are gone so docker re-pulls them (and recreates with the new base size). I had multiple (unrelated images) all built on the same base, which prevented a new base being pulled correctly.


Merge EyoWeiChin-Update-Main

Refactor

Refactor Main so that it better adhere to SLAP

Add

DG: Command execution sequence diagram
DG: Starting up sequence diagram

Update

DG to reflect new changes and comments
Browse diagrams to be better formatted

Remove

General sequence diagram

Looks amazing, thank you @EyoWeiChin!


Fatal error: UnsafeMutablePointer.initialize overlapping range

Not able to run code due to memory overlapping.

i have no issues running breadwallet,although i have issues running forks of breadwallet-ios like ravenwallet for example.dont know what the cause is.

Do you have fix it?

-        get { return String(cString: UnsafeRawPointer([self.address]).assumingMemoryBound(to: CChar.self)) }
+        get {
+            return withUnsafePointer(to: self.address) {
+                $0.withMemoryRebound(to: UInt8.self, capacity: MemoryLayout.size(ofValue: self.address)) {
+                    String(cString: $0)
+                }
+            }
+        }

To lazy to fix this specially since the devs take forever to merge my changes in breadwallet-core but this is the fix on our wallet. Hope it helps you! I only got the error until now.

thankyou


Vendor autoload.php doesn't exist?

I'm getting the following error:

Warning: require(/xxxxxxxx/sendgrid/vendor/autoload.php): failed to open stream: No such file or directory in /xxxxxxxx/sendgrid/sendgrid-php.php on line 14

I found these related issues but there's no proper solution offered there: https://github.com/sendgrid/sendgrid-php/issues/407
Why is this vendor not file not included in github??
The PHP example you guys provide doesn't even work this way.

Have you installed it with composer require?

No. The docs say using composer is optional. I'm not familiar with composer and I would rather not use it if I can.
What it doesn't specify is where to get the file when not using composer.

Although using composer is not required I do really recommend it. It makes updating so much easier and its super easy to use.
But here goes:
If you dont want use composer you need to download the folder as .zip and extract it and add:
require directory/sendgrid-php/loader.php

and add:
require directory/sendgrid-php/loader.php

Add that where?

Also, there's no such file "loader.php" in the root folder of sendgrid-php.
Are you talking about the one within the lib folder? lib/loader.php ?

Even when replacing:
require("./vendors/sendgrid/sendgrid-php.php");

For
require directory/sendgrid-php/loader.php

I get the following error:

Warning: require_once(/xxx/sendgrid/lib/mail/BatchId): failed to open stream: No such file or directory in /xxx/sendgrid/lib/loader.php on line 19

I had to end up using composer...

Hi @alvarotrigo,
My apologies, you received that last error because of this bug.
I'm glad you were able to get things going with Composer, it's an excellent tool.
With Best Regards,
Elmer
Thanks for helping out @martijnmelchers!

Thanks for the info!

@alvarotrigo @pleckie i made a PR that allows for standalone usage (still requires the php-http-client dependency, of course), not sure if they'll use it but may be useful for you :)


Upgrade to React Native 0.43

Stoppers:

[ ] NavigationExperimental is deprecated. I'll be replacing it with React Navigation.
[ ] Some 3rd party components were rising warnings on day 1 of release, as React did some maintenance changes. This is not a bug but breaks the build. This is mostly a wait-and-see when they are fixed.
[ ] We should ensure nothing breaks the app (usually nothing does in RN upgrades)

Even new list components FlatList, SectionList e.t.c (https://facebook.github.io/react-native/blog/2017/03/13/better-list-views.html) depend on RN 0.43, will we be making a swtich to them as well?


Fix parameter type for CalculateThreadgroups

Looks like the first parameter was copy-pasted from the SetComputeInfo paragraph above. It should be const D2D1_RECT_L *, not ID2D1ComputeInfo *.
Correct parameters are listed at https://learn.microsoft.com/en-us/windows/win32/api/d2d1effectauthor/nf-d2d1effectauthor-id2d1computetransform-calculatethreadgroups

Thanks Rick.


Change to reusable workflow for linting and testing

Changes introduced with this PR
This PR replaces the existing workflow for this repo with a stub that calls a reusable workflow in arcalot/arcaflow-reusable-workflows (added in https://github.com/arcalot/arcaflow-reusable-workflows/pull/15).  This allows us to maintain the workflow in a centralized fashion, so that all the Arca repositories can use the same code and receive the same enhancements, and so that we can administer dependency updates once across all the repos.
In addition to replacing the contents of the workflow, this PR also renames it to the conventional filename.

By contributing to this repository, I agree to the contribution guidelines.

your FIXME needs to be resolved.

Done.
The PR triggered a GitHub Action which ran successfully...more or less:  it claims success, but it wasn't able to read the ARCALOT_GO_VERSION variable and fell back to using the system default (which is 1.21.8, apparently).  I'm hoping that the reason for this is that the PR branch is coming from my fork and is not part of the arcalot organization...and, that this problem will disappear once this PR is merged.

Maybe this should even have been a draft.

Yes...perhaps I created it prematurely...but I wanted it to be viewable for the https://github.com/arcalot/arcaflow-reusable-workflows/pull/15 reviewers, and testing it has been...cumbersome.
But, it should all be good, now!


Update artifacts for v0.12.2

Issue #, if available:
Description of changes:
Update artifacts for v0.12.2
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/cherrypick main


Make FSM public

This has come up at least once already. I would like to also use the same FSM class greenery for my semi-fork interegular which primarily has a difference focus in performance tradeoffs, which I don't think should conflict with the base usage, and a significantly different regex frontend that adds syntax that more closely matches python's re module, which is a non-goal for greenery.
It depends on how you want to do that @qntm

You either just make the fsm public as part of greenery
Or upload it as a separate package

I am fine with either.
This is motivated by someone contributing a performance improvement to my version, that I think would also be beneficial for greenery and also depending on my internal `FSM class in a separate package. People are going to want this FSM class and they are going to use it, so making it public seems like a reasonable idea. I think especially with the improvement of treating character ranges as one, which I haven't ported, your version is just better than mine right now.

I will consider this. Making fsm public as part of the greenery package is probably the easiest way to go about this.
I'm a little concerned that the current interface on the fsm module is a little strange. Note that, for example, following #99 the Charclass class is now an internal dependency of Fsm, not vice versa. Also, this would require "freezing" the API of the fsm module. Not that that API is changing all that rapidly...

@MegaIng Give greenery-4.2.0 a whirl.


every translation in jsx incorrectly flagged as unused

i18next-react project setup:
// ./i18n-unused.config.cjs
module.exports = {
  localesPath: 'src/analysis/_locales',
  srcPath: 'src',
};

translation files
./src/analysis/_locales/de.json
./src/analysis/_locales/en.json

(reduced for brevity)
{
  "tab": {
    "progress": "Progress",
  }
}

example file that uses translations
// ./src/analysis/views/TestView.tsx
import { useTranslation } from 'react-i18next';

export const TestView = () => {
  const { t } = useTranslation('analysis');
  return <div>{t('tab.progress')}</div>;
};

i have installed i18n-unused as dev dependency and run yarn i18n-unused display-unused
this prints almost all translations as unused. what i noticed is that it works with translations that are in javascript (like useEffect, or other pure javascript contexts), but it does not seem to work in jsx at all.

Experiencing the same issue in my project.
This is also true when you implement the collectMissedTranslations  script (see below as implemented on my side).
const dictionaries = globSync('./src/i18n/dictionaries/*.json', {realpath: true});
const sources = globSync('./src/**/*.+(tsx|ts|jsx|js|es6)', {realpath: true});

const handleTranslations = async () => {
  const unusedTranslations = await collectUnusedTranslations(
    dictionaries,
    sources,
    {}
  );
  return unusedTranslations;
}

handleTranslations().then(result => { console.log('unused:', result) });

Same to me but with .tsx

I had this issue and mostly fixed it with the translationKeyMatcher config:
translationKeyMatcher: /['"](translation|prefixes|like|tab|here).([\w.]+)['"]/gi

Seems like the default value for translationKeyMatcher, which is /(?:[$ .](_|t|tc|i18nKey))\(.*?\)/gi, isn't working - it gives no results
It's looking for $, space or . characters preceding the t function which isn't always present.
I tried the one provided in the comment above - but, it struggles with several cases:
When there isn't a closing bracket on the same line, they won't get recognised
t('myKey', {
  someToken: 123
})

If the key used is dynamic, they aren't recognised
t(somePredicate ? 'keyTrue' : 'keyFalse')

If keys are substrings of each other, they won't get flagged
For example, given:
{
  "keyA": "x",
  "keyAB": "x",
}

And code of:
t('keyAB')

The tool won't flag that keyA is unused because it's a substring of keyAB.

I've added a custom translationKeyMatcher that is sort of working....
translationKeyMatcher: /(?:[ ={:]t\(|i18nKey=)'\w+'[,)]?/gi,

Some gotchas to note as this is very basic...

It assumes only t('key' or i18next='key' are the only ways keys are consumed
only supports t('myKey' as we only use this in our codebase, it ignores the closing bracket
it doesn't support nested keys, we use a flat key structure
when keys are substrings, it marks them as false positive
can't handle dynamic keys still

I've also had to refactor some of my keys to support these gotchas:
-  t(predicate ? 'key1' : 'key2')
+  predicate ? t('key1') : t('key2')

Making sure my keys aren't substrings
- "myControl": "value",
+ "myControlLabel": "value",
  "myControlTooltip": "tooltip",

after a good chat with my friend chatGPT, we (they) came up with this:
  translationKeyMatcher:
    // this regex was generated by chatGPT, and has the following features:
    // * only match for `t()` and `tToDocLanguage()` calls
    // * preceded by a space, opening parenthesis, or opening curly brace
    // * also match for `i18nKey` prop in JSX
    // * captures double quotes, single quotes, and backticks
    // * works with optional chaining e.g. `t?.()`
    // * works with multiline strings e.g. `t(\n"key")`
    /(?<=[\s{(])(?:t|tToDocLanguage)\??\.?\(\s*["'`]?([\s\S]+?)["'`]?\s*\)|i18nKey="([\s\S]+?)"/g,

we have a custom function used in the codebase, tToDocLanguage which we wanted to match on too, but if you don't you can remove the |tToDocLanguage part.
works really well for us, only downside is it doesn't match on dynamic strings (e.g. t(`foo.${bar}`)), so we just have a list of those in our excludeKey array.
hope that helps some folks!

The provided regex still doesnt find all translations keys, for example I have some things like this in my JSON:
English:
{
"value": "Value",
"length": "Length",
}

German:
{
"value": "Wert",
"length": "Länge",
}

As you can see, the translation is not used anywhere

However it is not marked as anused:


New configuration options

中文：
变化：

支持“上一步”按钮隐藏
支持 exit 事件回调
对外暴露 options type

English
change：

Support "previousButton" hiding
add “exit” event callback
export options type

From Baidu Translation

I passed the test by demo

I hope it can be merged. I need these functions urgently

Hi @jiangjunfeng98 thanks a lot for your contribution.
This option makes sense, but I think I'd change the option key to something else rather than show since it is already shown by default.
Could be
hideButtons?: {
  previous?: boolean
  next?: boolean
}

I am on my way to home, if you have another suggestion, please let me know.

Hi @jiangjunfeng98 thanks a lot for your contribution. This option makes sense, but I think I'd change the option key to something else rather than show since it is already shown by default.
Could be
hideButtons?: {
  previous?: boolean
  next?: boolean
}

I am on my way to home, if you have another suggestion, please let me know.

Ye，It's a better idea。I look forward to its update

Hi @jiangjunfeng98 thanks a lot for your contribution. This option makes sense, but I think I'd change the option key to something else rather than show since it is already shown by default.
Could be
hideButtons?: {
  previous?: boolean
  next?: boolean
}

I am on my way to home, if you have another suggestion, please let me know.

I have changed the hidden property of the option to hideButtons

Hi @jiangjunfeng98 thanks a lot for your contribution. This option makes sense, but I think I'd change the option key to something else rather than show since it is already shown by default.
Could be
hideButtons?: {
  previous?: boolean
  next?: boolean
}

I am on my way to home, if you have another suggestion, please let me know.

I have changed the hidden property of the option to hideButtons

Thank you @jiangjunfeng98
Although this option makes sense, I am sorry to say that I'll need to think a little bit more to merge this configuration option. Because you can already control the visibility of buttons with the custom UI option.
If we merge this, this option will be unused with the custom UI because we are handling the visibility of the button in the custom UI.
If you need this urgently, I would suggest grabbing the default step's HTML code from here and using it that way for now.
Please let me know if this helps

from here

thanks。But I think options is simpler and cheaper than Custom UI.  Developers prefer to achieve the same effect at low cost

Hey @jiangjunfeng98, thanks again for your contribution and your time.
After having some discussions, I decided to merge this PR but couldn't find time to get back here, sorry.
I'll review and merge it as soon as possible

I've added a commit to make hideButtons option reactive with computed.
Thanks again for your contribution @jiangjunfeng98, I am merging this to staging now and will release today.


Stack overflow on certain platforms

From @h-joo at https://github.com/microsoft/TypeScript/issues/45571
type SomeType = number | string | SomeType[];

declare var obj: { key: SomeType; };

declare namespace jasmine {
    interface Matchers<T> {
        toEqual(expected: Expected<T>): void;
    }

    type Expected<T> = T | {
        [K in keyof T]: ExpectedRecursive<T[K]>;
    }

    type ExpectedRecursive<T> = T | {
        [K in keyof T]: ExpectedRecursive<T[K]>;
    };
}

declare function expect<T>(actual: T): jasmine.Matchers<T>;

expect(obj).toEqual({ key: 'value1' });

With tsc or in the editor
> tsc -p src
src/index.ts:19:21 - error TS2589: Type instantiation is excessively deep and possibly infinite.

expect(obj).toEqual({key: 'value1'});
                    ~~~~~~~~~~~~~~~

Or in the playground for me:
simpleWorker.ts:125 Uncaught (in promise) RangeError: Maximum call stack size exceeded
    at isTypeAssignableTo (tsWorker.js:60285)
    at isApplicableIndexType (tsWorker.js:56207)
    at findApplicableIndexInfo (tsWorker.js:56187)
    at getApplicableIndexInfo (tsWorker.js:56236)
    at getPropertyTypeForIndexType (tsWorker.js:58675)
    at getIndexedAccessTypeOrUndefined (tsWorker.js:59018)
    at getIndexedAccessType (tsWorker.js:58940)
    at instantiateTypeWorker (tsWorker.js:60141)
    at instantiateTypeWithAlias (tsWorker.js:60092)
    at instantiateType (tsWorker.js:60075)

This seems to have been caused by the newly introduced recursive definition of
the IDBValidKey, and this causes an infinite type instantiation.

I guess playing with the depth limiter is still an open area of investigation

The definition of IDBValidKey changed from
interface IDBArrayKey extends Array<IDBValidKey> {}
type IDBValidKey = number | string | Date | BufferSource | IDBArrayKey;

which does not trigger the infinite instantiation, to
type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[];

which does trigger the infinite instantiation, which prompts a question and a hypothesis:

Question: Should (normatively speaking) those two definitions of IDBValidKey behave identically? I know the interface trick was a long-standing workaround for recursive type aliases being totally prohibited, but when recursive type aliases became supported, I assumed these would work pretty much the same. It seems like using the intermediate interface is still necessary sometimes.
Hypothesis: The difference in behavior seen between these two assignments, combined with the substitution made in getNormalizedType starting in #43624, is a major contributor to the increased errors in instantiation depth limits, stack overflows, and OOMs (listed in order of decreasing confidence).

I'm running into a similar issue. When I run tsc on our node project, I get RangeError: Maximum call stack size exceeded.
Everything was working fine - this just happens when I attempt to upgrade to typescript 4.5.3. It works fine in typescript 4.2.3.
FWIW, recursive types should definitely be allowed. They're a standard part of any programming language (more generally, Context Free Grammars) and it's very common to do this (e.g. with datastructures like trees, or compilers, etc.)
Unfortunately the stacktrace I get doesn't give me any indication of which type is causing the issue:
/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:94444
                throw e;
                ^

RangeError: Maximum call stack size exceeded
    at getRelationKey (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:54317:32)
    at recursiveTypeRelatedTo (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:52985:26)
    at isRelatedTo (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:52645:30)
    at typeRelatedToSomeType (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:52869:35)
    at structuredTypeRelatedToWorker (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:53099:32)
    at structuredTypeRelatedTo (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:53084:30)
    at isRelatedTo (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:52642:30)
    at checkTypeRelatedTo (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:52314:26)
    at isTypeRelatedTo (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:52276:24)
    at isTypeAssignableTo (/Users/cbattycapps/{REDACTED}/node_modules/typescript/lib/tsc.js:51558:20)

I just verified I don't get this Maximum call stack size exceeded error on version 4.5.2 of typescript, so this is likely a regression in the current latest release - 4.5.3 at time of writing.


runnin meltano elt fails on windows

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/255
Originally created by @swiffer on 2018-12-29 11:09:43

okay, don't know if windows compatibility is anywhere on the roadmap.
perhaps for now it's easier to add linux/darwin as a requirement in the docs section ;)
however while the getting started guide now works nearly perfect one command is still failing:
meltano elt cool_job_id1 --extractor tap-carbon-intensity --loader target-postgres --transform skip
Running extract & load...
[MainThread][INFO][2018-12-29 11:59:16,692] Schema meltano has been created successfully.
[MainThread][WARNING][2018-12-29 11:59:16,716] Could not find tap.properties.json in C:\my-cool-data-project\.meltano\extractors\tap-carbon-intensity\tap.properties.json, skipping.
[MainThread][WARNING][2018-12-29 11:59:16,716] Could not find state.json in C:\my-cool-data-project\.meltano\extractors\tap-carbon-intensity\state.json, skipping.
[MainThread][WARNING][2018-12-29 11:59:16,734] No state was found, complete import.
[MainThread][ERROR][2018-12-29 11:59:16,735] Failed to start plugin <meltano.core.plugin.singer.SingerTarget object at 0x000002CC59A66C50>.
[MainThread][ERROR][2018-12-29 11:59:16,735] Cannot start tap or target: <meltano.core.plugin.singer.SingerTarget object at 0x000002CC59A66C50>
[MainThread][ERROR][2018-12-29 11:59:16,747] Cannot start tap or target: <meltano.core.plugin.singer.SingerTarget object at 0x000002CC59A66C50>
Traceback (most recent call last):
  File "c:\program files\python37\lib\site-packages\meltano\core\plugin_invoker.py", line 71, in invoke_async
    *self.exec_args(), *args, **Popen
  File "c:\program files\python37\lib\asyncio\subprocess.py", line 217, in create_subprocess_exec
    stderr=stderr, **kwds)
  File "c:\program files\python37\lib\asyncio\base_events.py", line 1533, in subprocess_exec
    bufsize, **kwargs)
  File "c:\program files\python37\lib\asyncio\base_events.py", line 463, in _make_subprocess_transport
    raise NotImplementedError
NotImplementedError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\program files\python37\lib\site-packages\meltano\core\runner\singer.py", line 61, in invoke
    stdin=target_in, stdout=asyncio.subprocess.PIPE  # state log
  File "c:\program files\python37\lib\site-packages\meltano\core\plugin_invoker.py", line 76, in invoke_async
    raise PluginMissingError(self.plugin)
meltano.core.plugin.error.PluginMissingError: <meltano.core.plugin.singer.SingerTarget object at 0x000002CC59A66C50>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\program files\python37\lib\site-packages\meltano\cli\elt.py", line 48, in elt
    singer_runner.perform(extractor, loader, dry_run=dry)
  File "c:\program files\python37\lib\site-packages\meltano\core\runner\__init__.py", line 14, in perform
    self.run(*args, **kwargs)
  File "c:\program files\python37\lib\site-packages\meltano\core\runner\singer.py", line 147, in run
    loop.run_until_complete(self.invoke(extractor, loader))
  File "c:\program files\python37\lib\asyncio\base_events.py", line 584, in run_until_complete
    return future.result()
  File "c:\program files\python37\lib\site-packages\meltano\core\runner\singer.py", line 72, in invoke
    raise Exception(f"Cannot start tap or target: {err}")
Exception: Cannot start tap or target: <meltano.core.plugin.singer.SingerTarget object at 0x000002CC59A66C50>
Extraction failed: Cannot start tap or target: <meltano.core.plugin.singer.SingerTarget object at 0x000002CC59A66C50>.
Aborted!

View 2 previous comments from the original issue on GitLab


onChangeRaw and onChange triggered at same time

Describe the bug
When I start typing a date Ex. 06/22/2020 both onChange and onChangeRaw are triggered at same time.
To Reproduce
The problem seems to be only when I type the first digit
When typing 06/22/2020:

onChangeRaw is triggered with event.target.value equal to 0
onChange is triggered with date equal to Jan 01 2000 00:00:00
If I keep typing, only onChangeRaw its triggered for the rest of the values set

Expected behavior
onChange is not triggered at all when typing data
Screenshots
Here is what it logs when typing

Desktop (please complete the following information):

OS: macOX
Browser: chrome
Version 2.11.0

This is a serious bug!

Three years later I'm having the same problem, is it possible to fix this please?

@frali14 Try to add e.preventDefault()
e.g.
onChangeRaw={(e) => { e.preventDefault() //other code... }

@thesnowgoose actually this helped me to make the user insert number values only instead of characters


[JENKINS-33821] Pipeline jobs can't be disabled (alternate)

This goes together with the Jenkins core change in https://github.com/jenkinsci/jenkins/pull/2544. While the core change is related, it is not required to use the disable/enable functionality in this diff. I have tested this change with Jenkins core 1.642.3 (and with the pull request above) and disable/enable seems to work, including cancelling queued jobs, updating the job BallColor, blocking SCM polling, and blocking cron triggers. The core functionality of "don't do builds if a job is disabled" seems to work as long as WorkflowJob.isBuildable() returns 'false' when the job is disabled, which does not depend on the Jenkins core change.
However, because Jenkins core and plugins use AbstractProject.isDisabled() rather than Job.isDisabled() (introduced in https://github.com/jenkinsci/jenkins/pull/2544) there may be some odd interactions until other plugins are updated, since they won't be able to tell when pipeline jobs are disabled.

@jglick Is just opening pull requests here the correct way to submit changes for this plugin? Thanks, Chris.

Yes though for complex changes it is best to check with me in IRC or whatever first. I have to think about whether the approach taken here is really what we want, or if a JobProperty is needed. Right now I cannot spare the time to review this properly.

Okay, this didn't take long to put together so I didn't bother asking first, but let me know when you have time to take a look, I'm happy to redo it in whatever way is most correct.

Looks reasonable; I need to think a bit about how this will interact with multibranch. As written you would be able to manually enable/disable branch projects, but not do so via Jenkinsfile. Which may be for the best.

I plan to reimplement this.

Superseded.


Difference between test and real world

I have created a new branch clonetests where I test that anonymous clone works.
The problem that i'm facing is that when running IIS by myself the anonymous clone fails as it is supposed to but in the test it succeeds...
Unfortunately i have no idea on how to debug the copied version of the binaries that SpecsFor uses.
Can anyone have a look into this and confirm that it is also happening on their machine? Thank you.

I'll try it now.

It's a working directory problem in MsysgitIntegrationTests - all those relative paths are pointing to somewhere wrong.
I'm going to assert them all valid in the initialiser for MsysgitIntegrationTests, and then work out where they go awry.  It might be safer to resolve them from relative to absolute at some point in the run where we can be confident about the working directory.

  I don't know what games need to be played with .gitconfig files or with command line arguments, but we really cannot have the test setup messing with people's real git config.

I've realised RunGitTests is still failing, and it wasn't clear on AppVeyor why it was - so I've added some console trace before/after a Git call so that we can see exactly what's happening.  Hopefully it will now be clearer.
Anyway, it's failing with an auth error:

About to run 'N:\will\Bonobo-Git-Server\Gits\2.6.1\bin\git.exe' with args 'clone http://admin:admin@localhost:20000/Integration.git' in 'N:\will\Bonobo-Git-Server\Tests\IntegrationTests'
Output:
Errors: Cloning into 'Integration'...
fatal: Authentication failed for 'http://admin:admin@localhost:20000/Integration.git/'

OK, well, under appveyor we get a different problem, which that the test is looking for "Cloning into Integration" on stdout, but Git has apparently returned "Cloning into 'Integration'...
warning: You appear to have cloned an empty repository." onto stderr.
But that looks fixable.

We're also going to have problems in the future with the code which runs Git and captures  Stdout/Stderr.  The accepted answer here shows how to do this robustly:
http://stackoverflow.com/questions/139593/processstartinfo-hanging-on-waitforexit-why

The RunGitTests need to create repository local credentials for the cloned test repo rule the tests will fail on AppVeyor because there are no credentials set there.
Maybe during your testing I'll guess it gut run outside your test repo and that's why it changed your credentials.

There should be no difference if both are running version 2.6.1....

Yeah i see that you fixed rungit by providing working directory to it in createcredentials that's why it changed your global settings. Working directory is not inside your cloned repo.

I pulled your changes but I'm still able to do an anonymous clone in my test on my machine... The test succeeded on your computer?

Yeah! Finally found out what was wrong!
I use the wincred helper under windows and it stores all the login information. At some point it time it stored the credentials for my login to the test url.
But i also use cygwin on the system which uses another credential store which did not have the credentials cached. This meant that there the anonymous clone was truly anonymous and thus did what i expected...

Can we create a local .gitconfig in the test directory which disables credential stores?  Or override it on the git command line or something?

It's what I have done in the test for the credential.http://localhost:20000/.helper.
https://github.com/jakubgarfield/Bonobo-Git-Server/commit/597a7a17332c5e930fd96d34eba784254ef1f5a2 Line 127

Right, I get you now - and the CreateIdentity stuff was supposed to be in the repo directory, so that was my mistake moving it to WorkingDirectory.  The AnonClone test was failing on CreateIdentity because the repo directory didn't exist before the clone was run.


Convert blog images to SVG for “Consider All Microservices Vulnerable — And Monitor Their Behavior”

Fixes https://github.com/kubernetes/website/issues/39015

Original
Preview

En route, fix some spelling errors

Thanks Tim!
/lgtm

The SVGs are an improvement
Thank you
/approve


how to get the data, thanks !

I notice there are three datasets offered,but none of these have the file called 'user_item.npz' which serves as dataset in this model.


Massive UI improvement

Docks behavior made rather more smart: now different sets of them is shown when different tabs are selected.
Two modes are introduced: editing and debugging. Edit mode is same as earlier, in the debugging one most of the window space is occupied by 2D model. It is now docked into interface, may be undocked to a separate window.

по умолчанию в режиме отладки не видно окна с переменными

и кнопочка "задокать" страшновата

и графиков сенсоров по умолчанию тоже нет

все поправил, надо проверить


Python 2 compatibility fix

urllib is only available on Python 3. Added fallback for older versions with urllib2.
Error handling in client documentation:
https://github.com/sendgrid/sendgrid-python/blob/master/TROUBLESHOOTING.md#error-messages

👍

@jonklo Can you please bump version https://github.com/elbuo8/sendgrid-django/blob/master/sgbackend/version.py#L1 to 4.0.1

Sure, done!

@elbuo8 For me LGTM

👍 I'll make a release soon.

Great. Thanks.


No display on saved record.

I cannot get the field to return the value after saving. I have every field assigned as you have shown in your video but when you return to the form it will not display the saved item. I look at the field and it is properly recording the GUIDs and the proper names are appearing in the dropdown. Any thought as to why this is?

Hi, I'm having the same issue. I've followed for control setup exactly like you have shown in your video as well, still won't work.

both using version <IP_ADDRESS> right??

Happy to setup a call with you both to see what the issue can be..

I ended up making my own PCF component to meet my needs. I was short on time, but I was using the <IP_ADDRESS>.

After I checked I wasn't using the latest version (<IP_ADDRESS>). I've upgraded it and it works! Thank you.


Skip some custom file downloads by default

Let's make it default so that we don't clog our downloads folders with custom sounds, particles, models and other unwanted files.
"nosounds" is also an option here so it's up to you :)

I don't think it should be default because the expected behavior for users would be to have that custom experience applied to them when they visit a certain server which provides these files. For example, VSH servers, Jailbreak, etc. These people might be confused when their server doesn't function properly.

Fair enough. So perhaps shall we move it to comp/maxfps presets?

I think it would be good there, especially since some comp servers are outdated and give you voicelines in old file locations, wasting download time and storage space.


Drop Python2 support in order to fix failing tests due to item metaclass updates in scrapy>=2.2.0

Fixes #18
Disclaimer:
This doesn't address the new deprecation warnings from Scrapy's new version since a fix could make it backwards incompatible:
/Users/burnzz/dev/scrapinghub/scrapy-jsonschema/tests/test_item.py:228: ScrapyDeprecationWarning: scrapy.item.DictItem is deprecated, please use scrapy.item.Item instead
    item = PatternPropertiesItem()

The tox tests for Python 2.7 has failed because in Scrapy==2.2.0, Python2 support has completely been dropped: https://docs.scrapy.org/en/latest/news.html#scrapy-2-2-0-2020-06-24

Used this PR extensively over the past few days. Looks great!

Merged! Thanks for your collaboration!


Documentation: PostgreSQL versions compatibilty?

Please add to readme.md / wiki information about recommended version of PG.
Also will be great to show PG version here:

Will try to doc this and make the version info change as suggested. FYI saltcorn.com runs PostgreSQL 10 (10.16), my dev machine is 13, not sure which version GitHub Actions CI runs. There should be no difference between those

added a note here https://wiki.saltcorn.com/view/ShowPage?title=Where can I run Saltcorn%3F

implemented in #716


Minor typographic fix

closing and reopening for validation

Docs Build status updates of commit 7a37130:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-PullRequestMergeConflict] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/Azure/azure-docs-powershell-azuread, working directory: W:\bxlr-s, target branch: live, target branch commit: 2003ed354cbacc2f49bda31dc6798e4b7ec46dff, source commit: 7a37130fd517bdba47bafdbbed7a20b22adeafbc.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit edfeb84:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-conceptual/azureadps-2.0/install-adv2.md
:bulb:Suggestion

Details

docs-conceptual/azureadps-2.0/install-adv2.md

Line 2, Column 1: [Suggestion-description-missing] Missing required attribute: 'description'.

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

Docs Build status updates of commit edfeb84:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-conceptual/azureadps-2.0/install-adv2.md
:bulb:Suggestion

Details

docs-conceptual/azureadps-2.0/install-adv2.md

Line 2, Column 1: [Suggestion-description-missing] Missing required attribute: 'description'.

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


Edge creation increments both the vertex version.

Using orientdb 2.1.5
Connecting to orientdb server with java client, have set
-DridBag.embeddedToSbtreeBonsaiThreshold=-1, both on client side as well as on the server side. But still at every edge creation or deletion the vertex version changes.
After debugging, what I have found, the client always sends both the vertex records with operation type ORecordOperation.UPDATED . On the server side, the version is not incremented only in case when the operation type is ORecordOperation.CREATED or the content of the record has not changed.
Client side code which add entries to the transaction
OrientVertex.java method addEdge, Lines - 971-982
// OUT-VERTEX ---> IN-VERTEX/EDGE
createLink(graph, outDocument, to, outFieldName);

// IN-VERTEX ---> OUT-VERTEX/EDGE
createLink(graph, inDocument, from, inFieldName);

if (graph != null) {
  edge.save(iClusterName);
  inDocument.save();
  outDocument.save();
}

Server Side code which increments the version
OAbstractPaginatedStorage.java, method commitEntry, Lines 2443-2454
  case ORecordOperation.UPDATED: {
    final byte[] stream = rec.toStream();
    if (stream == null) {
      OLogManager.instance().warn(this, "Null serialization on committing updated record %s in transaction", rid);
      break;
    }

    rec.getRecordVersion().copyFrom(doUpdateRecord(rid, ORecordInternal.isContentChanged(rec), stream, rec.getRecordVersion(),
        ORecordInternal.getRecordType(rec), null, cluster).getResult());
    break;
  }

Part of code, which do not increment version on OperationType as ORecordOperation.CREATED
OAbstractPaginatedStorage.java, method commitEntry, Lines 2414-2443
 case ORecordOperation.CREATED: {
    // CHECK 2 TIMES TO ASSURE THAT IT'S A CREATE OR AN UPDATE BASED ON RECURSIVE TO-STREAM METHOD

    final byte[] stream = rec.toStream();
    if (stream == null) {
      OLogManager.instance().warn(this, "Null serialization on committing new record %s in transaction", rid);
      break;
    }
    final ORecordId oldRID = rid.isNew() ? rid.copy() : rid;

    if (rid.isNew()) {
      rid = rid.copy();
      rid.clusterId = cluster.getId();
      final OPhysicalPosition ppos;

      final byte recordType = ORecordInternal.getRecordType(rec);
      ppos = doCreateRecord(rid, stream, rec.getRecordVersion(), recordType, null, cluster, new OPhysicalPosition(recordType))
          .getResult();

      rid.clusterPosition = ppos.clusterPosition;
      rec.getRecordVersion().copyFrom(ppos.recordVersion);
      clientTx.updateIdentityAfterCommit(oldRID, rid);
    } else {
      // USE -2 AS VESION TO AVOID INCREMENTING THE VERSION
      rec.getRecordVersion().copyFrom(updateRecord(rid, ORecordInternal.isContentChanged(rec), stream, new OSimpleVersion(-2),
          ORecordInternal.getRecordType(rec), -1, null).getResult());
    }
    break;
  }

Further debugging,
The record is send from the client over the network with content changed as false.
But on the server side, when the records are being merged, the following piece of code, marks the _contentChanged to true, despite it has been sent false from the server.
OTransactionOptimisticProxy.java method begin Lines - 139- 164
  for (Entry<ORID, ORecordOperation> entry : tempEntries.entrySet()) {

    if (entry.getValue().type == ORecordOperation.UPDATED) {
      // SPECIAL CASE FOR UPDATE: WE NEED TO LOAD THE RECORD AND APPLY CHANGES TO GET WORKING HOOKS (LIKE INDEXES)

      final ORecord record = entry.getValue().record.getRecord();
      final ORecord loadedRecord = record.getIdentity().copy().getRecord();
      if (loadedRecord == null)
        throw new ORecordNotFoundException(record.getIdentity().toString());

      if (ORecordInternal.getRecordType(loadedRecord) == ODocument.RECORD_TYPE
          && ORecordInternal.getRecordType(loadedRecord) == ORecordInternal.getRecordType(record)) {
        ((ODocument) loadedRecord).merge((ODocument) record, false, false);
        ((ODocument) loadedRecord).setDirty();

        loadedRecord.getRecordVersion().copyFrom(record.getRecordVersion());
        entry.getValue().record = loadedRecord;

        // SAVE THE RECORD TO RETRIEVE THEM FOR THE NEW VERSIONS TO SEND BACK TO THE REQUESTER
        updatedRecords.put((ORecordId) entry.getKey(), entry.getValue().getRecord());

      }
    }

    addRecord(entry.getValue().getRecord(), entry.getValue().type, null);
  }

Internally if you see the statement in ((ODocument) loadedRecord).setDirty();, call super ORecordAbstract
  public ORecordAbstract setDirty() {
    if (!_dirty && _status != STATUS.UNMARSHALLING) {
      _dirty = true;
      _source = null;
    }

    _contentChanged = true;
    return this;
  }

which marks the contentChanged to true.
Because of this only the version is always incremented in case of an edge addition. I can contribute to fix this. But not sure what can be side effects of these.
Can someone look into this.

Commented the line
((ODocument) loadedRecord).setDirty();
Build the sources again and now when I'm running the server. The version for the vertices are not incremented. All the test cases are passing as well. Is this correct solution.

hi @Ashendra,
Yes could be the correct solution, can you point me to the exact row that you changed ?

Diff patch
diff --git a/server/src/main/java/com/orientechnologies/orient/server/tx/OTransactionOptimisticProxy.java b/server/src/main/java/com/orientechnologies/orient/server/tx/OTransactionO
index a71cf41..6b130cd 100755
--- a/server/src/main/java/com/orientechnologies/orient/server/tx/OTransactionOptimisticProxy.java
+++ b/server/src/main/java/com/orientechnologies/orient/server/tx/OTransactionOptimisticProxy.java
@@ -19,10 +19,6 @@
*/
package com.orientechnologies.orient.server.tx;
-import java.io.IOException;
-import java.util.*;
-import java.util.Map.Entry;
import com.orientechnologies.common.exception.OException;
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
import com.orientechnologies.orient.core.db.record.OIdentifiable;
@@ -49,6 +45,10 @@ import com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary;
import com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryProtocol;
import com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary;
+import java.io.IOException;
+import java.util.*;
+import java.util.Map.Entry;
+
public class OTransactionOptimisticProxy extends OTransactionOptimistic {
private final Map<ORID, ORecordOperation> tempEntries    = new LinkedHashMap<ORID, ORecordOperation>();
private final Map<ORecordId, ORecord>     createdRecords = new HashMap<ORecordId, ORecord>();
@@ -149,7 +149,6 @@ public class OTransactionOptimisticProxy extends OTransactionOptimistic {
if (ORecordInternal.getRecordType(loadedRecord) == ODocument.RECORD_TYPE
&& ORecordInternal.getRecordType(loadedRecord) == ORecordInternal.getRecordType(record)) {
((ODocument) loadedRecord).merge((ODocument) record, false, false);

       ((ODocument) loadedRecord).setDirty();

       loadedRecord.getRecordVersion().copyFrom(record.getRecordVersion());
       entry.getValue().record = loadedRecord;

hi @Ashendra,
yes the setDirty was not completely correct, anyway what was needed is managed the dirty no changed flag, i fixed it and pushed, will be out with the next hotfix, thank you very much for the so detailed segnalation.
this was already fixed in 2.2


relevant is working only for formState changes?

In my 4.0.13 version of informed relevant is working fine with the formState. But when I tried to give a state value to relevant it isn't working as expected. The relevance of MultieStep.Step is working fine only for the change in the formState but not for the change in the component state.

Please provide code sandbox or code snippets with these issues. Its hard to determine the issue from sentences. ( pictures worth a thousand words ) 😁

Sandboxes are always better!

Sandboxes are always better!

Here is my code sandbox link, Here I am trying to render the second step relevantly based on a state variable isLoggedIn. But even though the state variable is getting changed the relevant is working with the initial state variable only.
How can I resolve this?
https://codesandbox.io/s/multie-step-practice-6kfhe?file=/src/App.js

Ok I have added fix to informed ( forgot to allow you to pass relevanceDeps ) to multisteps

https://codesandbox.io/s/multie-step-practice-forked-vrcl7?file=/src/App.js
Updated sandbox ( I added a toggle button for logged in on the third step )

Yeah the problem is if the isLoggedIn value is true then if we try to go the previous step by calling the previous function it should go to firstStep instead of the second step because we are giving isLogged value in relevanceDeps.
But the codesandbox that you have provided is not working in that way. The second step is being rendered irrespective of the isLogggedIn value

If you try to set isLogged in to false at the same time you call previous then it will never work because the state change happens after the the form evaluates relevance, however if you dont do it at that point then it will work fine so please try again with updated code.

Ok this is simple function closure issue https://codesandbox.io/s/multie-step-practice-forked-c09m6?file=/src/App.js
The problem is that the loggedIn variable is outdated in the relevant function that was originally passed to the step. I can maybe look into updating that function reference somehow but need to think on it.
Please use the linked workaround for now by using a ref to that variable.

Ok! for now, I will use it by using a ref to that variable.
Thanks and Appreciation for the response Dude  :clap: :clap:


Is it save to expose shopify token to client side?

Maybe I didn't understand correctly but I read the following line in de "developing" section of the README:

Note env's are prefixed with GRIDSOME_ to make them available to apollo client side

If I made the right deduction from this note this means the shopify token is exposed client side, so to the browser. If that is true, wouldn't you then expose your credentials for the shopify API? Or would you handle this risk by assigning the right scopes to the token?
I would gladly learn what the recommended approach would be for this and it might be interesting to add it to the README as well. Great starter by the way!

Yes, it is safe to expose the Storefront token client side. Basically, that token only enables read-only permissions to public data, no admin actions can be performed.
I suggest reading about this in the Shopify docs - https://shopify.dev/docs/storefront-api/getting-started - that should help clarify.


yv4: wf: Revise power seqence to fix OCP issue

Description:
- Resort the power sequence.
- Using a retry method between 1 sec and 5 sec, verify if the power good of the previous power stage is enabled. If it is, proceed to the next power stage.

Motivation:
- To fix the OCP issue.

Test plan:
- CXL power on is normal and fix the OCP issue: Pass

"the OCP issue" is not a very helpful description of what this fixes.


Orchestrator: Workflow runs

resolve FLPATH-1042

Hey, thank you for the detailed notes ,working on fixing them all :)

@LiorSoffer
please add screenshots to PR description

@LiorSoffer
The second line in the tabs toolbar is shorter than the first?

@LiorSoffer could you please provide a screen recording of the flow? A screenshot isn’t very helpful in this case. Thanks :)

@LiorSoffer looks good. We need to remove the Category column, and increase the ID column width

@LiorSoffer Well done!
I added some comments, and as @ShiranHi mentioned the category column needs to be removed when in workflow page
And since there's plenty of room, ID doesn't need to be minimized

This is how the ID looks now @ShiranHi

@LiorSoffer that's great! One small note, can we bring closer the last two columns to the Status column? It will be nice to keep the same padding between all of the columns

@LiorSoffer that's great! One small note, can we bring closer the last two columns to the Status column? It will be nice to keep the same padding between all of the columns

We can make status, duration and started take less space, but we can't garantuee the same padding

@mareklibra
Can you please take one more look to see your change requests are done?


dune fmt: use ocamlformat.0.11.0

I suggest use of OCamlformat :slightly_smiling_face:
Let me know if there are any particularly-objectionable diffs.

I am not used to ocamlformat, but that's unquestionably a good practice for team work. Thanks for the patch.


add link to docs in README or weblink of project header

I found the link https://wavespectra.readthedocs.io/en/docs/ in http://www.metocean.co.nz/news/2018/4/12/new-open-source-library-for-processing-ocean-wave-spectra

Thanks @raybellwaves, the link has been added in README.


Add glossary infrastructure and hover/click definitions.

Fixes #33117
This pull request introduces a new glossary infrastructure to the OpenPilot documentation. The changes include:
Glossary Terms: Added terms to docs/glossary.json .
Glossary Page: Created a glossary page under docs/concepts/glossary.md.
Hover/Click Definitions: Implemented functionality to show definitions of glossary terms when hovered over or clicked using /static/js/glossary.js and static/main.css.
These updates enhance the documentation by providing easy access to definitions directly within the documentation pages, improving user understanding of OpenPilot concepts.
Verification
Confirmed that the new glossary terms are correctly linked and accessible from documentation pages.

Checked this out and don't see anything different while clicking around? Also the state is in 3 places.
Closing this one. Feel free to open something cleaner.


feature: ssh access to git repository

Allow using private key to access repositories.

Is there any other way as of right now to clone a private repository?

Is there any other way as of right now to clone a private repository?

Maybe you can reference to README doc, there are some guides to access to different kind of git (also for private repository):
https://github.com/coder/envbuilder?tab=readme-ov-file#git-authentication


Fix the failing integration test for NPSP (One more issue)

Another issue with the NPSP integration test. Decided to exclude one of the directories to avoid the problem which happened not due to the package working wrong.

[x] I’ve added tests to confirm my change works.
[x] (If changing formatting output/API or CLI) I’ve added my changes to the CHANGELOG.md file in the Unreleased section.
[x] I’ve read the contributing guidelines.

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

Coverage data is based on head (6adef61) compared to base (ebbaffd).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##           master       #7   +/-   ##
=======================================
  Coverage   99.21%   99.21%
=======================================
  Files           7        7
  Lines        2675     2675
  Branches      585      585
=======================================
  Hits         2654     2654
  Misses         20       20
  Partials        1        1

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.


Update LNBalances Script

A upgrade for the lnbalance script from the RaspiBlitz MAIN MENU
https://twitter.com/gcomxx/status/1325720963258994691?s=20

PR merged. TODO: Test after fresh install or recovery.

When I tested the script on a fresh node (zero balance but one channel was opned to that node) I get this error:

Will take care of this this weekend.

Fixed it with this commit but it looks like there are some more issues

FYI: https://github.com/gcomte/ln-gems/issues/3

OK cool. Tested and looking good. Will be part of v1.6.2 release. Closing issue.


Teckin SP22 - Import tornado.web error

Hi, installation running all the way to when the Teckin SP22 connects to the new AP, and then nothing (just dots....)
Error seen in screenlog.0:
Traceback (most recent call last):
  File "./fake-registration-server.py", line 9, in <module>
    import tornado.web
  File "/usr/local/lib/python3.4/dist-packages/tornado/web.py", line 1655
    async def _execute(
            ^

Could it be related to my python version?
pi@raspberrypi:/usr/bin $ python --version
Python 2.7.9

BTW - no other log files produced.
Also, according to this post the device is supported :-) https://github.com/ct-Open-Source/tuya-convert/issues/58
Would anyone have any advice?

Short update - I pointed my /usr/bin/python to python3.4 --> same error
root@raspberrypi:/home/pi/tuya-convert/scripts# python --version
Python 3.4.2

Is there any more to the log?

I managed to successfully flash the Teckin SP22 without any problems on python 3.7
you need at least python 3.5 to use async def, so you should probably update your python

I have a similar situation
Teckin SP22 with Raspi 3B+ and the recomanded Kali Image.
./install_prereq.sh took hours. Now I can not connect to vtrust-flash.
not from the Mobilephone nor from my PC via WLAN :(
smarthack-wifi.log
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
^Cwlan0: interface state ENABLED->DISABLED
wlan0: AP-DISABLED
wlan0: CTRL-EVENT-TERMINATING
nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Failed to remove interface (ifidx=4)
Backing up NetworkManager.cfg...
Restarting NetworkManager...
Backing up /etc/dnsmasq.conf...
Writing dnsmasq config file...
Creating new /etc/dnsmasq.conf...
Writing hostapd config file...
Configuring AP interface...
Applying iptables rules...
Starting DNSMASQ server...
Starting AP on wlan0 in screen terminal...
Configuration file: /etc/hostapd/hostapd.conf
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr b8:27:eb:45:55:49 and ssid "vtrust-flash"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

I'll upgrade my Python version later and get back to you, thanks!
@erichegit Just an idea - make sure you kill the process wpa_supplicant before kicking off the script. When I did this, it shows the vtrust-flash AP.

sadly on Kali Linux I see the AP but can not connect,...
On Raspbian on my 2nd Pi I linked python3.5 but also face the Error message like you
^CTraceback (most recent call last):
  File "./fake-registration-server.py", line 132, in <module>
    main()
  File "./fake-registration-server.py", line 128, in main
    tornado.ioloop.IOLoop.current().start()
  File "/usr/local/lib/python3.5/dist-packages/tornado/platform/asyncio.py", line 148, in start
    self.asyncio_loop.run_forever()
  File "/usr/lib/python3.5/asyncio/base_events.py", line 421, in run_forever
    self._run_once()
  File "/usr/lib/python3.5/asyncio/base_events.py", line 1388, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.5/selectors.py", line 445, in select
    fd_event_list = self._epoll.poll(timeout, max_ev)
KeyboardInterrupt
Listening on port 80

Upgraded to Python 3.7.2 as far as I can tell and the problem persists. The only log I have is the screenlog.0. No other log files exist. Here is the complete screenlog:
root@raspberrypi:/home/pi/tuya-convert/scripts# tail -f screenlog.0
^C^Cwlan0: AP-STA-DISCONNECTED dc:4f:22:XX:XX:XX
wlan0: AP-STA-DISCONNECTED 6c:c7:ec:XX:XX:XX
^C1553105697: mosquitto version 1.3.4 terminating
Traceback (most recent call last):
  File "./fake-registration-server.py", line 9, in <module>
    import tornado.web
  File "/usr/local/lib/python3.4/dist-packages/tornado/web.py", line 1655
    async def _execute(
            ^
SyntaxError: invalid syntax
Backing up NetworkManager.cfg...
Restarting NetworkManager...
Backing up /etc/dnsmasq.conf...
Writing dnsmasq config file...
Creating new /etc/dnsmasq.conf...
Writing hostapd config file...
Configuring AP interface...
Applying iptables rules...
Starting DNSMASQ server...
RTNETLINK answers: File exists
Starting AP on wlan0 in screen terminal...
Configuration file: /etc/hostapd/hostapd.conf
Failed to create interface mon.wlan0: -95 (Operation not supported)
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr b8:27:eb:XX:XX:XX and ssid "vtrust-flash"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: associated
wlan0: AP-STA-CONNECTED dc:4f:22:XX:XX:XX
wlan0: STA dc:4f:22:XX:XX:XX RADIUS: starting accounting session 5C928329-00000000
wlan0: STA dc:4f:22:XX:XX:XX WPA: pairwise key handshake completed (RSN)
wlan0: STA 6c:c7:ec:XX:XX:XX IEEE 802.11: associated
wlan0: AP-STA-CONNECTED 6c:c7:ec:XX:XX:XX
wlan0: STA 6c:c7:ec:XX:XX:XX RADIUS: starting accounting session 5C928329-00000001
wlan0: STA 6c:c7:ec:XX:XX:XX WPA: pairwise key handshake completed (RSN)
1553105705: mosquitto version 1.3.4 (build date 2018-09-28 22:21:32+0000) starting
1553105705: Using default config.
1553105705: Opening ipv4 listen socket on port 1883.
1553105705: Opening ipv6 listen socket on port 1883.
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: AP-STA-DISCONNECTED dc:4f:22:XX:XX:XX
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: disassociated
Put Device in Learn Mode!, sending Smartlink Packets now
Smartlink in progress
Sending SSID                  vtrust-flash
Sending wifiPassword          flashmeifyoucan
Sending Packets and wait 60 seconds.
wlan0: STA dc:4f:22:XX:XX:XX IEEE 802.11: associated
wlan0: AP-STA-CONNECTED dc:4f:22:XX:XX:XX
wlan0: STA dc:4f:22:XX:XX:XX RADIUS: starting accounting session 5C928329-00000002
wlan0: STA dc:4f:22:XX:XX:XX WPA: pairwise key handshake completed (RSN)

The blue light on the plug stops flashing, but then the script just shows me dots.....

exact the same behavior like for me - blue light is blinking and when hitting ENTER - it stops after a few seconds,...
Could it be a problem of a new Teckin update mechanism=?

@erichegit I'd advise you to open a separate issue for your own problem, from what you posted this issue is not related at all

I have a similar situation
Teckin SP22 with Raspi 3B+ and the recomanded Kali Image.
./install_prereq.sh took hours. Now I can not connect to vtrust-flash.
not from the Mobilephone nor from my PC via WLAN :(

install_prereq shouldn't take more than a minute or two, something is seriously wrong there

smarthack-wifi.log
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
^Cwlan0: interface state ENABLED->DISABLED
wlan0: AP-DISABLED
wlan0: CTRL-EVENT-TERMINATING
nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Failed to remove interface (ifidx=4)
Backing up NetworkManager.cfg...
Restarting NetworkManager...
Backing up /etc/dnsmasq.conf...
Writing dnsmasq config file...
Creating new /etc/dnsmasq.conf...
Writing hostapd config file...
Configuring AP interface...
Applying iptables rules...
Starting DNSMASQ server...
Starting AP on wlan0 in screen terminal...
Configuration file: /etc/hostapd/hostapd.conf
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr b8:27:xxxxx and ssid "vtrust-flash"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

I don't see anything wrong with the logs here

sadly on Kali Linux I see the AP but can not connect,...
On Raspbian on my 2nd Pi I linked python3.5 but also face the Error message like you
^CTraceback (most recent call last):
  File "./fake-registration-server.py", line 132, in <module>
    main()
  File "./fake-registration-server.py", line 128, in main
    tornado.ioloop.IOLoop.current().start()
  File "/usr/local/lib/python3.5/dist-packages/tornado/platform/asyncio.py", line 148, in start
    self.asyncio_loop.run_forever()
  File "/usr/lib/python3.5/asyncio/base_events.py", line 421, in run_forever
    self._run_once()
  File "/usr/lib/python3.5/asyncio/base_events.py", line 1388, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.5/selectors.py", line 445, in select
    fd_event_list = self._epoll.poll(timeout, max_ev)
KeyboardInterrupt
Listening on port 80

This is not the same error, it says you hit Ctrl-C to stop the script

exact the same behavior like for me - blue light is blinking and when hitting ENTER - it stops after a few seconds,...

This is exactly what is supposed to happen; the device stops blinking when it is paired

@gmcbrien do python --version, are you sure your recently installed version is being called?

Yes, I've done a python --version and can assure you it's 3.7.2. I also went to the python CLI and also tried an import of tornado.web and I get the same error.
So, later I'll uninstall all Python versions from my Pi and start with a fresh installation - something might still be messed up somewhere with the Python installation.
I'll report back.

Seems my problem was related to Python versions, in a way. I had linked /usr/bin/python to /usr/bin/python/3.5. Yes, a python --version shows version 3.5.7, but I was getting all sorts of crazy python errors. Long story short, I reinstalled my Pi and ran into the same problem.... the only think I changed was the soft link as I mentioned above. When I reversed that (i.e. back to the default setting), the weird Python errors disappeared.
Now, I am still having problems, but will open a new issue as it's not directly related to this Python version mixup.

Glad you were able to sort out your Python issues, will keep that in mind as we continue to improve.


add the pip requirements on the package

Add the pip requirements on the package to not have to pip several different package.

yeah a requirements would be good  -  this is what i had to do till now , in case it helps others:
    cd saleor
    pip3 install django
    pip3 install celery
    pip3 install django
    pip3 install dj-database-url
    pip3 install dj-email-url
    pip3 install sentry_sdk
    pip3 install django_prices
    export SECRET_KEY=1
    pip3 install django-storages
    brew  install python3-psycopg2

The last one didn't work and I'm looking for how to get around it - is there some reason to have a python2 module in a python3 project?

Hey, I don't know why you have so many requirements, the package initially only needs "requests" which comes almost by default with python3 . Since a recent PR was merged to support creating images we had to add "Django" and "requests-toolbelt" but those are the 3 only dependencies.
I just fixed the dependencies issue by adding them as install_requires so they should ship with the pypi package. Just try pip install saleor-gql-loader and every dependencies should be here. Let me know if that's not the case.

should I be running this from within saleor's  container maybe ?
I tried again and saved output :
jeremys-MacBook-Pro:~ jeremyrutman$ pip3 install saleor-gql-loader
Requirement already satisfied: saleor-gql-loader in /usr/local/lib/python3.7/site-packages (0.0.3)
Requirement already satisfied: requests in /usr/local/lib/python3.7/site-packages (from saleor-gql-loader) (2.22.0)
Requirement already satisfied: idna<2.9,>=2.5 in /usr/local/lib/python3.7/site-packages (from requests->saleor-gql-loader) (2.8)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/site-packages (from requests->saleor-gql-loader) (2019.11.28)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/site-packages (from requests->saleor-gql-loader) (1.25.8)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.7/site-packages (from requests->saleor-gql-loader) (3.0.4)

jeremys-MacBook-Pro:saleor jeremyrutman$ python manage.py create_app etl --permission account.manage_users \
>                                 --permission account.manage_staff \
>                                 --permission app.manage_apps \
>                                 --permission app.manage_apps \
>                                 --permission discount.manage_discounts \
>                                 --permission plugins.manage_plugins \
>                                 --permission giftcard.manage_gift_card \
>                                 --permission menu.manage_menus \
>                                 --permission order.manage_orders \
>                                 --permission page.manage_pages \
>                                 --permission product.manage_products \
>                                 --permission shipping.manage_shipping \
>                                 --permission site.manage_settings \
>                                 --permission site.manage_translations \
>                                 --permission webhook.manage_webhooks \
>                                 --permission checkout.manage_checkouts
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

yes the create_app command is independant from this package and should be ran in saleor container. Also note that this package assume you have saleor up and running somewhere. You can specify the endpoint of your saleor api when you instantiate the ETLDataLoader class.

@jeremy-rutman let me now if it is solved so that I can close the issue

I didn't attempt to work from within docker yet, I guess I will need to do something like docker run -it dockername , and then run the manage.py from there, right?

exactly or you can directly run the command with something like this docker-compose run --rm api python manage.py ...


Add display.printf like function

Is your feature request related to a problem? Please describe.
Right now display.print assess only a string or char* but users want to add printf
Describe the solution you'd like
Implement something like shown here:
https://stackoverflow.com/questions/14766040/function-arguments-like-printf-in-c
So you can show  sensor information in ePaper like:
display.printf("Air quality: %s CO2: %d", "good", 500);
Results in:
Air quality: good CO2: 500

Added like display.printerf(char* buffer, args)
Typically called like:
printerf("%d CO2", co2_int_value);
So this function will work like a printf. Didn't use that since I'm inheriting this from all classes and want to do that for all the models in a single place.
https://github.com/martinberlin/cale-idf/commit/818179647a25519f68857fe63c2844f25c3d62cd