Adds support for symlinked libraries/repos #526

Addresses #526. @sg- Please test on your setup.

Seems to still have borked my repo
C:\dev\mbed-os-example-blinky>mklink /J mbed-os C:\dev\mbed-os
Junction created for mbed-os <<===>> C:\dev\mbed-os

C:\dev\mbed-os-example-blinky>mbed compile
Building project mbed-os-example-blinky (NRF52_DK, ARM)
Scan: .
Scan: mbed
Scan: env
Scan: FEATURE_BLE
Compile [  0.3%]: AnalogIn.cpp
Compile [  0.7%]: BusIn.cpp
Compile [  1.0%]: BusInOut.cpp
Compile [  1.3%]: main.cpp
Compile [  1.7%]: FlashIAP.cpp
...
Total Static RAM memory (data + bss): 9519 bytes
Total Flash memory (text + data): 58036 bytes

Image: .\BUILD\nrf52_dk\arm\mbed-os-example-blinky.hex

C:\dev\mbed-os-example-blinky>git status
On branch master
Your branch is behind 'origin/master' by 18 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   main.cpp

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        mbed-os/

no changes added to commit (use "git add" and/or "git commit -a")

C:\dev\mbed-os-example-blinky>mbed update
[mbed] Updating library "mbed-os-example-blinky" to latest revision in the current branch
[mbed] Updating reference "mbed-os-example-blinky" -> "https://github.com/armmbed/mbed-os-example-blinky/#50a0878e40fa6d3d05fb6e1bce1e5ee5537e742a"
[mbed] ERROR: Unpublished changes in "mbed-os" in "C:\dev\mbed-os-example-blinky\mbed-os".
[mbed] ERROR: Please publish them first using the "publish" command.
[mbed] ERROR: You can also use --clean-deps to discard all local commits and replace the library with the one included in this revision. WARNING: This action cannot be undone.
---

C:\dev\mbed-os-example-blinky>mbed update --clean-deps
[mbed] Updating library "mbed-os-example-blinky" to latest revision in the current branch
[mbed] Removing library "mbed-os" (changed URL). Will add from new URL.
[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #5f6572179d66

C:\dev\mbed-os-example-blinky>

@sg- Did you use the branch this PR is proposing for that test? I can't tell from the log.

@screamerbg While your fixing that commit, you misspelled symlink as symlunk in the commit message.

@sg- I'm unable to reproduce this behavior.
D:\Work\testing>mkdir test

D:\Work\testing>cd test

D:\Work\testing\test>mbed import mbed-os-example-blinky
[mbed] Importing program "mbed-os-example-blinky" from "https://github.com/ARMmbed/mbed-os-example-blinky" at latest revision in the current branch
[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #5f6572179d66

D:\Work\testing\test>git clone https://github.com/ARMmbed/mbed-os
Cloning into 'mbed-os'...
remote: Counting objects: 158750, done.
remote: Total 158750 (delta 0), reused 1 (delta 0), pack-reused 158749R
Receiving objects: 100% (158750/158750), 180.59 MiB | 6.75 MiB/s, done.
Resolving deltas: 100% (107416/107416), done.
Checking connectivity... done.
Checking out files: 100% (12310/12310), done.

D:\Work\testing\test>cd mbed-os-example-blinky

D:\Work\testing\test\mbed-os-example-blinky>rm -fr mbed-os

D:\Work\testing\test\mbed-os-example-blinky>mklink /J mbed-os d:\Work\testing\test\mbed-os
Junction created for mbed-os <<===>> d:\Work\testing\test\mbed-os

D:\Work\testing\test\mbed-os-example-blinky>mbed update
[mbed] Updating program "mbed-os-example-blinky" to latest revision in the current branch
[mbed] Updating library "mbed-os" to rev #5f6572179d66

D:\Work\testing\test\mbed-os-example-blinky>cd ..

D:\Work\testing\test>cd mbed-os

D:\Work\testing\test\mbed-os>git log -1
WARNING: terminal is not fully functional
commit 5f6572179d66ce4c09d6517b659ac51133cc980d
Merge: 182bbd5 4ad5e42
Author: Martin Kojtal<EMAIL_ADDRESS>Date:   Mon Dec 4 11:55:10 2017 +0000

    Merge pull request #5634 from ARMmbed/release-candidate

    Release candidate for mbed-os-5.6.6

The symlinked mbed-os manual clone is updated correctly.
@sg- could you provide from scratch command log so I can reproduce it? Thanks in advance.

Also I tried updating mbed-os-example-blinky to a specific branch and the symlinked mbed-os was updated just fine.
D:\Work\testing\test\mbed-os>cd ..

D:\Work\testing\test>cd mbed-os-example-blinky

D:\Work\testing\test\mbed-os-example-blinky>neo update mbed-os-5.5.5
[mbed] Updating program "mbed-os-example-blinky" to branch mbed-os-5.5.5
[mbed] Updating library "mbed-os" to rev #db4be94693c3

D:\Work\testing\test\mbed-os-example-blinky>cd ..

D:\Work\testing\test>cd mbed-os

D:\Work\testing\test\mbed-os>git log -1
WARNING: terminal is not fully functional
commit db4be94693c3a873cfa0c025a5ad2e62b86a8474
Merge: 4c256f0 4e1ec4a
Author: Martin Kojtal<EMAIL_ADDRESS>Date:   Mon Aug 14 11:10:07 2017 +0100

    Merge pull request #4889 from ARMmbed/release-candidate

    Release candidate for mbed-os-5.5.5

Hmm. I deleted all mbed-cli versions again and pulled a your neo fork of mbed-cli and all seems ok now. Maybe the merge of the remote branch and local install was messed up. I had also force pulled the remote and verified the sha with your branch but dont have that in the logs and didn't post here (I might not have cleaned cli installs or not installed). Anyways, seems we have different terminal versions rm versus rmdir but it seems to work ok. Logs below.
C:\dev>pip uninstall mbed-cli
Uninstalling mbed-cli-1.2.2:
  c:\python27\lib\site-packages\mbed_cli-1.2.2-py2.7.egg
  c:\python27\scripts\mbed-cli-script.py
  c:\python27\scripts\mbed-cli.exe
  c:\python27\scripts\mbed-cli.exe.manifest
  c:\python27\scripts\mbed-script.py
  c:\python27\scripts\mbed.exe
  c:\python27\scripts\mbed.exe.manifest
Proceed (y/n)? y
  Successfully uninstalled mbed-cli-1.2.2
Traceback (most recent call last):
  File "c:\python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\Scripts\pip.exe\__main__.py", line 9, in <module>
  File "c:\python27\lib\site-packages\pip\__init__.py", line 233, in main
    return command.main(cmd_args)
  File "c:\python27\lib\site-packages\pip\basecommand.py", line 252, in main
    pip_version_check(session)
  File "c:\python27\lib\site-packages\pip\utils\outdated.py", line 102, in pip_version_check
    installed_version = get_installed_version("pip")
  File "c:\python27\lib\site-packages\pip\utils\__init__.py", line 838, in get_installed_version
    working_set = pkg_resources.WorkingSet()
  File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 644, in __init__
    self.add_entry(entry)
  File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 700, in add_entry
    for dist in find_distributions(entry, True):
  File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1949, in find_eggs_in_zip
    if metadata.has_metadata('PKG-INFO'):
  File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1463, in has_metadata
    return self.egg_info and self._has(self._fn(self.egg_info, name))
  File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1823, in _has
    return zip_path in self.zipinfo or zip_path in self._index()
  File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1703, in zipinfo
    return self._zip_manifests.load(self.loader.archive)
  File "c:\python27\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1643, in load
    mtime = os.stat(path).st_mtime
WindowsError: [Error 2] The system cannot find the file specified: 'c:\\python27\\lib\\site-packages\\mbed_cli-1.2.2-py2.7.egg'

C:\dev>pip uninstall mbed-cli
Cannot uninstall requirement mbed-cli, not installed

C:\dev>pip uninstall mbed-cli
Cannot uninstall requirement mbed-cli, not installed

C:\dev>mkdir temp

C:\dev>cd temp

C:\dev\temp>git clone https://github.com/screamerbg/neo
Cloning into 'neo'...
remote: Counting objects: 2290, done.
remote: Total 2290 (delta 0), reused 0 (delta 0), pack-reused 2290Receiving objects:  98% (2245/2290), 748.00 KiB | 282.00 KiB/s
Receiving objects: 100% (2290/2290), 761.08 KiB | 282.00 KiB/s, done.
Resolving deltas: 100% (1146/1146), done.

C:\dev\temp>cd neo

C:\dev\temp\neo>git checkout f/symlinks-support
Switched to a new branch 'f/symlinks-support'
Branch f/symlinks-support set up to track remote branch f/symlinks-support from origin.

C:\dev\temp\neo>git log
commit c6ab9bd87d5acbbc8bd75383ff65f4f2bc98d8dd
Author: Mihail Stoyanov<EMAIL_ADDRESS>Date:   Thu Dec 7 21:19:13 2017 +0000

    Make use of global variable _cwd to store the path cd(path) changes to.
    This is a workaround to python's os.getcwd() which always returns the real path, not the logical one.
    Due to this os.getcwd() would never return the path inside a symlunk.
    This commit also introduces getcwd() implementation that uses _cwd.

commit b79228158496bbf6cad0d2fd909b3d0927ef191a
Author: Mihail Stoyanov<EMAIL_ADDRESS>Date:   Sat Dec 2 15:12:44 2017 +0000

    Adds support for symlinked libraries/repos #526

commit 63c9daa87f1f28e82b7dfef518257490c54c70f0
Author: Mihail Stoyanov<EMAIL_ADDRESS>Date:   Mon Oct 2 16:51:34 2017 +0100

    Fix hardcoded 'python' call and use python_cmd var instead
    Also bump version to 1.2.2

commit c2f7b06cdf6c2803fc8e2c7de55c04be0b28b2f9
Author: Mihail Stoyanov<EMAIL_ADDRESS>Date:   Thu Sep 28 12:19:28 2017 +0100

    Release 1.2.1

commit fc5efdb463f9a8901450999e181663e13d52810d

C:\dev\temp\neo>python setup.py install
running install
running bdist_egg
running egg_info
creating mbed_cli.egg-info
writing mbed_cli.egg-info\PKG-INFO
writing top-level names to mbed_cli.egg-info\top_level.txt
writing dependency_links to mbed_cli.egg-info\dependency_links.txt
writing entry points to mbed_cli.egg-info\entry_points.txt
writing manifest file 'mbed_cli.egg-info\SOURCES.txt'
reading manifest file 'mbed_cli.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'mbed_cli.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\mbed
copying mbed\mbed.py -> build\lib\mbed
copying mbed\__init__.py -> build\lib\mbed
creating build\bdist.win32
creating build\bdist.win32\egg
creating build\bdist.win32\egg\mbed
copying build\lib\mbed\mbed.py -> build\bdist.win32\egg\mbed
copying build\lib\mbed\__init__.py -> build\bdist.win32\egg\mbed
byte-compiling build\bdist.win32\egg\mbed\mbed.py to mbed.pyc
byte-compiling build\bdist.win32\egg\mbed\__init__.py to __init__.pyc
creating build\bdist.win32\egg\EGG-INFO
copying mbed_cli.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying mbed_cli.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying mbed_cli.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying mbed_cli.egg-info\entry_points.txt -> build\bdist.win32\egg\EGG-INFO
copying mbed_cli.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist\mbed_cli-1.2.2-py2.7.egg' and adding 'build\bdist.win32\egg' to it
removing 'build\bdist.win32\egg' (and everything under it)
Processing mbed_cli-1.2.2-py2.7.egg
Copying mbed_cli-1.2.2-py2.7.egg to c:\python27\lib\site-packages
Adding mbed-cli 1.2.2 to easy-install.pth file
Installing mbed-script.py script to C:\Python27\Scripts
Installing mbed.exe script to C:\Python27\Scripts
Installing mbed.exe.manifest script to C:\Python27\Scripts
Installing mbed-cli-script.py script to C:\Python27\Scripts
Installing mbed-cli.exe script to C:\Python27\Scripts
Installing mbed-cli.exe.manifest script to C:\Python27\Scripts

Installed c:\python27\lib\site-packages\mbed_cli-1.2.2-py2.7.egg
Processing dependencies for mbed-cli==1.2.2
Finished processing dependencies for mbed-cli==1.2.2

C:\dev\temp\neo>cd ..

C:\dev\temp>mbed import mbed-os-example-blinky
[mbed] Importing program "mbed-os-example-blinky" from "https://github.com/ARMmbed/mbed-os-example-blinky" at latest revision in the current branch
[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #5f6572179d66

C:\dev\temp>git clone https://github.com/ARMmbed/mbed-os
Cloning into 'mbed-os'...
remote: Counting objects: 158772, done.
remote: Total 158772 (delta 0), reused 1 (delta 0), pack-reused 158771
Receiving objects: 100% (158772/158772), 180.61 MiB | 419.00 KiB/s, done.
Resolving deltas: 100% (107432/107432), done.
Checking out files: 100% (12310/12310), done.

C:\dev\temp>cd mbed-os-example-blinky

C:\dev\temp\mbed-os-example-blinky>rm -fr mbed-os
'rm' is not recognized as an internal or external command,
operable program or batch file.

C:\dev\temp\mbed-os-example-blinky>del mbed-os
C:\dev\temp\mbed-os-example-blinky\mbed-os\*, Are you sure (Y/N)? Y

C:\dev\temp\mbed-os-example-blinky>rmdir mbed-os
The directory is not empty.

C:\dev\temp\mbed-os-example-blinky>rmdir mbed-os /s
mbed-os, Are you sure (Y/N)? Y

C:\dev\temp\mbed-os-example-blinky>mklink /J mbed-os C:\dev\temp\mbed-os
Junction created for mbed-os <<===>> C:\dev\temp\mbed-os

C:\dev\temp\mbed-os-example-blinky>git log -2
commit 50a0878e40fa6d3d05fb6e1bce1e5ee5537e742a
Merge: 38dba8b 8f2dd7e
Author: Martin Kojtal<EMAIL_ADDRESS>Date:   Mon Dec 4 14:20:21 2017 +0000

    Merge pull request #98 from adbridge/master

    Updating mbed-os to mbed-os-5.6.6

commit 8f2dd7e93bfec34fff9e97c06f7975d2659199e1
Author: adbridge<EMAIL_ADDRESS>Date:   Mon Dec 4 12:51:13 2017 +0000

    Updating mbed-os to mbed-os-5.6.6

C:\dev\temp\mbed-os-example-blinky>git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean

C:\dev\temp\mbed-os-example-blinky>cd mbed-os

C:\dev\temp\mbed-os-example-blinky\mbed-os>git log -2
commit 2e1c2a1cdf168dd739e777165b21f6cd0509c188
Merge: 41591eb83 c6130306e
Author: Martin Kojtal<EMAIL_ADDRESS>Date:   Fri Dec 1 08:15:26 2017 +0000

    Merge pull request #5538 from geky/littlefs-staging

    Integrate littlefs into mbed OS

commit 41591eb83b11f167054fd1d5236680de88c5885f
Merge: 9f8ac6523 3252fa097
Author: Martin Kojtal<EMAIL_ADDRESS>Date:   Thu Nov 30 18:26:45 2017 +0000

    Merge pull request #5602 from artokin/nanostack_release_v704

    Nanostack release v704

C:\dev\temp\mbed-os-example-blinky\mbed-os>cd ..

C:\dev\temp\mbed-os-example-blinky>mbed update
[mbed] Updating program "mbed-os-example-blinky" to latest revision in the current branch
[mbed] Updating library "mbed-os" to rev #5f6572179d66

C:\dev\temp\mbed-os-example-blinky>cd mbed-os

C:\dev\temp\mbed-os-example-blinky\mbed-os>git log -2
commit 5f6572179d66ce4c09d6517b659ac51133cc980d
Merge: 182bbd51b 4ad5e42ca
Author: Martin Kojtal<EMAIL_ADDRESS>Date:   Mon Dec 4 11:55:10 2017 +0000

    Merge pull request #5634 from ARMmbed/release-candidate

    Release candidate for mbed-os-5.6.6

commit 4ad5e42ca7e320de7d8a130887ac6e21744c7a6a
Author: adbridge<EMAIL_ADDRESS>Date:   Fri Dec 1 17:01:47 2017 +0000

    Update Mbed version block for patch release

C:\dev\temp\mbed-os-example-blinky\mbed-os>git status
On branch mbed-os-5.6
Your branch is up-to-date with 'origin/mbed-os-5.6'.
nothing to commit, working tree clean

C:\dev\temp\mbed-os-example-blinky\mbed-os>


ci: fix typo in variable name

Description
This PR fixes the build options in the CI. A small typo in the variable that set some options to build for AVX/AVX2/AVX512.
Notes for Reviewers
See result here: https://github.com/sebastien-prudhomme/LocalAI/actions/runs/5114923609
Signed commits

[x] Yes, I signed my commits.

good catch @sebastien-prudhomme ! thanks!


Configure Connection Factory

Is there a way to configure Connection Factory to an external JMS Provider like Sonic MQ? I was trying my luck with the configuration below and it is failing.
grails.plugin.routing.jms.connectionFactory="progress.message.jclient.ConnectionFactory"
grails.plugin.routing.jms.password=
grails.plugin.routing.jms.username=
Thanks
Benji

JMS is JMS - the provider used in routing-jms comes from ActiveMQ however
the protocol itself is the same.
Changing the URI to destination is described in the docs.
Best regards,
Matthias
2012/1/19 benjithomas <
<EMAIL_ADDRESS>

Is there a way to configure Connection Factory to an external JMS Provider
like Sonic MQ? I was trying my luck with the configuration below and it is
failing.
grails.plugin.routing.jms.connectionFactory="progress.message.jclient.ConnectionFactory"
grails.plugin.routing.jms.password=
grails.plugin.routing.jms.username=
Thanks
Benji

Reply to this email directly or view it on GitHub:
https://github.com/padcom/grails-routing-jms/issues/1

The client library from Sonic has built in features for load balancing and fault tolerance - That was one of the requirements to use the library even if its a pure JMS client implementation. So I am assuming with this plugin, it is not possible to configure a specific connectionFactory.
I can do it through camel outside the plugin using spring configuration if I am not using the plugin.  Just wondering I can do it through the jms plugin configuration to supply specific connectionFactory, username and password.

In that case I'd propose using the routing plugin alone and Sonic extension
for it.
Matthias.
W dniu czwartek, 19 stycznia 2012 uytkownik benjithomas <
<EMAIL_ADDRESS>napisa:

The client library from Sonic has built in features for load balancing
and fault tolerance - That was one of the requirements to use the library
even if its a pure JMS client implementation. So I am assuming with this
plugin, it is not possible to configure a specific connectionFactory.
I can do it through camel outside the plugin using spring configuration
if I am not using the plugin.  Just wondering I can do it through the jms
plugin configuration to supply specific connectionFactory, username and
password.

Reply to this email directly or view it on GitHub:
https://github.com/padcom/grails-routing-jms/issues/1#issuecomment-3571332


element{,-desktop}: 1.10.10 -> 1.10.11

Description of changes
https://github.com/vector-im/element-web/releases/tag/v1.10.11

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Was the title supposed to be element{-web,-desktop}: 1.10.10 -> 1.10.11? element itself is a different package.

Compiles and works on x86_64-darwin

This is a semi-automatic executed nixpkgs-review with nixpkgs-review-checks extension. It is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
Result of nixpkgs-review pr 170701 run on x86_64-linux 1

2 packages built:

element-desktop
element-desktop-wayland

The following issues got detected with the above build packages.
Please fix at least the ones listed with your changed packages:

element-desktop:

got build log for '/nix/store/44jcsxf3533ssf24nxpzlx72ydvhsdga-element-desktop-1.10.11' from 'daemon'
When evaluating attribute ‘element-desktop’:
warning: build-tools-in-build-inputs
rsync is a build tool so it likely goes to nativeBuildInputs, not buildInputs.
Near pkgs/development/tools/yarn2nix-moretea/yarn2nix/default.nix:310:7:
    |
310 |       buildInputs = [ yarn nodejs rsync ] ++ extraBuildInputs;
    |       ^

See: https://github.com/jtojnar/nixpkgs-hammering/blob/master/explanations/build-tools-in-build-inputs.md
warning: build-tools-in-build-inputs
yarn is a build tool so it likely goes to nativeBuildInputs, not buildInputs.
Near pkgs/development/tools/yarn2nix-moretea/yarn2nix/default.nix:310:7:
    |
310 |       buildInputs = [ yarn nodejs rsync ] ++ extraBuildInputs;
    |       ^

See: https://github.com/jtojnar/nixpkgs-hammering/blob/master/explanations/build-tools-in-build-inputs.md


Setting to make icons always colored?

I would like to see a setting in this package to make the icons always colored and never greyed out. Is there any interest from the maintainers in making this happen or accepting a PR if I find the time to make this happen?

Looking into it I was able to hack my local version by modifying this line:
https://github.com/Yummygum/city-lights-icons-atom/blob/6554987d3eb6713a328b79749c31353d4d837fa6/styles/atom-file-icons.less#L10

Hi @natesholland,
This is indeed something I'm working on. I did 1 attempt but didn't really managed to get it working. A PR would be nice, or you could wait a bit more. 😝
Great to hear you like the icons!

Same as #3 but the issue got closed

+1

Looking forward to this being an option :)


Fix functionality for associative tables with non-id primary keys

Coverage increased (+1.7%) to 96.831% when pulling cf10af8264a0f0d9cacb2f4683ccfbbd184987e9 on everett-wetchler:master into 11927dace4f7ec9081360d85e5944279221d8b25 on Dynamoid:master.

Nice!  I had wanted to use a non-id primary key myself and wound up not partially cause of this issue, thanks for tackling!  The test failures may be flickers, as several ruby versions passed, though do you have any reference for whether this change should always work for all primary keys, id and non-id?  I thought it would be harder to fix than this, but glad it wasn't.  Maybe we can add a spec showing both an id key relation and a non-id primary key relation both working just to document both work.  Thanks for tackling this @everett-wetchler !

Happy to help @bglusman
The tests in spec/dynamoid/persisence_spec.rb do use some models with id primary keys as well as Magazine which I added a non-id primary key to in app/models/magazine.rb. Could you help me understand what other test you had in mind?

Please rebase on latest master - Spec suite is fixed!!!

Done

Coverage increased (+0.002%) to 95.504% when pulling 8a984334a38c9a5bb536fff1749a94aeaf6dbe0c on everett-wetchler:master into 56e09f8c2ce8734e56e7f99ecccd51a8e3ba2137 on Dynamoid:master.

Was about to merge this in but realized I never responded to @everett-wetchler's question, I think if there are tests covering both use cases that's sufficient, though I'm tempted to bring them together in a single file to make clear they're both supported...  what do you think @pboling, merge as is or any better spec/documentation to add for this?

I am ambivalent about if they are in the same file, though it would be nice.  I don't really have an opinion on splitting specs into many files per use case and combining related scenarios.

Unless there's a strong opinion I'd prefer to go ahead and merge as is.


Getting Started => Documentation link on Docker hub not working

Bug description
The "Documentation" link under "Getting Started" on the "Docker Hub" isn't working: https://hub.docker.com/r/portainer/portainer
Expected behavior
I expect to be pointed to https://documentation.portainer.io/ (or perhaps legacy docs), however I get send to the old https://www.portainer.io/documentation/
Portainer Logs
N/A
Steps to reproduce the issue:

Go to https://hub.docker.com/r/portainer/portainer
Click on "Documentation" in the "Getting Started" section

Technical details:
N/A
Additional context
Edit: Actually, same goes for the FAQ link in the Getting Help section. Points to the same URL, not sure where that should point to now.

I've updated the links in that repository.
Please not that this repository is archived, you should use https://hub.docker.com/repository/docker/portainer/portainer-ce instead.


pull request for e2e test at 01/04/2017 14:45:11

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


how to make my personal ai chatbot now with this grok

i have a normal Game PC , can i make it and how to make it

It is not suitable for personal computers, because at least 8 GPUs are needed.
#183

H100 SXM5 NVLink GPU x 8
$34,000.00 each ($272,000.00)
AMD<PHONE_NUMBER>02 EPYC 9124 Genoa 9004 Series 16-core 3 GHz Server Processor × 2
$1,111.00 each (2,222.00)
24 x 64GB DDR5 4800 ECC Reg Server Compatible Memory Kit (1.5TB Total)
$8,280.00
Micron MTFDKCB960TFR-1BC1ZABYYR 7450 PRO 960 GB Solid State Drive - 2.5" Internal - U.3 (PCI Express NVMe 4.0 x4) - Read Intensive - TAA Compliant
$142.00 each
total $297,019.00 (without station/power units)


Error on attempting to preprocess data leads to multiple preprocessed files

Upon attempting to process data for study 10297 I got this opaque error:
failed: u'0b0d0464-272e-4b76-adde-5f4c4536ce59': (<type 'exceptions.KeyError'>, KeyError(u'0b0d0464-272e-4b76-adde-5f4c4536ce59',), <traceback object at 0x17934fc8>)
I got very similar messages while trying to preprocess data for study 10299. I messed with the parameters and files and tried again several times getting the same error. A few hours later I checked back and had several prepocessed files, even though I got a failure message each time I tried. I deleted the extras and tried to process the data and got this:
Status: failed: u'a3a5b08e-86ad-4aeb-a73d-3b7766fefba6': (<type 'exceptions.KeyError'>, KeyError(u'a3a5b08e-86ad-4aeb-a73d-3b7766fefba6',), <traceback object at 0x4f70878>)
I don't want to try to process it again in case it's just going to create multiple jobs again, but I don't know if it'll work either.
Also, as an aside, are you folks still monitoring<EMAIL_ADDRESS>It's the place your documentation sends me, but I don't know if that's the best way to ask questions.
Thanks,
Zac

Thanks for the report, we are already investigating and yes we are still monitoring that account.

The system has been restarted and you shouldn't get that error ...


BGV noise budget

Hello,
In SEAL the function invariant_noise_budget is supported for both BFV and BVG, but for BGV I just want to know if an analogous of invariant_noise_budget is used ? also I got the same noise budget for freshly encrypted ciphertexts for both schemes under the same parameters configuration, is that expected ? can I have a brief explanation of that ? because I think it is unexpected for the noise budget to be the same since noise behavior of the schemes is bit different during evaluation
Thanks,

That's because the two schemes are fundamentally identical, they only differ by their encoding and tensoring operation. So until you do a multiplication, the noise budget between the two schemes will remain the same.

The same method is used for both schemes: Decryptor::invariant_noise_budget: log(norm) - log(plaintext) - 1 = log(norm/2)`.

actually the method you mentioned looks more promising for computing noise budget , but when I was looking at the code in Decryptor::invariant_noise_budget I couldn't figure out where plaintext is used, what I understood is that noise_poly is computed as dot product of ciphertext and secret key s  then in case of BGV it is used directly whereas in BFV the polynomial is multiplied by plain_modulus because of scaling factor delta .. the final value computed is equal to log(q)-log(norm(noise_poly))-1  . in overall I can see that they are computed in the same way with a slight adaptation in case of BFV.


Opening an app within special workspace glitches it out

Already reported ? *

[X] I have searched the existing open and closed issues.

Regression?
No
System Info and Version
 System/Version info
Using today's latest Nix flake.
❯ hyprctl systeminfo
Hyprland, built from branch  at commit  dirty ().
Date:
Tag: , commits:

flags: (if any)

System Information:
System name: Linux
Node name: milaptop
Release: 6.9.3-zen1
Version: #1-NixOS ZEN SMP PREEMPT_DYNAMIC Tue Jan  1 00:00:00 UTC 1980

GPU information:
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 620 [8086:5917] (rev 07) (prog-if 00 [VGA controller])

os-release: ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.05.20240606.9b5328b"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.05 (Uakari)"
SUPPORT_END="2024-12-31"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.05 (Uakari)"
VERSION_CODENAME=uakari
VERSION_ID="24.05"

plugins:

Description
When I go to special workspace and launch some app with rule to open it in special workspace, this will glitch it out, making the workspace to completely disappear. You have to cycle togglespecialworkspace and upon return workspace appears normally with the app you've launched.
This also reproduces if you have telegram opened in special workspace and click on any media, which opens in a new window.
How to reproduce

Add this, or similar config:

bind = SUPER SHIFT, S, exec, kitty -o term=xterm-kitty --class spotify_player -e spotify_player
windowrulev2 = workspace special, class:^(spotify_player)$

Go to special workspace (togglespecialworkspace)
Execute keybind to launch the app
Special workspace visually completely disappears, but, apparently, you're still in there
Cycle togglespecialworkspace to return to special and finally see the launched app.

OR

Move Telegram to special workspace
Click on any media, which opens in separate window

Crash reports, logs, images, videos
hyprland.conf.txt

workspace special silent?

Thanks! silent finally made it function properly, when I call the app from the special itself.
But now, when I launch apps from other workspaces, they won't open special workspace and launch silently (duh).
Looks like now I have to implement some conditional logic to use silent or not, depending on current workspace.
Overall, this is a rather strange behavior, unique to special workspaces. I can't reproduce anything like this with regular workspaces, as I'm able to launch apps from anywhere to any destination.

nah, this is a bug, I just offered a quick solution

cant repro on git

No longer reproducible for me, too. Must be something in scope of upgrade to 24.11 NixOS. My hyprland experience overall is way more smooth and stable now. Probably something was messed up in my previous config or previous OS release.
Let's close this!


[Bug]: pg_basebackup returning cannot read pg_class without having selected a database

What happened?
After building and initialising PostgreSQL modified for babel fish, I am trying to create a cluster setup containing a primary and a replica node. I am able to successfully bring up the Primary instance. But creating a replica on the secondary node using pg_basebackup returns the error:
pg_basebackup: error: FATAL: cannot read pg_class without having selected a database
Version
BABEL_3_X_DEV (Default)
Extension
babelfishpg_tsql (Default)
Which flavor of Linux are you using when you see the bug?
Ubuntu (Default)
Relevant log output
pg_basebackup: error: FATAL: cannot read pg_class without having selected a database

Code of Conduct

[X] I agree to follow this project's Code of Conduct.

@ahish-mahesh Can you please share the exact pg_basebackup command you are running to better understand the issue? Additionally, if you are using Amazon aurora PostgreSQL, then it's better to reach-out through AWS customer support.

This problem breaks make check-world test suite runs, the first pg_basebackup invocation there fails like this:
# Taking pg_basebackup brinbkp from node "whiskey"
# Running: pg_basebackup -D /[...]/postgresql_modified_for_babelfish/src/test/modules/brin/tmp_check/t_02_wal_consistency_whiskey_data/backup/brinbkp -h /tmp/9o2CFKb2jG -p 49703 --checkpoint fast --no-sync
pg_basebackup: error: connection to server on socket "/tmp/9o2CFKb2jG/.s.PGSQL.49703" failed: FATAL:  cannot read pg_class without having selected a database
[22:22:04.944](0.011s) Bail out!  command "pg_basebackup -D /[...]/postgresql_modified_for_babelfish/src/test/modules/brin/tmp_check/t_02_wal_consistency_whiskey_data/backup/brinbkp -h /tmp/9o2CFKb2jG -p 49703 --checkpoint fast --no-sync" exited with value 1

The problem happens when babelfishpg_tsql library is being loaded on backend initialization. I assume it is not necessary to load it for pg_basebackup calls, will submit a PR.


Content suggestion

I'd like more information on designing user interfaces, and how this works with Xcode. Some examples of creating an app using Interface Builder would be great. I get no sense how a control I add in Interface Builder would be referenced from my C# code? Thanks!

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

ID: 1535449d-101b-e535-5b85-6c0417096760
Version Independent ID: 8c6a261b-6b1f-cb9b-7901-1f19bde005b6
Content: Introducing Visual Studio for Mac - Visual Studio for Mac
Content Source: mac/index.md
Product: visual-studio-mac
GitHub Login: @conceptdev
Microsoft Alias: crdun

Designing iOS apps is covered in the Xamarin documentation, starting with the ios user interfaces section, ios storyboards, and for Mac development, xib files in Xcode.
In general we recommend the iOS Designer built in to Visual Studio for Mac for iOS, and for macOS apps you use Xcode.

And that's exactly the kind of thing I would like to see referenced from here. Thank you.


[Dashboard] GitHub emojis are not rendered in Dev Home widgets

Dev Home version
No response
Windows build number
No response
Other software
No response
Steps to reproduce the bug
Description
for example in GitHub, repos use the string ":mag:" to represent the magnifying glass emoji 🔍
this is not properly rendered in the widgets, instead the string :mag: is shown
Expected result
No response
Actual result
No response
Included System Information
No response
Included Extensions Information
No response

@mathewleeza ?

Looks like this is fixed


Alternate Layout

separate layout for login and logged-in pages

superceded by plans for v3 release. no longer current issue.


(PUP-1559) Ensure ADSI Group SIDs may be looked up

Previously, calling Puppet::Util::ADSI::Group.exists? for a
well-known group SID would return false, because the WinNT:// style
URI used to find the group would not examine / lookup the SID, but
would instead create a broken Uri that the underlying OS could not
understand
Now, the given group name is checked to see if it's a SID before the
Uri is constructed, and a SID style Uri is created where appropriate

not stable?

This code works, but the calls to exists? is actually incorrect, and only works by accident.  When a SID is passed into self.uri, the Win32::Security::SID initializer is called, which handles it with LookupAccountSid API.  If the SID is valid, the object is constructed, else it returns nil, and a URI cannot be generated.
However, the URI generated is not correct for detecting whether a group or user exists.  Calling WIN32OLE.connect('WinNT://<SID>') will always return an object implementing IADs, regardless of the validity of <SID> - the moniker is always treated as a domain lookup.  The object returned implements a property .Class which is set to "Domain".
This will be fixed in #4564


0.2.2 dev - incorporating plotting alterations

Had to make some amendments to ensure PR#105 and PR#112 can be merged appropriately

See notes/discussion in #105. This PR fixes #104.

Looks good to me, thanks @JimCircadian.
(Have tried icenet_sic_plot_error_local, but not all of the commands that this PR potentially affects.)

Got a slack from Ryan, merging 😄


feature/mx-1470 Ensure correct types

ensure correct types for helper extract function in ldap and organigram
fix tiny issue with pandas not parsing str subclasses with resolution
upgrade to pydantic 2.5
remove mypy-extensions dependency
upgrade all other dependencies
add yaml-checker pre-commit (for .github folder)

Fix one typo and we are ready to merge: ae2a797#r133237237

fixed 16cd80e


🐛 BUG: Node(windows 10 laptop not lighthouse) continuously receiving the following information

What version of nebula are you using?
1.8.1
What operating system are you using?
windows 10 ,11
Describe the Bug
evertime i start nebula(windows 10 ,11)
it will continuously receiving:
level=info msg="Handshake timed out" durationNs=6615700 handshake="map[stage:1 style:ix_psk0]" initiatorIndex=1718 localIndex=178 remoteIndex=0 udpAddrs="[]" vpnIp=10..**.255
i didnt sign the node 10...255  ,  and also i didnt ping 10...255 ,
every node(not lighthouse) has the sam wrong msg
(But it did not affect normal use, and communication between true nodes could also be normal)
Logs from affected hosts
no important
Config files from affected hosts
pki:
ca:  /ca.crt
cert:  /host.crt
key:  /host.key
static_host_map:
lighthouse:
am_lighthouse: false
interval: 60
hosts:
listen:
host: "::"
port: 0
punchy:
punch: true
cipher: aes
relay:
am_relay: false
use_relays: false
tun:
disabled: false
dev: nebula1
drop_local_broadcast: false
drop_multicast: false
tx_queue: 500
mtu: 1300
routes:
unsafe_routes:
logging:
level: info
format: text
firewall:
outbound_action: drop
inbound_action: drop
conntrack:
tcp_timeout: 12m
udp_timeout: 3m
default_timeout: 10m
outbound:
- port: any
proto: any
host: any
inbound:
- port: any
proto: any
host: any

This is likely some service discovery mechanism that is probing the nebula mesh. You can make this change to your config and it should stop.
tun:
  drop_local_broadcast: true
  drop_multicast: true

Thank you! After modifying the node config according to your suggestion, I did not receive any more msg from 10... 255.
Should i modify then lighthouse's confi ?
and can you tell me what these two modifications represent and whether they will affect Nebula's own functionality?


committing "make proto" and "make proto-vendor" and pillar changes to handle new GO API for Protobuf

Recent updates to go build infra brought in the new GO API for protobuf:
https://blog.golang.org/protobuf-apiv2
This changed the generated go code for proto structures to have a mutex. So we cannot pass these as value types.
Ex: utils/cipherutils.go:29:61: call of handleCipherBlockCredError copies lock value: github.com/lf-edge/eve/api/go/config.EncryptionBlock contains google.golang.org/protobuf/internal/impl.MessageState contains sync.Mutex
utils/cipherutils.go:55:23: return copies lock value: github.com/lf-edge/eve/api/go/config.EncryptionBlock contains google.golang.org/protobuf/internal/impl.MessageState contains sync.Mutex
cmd/domainmgr/domainmgr.go:1919:9: range var phyAdapter copies lock: github.com/lf-edge/eve/pkg/pillar/types.PhysicalIOAdapter contains github.com/lf-edge/eve/api/go/config.PhyIOUsagePolicy contains google.golang.org/protobuf/internal/impl.MessageState contains sync.Mutex
Merging up the new generated go files, vendored them in as well as fixing pillar accordingly.

@kalyan-nidumolu can you please add @zed-rishabh to this review, he is the right person to review cipherutils.go changes

@kalyan-nidumolu can you please add @zed-rishabh to this review, he is the right person to review cipherutils.go changes

For some reason, zed-rishabh is now showing up as user - neither does naiming..

+Rishabh
Hi Rishabh,
Can you please review this PR?
Thanks
Hari

On 22-Apr-2020, at 4:03 PM, kalyan-nidumolu<EMAIL_ADDRESS>wrote:
@kalyan-nidumolu https://github.com/kalyan-nidumolu can you please add @zed-rishabh https://github.com/zed-rishabh to this review, he is the right person to review cipherutils.go changes
For some reason, zed-rishabh is now showing up as user - neither does naiming..
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub https://github.com/lf-edge/eve/pull/904#issuecomment-617694871, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALXSTFPG4NLCLJQ4VUZBJULRN3BWHANCNFSM4MOASPNA.

+Rishabh Hi Rishabh, Can you please review this PR? Thanks Hari
…
On 22-Apr-2020, at 4:03 PM, kalyan-nidumolu @.***> wrote: @kalyan-nidumolu https://github.com/kalyan-nidumolu can you please add @zed-rishabh https://github.com/zed-rishabh to this review, he is the right person to review cipherutils.go changes For some reason, zed-rishabh is now showing up as user - neither does naiming.. — You are receiving this because your review was requested. Reply to this email directly, view it on GitHub <#904 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALXSTFPG4NLCLJQ4VUZBJULRN3BWHANCNFSM4MOASPNA.

 When I enter his name in reviewers, he doesn't show up. Same with Naiming.. we need naiming to review as well.

+Rishabh Hi Rishabh, Can you please review this PR? Thanks Hari
…
On 22-Apr-2020, at 4:03 PM, kalyan-nidumolu @.***> wrote: @kalyan-nidumolu https://github.com/kalyan-nidumolu can you please add @zed-rishabh https://github.com/zed-rishabh to this review, he is the right person to review cipherutils.go changes For some reason, zed-rishabh is now showing up as user - neither does naiming.. — You are receiving this because your review was requested. Reply to this email directly, view it on GitHub <#904 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALXSTFPG4NLCLJQ4VUZBJULRN3BWHANCNFSM4MOASPNA.

 When I enter his name in reviewers, he doesn't show up. Same with Naiming.. we need naiming to review as well.

@kalyan-nidumolu, I replied to the review email, after including @zed-rishabh  in the "To" list.

Just one nit. LGTM cipherutil changes.


Run a Prometheus pushgateway for ephemeral jobs.

Surprisingly, kube-prometheus-stack doesn't include pushgateway 🤷
(It's not ideal that we're managing these things via Terraform, but it's probably less confusing to keep pushgateway alongside the rest of the Prometheus components for now until we move it all to Argo CD.)

That was quick, thanks!


Library lacks Read methods

Hi,
Various parts of this library allow you to Create, Update, and Delete objects via the API. However, they do not allow you to Read the objects back. Examples of this would be the accesskeys and entitlements implementations.  This severely limits this libraries use.
There are Show methods, but they make the odd choice (considering this is a library) to dump JSON to stdout instead of returning the object to the caller.
Without the Read methods, it is difficult for a user of the library to know if an object exists before trying to Create or Update it, etc, unless they re-implement chunks of the API to fetch them object themselves.
This issue should be considered a feature request to add the missing Read methods.
Thanks.

@phyber - you are correct.
The methods which write JSON output should not be part of this library and we intend to replace them with methods which return structs.


Hash and Eq traits for Value and Float

Background
We would like to be able to hash an slvm::Value.
Float is one of the variants of Value so our Float has to also implement Eq and Hash for Value to be hashable.
primitive floats don't implement Eq because NaN != NaN, which also prevents them from implementing Hash.
General programming consensus is to avoid hashing floats because float values that 'feel' like they are equal won't hash to the same value if they are just very close like 4.00000000000000 and 4.000000000000001.
Reference Previous discussion from the F56 PR if necessary
Option 0
give up on hashing Values
Option 1
Have Float pretend to implement Eq and Hash, but prevent any Float hashing.
This allows Float to behave like a primitive where NaN != NaN and 4.00000000000000 != 4.000000000000001
And it allows Value to implement Hash and Eq
We just have to make sure we never actually try to hash our Float. We can enforce this with lisp errors or rust panicking.
Option 2
Have Float legitimately implement Eq and Hash
Float behavior may surprise you with NaN == NaN and equality rounds to nearest multiple of F56::EPSILON.
Note that you can still have two numbers right next to each other that aren't equal because they are halfway between two of these multiples.
This nonstandard behavior won't affect the vm instructions if we modify is_equal_pair in vm.rs
Allow Value to implement Hash and Eq

I'm sure I missed some things so just let me know and I'll try to edit the original post to keep it organized.

related:
https://github.com/sl-sh-dev/sl-sh/pull/129


Flow reports implicitly returned undefined even when not possible

I keep running into more complex version of this example code fairly often:
/* @flow */

const exmpl = (input:number):number => {
  while (true) {
    switch (input) {
      case 0:
        return input
      default:
        return 0
    }
  }
}

Which flow fails to type check with a following error:
3: const exmpl = (input:number):number => {
                                ^ number. This type is incompatible with an implicitly-returned undefined.

Most likely flow is failing to infer that while block will ever be executed. I am not sure how difficult would it be make flow type check this code, but either way it would really help if flow provided a hint on why it assumes implicitly returned undefined something, telling user that while block may never run would greatly improve usability.

Any reference to how this can be solved? Thanks!

A workaround is to explicitly throw or return after the while loop.


Missing bindings for GLib.Variant

A full sweep is probably needed to make sure there are bindings for all the variant types, but the ones I found porting Pinta were:

bool types: need Variant.Create(bool) and bool GetBool()
more predefined VariantType constants would be convenient, currently only "s" and "v" have named constants
dictionary types: the "a{sv}" variant type mapping strings to variants. It's only possible currently to construct an empty one via Variant.CreateEmptyDictionary()

@cameronwhite: I wonder if there should be more VariantType constants or if they should be removed altogether as those are only convenience. If the API is getting generated a user can create every type he wants to via a string. E.g.: VariantType.New("i");

I think at least some sort of constant is useful so that it's more discoverable - otherwise you have to look up the GTK docs to find the right string to use and might make a typo

With constant you mean a string constant?
So you write: VariantType.New(VariantType.String?
We could have a static method instead:
VariantType.GetString()
Or a static property:
VariantType.String
I think I would avoid caching a lot of instances.
What do you think of implementing a custom equality so that two VariantTypes are equal if they represent the same type (e.g. via type_equal?

I think a separate build class is probably fine too, that also makes it more clearly separated as a convenience on top of the actual GTK API


Use gh action ci cd

Here is the long ago promised PR to change the CI-CD from travis to github actions.
As mentioned in #341 I also implemented some other tooling changes:

Added pre-commit
Added autoformatting with black via pre-commit
Changed flake8 linting to run via pre-commit
Added tools to check *.rst files
Changed test runner to be pytest
Changed structure of tests, now the tests structure mirrors the structure of the project (IMHO makes it much easier to find the tests you are looking for)
Changed contributing documentation to reflect changed tooling

Looking at some changes black made (e.g. for holidays/countries/hongkong.py), maybe a different formatter which is more configurable (e.g. yapf) would be better suited for this project.
For the CD to work you need to get an API token from pypi and set it a secret called pypi_password (see)
After that, you can simply run
$ bump2version major|minor|patch
$ git push --follow-tags

And the release is on its way ^^

Here is a demo how the checks in a PR would look like with GH actions.
And here is a demo of what the formatting could look like with yapf.
yapf can also be configured to ignore code blocks e.g. if you have a table formatted list.

Hey there @s-weigand great job! Sorry for being so late in answering: no time available in the recent past.
I've just started over with the new beta 0.10.5: I'll be analyzing your work in these days, and then let you know.
Thank you very much, KUTGW! 👍

Hey there @s-weigand great job! Sorry for being so late in answering: no time available in the recent past.
I've just started over with the new beta 0.10.5: I'll be analyzing your work in these days, and then let you know.
Thank you very much, KUTGW! 👍

Hi @s-weigand ,
at last!
I could merge your brilliant work in the current beta status.. it required some fine tuning / fixes in order to run properly in fact, sometimes due to my (quite long, my bad!) last updates backlog.
At the moment, I've pushed it to "unstable" branch in order to complete all the final tests. Then if everything fine we'll move to beta, and then master, when a new version will be released.
Would you please take a look and confirm everything is fine?
And, again, thank you very much for your outstanding work! 👍

Sorry for the massive PR, I recently also had to review a PR of this size and it gets quite unhandy. 😓
Looking back I should better have split it up in at least a pytest and 'rest' PR.
Anyway glad you like the changes 😄

I just ran the test suites

beta 'Ran 587 tests'
unstable 'collected 573 items'
So it looks like those did diverge and IMHO the easiest way (already did a rebase once) to fix this is redoing the splitting up of test.py.

What do you think about me splitting this monster of a PR up to some smaller ones that are easier to review? 😄
Maybe leaving out the formatter for now, so you can have a look if yapf would be a better choice.
Due to the nature of this project, it contains a lot of data structures, where IMHO black hurt the readability with its opinionated formatting.

I made a separate PR for changing the tests to pytest #438 , with that the amount of tests is in sync 😄

Hey there @s-weigand , I think you caught me wrong .. I've already merged all of this PR on branch "unstable" (which you first should pull from), so no need to re-do it in parts.. sorry for your additional work! :-/
At the moment I'm in the phase of integrating the old test structure with your new one, in order to remove test duplications and temporarily keep travis aligned (still to be completely removed as a next task).
This given, there's still sth failing in the github actions build.. I'm going to investigate that too, but if you could help me in it, I would really appreciate :-)
If I come to a fix I'll update you here, thx! 👍

@dr-prodigy in https://github.com/dr-prodigy/python-holidays/pull/404#issuecomment-782844414 I was talking about the "unstable".
I pulled your versions of beta + unstable and ran pytest. The problem is that already the amount of tests mismatched (587 for beta and 573 for unstable).
The problem with this PR is that it touched too many files (tests + holiday source) and once some merges get in between and it is out of sync it is virtually impossible (at last very exhausting) to sync all the diffs again w/o regression.
This is why I opened #438, so to say a start with a clean slate (HEAD of beta) for the pytest transition since the worst-case scenario would be that a test class is in the wrong file.
IMHO splitting up the PR and taking one step at a time would be the cleanest approach since I just copy-pasted test classes from tests.py to a corresponding file and additions in the holidays package can't get lost since those files weren't touched anyway.
I feel sorry for us both, having done extra work, just cause past me got a bit overexcited and wanted to do too many things in one PR 😓

About the error with github action build, this is due to a new release of coveralls which needs an extra flag to play nicely with gh-actions see https://github.com/dr-prodigy/python-holidays/pull/440/commits/8946f01c8d57e78c1ffeb29d8f5f5489ae112629

Oh, and btw if you want to make small changes on top of any of PR's (e.g. README change in 1774c255b9f219a676d601321e97cb5238c7abe0 for #438) my PR's are set to allow commits to it.

Hi @s-weigand at the moment in "unstable" you'll find a quite valid situation, successfully building, and with successfully merged tests, ie:

removed all original tests from tests.py
imported your test classes from there
reviewed test_holiday_base.py adding all code for holiday base testing, previously available in tests.py

What is not clear to me is why the coverage is not 100% anymore:
---------- coverage: platform darwin, python 3.8.0-final-0 -----------
Name                                          Stmts   Miss Branch BrPart  Cover
holidays/constants.py                             3      0      0      0   100%
holidays/countries/init.py                   70      0      0      0   100%
holidays/countries/angola.py                     49      0     24      2    97%
holidays/countries/argentina.py                  74      0     30      0   100%
holidays/countries/aruba.py                      38      0     12      0   100%
holidays/countries/australia.py                 162      0    120      1    99%
holidays/countries/austria.py                    32      0      4      0   100%
holidays/countries/bangladesh.py                 19      0      0      0   100%
holidays/countries/belarus.py                    27      0      4      0   100%
holidays/countries/belgium.py                    27      0      0      0   100%
holidays/countries/brazil.py                    105      0     54      0   100%
holidays/countries/bulgaria.py                   30      0      2      0   100%
holidays/countries/burundi.py                    55      0     18      0   100%
holidays/countries/canada.py                    152      0    114      4    98%
holidays/countries/chile.py                      73      0     30      2    98%
holidays/countries/colombia.py                   73      0     26      0   100%
holidays/countries/croatia.py                    34      0      8      0   100%
holidays/countries/czechia.py                    44      0     20      7    89%
holidays/countries/denmark.py                    26      0      0      0   100%
holidays/countries/djibouti.py                   39      0     10      0   100%
holidays/countries/dominican_republic.py         39      0      6      1    98%
holidays/countries/egypt.py                      50      0     18      3    96%
holidays/countries/estonia.py                    27      0      0      0   100%
holidays/countries/european_central_bank.py      21      0      0      0   100%
holidays/countries/finland.py                    30      0      0      0   100%
holidays/countries/france.py                     66      0     44      6    95%
holidays/countries/germany.py                    57      0     32      0   100%
holidays/countries/greece.py                     26      0      0      0   100%
holidays/countries/honduras.py                   66      0     34     16    84%
holidays/countries/hongkong.py                  184      0     74      1    99%
holidays/countries/hungary.py                    57      0     34      0   100%
holidays/countries/iceland.py                    30      0      0      0   100%
holidays/countries/india.py                      63      0     38      2    98%
holidays/countries/ireland.py                    49      5     24      7    84%
holidays/countries/israel.py                     78      0     16      1    99%
holidays/countries/italy.py                     109      0     84      0   100%
holidays/countries/japan.py                     124      0     92      5    98%
holidays/countries/kenya.py                      27      0      4      0   100%
holidays/countries/korea.py                     116      0     34      2    99%
holidays/countries/latvia.py                     32      0      8      4    90%
holidays/countries/lithuania.py                  33      0      8      3    93%
holidays/countries/luxembourg.py                 26      0      2      1    96%
holidays/countries/malawi.py                     36      0     10      2    96%
holidays/countries/mexico.py                     61      0     36      0   100%
holidays/countries/morocco.py                    49      0     20      2    97%
holidays/countries/mozambique.py                 36     23     10      0    28%
holidays/countries/netherlands.py                41      0     14      0   100%
holidays/countries/new_zealand.py               146      0     86      0   100%
holidays/countries/nicaragua.py                  30      0      6      3    92%
holidays/countries/nigeria.py                    19      0      0      0   100%
holidays/countries/norway.py                     52      0      6      0   100%
holidays/countries/paraguay.py                   59      0     22      0   100%
holidays/countries/peru.py                       35      0      0      0   100%
holidays/countries/poland.py                     37      0      8      4    91%
holidays/countries/portugal.py                   42      0      2      1    98%
holidays/countries/romania.py                    30      0      8      0   100%
holidays/countries/russia.py                     28      0      2      0   100%
holidays/countries/saudi_arabia.py               62     48     32      0    15%
holidays/countries/serbia.py                     40      0      8      0   100%
holidays/countries/singapore.py                 115      0     46      1    99%
holidays/countries/slovakia.py                   39      0      6      3    93%
holidays/countries/slovenia.py                   32      0      6      1    97%
holidays/countries/south_africa.py              113      0     72      1    99%
holidays/countries/spain.py                      86      0     58      0   100%
holidays/countries/sweden.py                     65      0     14      0   100%
holidays/countries/switzerland.py                64      0     40      1    99%
holidays/countries/turkey.py                     33      0      6      1    97%
holidays/countries/ukraine.py                    65      0     44      2    98%
holidays/countries/united_arab_emirates.py       81      0     38      1    99%
holidays/countries/united_kingdom.py            174      3    114      6    97%
holidays/countries/united_states.py             336      0    288      1    99%
holidays/countries/vietnam.py                    49      0     12      2    97%
holidays/holiday_base.py                        163      0     88      0   100%
holidays/utils.py                                26      6     14      0    70%
TOTAL                                          4686     85   2144    100    97%
Did you modify test classes code prior to moving to the new test class files?
Would you please double-check?
Thx

PS: before rolling back everything and re-applying fixes again, one by one (which I'm not sure I'll be able to process soon :-/ ), I'd like you to check this last version.. theoretically restoring the right tests should bring us back to 100% coverage.
PPS: about formatting etc., I understand your point and agree, but at the moment I think we can live with that. But thank you for pointing it out.
Pls let me know, thank you very much

I didn't modify the test classes, but only copied them to different files.
But this PR is based on a5eb566cab72c360e7413391a67997ab87cfccd6 and since then about 26 commits were added to the current beta ff1a39cfae1b58121f6a999033b0771e8bdac469, which is why this PR has outdated tests and holiday code.
That said I can confirm the 97% on unstable d4fa42492f5fcdc5c837043f6644e56b33bf1df0, but on the branch for #438 8ca6ee00f3c2b9a216744fafce7fc43b29e90fc2 I get 99%:

pytest results for #438, branch = true
----------- coverage: platform win32, python 3.7.6-final-0 -----------
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
__init__.py                                       0      0      0      0   100%
holidays\constants.py                             3      0      0      0   100%
holidays\countries\__init__.py                   70      0      0      0   100%
holidays\countries\angola.py                     49      0     24      2    97%
holidays\countries\argentina.py                  74      0     30      0   100%
holidays\countries\aruba.py                      38      0     12      0   100%
holidays\countries\australia.py                 162      0    120      1    99%
holidays\countries\austria.py                    32      0      4      0   100%
holidays\countries\bangladesh.py                 19      0      0      0   100%
holidays\countries\belarus.py                    27      0      4      0   100%
holidays\countries\belgium.py                    27      0      0      0   100%
holidays\countries\brazil.py                    105      0     54      0   100%
holidays\countries\bulgaria.py                   30      0      2      0   100%
holidays\countries\burundi.py                    55      0     18      0   100%
holidays\countries\canada.py                    152      0    114      4    98%
holidays\countries\chile.py                      73      0     30      2    98%
holidays\countries\colombia.py                   73      0     26      0   100%
holidays\countries\croatia.py                    34      0      8      0   100%
holidays\countries\czechia.py                    44      0     20      7    89%
holidays\countries\denmark.py                    26      0      0      0   100%
holidays\countries\djibouti.py                   39      0     10      0   100%
holidays\countries\dominican_republic.py         39      0      6      1    98%
holidays\countries\egypt.py                      50      0     18      3    96%
holidays\countries\estonia.py                    27      0      0      0   100%
holidays\countries\european_central_bank.py      21      0      0      0   100%
holidays\countries\finland.py                    30      0      0      0   100%
holidays\countries\france.py                     66      0     44      6    95%
holidays\countries\germany.py                    57      0     32      0   100%
holidays\countries\greece.py                     26      0      0      0   100%
holidays\countries\honduras.py                   66      0     34     16    84%
holidays\countries\hongkong.py                  184      0     74      1    99%
holidays\countries\hungary.py                    57      0     34      0   100%
holidays\countries\iceland.py                    30      0      0      0   100%
holidays\countries\india.py                      63      0     38      2    98%
holidays\countries\ireland.py                    49      0     24      1    99%
holidays\countries\israel.py                     78      0     16      1    99%
holidays\countries\italy.py                     109      0     84      0   100%
holidays\countries\japan.py                     124      0     92      5    98%
holidays\countries\kenya.py                      27      0      4      0   100%
holidays\countries\korea.py                     116      0     34      2    99%
holidays\countries\latvia.py                     32      0      8      4    90%
holidays\countries\lithuania.py                  33      0      8      3    93%
holidays\countries\luxembourg.py                 26      0      2      1    96%
holidays\countries\malawi.py                     36      0     10      2    96%
holidays\countries\mexico.py                     61      0     36      0   100%
holidays\countries\morocco.py                    49      0     20      2    97%
holidays\countries\mozambique.py                 36      0     10      2    96%
holidays\countries\netherlands.py                41      0     14      0   100%
holidays\countries\new_zealand.py               146      0     86      0   100%
holidays\countries\nicaragua.py                  30      0      6      3    92%
holidays\countries\nigeria.py                    19      0      0      0   100%
holidays\countries\norway.py                     52      0      6      0   100%
holidays\countries\paraguay.py                   59      0     22      0   100%
holidays\countries\peru.py                       35      0      0      0   100%
holidays\countries\poland.py                     37      0      8      4    91%
holidays\countries\portugal.py                   42      0      2      1    98%
holidays\countries\romania.py                    30      0      8      0   100%
holidays\countries\russia.py                     28      0      2      0   100%
holidays\countries\saudi_arabia.py               62      0     32      0   100%
holidays\countries\serbia.py                     40      0      8      0   100%
holidays\countries\singapore.py                 115      0     46      1    99%
holidays\countries\slovakia.py                   39      0      6      3    93%
holidays\countries\slovenia.py                   32      0      6      1    97%
holidays\countries\south_africa.py              113      0     72      1    99%
holidays\countries\spain.py                      86      0     58      0   100%
holidays\countries\sweden.py                     65      0     14      0   100%
holidays\countries\switzerland.py                64      0     40      1    99%
holidays\countries\turkey.py                     33      0      6      1    97%
holidays\countries\ukraine.py                    65      0     44      2    98%
holidays\countries\united_arab_emirates.py       81      0     38      1    99%
holidays\countries\united_kingdom.py            144      0     90      3    99%
holidays\countries\united_states.py             336      0    288      1    99%
holidays\countries\vietnam.py                    49      0     12      2    97%
holidays\holiday_base.py                        163      0     88      0   100%
holidays\utils.py                                19      0      8      0   100%
-------------------------------------------------------------------------------
TOTAL                                          4649      0   2114     93    99%
Coverage XML written to file coverage.xml

========================================= 587 passed in 58.79s =========================================

pytest results for `beta` branch = true
----------- coverage: platform win32, python 3.7.6-final-0 -----------
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
__init__.py                                       0      0      0      0   100%
holidays\constants.py                             3      0      0      0   100%
holidays\countries\__init__.py                   70      0      0      0   100%
holidays\countries\angola.py                     49      0     24      2    97%
holidays\countries\argentina.py                  74      0     30      0   100%
holidays\countries\aruba.py                      38      0     12      0   100%
holidays\countries\australia.py                 162      0    120      1    99%
holidays\countries\austria.py                    32      0      4      0   100%
holidays\countries\bangladesh.py                 19      0      0      0   100%
holidays\countries\belarus.py                    27      0      4      0   100%
holidays\countries\belgium.py                    27      0      0      0   100%
holidays\countries\brazil.py                    105      0     54      0   100%
holidays\countries\bulgaria.py                   30      0      2      0   100%
holidays\countries\burundi.py                    55      0     18      0   100%
holidays\countries\canada.py                    152      0    114      4    98%
holidays\countries\chile.py                      73      0     30      2    98%
holidays\countries\colombia.py                   73      0     26      0   100%
holidays\countries\croatia.py                    34      0      8      0   100%
holidays\countries\czechia.py                    44      0     20      7    89%
holidays\countries\denmark.py                    26      0      0      0   100%
holidays\countries\djibouti.py                   39      0     10      0   100%
holidays\countries\dominican_republic.py         39      0      6      1    98%
holidays\countries\egypt.py                      50      0     18      3    96%
holidays\countries\estonia.py                    27      0      0      0   100%
holidays\countries\european_central_bank.py      21      0      0      0   100%
holidays\countries\finland.py                    30      0      0      0   100%
holidays\countries\france.py                     66      0     44      6    95%
holidays\countries\germany.py                    57      0     32      0   100%
holidays\countries\greece.py                     26      0      0      0   100%
holidays\countries\honduras.py                   66      0     34     16    84%
holidays\countries\hongkong.py                  184      0     74      1    99%
holidays\countries\hungary.py                    57      0     34      0   100%
holidays\countries\iceland.py                    30      0      0      0   100%
holidays\countries\india.py                      63      0     38      2    98%
holidays\countries\ireland.py                    49      0     24      1    99%
holidays\countries\israel.py                     78      0     16      1    99%
holidays\countries\italy.py                     109      0     84      0   100%
holidays\countries\japan.py                     124      0     92      5    98%
holidays\countries\kenya.py                      27      0      4      0   100%
holidays\countries\korea.py                     116      0     34      2    99%
holidays\countries\latvia.py                     32      0      8      4    90%
holidays\countries\lithuania.py                  33      0      8      3    93%
holidays\countries\luxembourg.py                 26      0      2      1    96%
holidays\countries\malawi.py                     36      0     10      2    96%
holidays\countries\mexico.py                     61      0     36      0   100%
holidays\countries\morocco.py                    49      0     20      2    97%
holidays\countries\mozambique.py                 36      0     10      2    96%
holidays\countries\netherlands.py                41      0     14      0   100%
holidays\countries\new_zealand.py               146      0     86      0   100%
holidays\countries\nicaragua.py                  30      0      6      3    92%
holidays\countries\nigeria.py                    19      0      0      0   100%
holidays\countries\norway.py                     52      0      6      0   100%
holidays\countries\paraguay.py                   59      0     22      0   100%
holidays\countries\peru.py                       35      0      0      0   100%
holidays\countries\poland.py                     37      0      8      4    91%
holidays\countries\portugal.py                   42      0      2      1    98%
holidays\countries\romania.py                    30      0      8      0   100%
holidays\countries\russia.py                     28      0      2      0   100%
holidays\countries\saudi_arabia.py               62      0     32      0   100%
holidays\countries\serbia.py                     40      0      8      0   100%
holidays\countries\singapore.py                 115      0     46      1    99%
holidays\countries\slovakia.py                   39      0      6      3    93%
holidays\countries\slovenia.py                   32      0      6      1    97%
holidays\countries\south_africa.py              113      0     72      1    99%
holidays\countries\spain.py                      86      0     58      0   100%
holidays\countries\sweden.py                     65      0     14      0   100%
holidays\countries\switzerland.py                64      0     40      1    99%
holidays\countries\turkey.py                     33      0      6      1    97%
holidays\countries\ukraine.py                    65      0     44      2    98%
holidays\countries\united_arab_emirates.py       81      0     38      1    99%
holidays\countries\united_kingdom.py            144      0     90      3    99%
holidays\countries\united_states.py             336      0    288      1    99%
holidays\countries\vietnam.py                    49      0     12      2    97%
holidays\holiday_base.py                        163      0     88      0   100%
holidays\utils.py                                19      0      8      0   100%
tests.py                                       4841      0    968     23    99%
-------------------------------------------------------------------------------
TOTAL                                          9490      0   3082    116    99%
Coverage XML written to file coverage.xml

==================================== 587 passed in 63.91s (0:01:03) ====================================

For running pytest on beta ff1a39cfae1b58121f6a999033b0771e8bdac469 I used the command pytest tests.py and the config from pyproject.toml, so the results are comparable.
The reason for the coverage on #438 and beta being 99% instead of 100% is due to the coverage settings in pyproject.toml which are set to consider branch coverage (if each case of an if-elif-else case was hit):
[tool.coverage.run]
branch = true

I don't know about you, but I prefer an honest 99% (which is already pretty awesome and rare) over a shiny 100% which doesn't tell the whole truth.

pytest results for `beta`, branch = false
----------- coverage: platform win32, python 3.7.6-final-0 -----------
Name                                          Stmts   Miss  Cover
-----------------------------------------------------------------
__init__.py                                       0      0   100%
holidays\constants.py                             3      0   100%
holidays\countries\__init__.py                   70      0   100%
holidays\countries\angola.py                     49      0   100%
holidays\countries\argentina.py                  74      0   100%
holidays\countries\aruba.py                      38      0   100%
holidays\countries\australia.py                 162      0   100%
holidays\countries\austria.py                    32      0   100%
holidays\countries\bangladesh.py                 19      0   100%
holidays\countries\belarus.py                    27      0   100%
holidays\countries\belgium.py                    27      0   100%
holidays\countries\brazil.py                    105      0   100%
holidays\countries\bulgaria.py                   30      0   100%
holidays\countries\burundi.py                    55      0   100%
holidays\countries\canada.py                    152      0   100%
holidays\countries\chile.py                      73      0   100%
holidays\countries\colombia.py                   73      0   100%
holidays\countries\croatia.py                    34      0   100%
holidays\countries\czechia.py                    44      0   100%
holidays\countries\denmark.py                    26      0   100%
holidays\countries\djibouti.py                   39      0   100%
holidays\countries\dominican_republic.py         39      0   100%
holidays\countries\egypt.py                      50      0   100%
holidays\countries\estonia.py                    27      0   100%
holidays\countries\european_central_bank.py      21      0   100%
holidays\countries\finland.py                    30      0   100%
holidays\countries\france.py                     66      0   100%
holidays\countries\germany.py                    57      0   100%
holidays\countries\greece.py                     26      0   100%
holidays\countries\honduras.py                   66      0   100%
holidays\countries\hongkong.py                  184      0   100%
holidays\countries\hungary.py                    57      0   100%
holidays\countries\iceland.py                    30      0   100%
holidays\countries\india.py                      63      0   100%
holidays\countries\ireland.py                    49      0   100%
holidays\countries\israel.py                     78      0   100%
holidays\countries\italy.py                     109      0   100%
holidays\countries\japan.py                     124      0   100%
holidays\countries\kenya.py                      27      0   100%
holidays\countries\korea.py                     116      0   100%
holidays\countries\latvia.py                     32      0   100%
holidays\countries\lithuania.py                  33      0   100%
holidays\countries\luxembourg.py                 26      0   100%
holidays\countries\malawi.py                     36      0   100%
holidays\countries\mexico.py                     61      0   100%
holidays\countries\morocco.py                    49      0   100%
holidays\countries\mozambique.py                 36      0   100%
holidays\countries\netherlands.py                41      0   100%
holidays\countries\new_zealand.py               146      0   100%
holidays\countries\nicaragua.py                  30      0   100%
holidays\countries\nigeria.py                    19      0   100%
holidays\countries\norway.py                     52      0   100%
holidays\countries\paraguay.py                   59      0   100%
holidays\countries\peru.py                       35      0   100%
holidays\countries\poland.py                     37      0   100%
holidays\countries\portugal.py                   42      0   100%
holidays\countries\romania.py                    30      0   100%
holidays\countries\russia.py                     28      0   100%
holidays\countries\saudi_arabia.py               62      0   100%
holidays\countries\serbia.py                     40      0   100%
holidays\countries\singapore.py                 115      0   100%
holidays\countries\slovakia.py                   39      0   100%
holidays\countries\slovenia.py                   32      0   100%
holidays\countries\south_africa.py              113      0   100%
holidays\countries\spain.py                      86      0   100%
holidays\countries\sweden.py                     65      0   100%
holidays\countries\switzerland.py                64      0   100%
holidays\countries\turkey.py                     33      0   100%
holidays\countries\ukraine.py                    65      0   100%
holidays\countries\united_arab_emirates.py       81      0   100%
holidays\countries\united_kingdom.py            144      0   100%
holidays\countries\united_states.py             336      0   100%
holidays\countries\vietnam.py                    49      0   100%
holidays\holiday_base.py                        163      0   100%
holidays\utils.py                                19      0   100%
-----------------------------------------------------------------
TOTAL                                          4649      0   100%
Coverage XML written to file coverage.xml

========================================= 587 passed in 57.93s =========================================

pytest results for #438, branch = false
----------- coverage: platform win32, python 3.7.6-final-0 -----------
Name                                          Stmts   Miss  Cover
-----------------------------------------------------------------
__init__.py                                       0      0   100%
holidays\constants.py                             3      0   100%
holidays\countries\__init__.py                   70      0   100%
holidays\countries\angola.py                     49      0   100%
holidays\countries\argentina.py                  74      0   100%
holidays\countries\aruba.py                      38      0   100%
holidays\countries\australia.py                 162      0   100%
holidays\countries\austria.py                    32      0   100%
holidays\countries\bangladesh.py                 19      0   100%
holidays\countries\belarus.py                    27      0   100%
holidays\countries\belgium.py                    27      0   100%
holidays\countries\brazil.py                    105      0   100%
holidays\countries\bulgaria.py                   30      0   100%
holidays\countries\burundi.py                    55      0   100%
holidays\countries\canada.py                    152      0   100%
holidays\countries\chile.py                      73      0   100%
holidays\countries\colombia.py                   73      0   100%
holidays\countries\croatia.py                    34      0   100%
holidays\countries\czechia.py                    44      0   100%
holidays\countries\denmark.py                    26      0   100%
holidays\countries\djibouti.py                   39      0   100%
holidays\countries\dominican_republic.py         39      0   100%
holidays\countries\egypt.py                      50      0   100%
holidays\countries\estonia.py                    27      0   100%
holidays\countries\european_central_bank.py      21      0   100%
holidays\countries\finland.py                    30      0   100%
holidays\countries\france.py                     66      0   100%
holidays\countries\germany.py                    57      0   100%
holidays\countries\greece.py                     26      0   100%
holidays\countries\honduras.py                   66      0   100%
holidays\countries\hongkong.py                  184      0   100%
holidays\countries\hungary.py                    57      0   100%
holidays\countries\iceland.py                    30      0   100%
holidays\countries\india.py                      63      0   100%
holidays\countries\ireland.py                    49      0   100%
holidays\countries\israel.py                     78      0   100%
holidays\countries\italy.py                     109      0   100%
holidays\countries\japan.py                     124      0   100%
holidays\countries\kenya.py                      27      0   100%
holidays\countries\korea.py                     116      0   100%
holidays\countries\latvia.py                     32      0   100%
holidays\countries\lithuania.py                  33      0   100%
holidays\countries\luxembourg.py                 26      0   100%
holidays\countries\malawi.py                     36      0   100%
holidays\countries\mexico.py                     61      0   100%
holidays\countries\morocco.py                    49      0   100%
holidays\countries\mozambique.py                 36      0   100%
holidays\countries\netherlands.py                41      0   100%
holidays\countries\new_zealand.py               146      0   100%
holidays\countries\nicaragua.py                  30      0   100%
holidays\countries\nigeria.py                    19      0   100%
holidays\countries\norway.py                     52      0   100%
holidays\countries\paraguay.py                   59      0   100%
holidays\countries\peru.py                       35      0   100%
holidays\countries\poland.py                     37      0   100%
holidays\countries\portugal.py                   42      0   100%
holidays\countries\romania.py                    30      0   100%
holidays\countries\russia.py                     28      0   100%
holidays\countries\saudi_arabia.py               62      0   100%
holidays\countries\serbia.py                     40      0   100%
holidays\countries\singapore.py                 115      0   100%
holidays\countries\slovakia.py                   39      0   100%
holidays\countries\slovenia.py                   32      0   100%
holidays\countries\south_africa.py              113      0   100%
holidays\countries\spain.py                      86      0   100%
holidays\countries\sweden.py                     65      0   100%
holidays\countries\switzerland.py                64      0   100%
holidays\countries\turkey.py                     33      0   100%
holidays\countries\ukraine.py                    65      0   100%
holidays\countries\united_arab_emirates.py       81      0   100%
holidays\countries\united_kingdom.py            144      0   100%
holidays\countries\united_states.py             336      0   100%
holidays\countries\vietnam.py                    49      0   100%
holidays\holiday_base.py                        163      0   100%
holidays\utils.py                                19      0   100%
-----------------------------------------------------------------
TOTAL                                          4649      0   100%
Coverage XML written to file coverage.xml

========================================= 587 passed in 57.93s =========================================

On unstable I only get 98% with branch coverage deactivated

pytest results for `unstable`, branch = false
----------- coverage: platform win32, python 3.7.6-final-0 -----------
Name                                          Stmts   Miss  Cover
-----------------------------------------------------------------
holidays\constants.py                             3      0   100%
holidays\countries\__init__.py                   70      0   100%
holidays\countries\angola.py                     49      0   100%
holidays\countries\argentina.py                  74      0   100%
holidays\countries\aruba.py                      38      0   100%
holidays\countries\australia.py                 162      0   100%
holidays\countries\austria.py                    32      0   100%
holidays\countries\bangladesh.py                 19      0   100%
holidays\countries\belarus.py                    27      0   100%
holidays\countries\belgium.py                    27      0   100%
holidays\countries\brazil.py                    105      0   100%
holidays\countries\bulgaria.py                   30      0   100%
holidays\countries\burundi.py                    55      0   100%
holidays\countries\canada.py                    152      0   100%
holidays\countries\chile.py                      73      0   100%
holidays\countries\colombia.py                   73      0   100%
holidays\countries\croatia.py                    34      0   100%
holidays\countries\czechia.py                    44      0   100%
holidays\countries\denmark.py                    26      0   100%
holidays\countries\djibouti.py                   39      0   100%
holidays\countries\dominican_republic.py         39      0   100%
holidays\countries\egypt.py                      50      0   100%
holidays\countries\estonia.py                    27      0   100%
holidays\countries\european_central_bank.py      21      0   100%
holidays\countries\finland.py                    30      0   100%
holidays\countries\france.py                     66      0   100%
holidays\countries\germany.py                    57      0   100%
holidays\countries\greece.py                     26      0   100%
holidays\countries\honduras.py                   66      0   100%
holidays\countries\hongkong.py                  184      0   100%
holidays\countries\hungary.py                    57      0   100%
holidays\countries\iceland.py                    30      0   100%
holidays\countries\india.py                      63      0   100%
holidays\countries\ireland.py                    49      5    90%
holidays\countries\israel.py                     78      0   100%
holidays\countries\italy.py                     109      0   100%
holidays\countries\japan.py                     124      0   100%
holidays\countries\kenya.py                      27      0   100%
holidays\countries\korea.py                     116      0   100%
holidays\countries\latvia.py                     32      0   100%
holidays\countries\lithuania.py                  33      0   100%
holidays\countries\luxembourg.py                 26      0   100%
holidays\countries\malawi.py                     36      0   100%
holidays\countries\mexico.py                     61      0   100%
holidays\countries\morocco.py                    49      0   100%
holidays\countries\mozambique.py                 36     23    36%
holidays\countries\netherlands.py                41      0   100%
holidays\countries\new_zealand.py               146      0   100%
holidays\countries\nicaragua.py                  30      0   100%
holidays\countries\nigeria.py                    19      0   100%
holidays\countries\norway.py                     52      0   100%
holidays\countries\paraguay.py                   59      0   100%
holidays\countries\peru.py                       35      0   100%
holidays\countries\poland.py                     37      0   100%
holidays\countries\portugal.py                   42      0   100%
holidays\countries\romania.py                    30      0   100%
holidays\countries\russia.py                     28      0   100%
holidays\countries\saudi_arabia.py               62     48    23%
holidays\countries\serbia.py                     40      0   100%
holidays\countries\singapore.py                 115      0   100%
holidays\countries\slovakia.py                   39      0   100%
holidays\countries\slovenia.py                   32      0   100%
holidays\countries\south_africa.py              113      0   100%
holidays\countries\spain.py                      86      0   100%
holidays\countries\sweden.py                     65      0   100%
holidays\countries\switzerland.py                64      0   100%
holidays\countries\turkey.py                     33      0   100%
holidays\countries\ukraine.py                    65      0   100%
holidays\countries\united_arab_emirates.py       81      0   100%
holidays\countries\united_kingdom.py            174      3    98%
holidays\countries\united_states.py             336      0   100%
holidays\countries\vietnam.py                    49      0   100%
holidays\holiday_base.py                        163      0   100%
holidays\utils.py                                26      6    77%
-----------------------------------------------------------------
TOTAL                                          4686     85    98%
Coverage XML written to file coverage.xml

========================================= 574 passed in 58.68s =========================================

So in the best case, there are only some tests missing on unstable.
Some sidenotes on the commits on unstable:

3bdfa24ba10ee5f84e8ac0be2c642a3248e844a4 __init__.py aren't needed for pytest to discover tests since it discoveres tests by a naming patter (test_ by default) or test class subclasses from other frameworks e.g. unittest or nosetest
6f31bc461622d38cf5394c7ca396d8e693f1335f TestFlake8 isn't needed anymore since pre-commit checks the files both locally (only staged files if run as hook) and on the CI (for all tracked files, same as locally running pre-commit run -a)

Hi @s-weigand thank you! Some more work done..

I didn't modify the test classes, but only copied them to different files.
But this PR is based on a5eb566 and since then about 26 commits were added to the current beta ff1a39c, which is why this PR has outdated tests and holiday code.
That said I can confirm the 97% on unstable d4fa424, but on the branch for #438 8ca6ee0 I get 99%:
pytest results for #438, branch = true
pytest results for beta branch = true
For running pytest on beta ff1a39c I used the command pytest tests.py and the config from pyproject.toml, so the results are comparable.

Okay all clear.. having put a lot of effort in the last days to sort out everything, I finally decided to preserve what done, to re-apply the test changes still missing, and configured pytest to crawl all tests starting from tests.py , as it used to be on coverage.
This way, I have one only version of all the tests procedure, and Travis remains consistent with GH actions while I / we complete the code before merging in beta (but I would say we are pretty there now).

The reason for the coverage on #438 and beta being 99% instead of 100% is due to the coverage settings in pyproject.toml which are set to consider branch coverage (if each case of an if-elif-else case was hit):
[tool.coverage.run]
branch = true

I don't know about you, but I prefer an honest 99% (which is already pretty awesome and rare) over a shiny 100% which doesn't tell the whole truth.

Although I'm not very happy to lose my 100% badge :-) (btw, no cheating, only sth went unnoticed in fact.. due to coverage behaving differently) it makes sense and I agree.. we'll see if we can get back to a "real" 100% in a future.

pytest results for beta, branch = false
pytest results for #438, branch = false
On unstable I only get 98% with branch coverage deactivated
pytest results for unstable, branch = false
So in the best case, there are only some tests missing on unstable.
Some sidenotes on the commits on unstable:

3bdfa24 __init__.py aren't needed for pytest to discover tests since it discoveres tests by a naming patter (test_ by default) or test class subclasses from other frameworks e.g. unittest or nosetest

I was aware of this, but that's instead required to define tests.py as the entry point for the tests (which is the case now, in order to keep consistency with the past).. no harm and more standard anyway :-)

6f31bc4 TestFlake8 isn't needed anymore since pre-commit checks the files both locally (only staged files if run as hook) and on the CI (for all tracked files, same as locally running pre-commit run -a)

Although, again, to keep coverage sync while finalizing, this is in fact true, so I now decided to drop it. Thx!
As said before, we should theoretically be ready to merge to beta now.. would you please put a last eye on the last commits and confirm there's nothing breaking or misleaded in my changes (everything seems fine, but that's my first experience with GH actions and pytest, so better 2 eyes more)?
Thank you again, KUTGW! 👍

I opened #441 against unstable.
There was a change to holidays/countries/united_kingdom.py in https://github.com/dr-prodigy/python-holidays/commit/afc40748fb930ef2a97f7ed01b0e3fee8a7e5d1b that appeared to have slipped through the cracks.
Also, I found that there is no test for holidays.utils.is_leap_year yet, which explains the lover coverage.
Besides this, all LGTM

Final version reviewed and released in beta.
Thx!

hi @s-weigand how are you doing?
I'm referring back to this because I'm currently in the phase of running bump2version for the first time to release the new v<IP_ADDRESS>, but it seems to lack some required information. In particular, here's the raised exception:
$ bump2version patch
Traceback (most recent call last):
  File "/Users/mauri/Documents/git/venv_holidays38/bin/bump2version", line 8, in <module>
    sys.exit(main())
  File "/Users/mauri/Documents/git/venv_holidays38/lib/python3.8/site-packages/bumpversion/cli.py", line 124, in main
    _check_files_contain_version(files, current_version, context)
  File "/Users/mauri/Documents/git/venv_holidays38/lib/python3.8/site-packages/bumpversion/cli.py", line 618, in _check_files_contain_version
    f.should_contain_version(current_version, context)
  File "/Users/mauri/Documents/git/venv_holidays38/lib/python3.8/site-packages/bumpversion/utils.py", line 68, in should_contain_version
    raise VersionNotFoundException(
bumpversion.exceptions.VersionNotFoundException: Did not find 'version='0.10.5',' in file: 'setup.py'

Any ideas?
Thank you cheers 👍

@dr-prodigy Hey, sorry I guess that slipped my attention.
The way bump2version works when replacing versions is basically just an exact regex matching and replacing.
So it is looking for:
    version='0.10.5',

and only found
https://github.com/dr-prodigy/python-holidays/blob/246c729718907d58b6cbf9a7bab045b7354e006c/setup.py#L32
thus it crashes.
I just started a quick fix branch and found another problem. bump2version by default only supports versions in the PEP440 format, which has the pattern <major>.<minor>.<patch>{.devN, aN, bN, rcN, <no suffix>, .postN}, thus <IP_ADDRESS> isn't a valid version for it and it needs some extra configuration.
The problem with that extra configuration is that a line would end with = and bump2version would add a trailing whitespace (known issue), which in turn lead to a fight with the pre-commit hook that removes them and the commit fails.
That behavior is why I recently stopped using bump2version on new projects and instead use a setup.cfg only pattern and create a tag via the github release.
With a setup.cfg only pattern you also only have to manage the version in one place (__init__.py), since you can refer to __version__ as an attribute, in your case this would be
version = attr: holidays.__version__


[Feature] Support source option for additional config files

In hyprland.conf I source other config files so I can have some device-specific configurations while sharing most of my config between systems. I'd like to have different idle behavior on my laptop vs. my desktop, so it'd be great if that were an option for hypridle as well.
source=~/.config/hypr/hosts/laptop/hypridle.conf

[ERR] Config has errors:
Config error in file /home/rdvm/dotfiles/hyprland/.config/hypr/hypridle.conf at line 1: config option <source> does not exist.

Thanks for all your work on hyprwm !

yeah this would be great, if only just so you can keep all your power related settings in one config file. There are ways around this but none are pretty.

Throwing my hat in the ring for this feature. Adding my additional reasons from #90 (duplicate, closed).

This is a common behavior for a plethora of Linux applications. Those that don't support it out of the box typically provide a mechanism (like hyprland itself) to include files (e.g., nginx).

This is supported behavior in hyprland.conf. It would stand to reason that one could expect this behavior in hyprland's other optional daemons.

Personally, I like being able to separate out different bits of configuration files into their own parts for easier maintenance when possible. I doubt I'm entirely alone on this.

Again personally, I use Syncthing to keep my laptop and desktop hyprland configs in sync. Having the source keyword allows me to do the following:

# This file must contain a variable of $hostname.
# This is used to load the machine-specific confs at the end of this script.
# This file should not be synced with Syncthing.
source = ~/.config/hypr/hyprland.conf.d/hostname.conf

...

# Load all loose conf files
source = ~/.config/hypr/hyprland.conf.d/*.conf
# Load machine-specific conf files
source = ~/.config/hypr/hyprland.conf.d/$hostname/*.conf

(I may look into submitting a PR myself if I get around to comparing the code from hyprland and hypridle)