Add section in README about release versioning

This describes @yanivagman's idea in #39.  I would immediately follow up this PR merge with the cutting of a new release based on the scheme described here.

Major releases are cut when backwards compatibility is broken or major milestones are completed, such as reaching parity with libbpf's API.

Agreed.

Minor releases are cut to incorporate new support for libbpf APIs.

Yes. If we follow a 1:1 feature with libbpf like we're doing, then this will work.

Patch releases are cut to incorporate important individual or groupings of bug fixes.

Yes.

libbpf support numbering indicates the minimum required libbpf version that must be linked in order to ensure libbpfgo compatibility. For example, v0.2.1-libbpf_0.4.0 means that version 0.2.1 of libbpfgo requires v0.4.0 or newer of libbpf.

Perfect.
--
Can we add a disclaimer like (and feel free to rephrase as English is better on your side):
Do note that some distributions might have local changes to their libbpf package and their version might include backports and/or fixes differently than upstream versions.

Can we add a disclaimer like (and feel free to rephrase as English is better on your side):
Do note that some distributions might have local changes to their libbpf package and their version might include backports and/or fixes differently than upstream versions. In those cases we recommend that libbpfgo is used statically compiled.

Great idea, and your english was perfect. Added.

And then I can do a simple write on how to clone libbpfgo and write a oneliner and have it compiled with dynamic libbpfgo dependency and with static libbpfgo dependency.
What do you think ?

Sounds great!

I pushed another commit when I realized I had some redundant information in my previous one. Also added a TOC.
Also want to note that I confirmed having '-' or '_' doesn't break anything with versioning go modules.


Creating private share with user who doesn't have a key setup causes finder/terminal to hang when navigating the folder for that share in KBFS

If one creates a private share with a user who hasn't setup their PGP key yet, going to the directory for that share on the KBFS causes CPU usage to spike and long periods of hanging in Finder and on the terminal.
Steps To Reproduce:

Setup a share with a user who hasn't setup their PGP key yet.
Navigate to the directory for that share in either Finder or in a terminal.

Expected Behaviour:
There should not be any hanging and the folder should open successfully, or perhaps display some kind of warning/error.
Actual Behaviour:
Finder and terminal applications hang if the folder is opened.
my log id: 34beb0800fadd61bc5595d1c

Hi @nathankleyn, I see in your logs where you were trying to open a folder with someone without keys, but I can't find evidence of any hangs.  Can you give an approximate timestamp when this happened?
Or maybe better yet, reproduce it and then do a keybase log send right away, so I know that it's the most recent thing that happened in the log?
Also, I'd be interested to know if you can figure out which process name is using the CPU. Thanks!

Hmm, though it looks like in the meantime the user you were interacting with now does have keys, so it might be hard to reproduce the same way.  I guess you could find a random Keybase user without keys?

Hey, I'm so sorry! I never saw notification for these comments! The issue appeared to be transient, dunno exactly what happened but it never hung again in the same way. I'll close and reopen if it ever happens again.
Keep up the great work! 👍


Correct spelling of Kaocha

Fixes a typo in the spelling of 'kaocha'.

[ ] This PR corresponds to an issue with a clear problem statement.

[ ] I have updated the CHANGELOG.md file with a description of the addressed issue.

I don't think either of these are necessary for a small change, but I can do both if you prefer.

Thanks!


MAINT: Fix for future change

@bashtage Not sure how you want to handle this.  Looks like latest pandas nightly has an issue with matplotlib.

@bashtage Not sure how you want to handle this. Looks like latest pandas nightly has an issue with matplotlib.

I think this one is ready and it still fixes the one issue.  The MPL seems like it will be fixed upstream.

@bashtage Not sure how you want to handle this. Looks like latest pandas nightly has an issue with matplotlib.

I think this one is ready and it still fixes the one issue. The MPL seems like it will be fixed upstream.

Issue here is that the pytest is failing, and the typing check on nightly never happens, so maybe change the order of the tests on nightly to do the typing tests first, and then do pytest tests?

It doesn't run typing against nightly at all -- I think this makes sense since typing is internal to pandas-stubs.  It only runs pytest to try and find issues where pytest will fail.

It doesn't run typing against nightly at all -- I think this makes sense since typing is internal to pandas-stubs. It only runs pytest to try and find issues where pytest will fail.

OK.  I remembered the failure we had with Version, but that was in the regular checks.


give full flexibility on cbr rule and zone names in fscloud submodule

Description
Feedback from one consumer. Currently flexibility is on the prefix only.
This should be an optional name in the inputs of the module per zone, rule - current support with prefix should remain as well.

@vburckhardt
Could you please explain optional name in the inputs, Do we have to add new variable for the name?

@Khuzaima05 The module needs to have the ability for the consumers to either:
a) pass a prefix which will be used as part of the naming (currently already supported)
OR
b) using new optional variables, consumers can control the exact naming of resources

fixed in https://github.com/terraform-ibm-modules/terraform-ibm-cbr/pull/313


"M117 L180 S8640" fails to roundtrip

Hi,
First of all, thank you for the library. I've recently used it to build a little script that strips all the filament extrusion from the gcode for my 3d printer to reproduce noisy movement.
I've run into a tiny issue. Here's a small reproducer:
import Data.Attoparsec.ByteString (parseOnly)
import Data.GCode.Parse
import Data.GCode.Pretty
import Data.String (fromString)

main = do
  let Right gcode = parseOnly parseGCode (fromString "M117 L180 S8640\n")
  putStrLn $ ppGCode gcode

Output:
Repro: src/Data/GCode/Pretty.hs:(83,1)-(89,21): Non-exhaustive patterns in function axisColor

For reference, M117 means Set LCD Message on my 3d printer. http://marlinfw.org/docs/gcode/M117.html
Thanks,
Bartosz

Tagging @sorki, in case the notification went to unwatched account.

Sorry this took so long, I've fixed it two years ago, started adding more stuff and then I've had to leave it and totally forgot about it. It now has a testsuite as well as bunch of more exciting features :) Will release a new version soon-ish.

No worries, thanks for the fix!

Released <IP_ADDRESS> to Hackage just now - https://hackage.haskell.org/package/gcodehs-<IP_ADDRESS>/changelog
Should be good from now on ;)


Extend response instrumentation

This PR adds instrumentation through logger messages to the following functions in msal-core:

isCallback
handleAuthenticationResponse

Coverage increased (+0.02%) to 76.826% when pulling 54f6cf87e2d951d338d84f4496de225cf814de04 on response-instrumentation into b3a76366d899b75764f47edabbdb14fba84f7210 on dev.


python3Packages.opensensemap-api: init at 0.1.5

Motivation for this change
Python client for interacting with the openSenseMap API.
https://github.com/home-assistant-ecosystem/python-opensensemap-api
This is a Home Assistant dependency.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

This is a semi-automatic executed nixpkgs-review. If you find some bugs or got suggestions for further things to search or run please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 108171 run on x86_64-linux 1

3 packages built:

python37Packages.opensensemap-api
python38Packages.opensensemap-api
python39Packages.opensensemap-api

This is a semi-automatic executed nixpkgs-review. If you find some bugs or got suggestions for further things to search or run please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 108171 run on x86_64-linux 1

3 packages built:

python37Packages.opensensemap-api
python38Packages.opensensemap-api
python39Packages.opensensemap-api

Result of nixpkgs-review pr 108171 run on x86_64-darwin 1

3 packages built:

python37Packages.opensensemap-api
python38Packages.opensensemap-api
python39Packages.opensensemap-api

Result of nixpkgs-review pr 108171 run on x86_64-darwin 1

3 packages built:

python37Packages.opensensemap-api
python38Packages.opensensemap-api
python39Packages.opensensemap-api


Add images: Android Basics with Compose

URL of codelab
https://developer.android.com/codelabs/basic-android-kotlin-compose-add-images
In which task and step of the codelab can this issue be found?
Open the image for your birthday card app from this link.
Describe the problem
The image URL is broken.

Hi @kesteve
Thank you for writing in with this issue.
The lesson has been updated to address it and has recently been republished.
Hope you are enjoying the course!
Regards.


Movement controller rework and some physics stuff

Yees it's yet another physics PR.
This one has "acceleration based" movement. I've got it working real nice :100: like now, it doesn't care about netlag at all and deals with low tickrates very well (doesn't get janky in the slightest until like 15-20 TPS, playable down to sub-5 TPS, the rest of physics will probably break before it does).
For regular movement the difference is subtle, mostly makes it easier to do very small maneuvers. The main interest is that this enables some movement gimmicks, such as this no-gravity "ice level" movement I've been toying with. Also having some acceleration is objectively good, even if it's just the 0.2 seconds set here, because it makes it easier to do very small maneuvers by tapping the keys.
This still needs some polish + the PR has a bunch of random physics refactoring in it that Sloth has been working on (~impulse controllers~) that may or may not still be WIP, so it's a draft until I clean things up.

Closing, lemme know if you want to continue work on this.


chore: clippy

New nightly dropped, new lints dropped
Currently still fails because of some unused lifetimes in abigen

the remaining is an ethers-rs issue i assume


Switch from mocha to jest.

Jest comes along with code coverage, that's good
Signed-off-by: Yonggang Luo<EMAIL_ADDRESS>

Mocha can be used with nyc which is a CLI of istanbul, that is used behind the scenes of Jest.
Also, CI says the build fails.

Hey @lygstate 👋🏻 I think we're ok with Mocha for now. Code coverage is one of the things on my list to add but that's still doable with Mocha.
I'm going to close this for now but I may re-open if we change our mind 🙂


Multi image support

Example of Multi-Image support
https://github.com/lyft/flytesnacks/pull/44

the check was successful, but it does not update here


Custom error on memory table overflow

Currently an error can be thrown that looks like this:
 File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1114, "The table 'tmp' is full")
make[1]: *** [.bookworm/targets/database_metadata] Error 1

The error should be wrapped in text describing the problem and its solution.
It means that the mysql configuration limits on metadata are too low; the solution is to run bookworm config msyql, or to manually update my.cnf to recommended values. If the problem persists, we're likely talking about a bookworm with tens of millions of items of metadata or extraordinarily long fields.

Hi Ben, I ran into this exact error. I tried increasing the values in my.cnf to no avail. (I eventually made the log files so large that it ate up all the storage on my computer.) Also, bookworm config mysql throws errors too.

What happens if you put SHOW VARIABLES LIKE 'tmp_table_size'; into the mysql prompt? Sometimes it can be hard to get MySQL to read the global my.cnf on a Mac. (And have you restarted the MySQL server after changing it?)
MariaDB [(none)]> SHOW VARIABLES LIKE 'tmp_table_size';
+----------------+------------+
| Variable_name  | Value      |
+----------------+------------+
| tmp_table_size |<PHONE_NUMBER> |
+----------------+------------+
1 row in set (0.00 sec)

Here's what I get when I show variables. It would appear that my table size is significantly smaller than yours...
mysql> SHOW VARIABLES LIKE 'tmp_table_size';
+----------------+----------+
| Variable_name  | Value    |
+----------------+----------+
| tmp_table_size | 16777216 |
+----------------+----------+
1 row in set (0.01 sec)

Here's what's in my.cnf...
[client]

user = 'www-data'
password = 'password'
host = 'localhost'
[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1G

If you don't have the space for the logfiles, this may be a non-starter; you're going to need 10s of GB for this.
But: here's the solution. Your [mysqld] section needs some additional parameters. So if you could paste or e-mail me the error on bookworm config mysql that would be useful; but what you want to do is add the following lines to the end of yours and then restart the server.
[client]
max_allowed_packet=1073741824

[mysqld]
max_allowed_packet=1073741824
myisam_sort_buffer_size = 512M
read_rnd_buffer_size = 8M
read_buffer_size = 4M
max_heap_table_size = 1024M
tmp_table_size = 1024M

character_set_server = utf8
query_cache_size = 128M
query_cache_type = 1
query_cache_limit = 2M

bulk_insert_buffer_size = 512M
myisam_max_sort_file_size = 1500G
sort_buffer_size = 8M

key_buffer_size=1500M

Great! I’ll try this. In the meantime, here’s the error I get on bookworm config mysql:
Traceback (most recent call last):
  File "/usr/local/bin/bookworm", line 9, in <module>
    load_entry_point('bookwormDB==0.4.0', 'console_scripts', 'bookworm')()
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 555, in run_arguments
    getattr(my_bookworm,args.action)(args)
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 72, in config
    bookwormDB.configuration.reconfigure_passwords(args.users,args.force)
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 281, in reconfigure_passwords
    update_settings_for(name)
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 244, in update_settings_for
    system.change_client_password()
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 170, in change_client_password
    cur.execute("SET PASSWORD FOR '%s'@'localhost'=PASSWORD('%s')" % (user,new_password))
  File "/Library/Python/2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/Library/Python/2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'www-data''@'localhost'=PASSWORD(''password'')' at line 1")
Traceback (most recent call last):
  File "/usr/local/bin/bookworm", line 9, in <module>
    load_entry_point('bookwormDB==0.4.0', 'console_scripts', 'bookworm')()
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 555, in run_arguments
    getattr(my_bookworm,args.action)(args)
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 72, in config
    bookwormDB.configuration.reconfigure_passwords(args.users,args.force)
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 281, in reconfigure_passwords
    update_settings_for(name)
  File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 239, in update_settings_for
    admin = Configfile("admin",[default_cnf_file_location],default=default_cnf_file_location)
NameError: global name 'default_cnf_file_location' is not defined

www.jonathandfitzgerald.com
www.twitter.com/jon_fitzgerald

On Dec 8, 2015, at 11:36 AM, Benjamin Schmidt<EMAIL_ADDRESS>wrote:
If you don't have the space for the logfiles, this may be a non-starter; you're going to need 10s of GB for this.
But: here's the solution. Your [mysqld] section needs some additional parameters. So if you could paste or e-mail me the error on bookworm config mysql that would be useful; but what you want to do is add the following lines to the end of yours and then restart the server.
[client]
max_allowed_packet=1073741824
[mysqld]
max_allowed_packet=1073741824
myisam_sort_buffer_size = 512M
read_rnd_buffer_size = 8M
read_buffer_size = 4M
max_heap_table_size = 1024M
tmp_table_size = 1024M
character_set_server = utf8
query_cache_size = 128M
query_cache_type = 1
query_cache_limit = 2M
bulk_insert_buffer_size = 512M
myisam_max_sort_file_size = 1500G
sort_buffer_size = 8M
key_buffer_size=1500M
—
Reply to this email directly or view it on GitHub https://github.com/Bookworm-project/BookwormDB/issues/83#issuecomment-162938748.

Great! I’ll try this. In the meantime, here’s the error I get on bookworm config mysql:
Traceback (most recent call last):   File "/usr/local/bin/bookworm", line 9, in <module>     load_entry_point('bookwormDB==0.4.0', 'console_scripts', 'bookworm')()   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 555, in run_arguments     getattr(my_bookworm,args.action)(args)   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 72, in config     bookwormDB.configuration.reconfigure_passwords(args.users,args.force)   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 281, in reconfigure_passwords     update_settings_for(name)   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 244, in update_settings_for     system.change_client_password()   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 170, in change_client_password     cur.execute("SET PASSWORD FOR '%s'@'localhost'=PASSWORD('%s')" % (user,new_password))   File "/Library/Python/2.7/site-packages/MySQLdb/cursors.py", line 205, in execute     self.errorhandler(self, exc, value)   File "/Library/Python/2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler     raise errorclass, errorvalue _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'www-data''@'localhost'=PASSWORD(''password'')' at line 1") Traceback (most recent call last):   File "/usr/local/bin/bookworm", line 9, in <module>     load_entry_point('bookwormDB==0.4.0', 'console_scripts', 'bookworm')()   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 555, in run_arguments     getattr(my_bookworm,args.action)(args)   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/manager.py", line 72, in config     bookwormDB.coxnfiguration.reconfigure_passwords(args.users,args.force)   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 281, in reconfigure_passwords     update_settings_for(name)   File "/Library/Python/2.7/site-packages/bookwormDB-0.4.0-py2.7.egg/bookwormDB/configuration.py", line 239, in update_settings_for     admin = Configfile("admin",[default_cnf_file_location],default=default_cnf_file_location) NameError: global name 'default_cnf_file_location' is not defined

Good news! I got it to make without errors, but when I attempt to serve it, the webpages load, but do not work. Neither page shows a visualization and no searches work. So close!

Have you checked your mysql tables?
select * from words;

I found that after successfully making mine the tables were empty.


Prompt for a rebuild after package list change

yes/no prompt i suppose

(Done thanks to @Oliver-Mustoe)


Revision Data Controller Methods Not Consistently Defined

Expected Behavior
Classes should have identical method names and definitions (e.g., same number/name of parameters).
Actual Behavior
The Revision data controller has the following methods:
1. request_delete(self, revision_id)
2. request_insert(self)
3. request_update(self, revision_id)
4. request_update_all(self)

These should be re-defined as:
1. request_delete(self, node_id)
2. request_insert(self, **kwargs)
3. request_update(self, node_id)
4. request_update_all(self, **kwargs)

Steps to Reproduce the Problem
Not applicable for requirements/code quality errors.
Proposed Solution

Rename the Revision methods as outlined above.
Update the Revision data controller methods to extract arguments from **kwargs.
Update calls to the Revision methods to pass arguments as **kwargs.
Update the Revision data controller tests to reflect the new method definitions.

Operating Environment
Not needed for requirements/code quality errors.

Fixed in commit 480b548548c4d4c1755241762ef417e6c6db54c9


error for invalid media type should not be completely swallowed

Hi all!
I'm developing a /metrics endpoint for a proprietary product and found that my server was sending this header in the response:
Content-Type: application/openmetrics-text; version=1.0.0; charset=utf-8; charset=UTF-8

As a result, mime.ParseMediaType(contentType) will return errors.New("mime: duplicate parameter name") because of the charset that appears twice (this is a bug that I will fix on my side, of course).
However, textparse.New() swallows this error and just fallbacks to NewPromParser() (when I wanted it to return NewOpenMetricsParser()), which is okay but not great, since it was hard for me to find this bug.
So I thought this debug-level log could be helpful to other people. Cheers!

I feel like this extra call on every scrape might be too much, but we could expose somehow that we parse using openmetric or text. However I am unsure about how we would store/display that.

I feel like this extra call on every scrape might be too much, but we could expose somehow that we parse using openmetric or text. However I am unsure about how we would store/display that.

it's possible to pass down the logger from *scrapeLoop to textparse.New() in order to avoid the extra call to mime.ParseMediaType(). is that what you mean? (aside from tests, this is the only call to textparse.New())

(sorry for the push-forces, I'm getting used to the Signed-off-by CI check)

I would keep the logger where it is and let the function return the error, WDYT?

I would keep the logger where it is and let the function return the error, WDYT?

also works, but it's weird when a function returns an error alongside a valid result 🤔 but it's your call of course

I would keep the logger where it is and let the function return the error, WDYT?

also works, but it's weird when a function returns an error alongside a valid result 🤔 but it's your call of course
(but I agree that passing down this logger feels a bit off)

unless the caller decides by itself to create the default value, which sounds better 💡

We could call that return "warning" instead of error.

@roidelapluie fixed the breaking change, thanks!
I also thought that was sensible to raise the log level from debug to warning, to give more visibility. Not sure if this could also be too much on every scrape and might flood deployments out there, so please let me know if I need to change it back, but this looks like something that people might want to fix. Actually, the scrape wouldn't work at all in a case like mine, where the response payload is consistent with the "semi-correct" Content-Type header, i.e. returning OpenMetrics text, but the scrape code fallbacks to the other parser. The error showing up in the web ui is a parsing error, which is scary if you're already using (parts of) a supported library like https://github.com/prometheus/client_java.

Close/reopen to get CI running.

Thanks! After double thinking, it sounds better to call it err everywhere, I have open #10267 as followup.


Pi-hole trademark issues

There are several infringements on our trademarks with this repo and installation methods.  Please review our guidelines and adjust as necessary.  Please contact me directly with any questions.
https://pi-hole.net/trademark-rules-and-brand-guidelines/

See also: https://pi-hole.net/developing-apps-for-pi-hole/

Please be more specific about "several". I guess that you are referring to 'You may not use “Pi-hole” without “for” preceding it'. I can change the preposition in the docstrings and where else it's needed.
There is no indication that it's official or endorsed by your legal entity.
Also, this is Python module and it follows the standard way to install a Python module provided by PyPI.

See also: https://pi-hole.net/developing-apps-for-pi-hole/

Just to be clear, this is not an "app for pi-hole". It's a Python module to get the details from the Rest API. There is no need to have a local Pi-hole installation or is this module integrating into Pi-hole.

First you were talking about pi-hole, now you complaining about pihole, then about hole? There is no mentioning that you have a trademark for pihole nor are you referring directly to pihole in your guidelines. I know that your next argument will be "use the Pi-hole marks or a name or logo which is similar to them in a way that will take advantage of our brand or our reputation;".
As an engineer I say that using the real name for something is always better than paraphrase or botch it. That can become much worse than using the real name. The lawyers see it of course differently. Do I "take advantage of our brand or our reputation" or do I harm? No, I don't. I'm using your brand name to name and give the user the appropriate feedback, e.g., in the docstrings and class name for developers and the exceptions for the users.

Indeed: pip install pihole may mislead people into thinking it's officially from us or that they are installing Pi-hole, which they are not.

Why should people think that? The package description which is available on PyPI, with pip and in the source repo is not saying that it is installing Pi-hole or that it's an official package. The short description says what the module is for and the long description as well including that it's not official. To be sure, it updated the description again.
If you are not happy, please provide me your own description. Thanks

I see you already updated the it to say it's not official, so thank you. But there is still the matter of pihole v0.1.2 and pip install pihole, which should be changed to something like python-api-tester-for-pihole , which is obviously a bit verbose, so something like pyphapi-for-pihole would work

Those package names may work in certain ecosystem but not in the big ones. Sorry, but now it looks like that you are making things up. There is not a single package shipped by a distribution (Debian, Fedora or CentOS) with a name *-for-pihole. There is also none on PyPI, CPAN, Ruby Gems and npm.
Could it be that "You may not use “Pi-hole” without “for” preceding it" is too muddy? IMHO, the reason seems that the previous line says "in the title" and not "in general" or for the "tool name" but that a technicality, right?
Using -for- in a package name is highly unusual, too. E.g. in the Fedora Package repository:
$ dnf list \*-for-\* | wc -l
8
$ dnf list available | wc -l
57000

PEP8 contains a section about Package and Module Names. So, you hitting on the preposition for the package name is not going to help especially as we should keep the eye on the price: The users. According to Google a lot of them are using pihole instead of Pi-hole when referring to the project anyway.
Using import pihole after the installation other than import module_to_get_details_from_a_thing is faster and closer in accordance to the PEP8. And, as mentioned before, for a lot of users more natural.
Sure, we can now start talking that the real reason for your complain is that you would like to use pihole or pi_hole on PyPI by yourself. But as there are non existing package is this hypothetical. Oh, pyhole is already gone...

You may not use the Pi-hole marks without written approval from us

As it's likely that I don't get a written approval to use Pi-hole in any way as it's an app (just to use the same terminology as you do) and not a blog post/video/article, I would like to have clear statements about the following:

You don't allow third party apps to use your wordmark in code comments.
You don't allow third party apps to use your wordmark in docstrings, Javadoc, etc.
You don't allow third party apps to use your wordmark in their documentation or description.
Using for in front of your wordmark is mandatory everywhere including module, package or other names. Also, in free text.
You don't allow third party apps to use your wordmark as a possible variation for the module name, the package name or any other name.

This will be of interest for other developers as well as it affects the whole Open Source community that is contributing to Pi-hole. Thus, it should be added to the website that everybody is treated the same and you should provide an alternative if you are disallowing it.
It's kind of interesting that the list of projects at Pi-hole Projects which I looked at to be compliant in the first place, doesn't need to follow any guidelines...I'm simply hoping that this here is not used for a PR stunt or a precedent.
I would be more than happy to move this module to the Pi-hole orga, give you control over it and change the license to one that is in alignment with your needs. I actually would prefer that because more hands create better code and a better user experience.
Please review your guidelines (as they may be pretty new) and your attitude when it comes to third party contributions. Everybody will agree that you need to protect your brand but everybody will agree with me that it should be done in a reasonable way. Changing the module name to something like import module_to_get_details_from_a_thing will be a loss for everybody.
The code that is currently used was written in 2016 and you never complained about it back then. This module is a re-write for better performance. Breaking out of the code into a module which can be imported with a meaningful name will allow others to re-use it. At the end of day we need the improved code and making a module of it is the right way to do it in regard of the Open Source philosophy.

Please make clear statement about the usage of your wordmark as I asked you to.

I will agree that my naming examples were poor

Naming examples were poor because they don't make any sense by putting a for in. This is the reason you should make a statement about the naming of packages, modules, etc. as I asked before.

that pip install pihole is misleading and confusing.

I don't want to explain it any further as you don't see the point here or read my comments. If you take something out of context it would/could always be misinterpreted or confusing, like e, pi, pip, bash alpha or anyotherword. Assuming that a user will executing a command without knowing what going to happen, then so be it. I think that you should know that better than anybody else.
I see it from an Open Source and community point of view. You from the commercial/monetary side of the trademark owner.

We'll be removing the non-compliant projects from our page with the next release.

I guess that you will open an issue in your repo that people can track your effort.
BTW, I'm especially interested and  curious how this will work with the Docker containers or the PHP and the go client. With names like something/docker-for-pihole or go-for-pihole it will be clear for all of us that the third party contribution is going to do. It will be in no way misleading, confusing or suggesting something else if there is no context.

but I don't know that we'd be able to effectively maintain it if it was in our org repo.

I didn't say that you need to maintain it. If the module would be under the umbrella of the orga then there would be no longer an issue.

What did you have in mind as far as maintaining the project and developing it?

Nothing else. I already explained the purpose the module.

Maybe there is some alternative that would work for both of us?

Well, you will likely not give the permission to name the module as it should be named and you don't want it to be moved to your orga that it can be named as it should. So, there are no real viable options left.

Can you please provide further details about the usage as I asked 4 days ago? Thanks.

Please be patient.  Thank you.

The discussion has moved over here: https://discourse.pi-hole.net/t/trademark-and-contributions/10274


Commands should be able to specify an output file

The output file should be available somehow in command args.
This way certain commands don't need to run, only if their dependencies have changed or the output file is missing.

This is added: https://github.com/vkottler/datazen/blob/62426ffef961e9f90376c266da6c31669052792e/datazen/data/schemas/manifest.yaml#L46-L47


When I have more than one role in Biblio, I can switch between those roles to see the relevant information to me.

Story [in progress, enhancement]
When I have more than one role in Biblio, I can switch between those roles to see the relevant information to me, so I can get multiple layers of privileges and view how people see the app with less privileges
Context
Make the naming more relevant.

User = Researcher (TBD: sometimes secretaries also give input)
Admin = Librarian
Developers = Admin view (does not exist yet)

Additional information
Current layout

#557 is a duplicate


[Issue] Version subcommand does not print version since v0.4.7

Current Behavior
The output does not contain the version number:
$ ./regctl-linux-amd64 version
VCSRef:     f43ada160d953317c51e7d9170afa2a316f4b9be
VCSCommit:  f43ada160d953317c51e7d9170afa2a316f4b9be
VCSState:   clean
VCSDate:    2023-02-26T02:43:41Z
Platform:   linux/amd64
GoVer:      go1.20.1
GoCompiler: gc

Expected Behavior
The output should contain the version number like v0.4.5 did:
$ ./regctl-linux-amd64 version
{
  "VCSRef": "732c2a3a6312fc70dfcfcd821505ef0ad1ed230f",
  "VCSTag": "v0.4.5"
}

Steps To Reproduce

curl -sLO https://github.com/regclient/regclient/releases/download/v0.4.7/regctl-linux-amd64
chmod +x regctl-linux-amd64
regctl-linux-amd64 version

Version
Happens since v0.4.7
$ ./regctl-linux-amd64 version
VCSRef:     f43ada160d953317c51e7d9170afa2a316f4b9be
VCSCommit:  f43ada160d953317c51e7d9170afa2a316f4b9be
VCSState:   clean
VCSDate:    2023-02-26T02:43:41Z
Platform:   linux/amd64
GoVer:      go1.20.1
GoCompiler: gc

Environment
Only checked amd64

This will be fixed with the next release.


fix: Fixing an issue with commit-wal command and empty collections

fix: Fixing an issue with commit-wal command and empty collections
test: Added tests

The warn messages are now output to syserr
Linting

#17  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @tazarov and the rest of your teammates on  Graphite


Error trying to use Elasticsearch Backend

Image: pacovk/tapir:0.6.3
Issue: Trying to setup Tapir using Helm Chart I'm receiving an error from the application in the step where it's supposed to connect to ElasticSearch:
2024-06-04 04:47:20,899 INFO  [io.quarkus] (main) Installed features: [amazon-dynamodb, amazon-s3, amazon-sts, cdi, config-yaml, elasticsearch-rest-client, hibernate-validator, oidc, quinoa, resteasy-reactive, resteasy-reactive-jackson, security, smallrye-context-propagation, smallrye-openapi, vertx]
2024-06-04 04:47:20,904 INFO  [cor.Bootstrap] (main) Validate GPG key configuration provided
2024-06-04 04:47:20,905 INFO  [cor.Bootstrap] (main) Start to bootstrap registry database [elasticsearch]
2024-06-04 04:47:21,224 ERROR [io.qua.run.Application] (main) Failed to start application (with profile [prod]): org.apache.http.ConnectionClosedException: Connection is closed
	at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:920)
	at org.elasticsearch.client.RestClient.performRequest(RestClient.java:300)
	at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288)
	at core.backend.elasticsearch.ElasticSearchRepository.createIndexIfNotExists(ElasticSearchRepository.java:310)
	at core.backend.elasticsearch.ElasticSearchRepository.bootstrap(ElasticSearchRepository.java:209)
	at core.backend.elasticsearch.ElasticSearchRepository_ClientProxy.bootstrap(Unknown Source)
	at core.Bootstrap.bootstrap(Bootstrap.java:33)
	at Main$TerraformRegistry.run(Main.java:22)
	at Main_TerraformRegistry_ClientProxy.run(Unknown Source)
	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:132)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
	at Main.main(Main.java:9)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:61)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:32)
Caused by: org.apache.http.ConnectionClosedException: Connection is closed

I've tried to use other ports in the Elastic definitions, but looking into the code I wasn't able to find any authentication method to Elastic, what's expected by it to accept connections, as the default behavior is to close connections without any auth method. This is a issue to me because when using the ECK deploy to Elastic, it isn't possible to deactivate the authentication to Elasticsearch.

Thanks for this issue. I had that on my radar, but never implemented it. I will release soon 0.7.3 which will then contain the config options

Thank you very much @PacoVK! I've updated the image and it just worked! I'll after just leave some suggestions and a PR to the Helm repo after.
Also, just to remind to update the info version in the Java Bootstrap, although I'm using the 0.7.3 version, the logs display 0.7.0 :P


Instagram Pipelines [DRAFT]

This solves #60
Current Progression:
Created API for the Scrapping API, able to scrape:

Profile Data
Posts Data
Hashtag Data
Locations Data
Reels
IGTV

Todo:

Dockerize Scrapping API ✅
Select data that matters (i need feedback on this)
Add Proxy Support ✅
Convert Locations data Into H3 Indexes
Create Pipelines to Store Data
Dockerize Pipelines

Problems:

Scrapping locations data requires session_id which obtained from logging in
But even after passing valid session_id there is chance the request will fail and account to be disabled Source

Examples:
Hashtag Scrapping:
Requests
[
    "https://www.instagram.com/explore/tags/googlepixel3/",
    "https://www.instagram.com/explore/tags/google/"
]

Response:
[
    {
        "allow_following": false,
        "amount_of_posts": 178563,
        "id": "17852487268191726",
        "is_following": false,
        "is_top_media_only": false,
        "name": "googlepixel3",
        "profile_pic_url": "https://instagram.fbdo1-2.fna.fbcdn.net/v/t51.2885-15/e35/s150x150/240950065_1011889952946184_2416560484104956328_n.jpg?_nc_ht=instagram.fbdo1-2.fna.fbcdn.net&_nc_cat=104&_nc_ohc=pUqmR4ouF8AAX9MBxyA&edm=ABZsPhsBAAAA&ccb=7-4&oh=00_AT8BIF4IN-mzBBJxJnPEMR2fHL3e6praejBMXu6KXhbGVQ&oe=61EE4C5A&_nc_sid=4efc9f"
    },
    {
        "allow_following": false,
        "amount_of_posts": 11056646,
        "id": "17843843635029645",
        "is_following": false,
        "is_top_media_only": false,
        "name": "google",
        "profile_pic_url": "https://instagram.fbdo1-1.fna.fbcdn.net/v/t51.2885-15/e35/c0.180.1440.1440a/s150x150/271992644_353756903249047_2268745757588465676_n.webp.jpg?_nc_ht=instagram.fbdo1-1.fna.fbcdn.net&_nc_cat=107&_nc_ohc=V9JAOOMvFScAX_VbPZj&edm=ABZsPhsBAAAA&ccb=7-4&oh=00_AT-MQFEBk7kRv8pY8pn1ahglXB-4sKQI8kdBJw5Fb_F9Mg&oe=61EE44FB&_nc_sid=4efc9f"
    }
]

Posts Scrapping:
Requests
[
    "https://www.instagram.com/p/CY3rhPQqig6/",
    "https://www.instagram.com/p/CY0lOS2vp9Y/"
]

Response
[
    {
        "accessibility_caption": "Photo by Donatekart | India on January 18, 2022. May be an image of big cat and text that says 'DONATEKART A tribute to the Queen of Pench \"Collarwali\" Who passed away yesterday due to old age. She was 16 and one of the most important and legendary tigers in India who gave birth to 29 cubs.'.",
        "caption": "R.I.P \"Collarwali\" 🥺🙌🏻🙏🌱\n\nShe played a key role in maintaining the population of tiger reserve in India🐅\n.\n.\n#collarwali #tributepost #tigeress #cubs #tiger #forest",
        "caption_is_edited": true,
        "commenting_disabled_for_viewer": false,
        "comments": 72,
        "comments_disabled": false,
        "display_url": "https://instagram.fbdo1-1.fna.fbcdn.net/v/t51.2885-15/e35/271986206_140104905091452_6023192320528863036_n.jpg?_nc_ht=instagram.fbdo1-1.fna.fbcdn.net&_nc_cat=100&_nc_ohc=Svb-p5OLusAAX94Gh1N&edm=AABBvjUBAAAA&ccb=7-4&oh=00_AT9rrCMr8_CaTrHI_wLy400ol25ZaY38mOwHaneBan6ZcA&oe=61EF0E8B&_nc_sid=83d603",
        "fact_check_information": null,
        "fact_check_overall_rating": null,
        "full_name": "Donatekart | India",
        "gating_info": null,
        "has_audio":NaN,
        "has_ranked_comments": false,
        "hashtags": [
            "collarwali",
            "tributepost",
            "tigeress",
            "cubs",
            "tiger",
            "forest"
        ],
        "height": 1350,
        "id": "2753861097288771642",
        "is_video": false,
        "likes": 4555,
        "location":NaN,
        "media_overlay_info": null,
        "media_preview": null,
        "sensitivity_friction_info": null,
        "shortcode": "CY3rhPQqig6",
        "tagged_users": [],
        "timestamp":<PHONE_NUMBER>,
        "tracking_token": "eyJ2ZXJzaW9uIjo1LCJwYXlsb2FkIjp7ImlzX2FuYWx5dGljc190cmFja2VkIjp0cnVlLCJ1dWlkIjoiZjAxOTMzODJhNjJkNDgyOGE4MGUzNDRkYzdiMWZjZTkyNzUzODYxMDk3Mjg4NzcxNjQyIn0sInNpZ25hdHVyZSI6IiJ9",
        "upload_date": "Tue, 18 Jan 2022 11:37:26 GMT",
        "username": "donatekart",
        "video_url":NaN,
        "video_view_count":NaN,
        "viewer_can_reshare": true,
        "viewer_has_liked": false,
        "viewer_has_saved": false,
        "viewer_has_saved_to_collection": false,
        "viewer_in_photo_of_you": false,
        "width": 1080
    },
    . . .
 ]

Some Updates:
You could use the scrapper to collect data from instagram but it is still limited because few locations are still blocked (possibly instagram is blocked the /location end point).
I've been looking for another alternative but so far i haven't find much information, any information or pointers would be really appreciated!

Hey @arifluthfi16, as discussed, we can merge this as an experimental pipeline. Basically identical to how we did it with the google-trends pipeline. You can include this Instagram pipeline already in the "main" README under "Third-party data connectors". Then in the README of your Instagram pipeline, clearly write the limitations of the current implementation.
We should open a separate issue with examples for figuring out which places/locations cannot be scraped at the moment.

@arifluthfi16 please also add a workflow for linting and building the Docker images under .github/workflows.


Enhance roi depth mapping

Enhance average depth ROI and X,Y,Z coordinates calculation. Issue https://github.com/luxonis/depthai/issues/74
Add an option to overlay the NN bounding box on left/right/depth_sipp/depth_color_h streams. Issue https://github.com/luxonis/depthai/issues/75

  -bb, --draw-bb-depth  Draw the bounding boxes over the left/right/depth*
                        streams

Add a fix for the horizontal stripes artifacts showing on the right side of previewout with some NN models. Issue https://github.com/luxonis/depthai/issues/72

So trying this on Mac and running into problems:
python3 test.py -s metaout left -bb
python3 depthai.py '-s' 'metaout' 'left' '-bb'
No calibration file. Using Calibration Defaults.
Using Arguments= {'config_overwrite': None, 'board': None, 'field_of_view': 71.86, 'rgb_field_of_view': 68.7938, 'baseline': 9.0, 'rgb_baseline': 2.0, 'swap_lr': True, 'store_eeprom': False, 'clear_eeprom': False, 'override_eeprom': False, 'device_id': '', 'dev_debug': None, 'force_usb2': None, 'cnn_model': 'mobilenet-ssd', 'disable_depth': False, 'draw_bb_depth': True, 'streams': [{'name': 'metaout'}, {'name': 'left'}]}
depthai.__version__ == 0.0.10a
depthai.__dev_version__ == 560396b735544c84935dcaeff2e5fecde135bfef
XLink initialized.
Sending device firmware "cmd_file": /Users/leeroy/depthai/depthai.cmd
Successfully connected to device.
Loading config file
Attempting to open stream config_d2h
watchdog started 1000
Successfully opened stream config_d2h with ID #0!
Closing stream config_d2h: ...
Closing stream config_d2h: DONE.
WARNING: Version (dev) does not match (255b5d738bdfacde1f47d441e7d48b4ffee10942 & 560396b735544c84935dcaeff2e5fecde135bfef)
EEPROM data: valid (v2)
  Board name     : BW1098OBC
  Board rev      : R0M0E0
  HFOV L/R       : 71.86 deg
  HFOV RGB       : 68.7938 deg
  L-R   distance : 7.5 cm
  L-RGB distance : 3.75 cm
  L/R swapped    : yes
  L/R crop region: top
  Calibration homography:
    1.002324,   -0.004016,   -0.552212,
    0.001249,    0.993829,   -1.710247,
    0.000008,   -0.000010,    1.000000,
Available streams: ['meta_d2h', 'left', 'right', 'disparity', 'depth_sipp', 'metaout', 'previewout']
CNN configurations read: /Users/leeroy/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd_depth.json
depthai: Calibration file is not specified, will use default setting;
config_h2d json:
{"_board":{"_homography_right_to_left":[0.988068163394928,0.0029474012553691864,5.067617416381836,-0.008765067905187607,0.9921473264694214,-8.795275688171387,-8.449587767245248e-06,-3.603489403758431e-06,1.0]},"_load_inBlob":true,"_pipeline":{"_streams":[{"name":"metaout"},{"name":"left"},{"name":"meta_d2h"}]},"ai":{"calc_dist_to_bb":true},"board":{"clear-eeprom":false,"left_fov_deg":71.86000061035156,"left_to_rgb_distance_m":0.019999999552965164,"left_to_right_distance_m":0.09000000357627869,"name":"","override-eeprom":false,"revision":"","rgb_fov_deg":68.7938003540039,"stereo_center_crop":false,"store-to-eeprom":false,"swap-left-and-right-cameras":true},"depth":{"padding_factor":0.30000001192092896}}
Attempting to open stream config_h2d
Successfully opened stream config_h2d with ID #1!
Writing 1000 bytes to config_h2d
!!! XLink write successful: config_h2d (1000)
Closing stream config_h2d: ...
Closing stream config_h2d: DONE.
Read: 14514560
Attempting to open stream inBlob
Successfully opened stream inBlob with ID #1!
Writing 14514560 bytes to inBlob
!!! XLink write successful: inBlob (14514560)
Closing stream inBlob: ...
Closing stream inBlob: DONE.
depthai: done sending Blob file /Users/leeroy/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd.blob
Attempting to open stream outBlob
Successfully opened stream outBlob with ID #0!
Closing stream outBlob: ...
Closing stream outBlob: DONE.
CNN input width: 300
CNN input height: 300
CNN input num channels: 3
CNN to depth bounding-box mapping: start(318, 38), max_size(643, 643)
Host stream start:meta_d2h
Opening stream for read: meta_d2h
Attempting to open stream meta_d2h
Successfully opened stream meta_d2h with ID #1!
Starting thread for stream: meta_d2h
Started thread for stream: meta_d2h
Host stream start:left
Opening stream for read: left
Attempting to open stream left
Successfully opened stream left with ID #2!
Starting thread for stream: left
Started thread for stream: left
Host stream start:metaout
Opening stream for read: metaout
Attempting to open stream metaout
Successfully opened stream metaout with ID #3!
Starting thread for stream: metaout
depthai: INIT OK!
Started thread for stream: metaout
watchdog triggered
Stopping threads: ...
E: [global] [    570179] [] XLinkReadData:165	addEventWithPerf(&event, &opTime) failed with error: 3
Device get data failed: 3
E: [global] [    570179] [] XLinkReadData:165	addEventWithPerf(&event, &opTime) failed with error: 3
Device get data failed: 3
E: [global] [    570179] [] XLinkReadData:165	addEventWithPerf(&event, &opTime) failed with error: 3
Device get data failed: 3
Closing stream meta_d2h: ...
Closing stream left: ...
Closing stream metaout: ...
E: [global] [    570181] [] dispatcherEventSend:53	Write failed (header) (err -99) | event XLINK_CLOSE_STREAM_REQ

E: [xLink] [    570181] [] sendEvents:1036	Event sending failed
E: [global] [    570181] [] dispatcherEventSend:53	Write failed (header) (err -99) | event XLINK_CLOSE_STREAM_REQ

E: [xLink] [    570181] [] sendEvents:1036	Event sending failed
E: [global] [    570181] [] dispatcherEventSend:53	Write failed (header) (err -99) | event XLINK_CLOSE_STREAM_REQ

E: [xLink] [    570181] [] sendEvents:1036	Event sending failed
Closing stream meta_d2h: DONE.
Thread for meta_d2h finished.
Closing stream left: DONE.
Thread for left finished.
Closing stream metaout: DONE.
Thread for metaout finished.
Stopping threads: DONE.
Closing all observer streams: ...
Closing all observer streams: DONE.
XLink initialized.
No USB device [03e7:2485], still looking... 0.077s [FOUND]
Sending device firmware "cmd_file": /Users/leeroy/depthai/depthai.cmd
Return code:-11

And then the following command doesn't overlay the bounding box on the left stream:
python3 test.py -s metaout previewout left -bb
python3 depthai.py '-s' 'metaout' 'previewout' 'left' '-bb'
No calibration file. Using Calibration Defaults.
Using Arguments= {'config_overwrite': None, 'board': None, 'field_of_view': 71.86, 'rgb_field_of_view': 68.7938, 'baseline': 9.0, 'rgb_baseline': 2.0, 'swap_lr': True, 'store_eeprom': False, 'clear_eeprom': False, 'override_eeprom': False, 'device_id': '', 'dev_debug': None, 'force_usb2': None, 'cnn_model': 'mobilenet-ssd', 'disable_depth': False, 'draw_bb_depth': True, 'streams': [{'name': 'metaout'}, {'name': 'previewout'}, {'name': 'left'}]}
depthai.__version__ == 0.0.10a
depthai.__dev_version__ == 560396b735544c84935dcaeff2e5fecde135bfef
XLink initialized.
Sending device firmware "cmd_file": /Users/leeroy/depthai/depthai.cmd
Successfully connected to device.
Loading config file
Attempting to open stream config_d2h
watchdog started 1000
Successfully opened stream config_d2h with ID #0!
Closing stream config_d2h: ...
Closing stream config_d2h: DONE.
WARNING: Version (dev) does not match (255b5d738bdfacde1f47d441e7d48b4ffee10942 & 560396b735544c84935dcaeff2e5fecde135bfef)
EEPROM data: valid (v2)
  Board name     : BW1098OBC
  Board rev      : R0M0E0
  HFOV L/R       : 71.86 deg
  HFOV RGB       : 68.7938 deg
  L-R   distance : 7.5 cm
  L-RGB distance : 3.75 cm
  L/R swapped    : yes
  L/R crop region: top
  Calibration homography:
    1.002324,   -0.004016,   -0.552212,
    0.001249,    0.993829,   -1.710247,
    0.000008,   -0.000010,    1.000000,
Available streams: ['meta_d2h', 'left', 'right', 'disparity', 'depth_sipp', 'metaout', 'previewout']
CNN configurations read: /Users/leeroy/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd_depth.json
depthai: Calibration file is not specified, will use default setting;
config_h2d json:
{"_board":{"_homography_right_to_left":[0.988068163394928,0.0029474012553691864,5.067617416381836,-0.008765067905187607,0.9921473264694214,-8.795275688171387,-8.449587767245248e-06,-3.603489403758431e-06,1.0]},"_load_inBlob":true,"_pipeline":{"_streams":[{"name":"metaout"},{"name":"previewout"},{"name":"left"},{"name":"meta_d2h"}]},"ai":{"calc_dist_to_bb":true},"board":{"clear-eeprom":false,"left_fov_deg":71.86000061035156,"left_to_rgb_distance_m":0.019999999552965164,"left_to_right_distance_m":0.09000000357627869,"name":"","override-eeprom":false,"revision":"","rgb_fov_deg":68.7938003540039,"stereo_center_crop":false,"store-to-eeprom":false,"swap-left-and-right-cameras":true},"depth":{"padding_factor":0.30000001192092896}}
Attempting to open stream config_h2d
Successfully opened stream config_h2d with ID #1!
Writing 1000 bytes to config_h2d
!!! XLink write successful: config_h2d (1000)
Closing stream config_h2d: ...
Closing stream config_h2d: DONE.
Read: 14514560
Attempting to open stream inBlob
Successfully opened stream inBlob with ID #1!
Writing 14514560 bytes to inBlob
!!! XLink write successful: inBlob (14514560)
Closing stream inBlob: ...
Closing stream inBlob: DONE.
depthai: done sending Blob file /Users/leeroy/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd.blob
Attempting to open stream outBlob
Successfully opened stream outBlob with ID #0!
Closing stream outBlob: ...
Closing stream outBlob: DONE.
CNN input width: 300
CNN input height: 300
CNN input num channels: 3
CNN to depth bounding-box mapping: start(318, 38), max_size(643, 643)
Host stream start:meta_d2h
Opening stream for read: meta_d2h
Attempting to open stream meta_d2h
Successfully opened stream meta_d2h with ID #1!
Starting thread for stream: meta_d2h
Host stream start:left
Opening stream for read: left
Attempting to open stream left
Started thread for stream: meta_d2h
Successfully opened stream left with ID #2!
Starting thread for stream: left
Started thread for stream: left
Host stream start:metaout
Opening stream for read: metaout
Attempting to open stream metaout
Successfully opened stream metaout with ID #3!
Starting thread for stream: metaout
Host stream start:previewout
Opening stream for read: previewout
Attempting to open stream previewout
Started thread for stream: metaout
Successfully opened stream previewout with ID #4!
Starting thread for stream: previewout
Started thread for stream: previewout
depthai: INIT OK!
py: DONE.
Return code:0

OK, using python3 test.py -bb -s metaout previewout depth_sipp works for overlaying on the depth stream:

And this seems to work well:
https://photos.app.goo.gl/hXGFvM9aHgSvRAbK7
As discussed internally I'm wondering if it would make sense to allow an option for the neural networks to get the full field of view of the color camera (to 'squish' the image into the square aspect ratio of the say 300x300 pixel model), such that the whole field of view for color camera is still available even when square models are used.

I missed overlaying the BB on left/right streams. It's fixed now.
For the failure in this case python3 test.py -s metaout left -bb, looks like there is a high chance of not-working when metaout is enabled without previewout, but sometimes it works. The issue is also on master, need to investigate it.

Thanks.  LGTM @alex-luxonis and since this isn't a regression but something already on Master I think we're clear to merge.
Thanks again!

Added an option to 'squish' the RGB 1920x1080 into the NN resolution set, by using different horizontal and vertical scaling factors, and not cropping:
-ff, --full-fov-nn    Full RGB FOV for NN, not keeping the aspect ratio

With the -bb option, added drawing the inner bounding box where the average depth is calculated over, as configured by padding_factor. Helps to check why X,Y,Z values may seem off, if the depth quality is bad over that area:

Sweet thanks!


Context Menu not showing on right click on tabName in sheet.

To open the Context Menu of a tab (maybe to rename a tab name), a user simply right-clicks on the sheet's tab name, but instead of opening Jexcel tab's Context menu it opens the browser's context menu .
To open the tab's Context Menu first User must left-click on the tab, and then he needs to right-click.
And If the user clicks (left-click) out of Jexcel sheet, again tab will start to show the browser's context menu.

Hi,
This bug it's on Pro version ?
@paulhodel

The CE version does not support the contextMenu at this moment. It would be included in version 5.

Those are available in the PRO distribution
https://jexcel.net/v7/examples/worksheets

My Version is jExcel v5.7.2
jexcel-pro.

I am testing on v5.7.4 but was not able to replicate your issue.
https://jexcel.net/v5/examples/tabs
Please consider migrating for v7, which has much better support for tabs, including

Drag and drop sorting;
Rename, delete tabs on the context menu;
New events and methods to programmatically manage that.
etc.

Here is some working example.
https://jexcel.net/v7/examples/worksheets

Hi There,
I am also facing this problem, @paulhodel I also checked the page you added for referance in you answer
https://jexcel.net/v5/examples/tabs
but I am also facing same problem in example
please refer to attahced file

file
try to make multiple tabs and focus on some other element and then right on tab, you will not be able to access context menu

Please update to v7
https://jexcel.net/v7/examples/worksheets


XenForo: exclude login field

People use complex login names, which is acceptable to XenForo but not yet to us.

Excellent contribution, thank you very much.


[llvm] fix clang rescource dir

closes #34748

llvm[core] now fails on macOS with
...
-- Installing: /Users/leanderSchulten/git_projekte/vcpkg2/packages/llvm_arm64-osx/share/llvm/usage
CMake Error at ports/llvm/portfile.cmake:370 (file):
  file RENAME failed to rename

    /Users/leanderSchulten/git_projekte/vcpkg2/packages/llvm_arm64-osx/bin/lib

  to

    /Users/leanderSchulten/git_projekte/vcpkg2/packages/llvm_arm64-osx/tools/llvm/lib

  because: No such file or directory

Call Stack (most recent call first):
  scripts/ports.cmake:168 (include)

Tested in the local machine, Installation successful on osx:
./vcpkg install llvm:x64-osx
./vcpkg install ogre:x64-osx

@JonLiu1993 You have to install llvm[core]

@JonLiu1993 You have to install llvm[core]

running

I get same error by ./vcpkg install  llvm[core]
CMake Error at ports/llvm/portfile.cmake:370 (file):
  file RENAME failed to rename

    /Users/vcpkg/Jon/llvm/vcpkg/packages/llvm_x64-osx/bin/lib

  to

    /Users/vcpkg/Jon/llvm/vcpkg/packages/llvm_x64-osx/tools/llvm/lib

  because: No such file or directory

Call Stack (most recent call first):
  scripts/ports.cmake:168 (include)


Fix as losing the current query chain scope

Fixes #1278
This pull introduces/changes:

.as doesn't break query chain anymore

Pings:
@cheerfulstoic
@subvertallchris

Changed to if branch.nil?. Waiting for CI, then merging! ;)

Current coverage is 96.63% (diff: 100%)

Merging #1298 into 7.2.x will decrease coverage by 0.66%

@@              7.2.x      #1298   diff @@
==========================================
  Files           170        170
  Lines         10518      10460    -58
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits          10234      10108   -126
- Misses          284        352    +68
  Partials          0          0

Powered by Codecov. Last update 74b78a6...c57c9ad


Csv module graceful fail on filter

Pretty straightforward. Should only need one reviewer.

Confirm that the client works when you run it with the provided sample data.
Confirm that my test changes are adequete and sensible.
Provide any feedback on the logged warn message.

This looks really good! I noticed one thing that might be worth updating in this PR. When running the client with the provided sample data, patient 4 doesn't have a patient information row, which means that the patient resources is not extracted. However, then when we go to mask the patient data, it cannot find a patient resource and an error is thrown and I think extraction stops because no bundles are written.
I also had two quick questions, but they might be things you were looking at separately, in which case both can definitely wait. When I run the client with the provided sample data, the CSVPatientExtractor and the CSV ClinicalTrialInformationExtractor throw other errors about destructuring from undefined. Is handling those cases something you were looking at in the other branch? It also looks like some extractors log their own warning saying "No disease status data found for patient" but not all of them log that and just rely on the new warning in the CSV Module. Is that also expected?


add R version of TDD exercise

addresses #86 but R version of yahtzee exercise still missing

really fumbling in the dark with R so pinging @wmvanvliet for a quick sanity check...


Fix wrong PR link in blog post

Hey, I just made a Pull Request!
Just read the post and noticed that one of the links is wrong.
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[ ] All your commits have a Signed-off-by line in the message. (more info)

Good to see you back @fox32!


Add jQuery and Tether to npm dependencies

Fixes #17325.
(Same version ranges as bower.json)
(Meteor's package.js is a separate issue: #19005)
CC: @XhmikosR @hnrch02 for review

I'd go with 1.2..0 for tether since that's what we use. Apart from that, I'm still not sure we actually need this, but since people complain, that's OK I guess.

I'd go with 1.2.0 for tether since that's what we use.

Good point. I'll open another PR to bump the Tether version in both bower.json and package.json as soon as this gets merged.

CC: @patrickhlauke in case Heinrich is busy

Seeing as a week has elapsed without any objection being raised, going ahead and merging this.


Custom Link.onclick handler

The onclick attribute is not longer ignored and it allows you to prevent page transition depends on various conditions:
<Link
  onclick={e => {
    if (condition) {
      // prevent page transition if condition is true
      e.preventDefault()
    }
  }}
/>

@frenzzy Why not use a regular <a> then?
About preventDefault, we could allow you to do it as a prop to the Link component instead:
<Link preventDefault={true} />

Here you have both the onclick handler then the redirection.
And you can prevent the redirection behavior from the onclick handler

Also, this needs to be documented.

The Link component is accept any event handlers and lifecycle attributes which hyperapp allows. Before this change it could be documented that you can't use onclick event handler and describe why. But now it behaves the same way as any other event handlers like onmousedown and so on. So, what you want to see in the documentation?

@frenzzy Nevermind then, I'll write the docs, it's my turn to commit something too. 😉

Thank you, @frenzzy! 🎉


Install azure-vnet CNI plugin on K8S Windows agents

What this PR does / why we need it:
This PR adds the logic to download, install and configure Azure VNET CNI plugins on Kubernetes Windows nodes. It brings Windows nodes to CNI-networking parity with Linux nodes in Kubernetes.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #1504
Special notes for your reviewer:
This PR updates kuberneteswindowssetup.ps1 (runs on Windows nodes first boot) with the same logic in kubernetesmastercustomscript.sh (runs on Linux nodes first boot).
I am marking the PR "do-not-merge" for now, because

This PR requires #1480 to be merged first.
Azure VNET CNI plugin requires Windows Server 2016 RS3 release, which is not yet available as a VM image in Azure. Windows team may also require some changes on top of this PR to enable full functionality.

Release note:

@anhowe, @lachie83, @nisheeth-ms, @sharmasushant, @tamilmani1989
fixes #1504.

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

@Dineshgovindasamy

@JiangtianLi Please mark this PR with "do-not-merge". It should not be merged until Windows team can test it with RS3 builds and make any necessary modifications in kuberneteswindowssetup.ps1.


Explicit documentation for configuring custom DNS servers in ACI.

When ACI is deployed to an existing vnet and the vnet is configured with custom DNS server, ACI will not inherent the custom DNS servers. And to configure ACI with custom DNS servers, the only option i see is to deploy the ACI through yaml file and not via cli or portal. Specify the DNS sever in specification of dnsConfig like below.
Configuring ACI with custom DNS servers, can this be documented?
Reference: https://github.com/MicrosoftFeedback/aci-issues/issues/25
Below are the inhouse steps to deploy an ACI in an existing vnet with custom DNS servers.
a.	Below yaml file, to deploy an ACI with nginx image in an existing vnet using network profile and configure custom DNS servers.
~$ cat aci-deploy01.yaml
apiVersion: 2018-10-01
location: eastus
name: test-aci01
properties:
containers:

name: nginx01
properties:
image: nginx
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:

port: 80
dnsConfig:
nameServers:
<IP_ADDRESS>
searchDomains: cluster.local svc.cluster.local
options: ndots:2
osType: Linux
networkProfile:
id: /subscriptions//resourceGroups//providers/Microsoft.Network/networkProfiles/

b.	Below is the command to deploy the ACI.
az container create --resource-group aci-rg01  --file aci-deploy01.yaml
c.	Verify the DNS servers in above deployed nginx ACI.
az container exec --name test-aci01 --resource-group aci-rg01  --exec-command /bin/bash
0067055fbf4e4ac29171957539d2864b-13f8519aaa3d1c0b9b3af1:/# cat /etc/resolv.conf
nameserver <IP_ADDRESS>
search cluster.local svc.cluster.local
options ndots:2
References:
https://docs.microsoft.com/en-us/azure/container-instances/container-instances-multi-container-yaml#configure-a-yaml-file
https://docs.microsoft.com/en-us/azure/container-instances/container-instances-vnet#example---yaml
https://docs.microsoft.com/en-us/azure/container-instances/container-instances-reference-yaml

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

ID: 81e00caf-dd95-441b-d2d5-0b3c979cb11b
Version Independent ID: 83ed8e59-7ae8-332e-9ce0-7d80e8a973f8
Content: Deploy container group to Azure virtual network - Azure Container Instances
Content Source: articles/container-instances/container-instances-vnet.md
Service: container-instances
GitHub Login: @dlepow
Microsoft Alias: danlep

@rakesh08
Thanks for the feedback! I have assigned the issue to content author to check and update the document as appropriate.

@dlepow
Can you please check and add your comments on this doc update request as applicable.

Reassigning doc ownership
#reassign: @macolso

hi @rakesh08, this is intended behavior for ACI today. We are happy to take a feature request for this process to be automated by ACI once the container is associated with a particular subnet.

hi @rakesh08, this is intended behavior for ACI today. We are happy to take a feature request for this process to be automated by ACI once the container is associated with a particular subnet.

@rakesh08 You can add the feature request here.

@rakesh08 You can add the feature request here.

@VikasPullagura-MSFT I think the issue isn't regarding the intended behaviour, Rakesh is asking for the intended behaviour to be documented explicitly? The best we have is this which is hard to follow because there is no concrete example
Separately it could be nice to make a feature request to add DNS nameServer via Azure CLI when doing a az container create, but that's not the scope of this issue


Please update History.md for 1.3.19

https://github.com/jruby/activerecord-jdbc-adapter/blob/master/History.md is missing 1.3.19.
Thank you in advance @kares !

on 1-3-stable branch as well as https://github.com/jruby/activerecord-jdbc-adapter/releases/tag/v1.3.19


Mapping Registered Clinical Trials in the US

[ Project Lead ] @SASUSA
[ GitHub Repo ]
[ Track ] Tools: you are building a tool others can help you build, Open Data: you have data others can use and play with during the sprint
[ Level ] Beginner
[ Timezone ]
Description
Mapping registered clinical trials and their outcomes in the U.S., using clinical trial open data available at clinicaltrials.gov.
A map exists on their site, here, however, you must click onto the state to be brought to a list of the trials on a separate page (contains status and other details). We would like the user to be able to see a map on our site (http://www.senseaboutscienceusa.org/alltrials/) of the registered trials, and when the user hovers over the state, a list of the trials (including status, study name, condition and intervention) appears as a sidebar. It would be nice to provide different experiences based on the type of user (so patient or physician) as well.

Want to Contribute?
Join us at the Global Sprint June 2-3. Leave a comment in this issue to let the project lead know you're interested in contributing during #mozsprint 2016!

Note to the Project Lead
Congrats, @SASUSA! This is your official project listing for the Mozilla Science Global Sprint 2016. To confirm your submission, please complete the following:

[ ] Provide a GitHub repository for work and discussion on your project
[ ] Confirm in a comment that at least one person will be available to review and answer questions on this project from 9-5 in their timezone on both June 2 & 3. Please specify timezone. :clock1:

Do you want to become a featured project? :tada:
Here are some exercises that will help your project be more inviting to new contributors. We hope you'll try to complete some of these as you prepare for #mozsprint.
If you complete all the exercises, your project will be eligible to be featured in our collection of open source science projects! Once you've finished this list, contact @acabunoc to submit your project for review.

[ ] README.md:
[ ] LICENSE:
[ ] CONTRIBUTING.md:
[ ] Roadmap or an Issue Tracker (with tasks to complete):
[ ] Data Reuse Plan (if applicable):
[ ] Code of Conduct:
[ ] Personas:

Excited to see what we can create tomorrow. Carey Reed from SASUSA will be available to answer any questions June 2 & 3 ET. Thanks so much Mozilla Science Lab for hosting such a great event!


SAM: Updated default parameters to suit large datasets

The original set of default parameters used by SAM were geared more towards smaller datasets. As scRNAseq throughput is ever-increasing, I tweaked the default parameters to be better suited for large datasets.

Could this get a notice in the docs/ something in the release notes?

Thanks for the update! Merged via #1595

Thanks for the update! Merged via #1595


allow option for dustjs-linkedin to not cache templates

Sorry I'm not sure how to create a proper pull request.
// insert above line 15 in index.js
dust.config.cache = options.cache || false;

Why do you need this?

This was actually mean to be a pull request for gulp-dust-html and not here. It might have ended up here because since it's a fork of this.
Anyways feel free to close this pull request. Sorry for inconvenience!
ps: here is the issue I was having.
http://stackoverflow.com/questions/32736466/gulp-dust-html-watch-task-doesnt-include-updated-templates


Standardize how we spec / redline our design files

LARAHANL created the following on Feb 07:
User story
As a designer on our team I need clear examples and standards for how we should redline our design files so that our developers and adopters receive consistent specifications.
Deliverables

Sketch file with spec standards

Notes
As designers we have different methods of redlining our design files. As a team, these differences can cause confusion or slow down the process because they are not all consistent.
Tasks

[ ] gather examples of spec'd design files from our team
[ ] identify the most successful redlines (colour, line weight, type size)
[ ] consider plugins
[ ] create one master Sketch file to use as a reference

Original issue: https://github.ibm.com/webstandards/digital-design/issues/541

Spec library, guidelines, and Abstract.


How to handle Behat errors?

Hello,
My question is related to this issue : https://github.com/richardmiller/ErrorExtension/issues/2
I would like to know how to get errors encountered by Behat during the execution of the tests. I just (and honestly) don't understand how Behat works for this.
Thanks a lot.

@pocky can you give me an example of what is it you're trying to do?

@everzet
My context
<?php

use Behat\Behat\Context\Context;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;
use Behat\Behat\Tester\Exception\PendingException;

/**
 * Defines application features from the specific context.
 */
class FeatureContext implements Context
{
    /**
     * @Then I say thanks :name
     */
    public function iSayThanks($name)
    {
        $this->customer->thanks();
    }
}

And result:
Feature: Test project

  Scenario:                               # features/beer.feature:3
    Given I am a customer                 # FeatureContext::iAmACustomer()
    When I want a beer                    # FeatureContext::iWantABeer()
    Then the bartender should give me one # FeatureContext::theBartenderShouldGiveOne()
    And I say thanks "Tom"                # FeatureContext::iSayThanks()
      Fatal error: Call to undefined method Customer::thanks() (Behat\Testwork\Call\Exception\FatalThrowableError)
    And I drink my beer                   # FeatureContext::iDrinkMyBeer()
    And I am "drunk"                      # FeatureContext::iAm()

--- Failed scenarios:

    features/beer.feature:3

1 scenario (1 failed)
6 steps (3 passed, 1 failed, 2 skipped)
0m0.02s (8.77Mb)

I want to catch the exception in And I say thanks "Tom"                # FeatureContext::iSayThanks()       Fatal error: Call to undefined method Customer::thanks() (Behat\Testwork\Call\Exception\FatalThrowableError) with this tester.
The actual code use error_get_last() which, as says @stof on my issue, doesn't work with exception. I tried to catch the exception with a simple try/catch and behat events but I can't find the right solution.
Do you need more information?

I close this problem because I found the solution by refactoring class. ErrorTester implements StepTester to get the result of each step with ExecutedStepResult and then does its job in case of exception.
Thanks (again) for Behat and phpspec.


Broken link iot-hub docs

https://docs.microsoft.com/en-us/azure/iot-hub/
References > IoT device catalog link broken.

I'll fix this. It's actually Resources > IoT device catalog link that's broken. PR is https://github.com/MicrosoftDocs/azure-docs-pr/pull/80099..

Hi @toledotown . Thanks for reporting this. I've fixed it now, it should work. I found it in Resources>IoT device catalog, not in References, so let me know if I fixed the wrong one. This should publish Friday morning.

Closing this since @robinsh has fixed it. Let us know if this is not the broken link you were referring to @toledotown.


decimals()

The aim of this function is well to count the number of decimals after the point ?
print(decimals(5)) # 0 ok
print(decimals(5.1)) # 4 ?
print(decimals(5.12)) # 4 ?
print(decimals(5.123)) # 4 maybe
print(decimals(5.1234)) # 4 ok
print(decimals(5.12345)) # 4 ?

and what's the use case?

For convert a Rect2 with a negative size in a equivalent Rect2 with a positive size. The pos/end of the second is shifted of the size's number of decimals.
At least i have not found another way...

This is a hacky work around but does work.
num_decimals = str(number).split(".")[1].length()

I'm a joke with mathematics too, but you can achieve that easily multiplying the negative number by -1.0, the result will give you exactly the same number but positive.
El 22 de mayo de 2015 01:20:45 CST, BBric<EMAIL_ADDRESS>escribió:

For convert a Rect2 with a negative size in a equivalent Rect2 with a
positive size. The pos/end of the second is shifted of the size's
number of decimals.
At least i have not found another way...

Reply to this email directly or view it on GitHub:
https://github.com/okamstudio/godot/issues/1955#issuecomment-104545266

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

This works only with the size, but not with the position.
I have also used a String:
max(0, str(abs(number - int(number))).length() - 2)

It is not excessively complex of course but if this function exists it should work.

Please try to be a bit more explicit in your issue titles and in the description, I think none of the commenters understood that you were reporting a bug in the built-in decimals() function, we likely all assumed you were asking to add such a function (and the "4 ?" are therefore hard to understand, but well).
In the end I tried myself and could understand that indeed, the decimals() built-in function always returns 4. I'll fix that.

This is a typical case of precision issue with floating point numbers. The problematic code is https://github.com/godotengine/godot/blob/897a1aa/core/math/math_funcs.cpp#L207-L220
When trying to analyse 5.133 for example, p_step will successively take the following values:
0.133
1.33
13.3
133.000001

So it returns 4 (4 steps) instead of 3.
I've googled about this a bit, and it's a typical issue, the main solution given being to parse a string instead of trying to do math with floating points. I've tried to improve the algorithm but did not manage to reach something working so far.

The best I could come up with seems to work fine for numbers with less than 4 digits (the "max" in the function), but returns 0 for numbers with more than 4 digits:
diff --git a/core/math/math_funcs.cpp b/core/math/math_funcs.cpp
index 3c94ac5..927fadb 100644
--- a/core/math/math_funcs.cpp
+++ b/core/math/math_funcs.cpp
@@ -208,9 +208,10 @@ int Math::decimals(double p_step) {

        int max=4;
        int i=0;
-       while( (p_step - Math::floor(p_step)) != 0.0 && max) {
-
+       double threshold=0.00005;
+       while (abs(p_step - Math::round(p_step)) > threshold && max) {
                p_step*=10.0;
+               threshold*=10.0;
                max--;
                i++;
        }

I've tried to make some test before the while to check if the p_step has more than 4 digits, but I did not manage to find something that works. @reduz Any clue?

Quick side question, what should decimals(1/3) return? Infinity? "4"? -1?
Until this question is answered by consensus, I guess the function should be removed, as this is undefined behaviour (plus, I don't see the point in it either).

I made a quick search on the repo and it looks like Math::decimals() is used in two places in the engine:

https://github.com/godotengine/godot/blob/8420c24f7f35cdd7adbc7d4595cb1756020ab127/scene/gui/tree.cpp#L1137 (also further down)
https://github.com/godotengine/godot/blob/2c45ee5e1ce939bcef32129ac01944f3995269f4/scene/gui/spin_box.cpp#L42

And the algorithm is somewhat reimplemented here: https://github.com/godotengine/godot/blob/7d8f187c339393fde6b335fa4f9a75ebb57cdcfa/tools/editor/animation_editor.cpp#L1191-L1209
I don't know about the re-implementation, but we should check the two usages of Math::decimals() to see if they are broken currently, and if we could replace case in the case of dropping Math::decimals() completely.

So by looking at the above two usages of Math::decimals(), I guess it could be worth implementing using string manipulation, and then removed from the GDScript API as it's too confusing to be presented as a reliable method IMO. For the engine, as well as the input floats are well controlled, it should be ok (here it's mostly about knowing the number of decimals of a range's step for example in the spin_box.cpp example).


show output for archival jobs

Previously:
20:49:21 | Running 1 archives
20:49:21 |
20:49:21 |
20:49:21 | Finished running 1 archives in 0.31s.

Now:
20:59:06 | Running 1 archives
20:59:06 |
20:59:06 | 1 of 1 START archive simple_archive_004.seed --> public.test_archived [RUN]
20:59:06 | 1 of 1 OK archived simple_archive_004.seed --> public.test_archived.. [INSERT 0 9 in 0.06s]
20:59:07 |
20:59:07 | Finished running 1 archives in 0.31s.

Fixes for:
https://github.com/fishtown-analytics/dbt/issues/252
https://github.com/fishtown-analytics/dbt/issues/250

approved


Specified cast is not valid. within method (Method name unknown)

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Right click recent items then left click
Expected behavior
at Files.YourHome.<RecentsView_ItemClick>d__35.MoveNext() + 0x574
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__7_0(Object) + 0x1e
at System.Action1.Invoke(T) + 0x28    at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore() + 0x33    at System.Runtime.InteropServices.McgMarshal.ThrowOnExternalCallFailed(Int32, RuntimeTypeHandle) + 0x21    at __Interop.ComCallHelpers.Call(__ComObject, RuntimeTypeHandle, Int32) + 0xb8    at __Interop.ForwardComStubs.Stub_12[TThis](__ComObject, Int32) + 0x24    at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object, UnhandledErrorDetectedEventArgs) + 0x3d --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21    at Microsoft.AppCenter.Utils.ApplicationLifecycleHelper.<.ctor>b__17_1(Object, UnhandledErrorDetectedEventArgs) + 0x75    at System.EventHandler1.Invoke(Object, TEventArgs) + 0x2e
at __Interop.Intrinsics.HasThisCall__24[TArg0](Object, IntPtr, Object, TArg0) + 0x36
at Files!+0xec51e0
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS Version: [e.g. Windows 10 1903 18362.175]
App version: [v0.5.0]

Additional context
Add any other context about the problem here. Does this problem occur again after restarting the app?

@tomyan112 I see that you are on an older version of Files UWP, can you try updating to the latest version which I believe is 0.6.6 and check if you are still seeing this error?

@tomyan112 I see that you are on an older version of Files UWP, can you try updating to the latest version which I believe is 0.6.6 and check if you are still seeing this error?

It is, you need to spam left click and right click and it would pop up

I tested with the version from master that still wasn't released v0.7 and wasn't able to reproduce, I am going to keep this issue open in case you find it is still an issue in v0.7.

You can download v0.7.0 here.

With the latest updates, I can't reproduce this, and there's been no other reports of this exception.


JavaScript Object Class

Is your feature request related to a problem? Please describe.
I am trying to convert a project from Flash to Blazor, and so far - so good, and the things are looking pretty much very promising from the Client side.
Anyway so far a significant delay is caused by the complex structures which I have to maintenance while translating a complex object from C# class to JavaScript class ( enterprise class project ).
These translations which involving constant creating and destroying objects, especially in arrays or more complex structures quite often leads to significant delay while converting the C# structures into a string/json text and send them to be recreated in JavaScript and then injected where they belongs.
Describe the solution you'd like
I believe that if C# offer a class which output is object type which is 1:1 to the object type of JavaScript object instance and this could be directly injected from C# to JavaScript without all of these back and forward conversions they things would be much more accelerated.
P.S: Blazor related

@YordanYanakiev Thanks for contacting us.
Have you considered using a DotNetObjectReference for this? https://docs.microsoft.com/en-us/aspnet/core/blazor/javascript-interop?view=aspnetcore-3.0#instance-method-call
Are you asking to be able to hold a reference to a JS object from the C# side or have some sort of mapping between C# objects and JS objects. This could be achieved with a graph of DotNetObjectReferences and a bit of work on the JS side

The whole point is not to have any kind of work from inside JS side.
My idea is to have a base class in C# which to create just objects with just the same properties, methods and events without need to modify JS code or make any work in there.
Something like creating JS class inside C#, and every instance of this class to be directly transferable and used from inside JS as it is.
( even going deeper - such object to share memory pool with the parent instance in C# ).

Ok,
So if I understood correctly you want some sort of JS proxy for a C# object so that any library that needs something in the JS world, can use your "JS" proxy object to talk to the C# object directly. Am I understanding this correctly or is it the other way around? (You want a C# proxy to talk to a JS object directly)

( even going deeper - such object to share memory pool with the parent instance in C# - aka the JS object to be just a pointer to the C# created instance of the object )

This is not doable today in the wasm world as the JS GC and the .NET GC would have to cooperate for that. I believe there are some specs for this in the wasm world.

I see. Well, probably it is too early yet for this quite ambitious request..

I'm closing this as there's no further action for us to take here at the moment. We might revisit this in the future if things change in the web assembly space.


[FEATURE] Add linter to CI/CD pipeline

Is your feature request related to a problem? Please describe.
Actually, for each PR, the reviewer checks manually if the style PEP8 is correct.
Describe the solution you'd like
It's possible to use flake8 to check the PEP8 style. We integrate it into the CI/CD pipeline.
We still need to agree on some PEP8 rules:

Do we keep max-line-length 120 (the same we do now) or we use 79 (as suggested by PEP8)?
We need to ignore E741 since we use a lot x and y.

Related to #213

I made a quick test and I found only these two style exceptions. Any thoughts?
@jacobmontiel @smastelini

Thanks for creating the issue @garawalid
My two cents:

Max line length
This is a hot topic, and most of the time goes down to team preferences (E501). Personally, I find 79 characters rather restrictive. We could consider a middle ground at 99. Additionally, we need to consider the number of lines to change as we consider smaller line lengths.

CapitalizedWords or single upper case letter
I understand what you mean. I am not sure if it fits into E741 though. In this case, we are following a scikit-learn convention that is familiar to a large user base so I vote to ignore this rule.

@jacobmontiel
I find 99 characters good as well, especially when I use a wide screen.
I'll create an initial PR ASAP.

Hi @garawalid and @jacobmontiel. I use a flake8-based plugin in my text editor, and I always received many warnings regarding the line lengths.  I also agree that 99 characters are a good compromise for our case.
@garawalid, this upcoming PR is going to be an excellent addition for the CI/CD pipeline! Thanks for that :)

Using a 99-character rule will lead to many changes. I made a PR (#221) with an initial linting.
I've been thinking of using 120 characters. What do you think?

Using a 99-character rule will lead to many changes. I made a PR (#221) with an initial linting.
I've been thinking of using 120 characters. What do you think?

I am ok with 120 characters, but I am biased. Could you provide an estimate of modules/files that would need to be changed if we use 99 characters? We could break the effort into multiple issues. We could start with a 120 character threshold for existing code and 99 characters for new code. Comments?

Here are some statistics on the number of lines that exceed 99 character per module
# tests
      3 neural_networks
     16 data
      1 transform
     11 meta
      2 utils
      5 metrics
     12 lazy
    101 trees
      4 drift_detection
      5 evaluation

# src
    112 data
     48 meta
      9 utils
      3 metrics
     82 lazy
    187 trees
     37 visualization
     17 drift_detection
      1 options
      6 core
     92 evaluation
     46 demos
      9 bayes

I wouldn't mix two styles at the same time (99 and 120 characters). I still can do it in one PR.

Just out of curiosity, how many lines would be affected by setting a limit of 79 characters?
Here is an interesting analysis for the discussion: https://jakevdp.github.io/blog/2017/11/09/exploring-line-lengths-in-python-packages/
I agree that two values are not practical and looking into the numbers above it seems that the 99 limit is manageable. Comments @smastelini @jmread @hmgomes @abifet?

It is a very interesting discussion about line lengths indeed. Although I got used to limiting my scripts' lines to 79 characters, I still believe that 99 is a good balance and would result in less refactoring efforts. Besides, as the article's author points, sklearn usually uses more characters per line than the other compared packages. An explanation comes from the fact that this package defines classes with long names, such as RandomForestClassifier.
In this sense, skmultiflow is much closer to sklearn than, let say, numpy. Hence, sticking to a limit of 99 characters per line sounds like a good compromise to me.

Here is a summary of the number of lines that violates the rule [E501]:(https://www.flake8rules.com/rules/E501.html)

File
case of 79 characters
case of 99 characters
case of 120 characters

src/neural_networks
6
-
-

src/data
283
112
4

src/transform
11
-

src/meta
192
48
-

src/utils
41
9
-

src/metrics
27
3
-

src/lazy
197
82
16

src/trees
516
187
2

src/visualization
100
37
-

src/drift_detection
44
17
-

src/options
2
1
-

src/core
24
6
-

src/evaluation
253
92
-

src/demos
68
46
6

src/bayes
19
9
-

tests/neural_networks
4
3
-

tests/data
60
16
2

tests/transform
10
1
-

tests/meta
87
11
-

tests/utils
7
2
-

tests/metrics
12
5
-

tests/lazy
29
12
-

tests/trees
132
101
-

tests/drift_detection
8
4

tests/core
1
-
-

tests/evaluation
17
5

tests/bayes
2
-
-

I agree, 99 seems the sweet spot considering our codebase and the required effort to enforce it.

99 sounds good for me too. I'll continue the PR.
Thanks @jacobmontiel, @smastelini

I noticed that linting the project in one shot is quite difficult since we have new PRs and my pace is quite slow. So, I decided to break the linting into different PR.
The pros of this approach are:

No need to rebase every new PR and lint again,
Low risk of regression after rebasing.
Small changed lines per PR and easy to review.
We can perform the lint in parallel (more contributors, parallel PRs).
Once a sub-package complies with PEP8, all new PRs that change it should respect that because the check is included in the Azure pipeline.

Note: I added a temporary proxy script in /dev/linter.sh, it will be deleted once this issue is resolved.
Here is the list of sub-packages to be linted:

[ ] src/skmultiflow/anomaly_detection (#231)

[ ] src/skmultiflow/bayes (#231)

[ ] src/skmultiflow/core (#231)

[ ] src/skmultiflow/data (#231)

[ ] src/skmultiflow/demos

[ ] src/skmultiflow/drift_detection

[ ] src/skmultiflow/evaluation

[ ] src/skmultiflow/lazy

[ ] src/skmultiflow/meta

[ ] src/skmultiflow/metrics

[ ] src/skmultiflow/neural_networks

[ ] src/skmultiflow/options

[ ] src/skmultiflow/prototype

[ ] src/skmultiflow/rule

[ ] src/skmultiflow/transform

[ ] src/skmultiflow/trees

[ ] src/skmultiflow/utils

[ ] src/skmultiflow/visualization

[ ] tests/anomaly_detection

[ ] tests/bayes

[ ] tests/core

[ ] tests/data

[ ] tests/drift_detection

[ ] tests/evaluation

[ ] tests/init.py

[ ] tests/lazy

[ ] tests/meta

[ ] tests/metrics

[ ] tests/neural_networks

[ ] tests/prototype

[ ] tests/rules

[ ] tests/transform

[ ] tests/trees

[ ] tests/utils

Hi @garawalid, since the work in #231 is almost done and the process should be repeated for the other sub-modules, would you mind describing the steps you followed during this first PR?
Thus, we can get some guidelines for future reference.

@smastelini
Sorry for the late response.

I use Pycharm to lint the code (Code -> Reformat code).
I use autopep8 to fix W293.

$ python3 -m autopep8 --select=W293 --in-place --aggressive src/skmultiflow/options/base_option.py

I address the rest manually until flake8 returns nothing.

$ python3 -m flake8 src/skmultiflow/options/

Thank you @garawalid, these references are going to be much relevant in the future. We are closing #231, but this issue will be kept open to track the modules that still need the PEP8 style formatting, and also to organize the remaining work.


Cut release v0.26.0

KCL bug fix: Permitting whitespace before colon thanks to community member @guptaarnav ❤
KCL: Ranges now support arbitrary start and end values, eg. [x..100]
KCL breaking change: the repetitions property of all pattern functions are now instances, and now is the total count
KCL: Add ==, !=, >, >=, <, <= to use in if/else expressions 🎉
Bug fix: selection order does not matter on multi-select constraints like equal length (#4138)
and too many bug fixes and testing additions to list 🪨

Updater test on windows and macos worked
import on windows worked


Remove global warning for skeleton service w/o Cloudvolume

Closes https://github.com/CAVEconnectome/CAVEclient/issues/231

IMO this shouldn't be giving a package-wide warning every time caveclient is imported, thoughts @fcollman @kebwi?


Reliance on iana.org for localizations is flakey

dev/tools/localization/localizations_utils.dart references iana.org which is causing CI to fail sometimes.  We should have local mirrors.
example from cirrus:
 ▌22:06:09▐ ELAPSED TIME: 5.306s for bin/cache/dart-sdk/bin/dart dev/tools/localization/bin/gen_localizations.dart --material in .
Unhandled exception:
HttpException: , uri = https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ERROR: Last command exited with 255.
Command: bin/cache/dart-sdk/bin/dart dev/tools/localization/bin/gen_localizations.dart --material
Relative working directory: .
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Example luci failure: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket.appspot.com/8884911422563139120/+/steps/run_test.dart_for_framework_tests_shard/0/stdout
00:22 +43 -2: test/localization/gen_l10n_test.dart: generateCode plural messages should throw attempting to generate a plural message with no resource attributes [E]
  HttpException: , uri = https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
  dart:_http                                    _HttpClient.getUrl
  localization/localizations_utils.dart 302:50  precacheLanguageAndRegionTags
  test/localization/gen_l10n_test.dart 54:11    main.<fn>

If I understand what you mean by "local mirrors" then yes, or we could just cache the last successful download somewhere. The data we're looking up doesn't change very often.

The easiest change would be to mirror the content on a google server.  I believe it's google policy that tests shouldn't be hitting 3rd party servers.
Alternatively we could cache the file locally in the repo and occasionally update it.  I'm fine with whatever as long as we stop hitting iana.org.

@gaaclarke Hello,
Revisiting this issue to reflect correct status, just would like to know if this has been resolved already or need to be kept open to re-evaluate ?

Nope, I still see iana.org showing up in the repo.


Make runner images deterministic

Description
We go to great lengths to ensure as much of our CI as possible is deterministic - ie doesnt change implicitly, reproducible, etc
It seems there is no way to specify a runner image that ensures you always get the same one
Platforms affected

[X] Azure DevOps
[X] GitHub Actions - Standard Runners
[X] GitHub Actions - Larger Runners

Runner images affected

[X] Ubuntu 20.04
[X] Ubuntu 22.04
[X] macOS 11
[X] macOS 12
[X] macOS 13
[X] Windows Server 2019
[X] Windows Server 2022

Image version and build link
any
Is it regression?
no
Expected behavior
deterministic CI
Actual behavior
random updates breaking things that are hard to debug and can bring undesirable changes
to make it worse it seems like some ci will use old/new images so not even deterministic contemporaneously
Repro steps
run ci
wait a while
run ci again (now with some other runner image)

@phlax
I understand your concern. It has its own base I admit. I should also note that such an architecture also has its advantages.
Separately, I note that there is a chance that sooner or later the possibility of choosing a runner of a certain version may appear. In this case, we will definitely release an announcement. But so far there are no such plans.