Stuck at $sudo npm start, dhcp server fail? Raspberry Pi 3 Model B

So I have tried installing this several times but I am getting stuck at the last step. I freshly installed the newest version of raspbian stretch and I follow the installation steps but when I get to $sudo npm start my terminal says this
pi@raspberrypi:~/raspberry-wifi-conf $ sudo npm start

><EMAIL_ADDRESS>start /home/pi/raspberry-wifi-conf
> node server.js

Wifi is not enabled, Enabling AP for self-configure

Force reconfigure enabled - reset AP
... dhcp server failed! -
ifdown wlan0 successful...
ifup wlan0 successful...
... hostapd restarted!
... AP Enable Success!

HTTP server running...

Why is this happening? I would post my full terminal but I thought it was too long so if you need to see my full terminal with how everything installed it can be found here https://pastebin.com/BZNDsfhn .
Now since it gets stuck at that command I am forced to restart my terminal since I cant type anymore and if I re-enter the command $sudo npm start I get this
pi@raspberrypi:~ $ cd raspberry-wifi-conf
pi@raspberrypi:~/raspberry-wifi-conf $ sudo npm start

><EMAIL_ADDRESS>start /home/pi/raspberry-wifi-conf
> node server.js

Wifi is not enabled, Enabling AP for self-configure

Force reconfigure enabled - reset AP
... dhcp server restarted!
ifdown wlan0 successful...
ifup wlan0 successful...
... hostapd restarted!
... AP Enable Success!

HTTP server running...
events.js:163
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::88
    at Object.exports._errnoException (util.js:1050:11)
    at exports._exceptionWithHostPort (util.js:1073:20)
    at Server.setupListenHandle [as _listen2] (net.js:1259:14)
    at listenInCluster (net.js:1307:12)
    at Server.listen (net.js:1406:7)
    at Function.app.listen (/home/pi/raspberry-wifi-conf/node_modules/express/lib/application.js:559:24)
    at module.exports (/home/pi/raspberry-wifi-conf/app/api.js:76:9)
    at start_http_server (/home/pi/raspberry-wifi-conf/server.js:70:32)
    at /home/pi/raspberry-wifi-conf/node_modules/async/lib/async.js:607:21
    at /home/pi/raspberry-wifi-conf/node_modules/async/lib/async.js:246:17

npm ERR! Linux 4.9.41-v7+
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "start"
npm ERR! node v7.10.1
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: `node server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script 'node server.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the raspberry-wifi-conf package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node server.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs raspberry-wifi-conf
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls raspberry-wifi-conf
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /root/.npm/_logs/2017-09-27T06_10_58_899Z-debug.log
pi@raspberrypi:~/raspberry-wifi-conf $

I assume that is probably happening because the first start did not work but maybe it has some information in it that can help you determine the issue. Looking at the first code I posted at the top could it be something to do with my dhcp server failing? How do I fix this? Thank you for any help!!

That is super odd, are you running the latest source? I really should tag these for releases, I suppose I will do that once we fix these gaps :)
Let me run this on my Pi3 once I am home and try and debug some of this.

The ADDR in use sounds like the server is already running. Could it be that when you rebooted it - the service that kicks it off on boot started it?
Also - did you read the bit about the denyinterface thingy in the README?

Big thanks for the reply!
I did indeed do the denyinterface part and yes I am running the latest version of Raspbian and the latest version of the code comes with the git clone that is listed in the instruction right?
Did you check out my full terminal log? https://pastebin.com/BZNDsfhn  I did everything correct right and in order? Could you possibly post an image with a working version if you are not sure what to try? Again super big thanks for the reply!

In your case, the very last line in your full terminal output seems to indicate that when running as sudo things seem to startup correctly? However the log pasted above indicates that the port (88) is already in use.
Try to check and see if you have an instance of node still running with:
ps aux | grep "node"
Can you confirm that the isc-dhcp-server service is installed and can be started?
This "tool" is just a collection of terminal commands followed by a http server which conveys the iwscan results. My next recommendation would be to look at the contents of the "enable_ap" function and try and follow the terminal commands / file edits one at a time until it breaks. Based on what I see above, I am not sure where this is failing for you. I will try to reproduce on my pi3 which is currently in a rc car somewhere :)
Sorry this is so buggy, this was mostly a script that I threw together ages ago when I had to constantly get our companies army of pi2 on a new wifi network often. I am happy to help you work this out, however.

Okay I just got home and plan to be on for several more hours and it seems that you just made that post. Right now I am going to install the latest flash and say step by step what I will be doing. If you plan to be on for a little longer I should respond pretty quick.

Yessir, I should be on and off tonight - happy to help!

Okay so here I am giving it another try. In this post I will post the exact order that I do things. I am going to post a full log at the end So you can see everything.
To start off, this is a fresh install of raspbian stretch from their website.
I turn on VNC so I can use from my main computer
First must do the updates for npm
sudo apt-get update
sudo apt-get install npm

So if I am correct the instructions say that I need the NodeJS from Underscore, async, and express so,
npm install underscore
install --save async
npm install express

Then as the instructions say the next thing to do is get bower so,
sudo npm install bower -g
Then I have to generate a new SSH because I am denied permssion, (Check full log to see what I mean.) To do that I have to do,
ssh-keygen -t rsa -b 4096 -C<EMAIL_ADDRESS>And I will follow the rest of the instructions as to generating a new SSH from the github website
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
sudo apt-get install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

Then Ill paste the key to github and now I can resume the installation.
git clone git@github.com:sabhiram/raspberry-wifi-conf.git
cd raspberry-wifi-conf
npm update
bower install
sudo npm run-script provision

(Just want to point out here that when this npm run-script was run at the bottom there is some red code saying stuff failed, I will post a gyazo to hopefully make it easier for you to find https://gyazo.com/ecd57e8b84f4c266b11bc6b2616fd03d )
Then before I run the start script I want to make sure denyinterfaces command is ran so I will do it manually and place it at the very first line of the /etc/dhcpcd.conf file
nano /etc/dhcpcd.conf
Then CTRL-O to save, then Enter, and CTRL-X to exit out. (I rechecked the file to make sure it saved.)
Now time to run that start command.
sudo npm start
Ya well and we fail at the same spot. Is it because I am already using wifi? Should I be using ethernet to install? Should I not have chromium open when I do this? (I use it to copy and paste) Should I not have VNC enabled? I really don't know why its working for other people but not me? Heres the full log, https://pastebin.com/cRUbZsaW

Thoughts? Or anything I should try?

Oh man - you can git clone using the http version and not generate a key etc.

*Facepalm XD
I am still learning, I was wondering why other projects didnt make me do this. If I reset again now I know lmao

The red thing at the bottom is def your DHCP server failing to start. This could perhaps be because ifplugd is taking control of wlan0. Could you try posting what /etc/default/ifplugd contains?
The INTERFACES should change from "auto" to "eth0" and the HOTPLUG_INTERFACES should go from "all" to "eth0" as well.
Try that and let me know.

Hehe - I updated the readme to avoid that :)
Also your log clearly states this:
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2017-09-29 03:33:03 UTC; 88ms ago
     Docs: man:systemd-sysv-generator(8)
  Process: 12285 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=1/FAILURE)

Sep 29 03:33:00 raspberrypi systemd[1]: Starting LSB: DHCP server...
Sep 29 03:33:00 raspberrypi isc-dhcp-server[12285]: Launching both IPv4 and I…).
Sep 29 03:33:01 raspberrypi dhcpd[12305]: Wrote 0 leases to leases file.
Sep 29 03:33:03 raspberrypi isc-dhcp-server[12285]: Starting ISC DHCPv4 serve…d!
Sep 29 03:33:03 raspberrypi isc-dhcp-server[12285]:  failed!
Sep 29 03:33:03 raspberrypi systemd[1]: isc-dhcp-server.service: Control pro…s=1
Sep 29 03:33:03 raspberrypi systemd[1]: Failed to start LSB: DHCP server.
Sep 29 03:33:03 raspberrypi systemd[1]: isc-dhcp-server.service: Unit entere…te.
Sep 29 03:33:03 raspberrypi systemd[1]: isc-dhcp-server.service: Failed with…e'.```

So I have nothing in the ifplugd file? Its just blank, heres the nano. https://gyazo.com/a7ba619c082cd80de0e86db6f8485e4e

Try doing this: sudo service isc-dhcp-server restart and post the output. Also try service isc-dhcp-server status

Ok done and I get this (keep in mind this is the next day so my pi has been rebooted)
pi@raspberrypi:~ $ sudo service isc-dhcp-server restart
pi@raspberrypi:~ $ sudo service isc-dhcp-server status
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated; vendor preset: enable
   Active: active (running) since Fri 2017-09-29 08:17:45 UTC; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 905 ExecStop=/etc/init.d/isc-dhcp-server stop (code=exited, status=0/
  Process: 919 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=
   CGroup: /system.slice/isc-dhcp-server.service
           └─932 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf wlan0

Sep 29 08:17:43 raspberrypi isc-dhcp-server[919]: Migrating automatically for no
Sep 29 08:17:43 raspberrypi isc-dhcp-server[919]: Launching IPv4 server only.
Sep 29 08:17:43 raspberrypi dhcpd[931]: Internet Systems Consortium DHCP Server
Sep 29 08:17:43 raspberrypi dhcpd[931]: Copyright 2004-2016 Internet Systems Con
Sep 29 08:17:43 raspberrypi dhcpd[931]: All rights reserved.
Sep 29 08:17:43 raspberrypi dhcpd[931]: For info, please visit https://www.isc.o
Sep 29 08:17:43 raspberrypi dhcpd[931]: Wrote 0 leases to leases file.
Sep 29 08:17:43 raspberrypi dhcpd[932]: Server starting service.
Sep 29 08:17:45 raspberrypi isc-dhcp-server[919]: Starting ISC DHCPv4 server: dh
Sep 29 08:17:45 raspberrypi systemd[1]: Started LSB: DHCP server.
lines 1-19/19 (END)

Also note that this kills my console so I have to close it and open another to enter another command. In other words it does let me put in more commands after this.

It seems like it started ok that time, could you do that first, and then start the app on another terminal just to see if things play nicely? Maybe we just need to try to start the dhcp service on failure.

So you want me to run the dhcp restart command and then try the start command. I will try that when I get home tonight. My raspberry pi has been powered on and off since then which should be okay right?
Anyways I'll let you know what happens when I try tonight.

No problem. I will try and reproduce a from-scratch-with-latest test since it seems like more then one person has this symptom.

Well clearly I didn't get to it last night, but here it is. I did separate terminals like you said and still nothing.
 pi@raspberrypi:~ $ sudo service isc-dhcp-server restart
pi@raspberrypi:~ $ sudo service isc-dhcp-server status
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated; vendor preset: enable
   Active: active (running) since Fri 2017-09-29 22:19:40 UTC; 4s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 908 ExecStop=/etc/init.d/isc-dhcp-server stop (code=exited, status=0/
  Process: 922 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=
   CGroup: /system.slice/isc-dhcp-server.service
           └─935 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf wlan0

Sep 29 22:19:37 raspberrypi isc-dhcp-server[922]: Migrating automatically for no
Sep 29 22:19:37 raspberrypi isc-dhcp-server[922]: Launching IPv4 server only.
Sep 29 22:19:37 raspberrypi dhcpd[934]: Internet Systems Consortium DHCP Server
Sep 29 22:19:37 raspberrypi dhcpd[934]: Copyright 2004-2016 Internet Systems Con
Sep 29 22:19:37 raspberrypi dhcpd[934]: All rights reserved.
Sep 29 22:19:37 raspberrypi dhcpd[934]: For info, please visit https://www.isc.o
Sep 29 22:19:37 raspberrypi dhcpd[934]: Wrote 1 leases to leases file.
Sep 29 22:19:38 raspberrypi dhcpd[935]: Server starting service.
Sep 29 22:19:40 raspberrypi isc-dhcp-server[922]: Starting ISC DHCPv4 server: dh
Sep 29 22:19:40 raspberrypi systemd[1]: Started LSB: DHCP server.
lines 1-19/19 (END)

And second,
pi@raspberrypi:~ $ cd raspberry-wifi-conf
pi@raspberrypi:~/raspberry-wifi-conf $ sudo npm start

><EMAIL_ADDRESS>start /home/pi/raspberry-wifi-conf
> node server.js

Wifi is not enabled, Enabling AP for self-configure

Force reconfigure enabled - reset AP
... dhcp server restarted!
ifdown wlan0 successful...
ifup wlan0 successful...
... hostapd restarted!
... AP Enable Success!

HTTP server running...

So those are all good looking statuses. Are you sure you do not see the config access point running?
Remember that if you run the sudo npm start command from a terminal - it will block and not return until the app is either killed, or it crashes (hopefully not). Can you check using another mobile device if you see the access point listed? And if you do - try connecting to it and visiting the IP that you specified in the config file.

Oh no I didn't say that I could not see the wireless point from my phone. I can indeed see it, but if I connect to it, and go to that IP it does not show up. Here are some screenshots from my phone of what I mean. You can see the pictures here, https://imgur.com/a/OLkKN . If you notice, once I am connected with my phone, you can not see the wifi bars at the top of the screen. And yes I have tried this on another device as well and it is the same thing.
Were you not able to recreate this scenario? If not then maybe its the new Pi's?
Also, Ill be on for the next 5 hours or so expect fast replies :D

If you would prefer to talk via skype and do a screen share, feel free to add me at smallzZz8.

It seems like our github-timezones do not agree with each other. I am sorry I missed you. Lets chat on skype.

I do not see a request? Ill added a user named sabhiram. If thats you accept. If not whats your username?

Again ill probably be here for the next 5 hours or so.

I'll hop in on this if we can get it working.... @sabhiram , any luck with a fresh and latest Raspbian install? Thanks in advance!

@sabhiram Thoughts on my previous comment?

Oh no I didn't say that I could not see the wireless point from my phone. I can indeed see it, but if I connect to it, and go to that IP it does not show up. Here are some screenshots from my phone of what I mean. You can see the pictures here, https://imgur.com/a/OLkKN . If you notice, once I am connected with my phone, you can not see the wifi bars at the top of the screen. And yes I have tried this on another device as well and it is the same thing.
Were you not able to recreate this scenario? If not then maybe its the new Pi's?
Also, Ill be on for the next 5 hours or so expect fast replies :D

Okay well I will be waiting here for a request. Trying to get this working before I continue the rest of my project. Thanks again man!

@sabhiram Any luck yet?

@sabhiram Note that it does the same thing with a Pi0W. I think it's related to Raspbian, not necessarily hardware...

I actually disagree. I tried to install with an older version of raspian and it still did not work. I think it has to do with all RPi 3's especially since the project was built in 2017.

Well my Rpi zero came in today and I did the same steps as listed above and got the same results. It appears to be an issue for all Rpi 3s.
Unfortunately I do not know how to fix this problem and would greatly appreciate anyone's efforts to try to fix it as this as I need it for something that I am working on. As for @sabhiram if you are unable to find your Rpi 3 i would be willing to send you a new one if your able to look at this code again.

I am facing the same issue.. Followed the steps, the script seems to run, but it won't create a wifi AP..

Ok, seems like a lot of folk are trying to get this thing to work on a Pi3.
I apologize for how long this has taken me, but I went from closing up my startup of 2.5 years to trying to get going on another one, so my time has been sparse.
I will do my best to give this a shot this week as I should be less busy around Easter.  Thanks for your comments, I hope to help resolve them. I have a Pi3 somewhere, so that should not be an issue.

At my home raspberryPi 3b - I was able to get to the point where it said "HTTP Server started" and I observed that the AP was not visible. I manually rebooted the server with sudo npm start and this time - saw that the HTTP server was up.
To debug you can enable the force_reconfigure option in the config file.
Would appreciate if someone else can confirm the same.

There has recently been a bunch of work done in https://github.com/sabhiram/raspberry-wifi-conf/pull/33 which should make things a bit nicer on a Pi3. If people are still having issues, that branch might be useful - will merge it once I test it.


Source zip file posted on PyPi isn't source build

At least for 0.8.1 (and possibly others earlier, I didn't check) the source package posted on PyPi is not a proper source build. It seems to be a raw ZIP generated using git archive (possible from the GitHub source download links?). This is a problem because using the raw source archive or a Git clone requires the python setuptools SCM variant. The whole point of this SCM tooling is to make the release process earlier by not having to track some things in version control and let it figure out versioning from Git tags or whatever. But the Python build process is supposed to geterate a source release that is then compatible with regular python setuptools versions. SCM tooling should not be a requirement to build from the PyPi source downloads.
For all future releases please post source packages that are actually the generated source builds, not just archives of the repository. If you want help setting this up automated in CI feel free to poke me.

the sdist is built as usual python setup.py sdist and uploaded automatically here:
https://github.com/robotools/defcon/blob/6cfd94f7c649fdc72101de140cc28a61a2472291/.github/workflows/publish-package.yml#L42-L43
I don't know why you say "is not a proper source build. It seems to be a raw ZIP generated using git archive"
Can you describe the problem a bit in more detail? What error message do you get?
Maybe something has changed in upstream setuptools_scm that makes something downstream no longer work as expected.

FYI: defcon changed to publishing on pypi with github actions see the PR https://github.com/robotools/defcon/pull/339
(just in case you are checking older version on pypi)

I see PR 339 added the pyproject.toml file, which supposedly enables a "build-system independent format for source trees" (https://www.python.org/dev/peps/pep-0517 and https://www.python.org/dev/peps/pep-0517).
Maybe your packaging tool does not support PEP517/518. You can tell pip to --no-use-pep517 and it will continue to run the "legacy" implicit setuptools based setup.py install, basically ignoring the pyproject.toml file. Try that and see if it fixes your problem.
But this is definitely not an bug in defcon setup. I can install it from the .zip source distribution just fine in a fresh virtual environment with pip install --no-binary=defcon decon==0.8.1

Can you describe the problem a bit in more detail? What error message do you get?

Building using python setup.py in a clean chroot with only setuptools fails with it complaining about needing setuptools_scm. That's what I was going on.

what version of setuptools?
I just did that (running python setup.py install) from a fresh virtual environment, and it worked for me. Python 3.9.4, setuptools 56.1.0

btw, running setup.py install will use the deprecated easy_install module, everybody including setuptools maintainers recommend to use pip to install third-party modules. I don't know how linux distros' build tools work internally, but I think they should no longer be calling the old setup.py install when building python modules for redistribution.

$ pacman -Qi python-setuptools
Name            : python-setuptools
Version         : 1:56.0.0-1

Note I am not very deeply involved in Python, but I have an idea Python's idea of a "virtual env" is not the same as what I mean by a clean chroot. Is it possible that your virtual env testing is using the env for some dependencies but for ones it doesn't find it either goes and gets them with pip or finds them on the system? I suspect pip is actualaly installing or finding setuptools_scm in your env behind your back.

yes, because setuptools_scm is listed in setup.py's setup_requires (that's also how the setuptools_scm docs recommend to do and we do the same in all the other related projects); that makes setuptools fetch it from PyPI automatically when doing setup.py install. Maybe your "clean chroot" (no idea what that is) blocks or prevents setuptools from doing that somehow. The setup requirements are downloaded as eggs in an invisible .eggs/ directory.
I think you should just change your build setup and require setuptools_scm, because it is really required for building the project. It's not a bug, but a feature.
Note that git itself is not required. Setuptools_scm will look at the PKG-INFO file that is embedded in the source distribution zip file, and take the version string from there when it's present (not from the scm metadata).

(clicked the wrong button, i didn't mean to close the issue like that, apologies)

because setuptools_scm is listed in setup.py's setup_requires (that's also how the setuptools_scm docs recommend to do and we do the same in all the other related projects); that makes setuptools fetch it from PyPI automatically when doing setup.py install.

True that's what is supposed to be in the Git source version of setup.py, but that's not what should end up in a sdist. Building sdist sources should not require SCM tooling.
I'll find a project that does this right and compare.

The fault seems to be in Lib/defcon/__init__.py L11, this should not be linking directly into setuptools_scm, it should be using the __version__ string that SCM tooling wrote to a file at Lib/defcon/_version.py.

@anthrotype just pushed a fix to the above, I'll cut a release and see if that does what you need. But, yes, the recommended install is to use pip not python setup.py

But, yes, the recommended install is to use pip not python setup.py

I understand, but what's recommended for end users installing on their own systems is not always what is required for setting up distribution packages. I happen to be doing the latter.

yes, but we are not doing anything out of the ordinary here. We're simply using setuptools_scm the way it is designed to be used.
I don't see how this current defcon setup is any different from other projects where we also use the same setup.

just pushed a fix to the above

@benkiel did you? What did you do exactly? I don't see anything

letting the build phase fetch code.

we are not doing that. The build requirments (as specified in pyproject.toml as well as in the legacy setup_requires in setup.py) require that setuptools and setuptools_scm packages are present in order to build the package. If using a pep517 aware installer (like pip) these requirements are honuored at build time (pip creates a fresh env where it bootstraps the requirements and goes on building a wheel and installing off that). Otherwise, if installing with the setup.py install command, setuptools will honour the setup_requires (which include setuptools_scm).
As I have already said, setuptools_scm is really required for building the package from source, not just for building it from the git repository, but also when building off the sdist zip file. The reason it is required is because we don't want to hard-code the version string in the code itself, we want it to only be encoded in the package metadata (the standard PKG-INFO file). We also generate a _version.py module so that one can check defcon.__version__ without needing to have pkg-resources or importlib.resources to be able to read the version from the metadata files (also the metadata files sometimes are not present when the module is embedded in applications).
Again, git is not required, only setuptools_scm is.
Whether you let pip or setuptools fetch the built-time dependencies, or your own packaging tool is responsible for that, it doesn't change that setuptools_scm is required to build (but not to run) the defcon module.
There is nothing wrong with having a build-time requirement.
Is this a sufficient explanation?

your distro tool should really be updated to support pep517/518, the fact that we have a setup.py script and use setuptools as our build tool doesn't mean that we should continue to support distutils-like installation methods forever. What if we decide to use flit or poetry or meson or whatever pep517-compliant build tool (which measn we no longer have any setup.py script), would that mean you can redistribute our package?

We're simply using setuptools_scm the way it is designed to be used.
I don't see how this current defcon setup is any different from other projects where we also use the same setup.

It is different. I can build distro packages for most Python projects in a chroot with just setuptools, including the ones that use setuptools_scm internally. There is something different here because the Git clone / archive requiring scm tools should not result in the sdist requiring scm tools. The sdist build process should do all the scm things then leave the package with just a regular setuptools dependency. Somehow this works for many other projects, I haven't found what's different here yet.

It is different

please show me where it is, I can't see how it is different

sdist requiring scm tools

Somehow this works for many other projects, I haven't found what's different here yet

that's strange, and I don't have an answer yet for your I'm afraid.

sdist requiring scm tools

it does not require "scm" tools as in the git command. It requires setuptools_scm, only for building the package, to extract version string from the PKG-INFO metadata file embedded in the source distribution zip package, as I have explained above.

leave the package with just a regular setuptools dependency

that's your tool's limit. python packaging is not restricted to using setuptools only nowadays.

Dude

sorry, what did I say that make you "dude" me? I'm honestly trying to help understanding the cause of the issue.

Python's setuptools_scm should take care of all the scm bits during sdist generation and it shouldn't be required afterwards.

that's not how setuptools_scm works, I'm afraid. You're free to raise the issue with the setuptools_scm maintainers if you like.

Uh, there's a setup_requires entyr in setup.cfg and setup.py and a build system entry in pyproject.toml. Maybe try cleaning that up and leaving only the pyproject.toml as the source of setuptools_scm?

@benkiel did you? What did you do exactly? I don't see anything

Sorry, I saw that you fixed the .gitignore for the version.py, that's what I meant

i don't think that's related, the _version.py file was already included in the source distribution anyway, the gitignore change was only to make sure you don't accidentally commit the file


Question - How to get all Pagerduty incident notes via Pdpyras library

I know how to make a GET request to the incident notes API endpoint but how do I leverage the pdpyras library to do so? I can get all incidents
from pdpyras import APISession
api_token = 'MY_TOKEN'
session = APISession(api_token)

for incident in session.iter_all('incidents'):
    print(incident)

but i cannot see any information related to notes, so i am suspecting i should not be passing 'incidents' to my sessions.iter_all method. I have been looking through the library's source code but I have not gotten anywhere with that. Any help would be appreciated.

Greetings! Incident notes are recorded as log entries.
You can thus retrieve them by querying log entries for an incident (or querying all log entries to get them for all incidents) and then filtering for AnnotateLogEntry type entries.
This for example gets an iterable filter object that returns notes (and you can also filter by team IDs and enable other options by sending optional parameters via the parameters keyword argument to iter_all, list_all etc.):
notes = filter(
    lambda ile: ile['type'] == 'annotate_log_entry',
    session.iter_all('/log_entries')
)


Feature/routing gdev 111

Implemented routing:
You can now access the main modules of the web app directly via routes:

/welcome
/explore
/request

You can also access a specific request via a /request/{request_id}.

Thanks @ac-jorellanaf


Allow injection of aiohttp ClientSession

Hello! I appreciate the relatively no-nonsense approach to making an API Client.
I have need to use my own aiohttp ClientSession, which could define its own proxy settings, timeout configuration, and even default headers - which would be lost, as pydantic-client assumes a fresh session.
Would it be possible to have the ability to pass in an existing session to ClientConfig?

Hello! I appreciate the relatively no-nonsense approach to making an API Client.
I have need to use my own aiohttp ClientSession, which could define its own proxy settings, timeout configuration, and even default headers - which would be lost, as pydantic-client assumes a fresh session.
Would it be possible to have the ability to pass in an existing session to ClientConfig?

Thank you for your attention. I will modify the code according to your needs during my free time, or you can also submit a pull request yourself.

Thank you for your suggestion and your star.


Viewport texture says node path is invalid (regression from 894163a)

Godot version:
v3.1.alpha.official (alpha 3)
OS/device including version:
elementary OS 5.0 Juno
Issue description:
You can create a viewport texture by selecting the viewport, but when assigning it to the same viewport after the material was created the editor says  Path to node does not point to a viewport
Steps to reproduce:

Darn, that's really annoying! I am using it on a mesh to make a breakable window, so a sprite probably wouldn't work

You can workaround this by doing something similar to:
func _ready():
    mesh.material.albedo_texture = $GUI_Viewport.get_texture()

@bojidar-bg  I'm pretty sure I have local_to_scene enabled, it should be printing a different error if that wasn't enabled but I'll check again after work.
And thank you, I'll try that @JFonS !

Regression from 894163a94537ceea0518095f6381aa98cf43b1cc.
When loading the ViewportTexture Godot follows the NodePath starting from the scene root. In your example it starts at "Work" and searches for a Node called "Viewport". This is the behavior you get from the first assignment.
However, reassigning the viewport does currently not work. If you select a new Viewport, Godot will instead generate a NodePath relative to the Node you are currently editing. This will be your "Glass". Godot will then search for the Viewport in the wrong place.
Right now you will have to create a new ViewportTexture every time you move the Viewport in the scene. Or just use code to avoid all headache-inducing problems like #19259. But clear the texture so the error goes away.

I ran into this thread while having the same issue, so I made a little script that assigns a material's albedo_texture to a viewport's path relative to the root node:
tool
extends Spatial

export(NodePath) var target_mesh
export(Array, int) var surfaces
export(Array, NodePath) var viewports

func _ready():
    set_textures()

func _process(_delta):
    if Engine.editor_hint:
        set_textures()

func set_textures():
    if !target_mesh.is_empty():
        var mesh = get_node(target_mesh)
        for index in surfaces.size():
            var mat = mesh.get_surface_material(surfaces[index])
            mat.albedo_texture = get_node(viewports[index]).get_texture()

The first export variable is the target mesh, the second is an array of surfaces (in case you want to set surface 0 and 2), and the third is an array of viewports (so you can set surface 1 to viewport1 and surface 2 to viewport2). I made it a tool script so it will update in the editor too.


The button cannot be used normally in the form

Reproduction link
https://ng-zorro-antd-ivy-vdhbar.stackblitz.io
Steps to reproduce
Using the button in the form and entering the Enter key in other input components will trigger the click event of the button.
What is expected?
解决问题
What is actually happening?
Using the button in the form and entering the Enter key in other input components will trigger the click event of the button.

Environment
Info

ng-zorro-antd
13.1.1

Browser
Chrome

Hi, this is not a problem of ng-zorro. The html form works in such way: the button has type submit by default inside <form> tag and triggers click event for button when you press enter key.
You can set type="button" attribute to avoid this
<button type="button" nz-button (click)="onButtonClick()">
 Text
</button>

ok , thanks. It really works normally.


Hot reloading express server

https://github.com/ericclemmons/webpack-hot-server-example

remove nodemon ?

Yes, once the express server is hot reloaded, we will not need nodemon.

👍 excelent

This is cool!!!

you think this will improve performance over nodemon?

Great! If the server can be hot reloaded, to develop api will be much faster!

I think this issue can be closed since I see HMR working.

Anyone knows how to implement it ?

is anyone working on this?

I played with this, very cool: https://github.com/glenjamin/ultimate-hot-reloading-example


[MDB] Have "under tile" items (pipes, wires) render on top of tiles if they were modified

Asd asked me to put this here for their convenience.
It may not be possible, but it would be incredibly nice if any sort of pipe/wire changes that are under tiles are highlighted. It would make checking rewires/repipes much easier.

Not sure if we can do this given dmm-tools likes to hide pipes under tiles to make renders clean.
@MCHSL how is the dmm-tools code interface, and is it feasible to disable specific render passes code first?

perhaps explicitly disabling the "hide-invisible" render pass would do it

I suppose I'll throw this in as well.
Instead of it just being pipes/wires/whatever, is it possible to just have anything under certain things (i.e firelocks under windows) render on top to show they were modified? Making them a tad more obvious would help as well.


Reducing the packages size: disable src and dest 16 bytes

The main idea: disable Src and Dest addresses and save 16 bytes.  It is important for slow baudrate on long distance. 300bps or 1200bps...
For example, I put devicies addresses in to Payload and encrypt them. And I completely use EEPROM for other purposes.
As I can see:  Lora.begin(,,,,bool isUseSrcDestAddrs)
if (isUseSrcDestAddrs == false)   => no EEPROM usage, small Package with payload only.
if (isUseSrcDestAddrs == true)   => EEPROM usage, Package with Src, Dest, Payload.

I was thinking about dropping the Packet class completely for a while now. Since I never got around to implement any sort of address-based filtering, having the Packet class doesn't add anything new.
This would require changing receive and transmit methods to work with C-strings and then maybe add overloads for byte arrays and Arduino String class. If you're up for the task, I will gladly accept any help you can give me :)
Also, another benefit would be the ability to add LoRaWAN support in KiteLib.

Jan Gromeš, thank you for lib!
Im not true software designer, Im arduino-style. So, I will try to help you "as is".
I see 2 ways:
0. Lora.print(String, int, 'char',  float[,decimals]) like Serial.print()  - emulate Serial modem

Lora.send(array of int ([u]int8.16.32, array size in bytes) - emulate NRF style, good choise for telemetry data, no need parsing incoming string. "array size in bytes" array[2] of int16 => 2 * 2bytes = 4 bytes.

So, if I need send some string or custom data - select Lora.print()
If I need to send the structure with data normalized to int** - select Lora.send()

I'm probably going to leave the current naming/return conventions as they are:
LoRa::transmit(const char* str); to send C-string,
LoRa::transmit(String& str); to send Arduino String,
LoRa::transmit(uint8_t* str, size_t len); to send arbitrary byte array.
What do you think about this?
On a side note, this breaks backwards compatibility, so I will have to release it as v3.0.0 - didn't think I would have to do that less than a week after v2.0.0 :)

I agree with you!
I forgot about backwards compatibility..
LoRa::transmit(uint8_t* str, size_t len); can be used for telemetry data, it will need some shift to get data0, data1, etc from arbitrary byte array.

The new methods will be on remove-packet branch, so you can test it out before the release.
So far the transmit method is done and should be working, I'll let you know when the receive method works as well.

Thank you!
I ordered Lora RA-02 SX1276 and waiting for it...

Everything is updated in the branch. It didn't take as much testing as I anticipated, so I'll just merge that branch and release v3.0.0. Feel free to reopen this issue if you have any more questions.


The user can press on any of the suggestions to select it.

functionality added with commit: 7b4fea5a


Log non-UTF-8 bytes being returned from LDAP server

Adds some logging to debug bad LDAP data

Shouldn't that be an log.error rather than a log.warn? I think we need to alert the admin that something is wrong with the LDAP data.
Also, should we even continue parsing the record when this error occurs? Or should we simply ignore the LDAP result entirely?


Compile toml11 with MinGW cause error in

Compile in MinGW (mingw-w64/x86_64-8.1.0-release-posix-seh-rt_v6-rev0)
#if __cplusplus >= 201703L
#if __has_include(<filesystem>)
#define TOML11_HAS_STD_FILESYSTEM
#include <filesystem>
#endif // has_include(<string_view>)
#endif // cplusplus   >= C++17

Cause error:
In file included from Z:/soft/Development/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/filesystem:37,
                 from Z:/projects/Projects/PrimeTrader/modules/toml11/toml/parser.hpp:19,
                 from Z:/projects/Projects/PrimeTrader/modules/toml11/toml.hpp:40,
                 from Z:/projects/Projects/PrimeTrader/include/modules/server_module.h:6,
                 from Z:/projects/Projects/PrimeTrader/include/config/config_server_module.h:3,
                 from Z:\projects\Projects\PrimeTrader\source\config\config_server_module.cpp:1:
Z:/soft/Development/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/fs_path.h: In member function 'std::filesystem::__cxx11::path& std::filesystem::__cxx11::path::operator/=(const std::filesystem::__cxx11::path&)':
Z:/soft/Development/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/fs_path.h:237:47: error: no match for 'operator!=' (operand types are 'std::filesystem::__cxx11::path' and 'std::filesystem::__cxx11::path')
    || (__p.has_root_name() && __p.root_name() != root_name()))
                               ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~

I'll try to provide PR with a fix

I have merged it and it seems passing the CI tests. Thank you very much for finding and fixing it!


Customising the webpack setup, errors and separation of concerns

Submit a feature request or bug report

[x] I've read the guidelines for Contributing to Roots Projects
[x] This is a feature request
[ ] This is a bug report
[x] This request isn't a duplicate of an existing issue
[ ] I've read the docs and NPM Debugging Guidelines post and followed them (if applicable)
[x] This is not a personal support request that should be posted on the Roots Discourse forums

What is the current behavior?
When using a custom webpack assets pipeline, there is a non-descript error and no documentation regarding the specifics of the current webpack implementation.
Uncaught SyntaxError: Unexpected token <
http://wp.yudu.local/ line 1

What is the expected or desired behavior?
firstly, useful error checks and handling to make advanced customisations more approachable, and potentially a greater degree of decoupling between the assets pipeline and the theme.
Why?
While the existing web pack config is pretty great for getting going quickly, and developers who haven't worked with web pack before, I expect that I'm not alone in building more advanced asset pipelines, or arriving with a custom web pack setup.  In my specific use case, here are some examples:

critical CSS & JS per page
code splitting
separate bundling of a React app that gets loaded only on one specific page

I believe a cleaner separation of concerns between assets and the theme would be the ideal solution but would settle for clear documentation on how to swap out the webpack config.   I'd even been keen to help out with this, but am too new to sage to jump in just yet.

Bug report
Given a custom build of my assets on a fresh install of sage, that create the same dist directory files/folder structure, the following error on initial page load:
Uncaught SyntaxError: Unexpected token <
http://wp.yudu.local/ line 1

Using sage's web pack config,l and running yarn && yarn build . on the exact same install all works correctly.  Having had a look around, my suspicion is that its related to the manifest stuff, but not certain.
Please describe your local environment:
The environment is irrelevant as sage installed in the default manner works correctly, customisation of sage creates the error.
Where did the bug happen? Development or remote servers?
Development
Is there a related Discourse thread or were any utilized (please link them)?
I've added a topic regarding my specific issue, though I do believe this is a concern that we should consider more generally:
https://discourse.roots.io/t/advanced-webpack-customisation/11445

Feature Request

Better Error Handling
Documentation on Customising the assets pipeline

@QWp6t  - thanks but that's a little thin at the moment.

If you feel that docs are inadequate, you're invited to start an issue (or PR) in that repo outlining what you think should be added to improve them. Or just buy Ben's book when it gets updated for Sage 9.


Fix CI release stage

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[BUG] Build failure on java 17 and 21

When running mvn clean install on release 4.4.0, I get the following build failure on java 17 and 21:
[INFO] Building jar: /mnt/data/tmp/openapi-json-schema-generator-4.4.0/target/openapi-json-schema-generator-cli-javadoc.jar
[INFO]
[INFO] >>> spotbugs-maven-plugin:<IP_ADDRESS>:check (spotbugs-check) > :spotbugs @ openapi-json-schema-generator-cli >>>
[INFO]
[INFO] --- spotbugs-maven-plugin:<IP_ADDRESS>:spotbugs (spotbugs) @ openapi-json-schema-generator-cli ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:03 min
[INFO] Finished at: 2024-05-24T13:57:45+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] class org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite cannot access a member of class java.util.Collections$UnmodifiableCollection (in module java.base) with modifiers "public"

Tested with corretto 21.0.3 and 17.0.11 (on 11.0.23 the build succeeded).

This is a Java 11 project per the readme. Can you please retry with Java 11?


@odata.context and resulting variable and property names in CSharp generated code.

The swagger document of the 3rd party API I am trying to consume uses Swashbuckle.OData and generates a property name @odata.context. Unfortunately I am unable to supply file due to restrictions from the 3rd party...
Example:
"Swashbuckle.OData.ODataResponse[System.Collections.Generic.List[Model]]": {
  "type": "object",
  "properties": {
<EMAIL_ADDRESS>{ "type": "string" },
    "value": {
      "type": "array",
      "items": { "$ref": "#/definitions/Model" }
    }
  }
},

The CSharp code generator tries to use<EMAIL_ADDRESS>as a private variable and @odata.context as the property names. Should the private variable and property remove all reserved characters?
Not sure if this is the case for all swagger files coming with Swashbuckle.OData.

https://github.com/NJsonSchema/NJsonSchema/commit/38bcd7869eedc401303d9059d8cc4d820971115a


Create Community page skeleton

A page to store blog posts, tutorials, examples... from the community.
Something similar to DRF's community menu:

Currently we have:
en content:

Talk @ EuroPython 2020:  ScanAPI - Automated Integration Testing and Live Documentation for your API.

pt-BR content:

Testando Autenticação com Flask & ScanAPI - Marcus Pereira
Live @ Spacedevs: Testando Apis Rest Com ScanAPI - Camila Maia.


Dot if clockwiseProgress is false

First of all, thank you for sharing your awesome work!
While I was using your library, I noticed that I get a little dot on my view when I set clockwiseProgress = false

I get this issue whether I implement it programmatically or using storyboard. It works fine if clockwiseProgress = true. I am using Swift 4, Xcode Version 9.3. Do you have any idea why this would happen?

It seems like if I disable rounded corners, the problem goes away.

Thanks for opening an issue, @daniel-choi ! This is indeed from the rounding corners code so disabling that for now will do the trick until I get some time to make a fix

Could not replicate this (using storyboards) on Xcode 9.2, so gonna upgrade and check again. Worst case, might need you to show me a sample project that exhibits this so I can try and isolate it further

Still can't reproduce this using Xcode 9.3. Mind creating a quick sample project?
storyboardSample.zip

Hi @iwasrobbed,
Thanks for the reply. It seems like it only happens when you put them inside the stack view. I quickly modified your sample project and was able to reproduce the issue.
sample-stackview.zip

Thanks @daniel-choi ! Unfortunately stack views do their own (unknown) layout, so I'll have to dig in a bit more when I get free time


Iowa updates 4/2

Updated CDC conditions, qualifier for those with disabilities

[{"key":"iowa","type":"vaccination","value":{"content":{"phases":[{"id":"1a","qualifications":[{"question":"c19.eligibility.question/healthcare_worker"},{"question":"c19.eligibility.question/long_term_care_resident.are"}]},{"id":"1b","qualifications":[{"question":"c19.eligibility.question/healthcare_worker","moreInfoText":"c19.eligibility.moreinfo/healthcare_worker.ia.1b"},{"question":"c19.eligibility.question/long_term_care_resident.are","moreInfoText":"c19.eligibility.moreinfo/long_term_care_resident.are.ia.1b"},{"question":"c19.eligibility.question/essential_worker","moreInfoText":"c19.eligibility.moreinfo/essential_worker.ia.1b","moreInfoUrl":"https://idph.iowa.gov/Emerging-Health-Issues/Novel-Coronavirus/Vaccine/Information-for-the-Public"},{"question":"c19.eligibility.question/age.65_up"},{"question":"c19.eligibility.question/health.are_you_a_person","moreInfoText":"c19.eligibility.moreinfo/congregate.do.ia.1b"},{"question":"c19.eligibility.question/health","moreInfoText":"c19.eligibility.moreinfo/health.ia.1b","moreInfoUrl":"https://www.cdc.gov/coronavirus/2019-ncov/need-extra-precautions/people-with-medical-conditions.html"}]}]}}},{"key":"iowa","type":"strings","value":{"content":{"c19.eligibility.moreinfo/health.ia.1b":{"en-us":"This includes:\n- Cancer\n- Chronic kidney disease\n- Chronic lung diseases, including COPD (chronic obstructive pulmonary disease), asthma (moderate-to-severe), interstitial lung disease, cystic fibrosis, and pulmonary hypertension\n- Dementia or other neurological conditions\n- Diabetes (type 1 or type 2)\n- Down syndrome\n- Heart conditions (such as heart failure, coronary artery disease, cardiomyopathies or hypertension)\n- HIV infection\n- Immunocompromised state (weakened immune system)\n- Liver disease\n- Overweight and obesity\n- Pregnancy\n- Sickle cell disease or thalassemia\n- Smoking, current or former\n- Solid organ or blood stem cell transplant\n- Stroke or cerebrovascular disease, which affects blood flow to the brain\n- Substance use disorders\n\nVaccine providers will ask Iowans to attest to having one of the conditions outlined by the CDC that would put them at greater risk for illness as a result of the COVID-19 virus. Providers will not require additional documentation. ","ko-kr":null,"vi-vn":null,"zh-cn":null,"es-us":null,"de-de":null,"es-es":null,"fi-fi":null,"fr-fr":null,"he-il":null,"it-it":null,"ja-jp":null,"pt-pt":null,"sv-se":null,"th-th":null},"c19.eligibility.moreinfo/congregate.do.ia.1b":{"en-us":"This includes individuals with disabilities who are living in a home setting, and their direct care staff. Your case manager will help coordinate your vaccine."},"c19.eligibility.moreinfo/long_term_care_resident.are.ia.1b":{"en-us":"This includes individuals with disabilities who are living in a home setting, and their direct care staff. Your case manager will help coordinate your vaccine."}}}}]


HeroCard buttons don't work on facebook channel, please tell which card can I use on facebook channel

Bot Info

SDK Platform:
SDK Version:
Active Channels:
Deployment Environment:

Issue Description

Code Example

Reproduction Steps

Expected Behavior

Actual Results

Please fill out the template so we can better assist you

var message = await result as Activity;
var PrincipalMenu = new HeroCard
{
Title = "Welcome user",
Subtitle = "¿What can I help you?",
Buttons = new List {
new CardAction(ActionTypes.ImBack, "Collections", value: "Collections"),
new CardAction(ActionTypes.ImBack, "Information", value: "Information"),
new CardAction(ActionTypes.ImBack, "SendMail", value: "SendMail")
}
};
                Attachment newAttachment = PrincipalMenu.ToAttachment();
                message.Attachments.Add(newAttachment);

                await context.PostAsync(message);

......
when select button like "Information" must show next element, in my case should be another menu, but beside that it returns the message "Sorry, my bot code is having an issue.", and when I type directly on the keyboard that text in the value "Information", then the next menu shows, for now it works on skype and webchat

var message = await result as Activity;
var PrincipalMenu = new HeroCard
{
Title = "Welcome user",
Subtitle = "¿What can I help you?",
Buttons = new List {
new CardAction(ActionTypes.ImBack, "Collections", value: "Collections"),
new CardAction(ActionTypes.ImBack, "Information", value: "Information"),
new CardAction(ActionTypes.ImBack, "SendMail", value: "SendMail")
}
};
            Attachment newAttachment = PrincipalMenu.ToAttachment();
            message.Attachments.Add(newAttachment);

            await context.PostAsync(message);

......
when select button like "Information" must show next element, in my case should be another menu, but beside that it returns the message "Sorry, my bot code is having an issue.", and when I type directly on the keyboard that text in the value "Information", then the next menu shows, for now it works on skype and webchat

var message = await result as Activity;
var PrincipalMenu = new HeroCard
{
Title = "Welcome user",
Subtitle = "¿What can I help you?",
Buttons = new List {
new CardAction(ActionTypes.ImBack, "Collections", value: "Collections"),
new CardAction(ActionTypes.ImBack, "Information", value: "Information"),
new CardAction(ActionTypes.ImBack, "SendMail", value: "SendMail")
}
};
        Attachment newAttachment = PrincipalMenu.ToAttachment();
        message.Attachments.Add(newAttachment);

        await context.PostAsync(message);

......
when select button like "Information" must show next element, in my case should be another menu, but instead of that it returns the message "Sorry, my bot code is having an issue.", and when I type directly on the keyboard that text in the value "Information", then the next menu shows, for now it works on skype and webchat

What version of the SDK are you using?

.Net Framework 4.6
Actually, I tried to create another bot with some of the original code and a single herocard, and this works perfectly.
The only different is that I add a try catch into MessageReceivedAsync.

De: Jason Sowers<EMAIL_ADDRESS>Enviado: jueves, 08 de febrero de 2018 1:55:35 p. m.
Para: Microsoft/BotBuilder
Cc: Jimmy Hawkins; Author
Asunto: Re: [Microsoft/BotBuilder] HeroCard buttons don't work on facebook channel, please tell which card can I use on facebook channel (#4172)
What version of the SDK are you using?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/BotBuilder/issues/4172#issuecomment-364212419, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AiCj6CO4pNZwYBLJpJgVzEj2z_jTaKvIks5tS0MngaJpZM4R-YDm.

I don't know yet what is triggering that error, but with the second bot I can try to find what is it on my own.
but thanks.

De: Jason Sowers<EMAIL_ADDRESS>Enviado: jueves, 08 de febrero de 2018 2:23:13 p. m.
Para: Microsoft/BotBuilder
Cc: Jimmy Hawkins; Author
Asunto: Re: [Microsoft/BotBuilder] HeroCard buttons don't work on facebook channel, please tell which card can I use on facebook channel (#4172)
I meant the botbuilder SDK like it should be 3.x. SO you ?have resolved this on your own
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/BotBuilder/issues/4172#issuecomment-364220348, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AiCj6IvRdFd8ldCe4m3DutHypQdpx8yVks5tS0mhgaJpZM4R-YDm.

Thank you very much, I put a try catch into MessageReceivedAsync and into the herocards specified "title:" instead of just the text without the word "title:", and now my bot works perflectly.
Regards.

De: Jimmy Hawkins
Enviado: jueves, 08 de febrero de 2018 2:28:11 p. m.
Para: Microsoft/BotBuilder; Microsoft/BotBuilder
Cc: Author
Asunto: Re: [Microsoft/BotBuilder] HeroCard buttons don't work on facebook channel, please tell which card can I use on facebook channel (#4172)
I don't know yet what is triggering that error, but with the second bot I can try to find what is it on my own.
but thanks.

De: Jason Sowers<EMAIL_ADDRESS>Enviado: jueves, 08 de febrero de 2018 2:23:13 p. m.
Para: Microsoft/BotBuilder
Cc: Jimmy Hawkins; Author
Asunto: Re: [Microsoft/BotBuilder] HeroCard buttons don't work on facebook channel, please tell which card can I use on facebook channel (#4172)
I meant the botbuilder SDK like it should be 3.x. SO you ?have resolved this on your own
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/BotBuilder/issues/4172#issuecomment-364220348, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AiCj6IvRdFd8ldCe4m3DutHypQdpx8yVks5tS0mhgaJpZM4R-YDm.


Include dependency license data in distributed packages

resolves https://github.com/github/licensed/issues/155
This updates the packaging scripts to include dependency data in built distributable packages.  Unfortunately the resulting script is somewhat fragile due to needing the environment just right for both the docker and non-docker build environments.  I've attempted to comment the script for some of the pitfalls but it's hard to describe all the ways that things just wont work using the prebuilt ruby docker image.  Sadly things work even less when using a custom docker image that installs ruby in a different manner.
In a short-ish description, the script works by

creating a copy of the local repo in its current state without Gemfile.lock, existing bundled gems, existing dependency metadata and tests.

removing any installed state allows later bootstrapping and licensed execution to find the latest gems available, which is what is used in the executable.

checking out the copied repo to the desired version if needed and building the executable
restoring back to the current repo version, licensed is bootstrapped and run on itself

the environment needs to be just right here, with at least a >= 2.0 version of bundler available at GEM_HOME, no Gemfile.lock, and no BUNDLER_VERSION env var set

lastly remaining metadata is pulled together from licensed's own LICENSE and README.md as well as ruby's license.txt

All of the dependency data is put under a meta folder in the package, with a resulting structure like
./licensed
./meta/
./meta/LICENSE
./meta/README.md
./meta/.licenses/
./meta/ruby/
./meta/ruby/license.txt
./meta/.licenses/bundler/
./meta/.licenses/bundler/public_suffix.dep.yml
./meta/.licenses/bundler/dotenv.dep.yml
./meta/.licenses/bundler/addressable.dep.yml
./meta/.licenses/bundler/thor.dep.yml
./meta/.licenses/bundler/octokit.dep.yml
./meta/.licenses/bundler/licensee.dep.yml
./meta/.licenses/bundler/multipart-post.dep.yml
./meta/.licenses/bundler/faraday.dep.yml
./meta/.licenses/bundler/pathname-common_prefix.dep.yml
./meta/.licenses/bundler/rugged.dep.yml
./meta/.licenses/bundler/sawyer.dep.yml
./meta/.licenses/bundler/tomlrb.dep.yml
./meta/.licenses/bundler/bundler.dep.yml

/cc @mlinksva for 👍 on the resulting structure and overall process.

If I understand script correctly, rubyc and licensed are each running in clean environments (no gems installed yet) so can be expected to get the same gems/versions as long as there's nothing platform specific.

👍  that's my expectation and observation.  I think we're ok for platform specific gems with this approach as well.


Check last frame time for feed?

(Fantastic little plugin by the way, saved me loads of time)
Is there a way to grab the timestamp of the last successful frame from a feed? I'd like to check it and if one hasn't been provided in a while, and handle it as though the submitting application is lagging behind for whatever reason and tell the user, rather than leaving them with a static image.

Unfortunately, it's not possible. Spout is just a wrapper class for shared memory, so it can't detect modifications on it.
You can check if the sender is still alive by comparing _plugin with System.IntPtr.Zero.
https://github.com/keijiro/KlakSpout/blob/master/Packages/jp.keijiro.klak.spout/Runtime/SpoutReceiver.cs#L64


[WIP] Automate the release

This automate the release process.
Current Status :

[X] Version Bump
[X] Compile & Generate Binaries
[X] Tag
[X] Create release on github
[X] Push binaries to release page
[ ] Generate Checksums
[ ] Add Installation Instructions ( copy some generic md at the top )
[ ] Add Release Notes (Assemble pre-generated content, eventually assist by listing all commits )
[ ] Update the CHANGELOG.md
[ ] Generate and Add Contributor List
[ ] Update the Documentation
[ ] Verify the Installation ( probably very hard to automate at 100% )
[ ] Order wine ( not sure how to do this one )

Looking like a good start.  I posted some comments but this will be pretty useful once finished.

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "automate-release" git@github.com:jeanlaurent/machine.git somewhere
$ cd somewhere
$ git rebase -i HEAD~7
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

Ammending updates the existing PR. You DO NOT need to open a new one.

ready for review @docker/machine-maintainers

LGTM

Will use this on Monday for the release!

Next step is to make it run in a container


405 Method Not Allowed in Home Assistant OS Addon using Ambient Weather

Describe the bug
I set up my Ambient Weather station, configured it to send everything to the ecowitt2mqtt server running in the Home Assistant OS addon. However I don't get any data. Instead I get a 405 Method Not Allowed error in the logs
To Reproduce

Install ecowitt2mqtt 2023.01.0 on HASS OS
Configure Ambient Weather station

Expected behavior
Get data in Home Assistant
Logs
INFO:     <IP_ADDRESS>:58484 - "GET /data/report/?stationtype=AMBWeatherPro_V5.1.1&PASSKEY=XXXXXXXXXXXXXXXXX&dateutc=2023-01-22+20:19:34&tempf=73.2&humidity=31&windspeedmph=0.00&windgustmph=0.00&maxdailygust=8.05&winddir=120&uv=0&solarradiation=4.58&hourlyrainin=0.000&eventrainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.000&totalrainin=0.000&battout=1&tempinf=72.0&humidityin=33&baromrelin=29.911&baromabsin=24.368 HTTP/1.1" 405 Method Not Allowed

I restarted the addon a couple of times and now with the same configuration I'm getting a 404 Not Found error :/

Turns out I didn't need the ? at the end of the path in the Ambient Weather config


storage: refactor with trait objects to allow composition

Upper-level modules like Kernel/Engine need to create a storage dynamically without knowing the specific type. Check this for an example.
Other updates in this PR:

Update package name to address this issue
Update toolchain to address this issue.

I am currently focusing on prototyping the [kernel[(https://github.com/engula/engula/pull/136). So I opt out of some implementations to avoid fixing all of them now.

Otherwise, you can prototype the kernel concept in your fork, and bring changes only if it seems a good direction. You should lose nothing but like developing on the main branch.

@tisonkun Yeah, maybe just keep these PRs open in case someone interested in what we are doing.

@huachaohuang Make sense. You can convert it into a draft or set a highlight note on the description. I'm also digging a better abstraction.

Close in favor of #154 .


Make virtctl start/stop consistent

Signed-off-by: Guohua Ouyang<EMAIL_ADDRESS>
What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

Make virtctl start/stop usage consistent.

Hello contributor, thanks for submitting a PR for this project!
I am the bot who triggers "standard-CI" builds for this project.
As a security measure, I will not run automated tests on PRs that are not from white-listed contributors.
In order to allow automated tests to run, please ask one of the project maintainers to review the code and then do one of the following:

Type ci test please on this PR to trigger automated tests for it.
Type ci add to whitelist on this PR to trigger automated tests for it and also add you to the contributor white-list so that your future PRs will be tested automatically.
If you are planning to contribute to more than one project, maybe it's better to ask them to add you to the project organization, so you'll be able to run tests for all the organization's projects.


Lock On Doesn't Work in 1.18.2

Forge: 40.1.84
Minecraft Version: 1.18.2
I can't get the lock on to work. I have adjusted keybinds and fixed overlapping keybinds. I saw that 1.19 got a fix "Don't register null keybindings". Is it possible to port the fix to 1.18 as well? Cuz as of right now it's completely non-functional :/ Many thanks!

I tested 1.19.2 and it still doesn't work

Doesn't seem to be working 1.20.1

Nvm, got it to work


Test gateway re-registration

The lightning gateway is supposed to re-register itself every 10 minutes. @okjodom this would be a great thing to cover in your new gateway tests. Should probably make GW_ANNOUNCEMENT_TTL a variable passed in to gatewayd so we can set the value much lower than 10 minutes for a test.

Covered by test_gateway_register_with_federation


nightly not starting

closing #14 in favour of this one
oneprovider_20170125_155629.zip

I fixed it myself after finding out that the app.config of op_worker has completely changed ...
would have been nice to know


Update jQuery to latest version in example

I know we updated the jQuery version in #448 because the version we’d been using in the example had a known security vulnerability, but I don’t think we need to update it every time a new version is available.
If having an old version of jQuery in the example is problematic, I’d prefer to replace it with a fictional script, but we don’t intend the style guide to provide “copy and paste” examples, so I don’t anticipate it causing any issues.


python2 is not recognized as a Python executable

reported by Nicolas Barbey (nicolas.a.barbeyATgmail.com), running Archlinux.
Imported from Bitbucket issue 80,  created by apdavison on 06-22-2011 at 15:45, last modified: 10-03-2011 at 11:34

fixed in r248
Trac comment by apdavison on 06-22-2011 at 16:19

r274
Trac comment by apdavison on 10-03-2011 at 11:34

Re-opening, as "python2.7", etc., should also be recognized as possible Python executable names.
Trac comment by apdavison on 06-22-2011 at 17:09


Fix 'Satisfies' property of NodeToolV0

Added correct agent capability "node.js." Retained old malformed capability "Node" for now to be cautious. Bumped version

Per Issue #10333

@magleaso Looks like you were originally going to do this by making updates on the demand side - could you provide some context on why you're going with this approach instead?

Also, if we do this we should also do it in UseNodeV1

@damccorm The tests for verifying demands showed that the demand side was correct. Attempting to change the demands caused the tests to fail.

The tests for verifying demands showed that the demand side was correct. Attempting to change the demands caused the tests to fail.

Ok, but just because our tests point us towards a certain behavior doesn't mean that behavior is correct. It more natural to me to change the demands instead of the capabilities which other tasks might depend on.
At the same time, the more I think about it, I guess changing the demands could break back compat for any customers who are using the task, while this change is less likely to cause issues. So I guess I'm fine with the change as it stands

I think we should also add a test that makes sure we don't have any demands that can't be satisfied though. Aka something that looks exactly like the test that was failing, but for demands instead of satisfies. That way we make sure we don't run into this mismatch anymore.

The tests were verifying against the source of truth for agent capabilities

The tests were verifying against the source of truth for agent capabilities

Cool makes sense, thanks for clarifying. I do think we should still add a corresponding test for demands though. Otherwise I have a couple nits but I'm on board with the change

I have the test changes ready, but we'd need to remove the old "Node" capability from these tasks to pass them. Is that a good idea?

I have the test changes ready, but we'd need to remove the old "Node" capability from these tasks to pass them. Is that a good idea?

That's a good point - I don't want to do that. We should be able to just add that to the list of permitted capabilities though, right? Even if you want to share the list across tests, you can just copy it and add node in the appropriate test (and doc why we're doing it). That way, we enforce correct behavior everywhere besides here and are a little more permissive around node to maintain back-compat

Yeah I can will do

FYI, had to revert this because its causing the build to break - see #10509. I think we should take this change, but figure out why its causing the build to break first and fix those things.
The failures were caused by the following:
2019-05-29T02:59:29.4202788Z found unsupported capability: "Docker" in /mnt/a/1/s/_build/Tasks/DockerInstallerV0/task.json
2019-05-29T02:59:29.4204322Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4212428Z found unsupported capability: "DotNetCore" in /mnt/a/1/s/_build/Tasks/DotNetCoreInstallerV0/task.json
2019-05-29T02:59:29.4213200Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4213701Z found unsupported capability: "DotNetCore" in /mnt/a/1/s/_build/Tasks/DotNetCoreInstallerV1/task.json
2019-05-29T02:59:29.4214124Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4225343Z found unsupported capability: "GO" in /mnt/a/1/s/_build/Tasks/GoToolV0/task.json
2019-05-29T02:59:29.4226185Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4234102Z found unsupported capability: "Helm" in /mnt/a/1/s/_build/Tasks/HelmInstallerV0/task.json
2019-05-29T02:59:29.4234980Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4235431Z found unsupported capability: "Helm" in /mnt/a/1/s/_build/Tasks/HelmInstallerV1/task.json
2019-05-29T02:59:29.4235794Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4247435Z found unsupported capability: "Kubectl" in /mnt/a/1/s/_build/Tasks/KubectlInstallerV0/task.json
2019-05-29T02:59:29.4248203Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4273723Z found unsupported capability: "NuGet" in /mnt/a/1/s/_build/Tasks/NuGetToolInstallerV0/task.json
2019-05-29T02:59:29.4274617Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4275045Z found unsupported capability: "NuGet" in /mnt/a/1/s/_build/Tasks/NuGetToolInstallerV1/task.json
2019-05-29T02:59:29.4275322Z fix the unit test if the new capability is added on purpose.
2019-05-29T02:59:29.4309851Z found unsupported capability: "DotNetCore" in /mnt/a/1/s/_build/Tasks/UseDotNetV2/task.json
2019-05-29T02:59:29.4310626Z fix the unit test if the new capability is added on purpose.

I found more sources for agent capabilities, but that only accounts for the "Docker" capability. Should we simply add these capabilities to the list?

I'd say lets just scrap the test changes. We could add all of those, but not sure what we'd actually be testing at that point. I don't want to create a problem where none currently exists. Does that seem right to you?

I agree, let's just stick with the existing demands tests

Cool, if you open a new PR and add me I'll approve


2916: Add tts on android

Short description
Adding text-to-speech functionality.
Proposed changes

TtsPlayer.tsx : deals with html content and it passes it to react-native-tts as sentences. used debounce function from lodash to handle rapid volume change. I added an expandPlayer state just to keep player expanded when changes from sentence to sentence. This component located at app level where it wraps around the NavigationContainer to be able to be floating at the bottom of the screen while scrolling.

useTtsPlayer.ts: Is a hook used to pass data (content, title, visibility, volume) from across the app to TtsPlayer.tsx using useContext.

Categories.tsx, News.tsx, Events.tsx each one is using the useTtsPlayer.ts hook to pass content and title.

Created a component Slider.tsx instead of adding more libraires and used the ones we have: react-native-reanimated & react-native-gesture-handler  to create slider that can be used anywhere other than the volume.

Added ReadAloud HeaderButtonTitle to be selected from the kebab menu to show the player. This button will show up only in Integreat/IntegreatTestCms and at third level pages.

The TtsPlayer will stop when the app is in the background also if you back out from a 3rd level page.

Notes:

Not Tested on iOS !
Why I passed sentences to tts.speak()? due to react-native-tts doesn't have a functional pause also passing word by word will sound more robotic.
Persian is not supported at react-native-tts.

Side effects

Categories.tsx, News.tsx, Events.tsx, Header.tsx

Testing

At integreat : Go to any 3rd level content in categories or news.
Open the kebab menu on the right and select Read aloud.
The player will show up press play to make it start reading content.

Resolved issues

Fixes: #2916

It unfortunately also doesn't play any sound on real iOS, there is just this warning that pops up:

It unfortunately also doesn't play any sound on real iOS, there is just this warning that pops up:

Maybe I should define iosVoiceId: '', for ios https://github.com/ak1394/react-native-tts?tab=readme-ov-file#speaking

Hmm, putting in the example 'com.apple.ttsbundle.Moira-compact' didn't change the behavior.
There is also a very minor bug that I found: when opening the TTS player, the line with the last update jumps down, and back up when you close it. I attached a video of the behavior.
https://github.com/user-attachments/assets/930195ce-5929-4764-a4fe-04030d74edd1

It unfortunately also doesn't play any sound on real iOS, there is just this warning that pops up:

Maybe I should define iosVoiceId: '', for ios https://github.com/ak1394/react-native-tts?tab=readme-ov-file#speaking

Hmm, putting in the example 'com.apple.ttsbundle.Moira-compact' didn't change the behavior.
There is also a very minor bug that I found: when opening the TTS player, the line with the last update jumps down, and back up when you close it. I attached a video of the behavior.

This behavior is intended to leave space for the player to prevent it from covering the content.
I think iosVoiceId should be taken from voices()
Tts.voices().then(voices => console.log(voices));
The voices should be filtered by the language and passed to speak.

This behavior is intended to leave space for the player to prevent it from covering the content.

That's a good idea but leads to jumping in this case. The padding should probably be added under the last update stamp instead of before.

I think iosVoiceId should be taken from voices()
Tts.voices().then(voices => console.log(voices));
The voices should be filtered by the language and passed to speak.

I unfortunately still don't get any sound out. But the iOS can be fixed in a separate issue, I think you can for now work on getting the PR ready for reviewing for Android :)

One more thing: Personally I'd be in favor of always showing the header item read aloud if the feature is available (that is, the current language is supported and it is enabled in the build config). So in contrast to now, we would also show the header item even if there is nothing to read. The player would then just say nothing to read. That would keep the UI mostly consistent (except if switching to an unsupported language).


Copying link from Sphinx won't allow to paste elsewhere

Task
This happens on occasion but the flow is:

send or receive link in Sphinx
Copy link to clipboard
Try to paste elsewhere within sphinx
Nothing happens?

Hm, newest build for me actually works great and unable to recreate now.. I'll close this ticket for now and reopen if I spot this again and will document/record the whole process


x/tools/gopls: textDocument/implementation is slow

gopls version
gopls built @ 3ec30bd95cd143796a8b51514c85d5667d261333
go version -m ~/go/bin/gopls
```
go version -m ~/go/bin/gopls
/Users/hakim/go/bin/gopls: go1.20.1
        path    golang.org/x/tools/gopls
        mod     golang.org/x/tools/gopls        (devel)
        dep     github.com/BurntSushi/toml      v1.2.1  h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
        dep     github.com/google/go-cmp        v0.5.9  h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
        dep     github.com/sergi/go-diff        v1.1.0  h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
        dep     golang.org/x/exp        v0.0.0-20220722155223-a9213eeb770e      h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
        dep     golang.org/x/exp/typeparams     v0.0.0-20221212164502-fae10dda9338      h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y=
        dep     golang.org/x/mod        v0.8.0  h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
        dep     golang.org/x/sync       v0.1.0  h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
        dep     golang.org/x/sys        v0.5.0  h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
        dep     golang.org/x/text       v0.7.0  h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
        dep     golang.org/x/tools      (devel)
        dep     golang.org/x/vuln       v0.0.0-20230110180137-6ad3e3d07815      h1:A9kONVi4+AnuOr1dopsibH6hLi1Huy54cbeJxnq4vmU=
        dep     honnef.co/go/tools      v0.3.3  h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA=
        dep     mvdan.cc/gofumpt        v0.4.0  h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
        dep     mvdan.cc/xurls/v2       v2.4.0  h1:tzxjVAj+wSBmDcF6zBB7/myTy3gX9xvi8Tyr28AuQgc=
        build   vcs.revision=3ec30bd95cd143796a8b51514c85d5667d261333
        build   vcs.time=2023-02-22T21:51:18Z
```

go env
go1.20.1
darwin/amd64
What did you do?
git clone https://github.com/juju/juju
cd juju
And open vscode from the directory.
Open utils/stringforwarder/stringforwarder.go
Hover over StringForwarder type def (line13), right click, choose "Find All Implementations"
This triggers textDocument/implementation LSP request
What did you expect to see?
Fast response or failure.
What did you see instead?
gopls becomes unresponsive for 10+min.
Unfortunately, I couldn't find VS Code UI that causes cancellation of the implementation request.
(so this isn't cancellable currently).
While the gopls server is blocked handling this request, none of the other requests can be served.
Once the first implementation response returns (after 10min+), gopls responds fast.
But if I restart gopls, I see the initial loading time is much shorter, but the implementation query still takes several minutes and blocks other gopls functionalities.
Another strange behavior is the log messages about go command failures related to module download. I thought gopls would do module download when starting and warm the module cache. So the "module lookup disabled by GOPROXY=off" errors message is rather surprising and I wonder whether gopls managed to diagnose go.mod.
Editor and settings
VS Code
    "ui.completion.completionBudget": "1s",
    "build.directoryFilters": [
        "-**/node_modules"
    ],
    "ui.semanticTokens": true,
    "ui.documentation.linksInHover": false,
    "ui.codelenses": {
        "run_govulncheck": true
    },
    "ui.documentation.linkTarget": "foo.bar",
    "ui.inlayhint.hints": {
        "assignVariableTypes": true,
        "compositeLiteralFields": false,
        "compositeLiteralTypes": false,
        "constantValues": true,
        "functionTypeParameters": false,
        "parameterNames": false,
        "rangeVariableTypes": false
    },
    "ui.vulncheck": "Off",
    "allExperiments": true

Logs
...
[Trace - 11:30:44 PM] Received response 'textDocument/documentSymbol - (11)' in 37058ms.
Result: [...]

[Trace - 11:30:44 PM] Received response 'textDocument/codeAction - (12)' in 36574ms. Request failed: JSON RPC cancelled (-32800).
[Trace - 11:30:44 PM] Received response 'textDocument/codeAction - (13)' in 36584ms. Request failed: JSON RPC cancelled (-32800).
[Trace - 11:30:44 PM] Received response 'textDocument/semanticTokens/range - (14)' in 36380ms.
Result: {...}
....

[Trace - 11:30:44 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go","version":1,"diagnostics":[]}

[Trace - 11:31:14 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2023/02/22 23:31:14 background imports cache refresh starting\n"}

[Trace - 11:31:35 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2023/02/22 23:31:35 background refresh finished after 21.52114096s\n"}

[Trace - 11:31:39 PM] Sending request 'textDocument/hover - (20)'.
Params: {"textDocument":{"uri":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go"},"position":{"line":12,"character":11}}

[Trace - 11:31:39 PM] Received response 'textDocument/hover - (20)' in 77ms.
Result: {"contents":{"kind":"markdown","value":"```go\ntype StringForwarder struct {\n\tmu           sync.Mutex\n\tcond         *sync.Cond\n\tcurrent      *string\n\tstopped      bool\n\tdiscardCount uint64\n}\n\nfunc (*StringForwarder).Forward(msg string)\nfunc (*StringForwarder).Stop() uint64\nfunc (*StringForwarder).invokeCallback(callback func(string), msg string)\nfunc (*StringForwarder).loop(callback func(string))\n```\n\nStringForwarder is a goroutine-safe type that pipes messages from the its Forward() method, sending them to callback.  The send will not be blocked by the callback, but will instead discard messages if there is an incomplete callback in progress. The number of discarded messages is tracked and returned when the forwarder is stopped.\n"},"range":{"start":{"line":12,"character":5},"end":{"line":12,"character":20}}}

...

[Trace - 11:31:47 PM] Sending request 'textDocument/implementation - (23)'.
Params: {"textDocument":{"uri":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go"},"position":{"line":12,"character":11}}

[Trace - 11:32:23 PM] Sending request 'textDocument/hover - (24)'.
Params: {"textDocument":{"uri":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go"},"position":{"line":23,"character":5}}

[Trace - 11:32:25 PM] Sending notification '$/cancelRequest'.
Params: {"id":24}
....
[Trace - 11:33:04 PM] Sending notification '$/cancelRequest'.
Params: {"id":26}

[Trace - 11:33:26 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"2023/02/22 23:33:26 tidy: diagnosing file:///Users/hakim/projects/juju/go.mod: err: exit status 1: stderr: go: downloading github.com/jessevdk/go-flags v1.5.0\ngo: downloading github.com/vishvananda/netlink v1.2.1-beta.2\ngo: downloading github.com/canonical/go-dqlite v1.11.5\ngo: downloading github.com/pkg/term v1.1.0\ngo: downloading github.com/juju/qthttptest v0.1.3\ngo: downloading github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a\ngo: downloading github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1\ngo: downloading github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v1.0.0\ngo: downloading github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0\ngo: downloading github.com/testcontainers/testcontainers-go v0.11.1\ngo: downloading github.com/onsi/ginkgo v1.14.0\ngo: downloading github.com/onsi/gomega v1.10.1\ngithub.com/juju/juju/core/network imports\n\tgithub.com/vishvananda/netlink: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/database/app imports\n\tgithub.com/canonical/go-dqlite/app: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/database/app imports\n\tgithub.com/canonical/go-dqlite/client: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/database/driver imports\n\tgithub.com/canonical/go-dqlite/driver: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju imports\n\tgithub.com/canonical/pebble/cmd/pebble imports\n\tgithub.com/jessevdk/go-flags: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju imports\n\tgithub.com/canonical/pebble/cmd/pebble imports\n\tgithub.com/canonical/pebble/internal/ptyutil imports\n\tgithub.com/pkg/term/termios: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/api imports\n\tgithub.com/go-macaroon-bakery/macaroon-bakery/v3/httpbakery tested by\n\tgithub.com/go-macaroon-bakery/macaroon-bakery/v3/httpbakery.test imports\n\tgithub.com/juju/qthttptest: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/api imports\n\tgopkg.in/retry.v1 tested by\n\tgopkg.in/retry.v1.test imports\n\tgithub.com/rogpeppe/clock/testclock: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/cmd/juju/commands imports\n\tgithub.com/chzyer/readline tested by\n\tgithub.com/chzyer/readline.test imports\n\tgithub.com/chzyer/test: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/provider/azure imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 tested by\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2.test imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/provider/azure imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 tested by\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2.test imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/testutil: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/secrets/provider/vault imports\n\tgithub.com/mittwald/vaultgo tested by\n\tgithub.com/mittwald/vaultgo.test imports\n\tgithub.com/mittwald/vaultgo/test/testdata imports\n\tgithub.com/testcontainers/testcontainers-go: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/secrets/provider/vault imports\n\tgithub.com/mittwald/vaultgo tested by\n\tgithub.com/mittwald/vaultgo.test imports\n\tgithub.com/mittwald/vaultgo/test/testdata imports\n\tgithub.com/testcontainers/testcontainers-go/wait: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/ginkgo: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/ginkgo/config: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/ginkgo/types: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/gomega: module lookup disabled by GOPROXY=off\n\n"}

[Trace - 11:33:26 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/hakim/projects/juju/container/lxd/export_test.go","diagnostics":[{"range":{"start":{"line":50,"character":46},"end":{"line":50,"character":57}},"severity":1,"code":"UndeclaredName","codeDescription":{"href":"https://foo.bar/golang.org/x/tools/internal/typesinternal#UndeclaredName"},"source":"compiler","message":"undefined: SnapManager"},{"range":{"start":{"line":51,"character":21},"end":{"line":51,"character":35}},"severity":1,"code":"UndeclaredName","codeDescription":{"href":"https://foo.bar/golang.org/x/tools/internal/typesinternal#UndeclaredName"},"source":"compiler","message":"undefined: getSnapManager"},{"range":{"start":{"line":51,"character":44},"end":{"line":51,"character":55}},"severity":1,"code":"UndeclaredName","codeDescription":{"href":"https://foo.bar/golang.org/x/tools/internal/typesinternal#UndeclaredName"},"source":"compiler","message":"undefined: SnapManager"}]}

[Trace - 11:33:27 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"2023/02/22 23:33:27 tidy: diagnosing file:///Users/hakim/projects/juju/go.mod: err: exit status 1: stderr: go: downloading github.com/vishvananda/netlink v1.2.1-beta.2\ngo: downloading github.com/jessevdk/go-flags v1.5.0\ngo: downloading github.com/canonical/go-dqlite v1.11.5\ngo: downloading github.com/pkg/term v1.1.0\ngo: downloading github.com/juju/qthttptest v0.1.3\ngo: downloading github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a\ngo: downloading github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1\ngo: downloading github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute v1.0.0\ngo: downloading github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0\ngo: downloading github.com/testcontainers/testcontainers-go v0.11.1\ngo: downloading github.com/onsi/ginkgo v1.14.0\ngo: downloading github.com/onsi/gomega v1.10.1\ngithub.com/juju/juju/core/network imports\n\tgithub.com/vishvananda/netlink: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/database/app imports\n\tgithub.com/canonical/go-dqlite/app: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/database/app imports\n\tgithub.com/canonical/go-dqlite/client: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/database/driver imports\n\tgithub.com/canonical/go-dqlite/driver: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju imports\n\tgithub.com/canonical/pebble/cmd/pebble imports\n\tgithub.com/jessevdk/go-flags: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju imports\n\tgithub.com/canonical/pebble/cmd/pebble imports\n\tgithub.com/canonical/pebble/internal/ptyutil imports\n\tgithub.com/pkg/term/termios: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/api imports\n\tgithub.com/go-macaroon-bakery/macaroon-bakery/v3/httpbakery tested by\n\tgithub.com/go-macaroon-bakery/macaroon-bakery/v3/httpbakery.test imports\n\tgithub.com/juju/qthttptest: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/api imports\n\tgopkg.in/retry.v1 tested by\n\tgopkg.in/retry.v1.test imports\n\tgithub.com/rogpeppe/clock/testclock: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/cmd/juju/commands imports\n\tgithub.com/chzyer/readline tested by\n\tgithub.com/chzyer/readline.test imports\n\tgithub.com/chzyer/test: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/provider/azure imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 tested by\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2.test imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/provider/azure imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2 tested by\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v2.test imports\n\tgithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/testutil: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/secrets/provider/vault imports\n\tgithub.com/mittwald/vaultgo tested by\n\tgithub.com/mittwald/vaultgo.test imports\n\tgithub.com/mittwald/vaultgo/test/testdata imports\n\tgithub.com/testcontainers/testcontainers-go: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/secrets/provider/vault imports\n\tgithub.com/mittwald/vaultgo tested by\n\tgithub.com/mittwald/vaultgo.test imports\n\tgithub.com/mittwald/vaultgo/test/testdata imports\n\tgithub.com/testcontainers/testcontainers-go/wait: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/ginkgo: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/ginkgo/config: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/ginkgo/types: module lookup disabled by GOPROXY=off\ngithub.com/juju/juju/caas/kubernetes/provider/mocks imports\n\tk8s.io/client-go/applyconfigurations/admissionregistration/v1 imports\n\tk8s.io/apimachinery/pkg/util/managedfields imports\n\tk8s.io/kube-openapi/pkg/util/proto tested by\n\tk8s.io/kube-openapi/pkg/util/proto.test imports\n\tgithub.com/onsi/gomega: module lookup disabled by GOPROXY=off\n\n"}

[Trace - 11:34:12 PM] Sending request 'textDocument/codeAction - (27)'.
Params: {"textDocument":{"uri":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go"},"range":{"start":{"line":27,"character":17},"end":{"line":27,"character":17}},"context":{"diagnostics":[],"triggerKind":2}}

[Trace - 11:34:12 PM] Sending request 'textDocument/hover - (28)'.
Params: {"textDocument":{"uri":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go"},"position":{"line":27,"character":16}}

[Trace - 11:34:13 PM] Sending notification '$/cancelRequest'.
Params: {"id":28}

...

[Trace - 11:45:45 PM] Sending request 'textDocument/hover - (32)'.
Params: {"textDocument":{"uri":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go"},"position":{"line":30,"character":29}}

[Trace - 11:45:46 PM] Sending notification '$/cancelRequest'.
Params: {"id":32}

[Trace - 11:48:25 PM] Received response 'textDocument/implementation - (23)' in 997596ms.
No result returned.

[Trace - 11:48:25 PM] Received response 'textDocument/hover - (24)' in 962122ms. Request failed: JSON RPC cancelled (-32800).
[Trace - 11:48:25 PM] Received response 'textDocument/hover - (25)' in 923091ms. Request failed: JSON RPC cancelled (-32800).
[Trace - 11:48:25 PM] Received response 'textDocument/hover - (26)' in 922806ms. Request failed: JSON RPC cancelled (-32800).
[Trace - 11:48:25 PM] Received response 'textDocument/codeAction - (27)' in 853586ms.
Result: [{"title":"Fill StringForwarder","kind":"refactor.rewrite","edit":{},"command":{"title":"Fill StringForwarder","command":"gopls.apply_fix","arguments":[{"Fix":"fill_struct","URI":"file:///Users/hakim/projects/juju/utils/stringforwarder/stringforwarder.go","Range":{"start":{"line":27,"character":10},"end":{"line":27,"character":40}}}]}}]

I don't see slowness of textDocument/implementation nor the error log related to the tidy diagnostics with gopls v0.11.0.
Another observation is, the range of memory usage is wider; I observed 1G~8G with gopls@master, 2G~4G with<EMAIL_ADDRESS>

Thanks for the investigation. Moving this to the v0.13.0 milestone as I think implementation is fast enough, and we have bigger fish to fry.

Given that we've improved so much from the initial report, let's not keep this open. Any subsequent improvement should be motivated by new information.


[V2] Can't be build with Node 11

The build process fails if you installed Node 11

Fixed 897adb39cced7eb5d260e8beab13e5759aca9520


Add Etherchain.org to the extension

This merge request is to add Etherchain.org gas now to the extension

Bugs appeared now closing i will re-open new one once i fixed the bugs


getVersion used as connection validation in MemcachedConnector breaks redundant memcached setups

Laravel Version: 5.4.12 (since >=4)
PHP Version: 7.0.15 (not a factor)
Database Driver & Version: libmemcached 1.0.18 + php-memcached 3.0.2

Description:
In the MemcachedConnector class the validateConnection method, which is called after memcached servers have been added, uses Memcached::getVersion to verify that memcached servers have been added.
Now, getVersion implemented by php-memcached uses memcached_version from libmemcache. Should any memcached server fail, then memcached_version() will return MEMCACHED_SOME_ERRORS which causes getVersion to return false instead not an array of the "working servers". So any failing servers results in validateConnection throwing a \RuntimeException.
This is especially counterproductive when using a replicated memcached setup, in which one or multiple memcached servers could fail without problems - would it not be for the check and which disallows any memcached server to fail.
Both memcached_version from libmemcached as well as getVersion from php-memcached act as intended (as I understand it), so it's not a bug with either. Just using getVersion to validate the connection is not the intended usage. As far as I can tell this is the case with any available libmemcached, at least since 1.0.0. Also php-memcached, at least since 2.0.0.
Steps To Reproduce:

Setup memcached as cache in Laravel using more than one memcached servers
Write a controller, which uses \Cache::(put|get|...) so that MemcachedConnector is created
Simulate an outage in one of the memcached servers
See the \RuntimeException

Here a short test setup. Laravel configured as above is available locally under http://localhost:8080/, then:
# start up memcached
$ memcached -p 11211 &
$ memcached -p 11212 &

# issue a request to your Laravel App, while both servers are up
$ curl http://localhost:8080/

# simulate outage of _one_ of the memcached servers
$ iptables -I INPUT -p tcp --destination-port 11211 -j DROP

# issue another request, see the exception
$ curl http://localhost:8080/

Solution (idea)
Either remove the getVersion check, make it controllable (disable/enable) via configuration or use set("some-special-key", ..) + get("some-special-key"). The latter is of course more expensive than getVersion.
I can provide a patch, if you let me know which of the solution ideas you prefer.

Solved in https://github.com/laravel/framework/pull/19192