Quickstart not working

The documentation in the quickstart does not specify how to install the package carla, so the examples in pythonapi/examples exit with an error. However spectator mode still works.
Windows 10, Carla 0.9.10

Hi arihant2math,
Using Carla Package u just need to unzip the file you have downloaded.
Then you need to start CARLA (CarlaUE4.exe) first. And then you can run any of the examples inside the PythonAPI / examples folder.

I did that, the examples still do not work.

Hi @arihant2math, what error are you getting?

I'm getting this error when I run spawn_npc.py: ModuleNotFoundError: No module named 'carla'

Can you make sure that the PYTHONPATH is set correctly by running the following, or adding it to your .bashrc file:
export PYTHONPATH=$PYTHONPATH:"$HOME/<path/to/carla>/PythonAPI/carla/dist/<name_of_egg_file>.egg"
export PYTHONPATH=$PYTHONPATH:"$HOME/<path/to/carla>/carla"
export PYTHONPATH=$PYTHONPATH:"$HOME/<path/to/carla>/carla/PythonAPI/"

@corkyw10 I am using windows.

Hi @arihant2math, sorry for the misunderstanding. Can you look in the directory carla\PythonAPI\carla\dist\ and check the .egg file there? It should look like this carla-<version>-py3.7-win-amd64.egg. The part py3.7 will indicate the version of Python that should be used, it's normally 3.7 in the package versions. Can you confirm that you are running the scripts with Python 3.7?

I was using python 3.9, using 3.7 fixed the problem.


Switch to vue-style-loader when using mix.vue()

Should fix #2725
I still need to add an integration test for shadowMode: true
However there's an issue with vue-style-loader and it breaks the use of CSS modules. I'll open a corresponding issue in that repo later when I've tracked it down and get the time to do so (hopefully today / tomorrow).
See screenshot from the integration test page:

Hi @thecrypticace,
I think you should keep style-loader as default, becuase vue-style-loader, doesn't support css-loader 4+ see here

Yep, saw that this morning. ￼Pretty sure that's why the test fails. I'll keep this around to have it ready when vue-style-loader updates￼.

Yep, saw that this morning. ￼Pretty sure that's why the test fails. I'll keep this around to have it ready when vue-style-loader updates￼.

emmm I don't think they will update, that PR is hanging from Aug

Hi @thecrypticace
vue-style-loader (v4.1.3) was updated to support css-loader 4+, can we now try to implement the above?

Hi @thecrypticace the build test failed again, but I don't think is related to vue-style-loader


Refactor: ScriptAttributes vs. ScriptMetaDataAttribute

The name and function of the ScriptAttributes class is somewhat contradictory. The spelling alone suggests multiple usage although AllowMultiple = false is set via AttributeUsage class. Also the description could be improved. I know that a change to this attribute would be breaking, but the effort could provide more clarity.
In my opinion the attribute contains mainly script metadata, a possible change could look like this:
using System;

namespace GTA
{
	/// <summary>
	/// The script meta data attribute class.
	/// </summary>
	[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
	public sealed class ScriptMetaDataAttribute : Attribute
	{
		/// <summary>
		/// Initializes a instance of the script meta data attribute.
		/// </summary>
		public ScriptMetaDataAttribute() : this(default, default)
		{
		}

		/// <summary>
		/// Initializes a instance of the script meta data attribute.
		/// </summary>
		/// <param name="author">The author of the script.</param>
		public ScriptMetaDataAttribute(string author) : this(author, default)
		{
		}

		/// <summary>
		/// Initializes a instance of the script meta data attribute.
		/// </summary>
		/// <param name="author">The author of the script.</param>
		/// <param name="supportURL">The support url of the script.</param>
		public ScriptMetaDataAttribute(string author, string supportURL)
		{
			Author = author;
			SupportURL = supportURL;
		}

		/// <summary>
		/// The author of the script.
		/// </summary>
		public string Author { get; }

		/// <summary>
		/// The support url of the script.
		/// </summary>
		/// <remarks>
		/// Gets written to log file when an exception occurs.
		/// </remarks>
		public string SupportURL { get; }

		/// <summary>
		///
		/// </summary>
		// TODO: Make the intention and function a little bit more clearer.
		public bool NoScriptThread { get; set; }

		/// <summary>
		///
		/// </summary>
		// TODO: Make the intention and function a little bit more clearer.
		public bool NoDefaultInstance { get; set; }
	}
}

Sounds like we should make enough time before this refactoring. Doesn't seem to me that we can design a new script attribute like 1 hour without major flaws.
So… we would discuss this after releasing v3.7.0. I'm only adding features that are easy to add without big design flaws while referencing the official headers such as gameplay camera (director) features and streaming focus, and then I'll search new features that aren't shipped in stable builds for flaws. I'm feeling like we should ship a new one within 1 week.

To me, that sounds absolutely reasonable.


ekf2 initialization fixes

Found during SITL Valgrind usage.
Valgrind was unhappy about quite a few different fields in EKF2, so it was ultimately easier to initialize the entire header.
I can rebase this later if it currently interferes.

@dagar Can you please explain the error that it is supposed to fix?
@waltjohnson and @mcsauder will this change cause compatibility problems with your compiler?

No problems here.
Walt Johnson | CEO & Founder | Inertial Sense, LLC
72 North 720 East | Salem, UT 84653
Office:<PHONE_NUMBER> | Mobile:<PHONE_NUMBER> | InertialSense.com
http://www.inertialsense.com/
Electronic Privacy Notice. This e-mail, and any attachments, contains
information that is, or may be, covered by electronic communications
privacy laws, and is also confidential and proprietary in nature.
Information contained in or attached to this email may be subject to export
controls, may be privileged, and is confidential and competition sensitive.
If you are not the intended recipient, please delete this email and notify
me immediately. You are not authorized to copy or use this email for any
purpose. If you are not the intended recipient, please be advised that you
are legally prohibited from retaining, using, copying, distributing, or
otherwise disclosing this information in any manner. Instead, please reply
to the sender that you have received this communication in error, and then
immediately delete it. Thank you in advance for your cooperation.
On Mon, Apr 24, 2017 at 9:52 PM, Paul Riseborough<EMAIL_ADDRESS>wrote:

@dagar https://github.com/dagar Can you please explain the error that
it is supposed to fix?
@waltjohnson https://github.com/waltjohnson and @mcsauder
https://github.com/mcsauder will this change cause compatibility
problems with your compiler?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/PX4/ecl/pull/266#issuecomment-296892700, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AOaViHjkDHHj9l7LH9vT-Tz9OY7DBSblks5rzW3lgaJpZM4NG60s
.

If you run PX4 SITL (ekf2) under Valgrind you'll see quite a few uninitialized accesses. It's quite possible these don't actually cause a problem, but better safe than sorry.
==15321== Thread 16 ekf2:
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x4EED4B: Ekf2::task_main() (ekf2_main.cpp:567)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x54F427: EstimatorInterface::setMagData(unsigned long, float (&) [3]) (estimator_interface.cpp:203)
==15321==    by 0x4F1260: Ekf2::task_main() (ekf2_main.cpp:570)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x54F439: EstimatorInterface::setMagData(unsigned long, float (&) [3]) (estimator_interface.cpp:208)
==15321==    by 0x4F1260: Ekf2::task_main() (ekf2_main.cpp:570)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x54F465: EstimatorInterface::setMagData(unsigned long, float (&) [3]) (estimator_interface.cpp:208)
==15321==    by 0x4F1260: Ekf2::task_main() (ekf2_main.cpp:570)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x4EEDEA: Ekf2::task_main() (ekf2_main.cpp:598)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x54F910: EstimatorInterface::setBaroData(unsigned long, float) (estimator_interface.cpp:268)
==15321==    by 0x4F12C8: Ekf2::task_main() (ekf2_main.cpp:600)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x54F919: EstimatorInterface::setBaroData(unsigned long, float) (estimator_interface.cpp:272)
==15321==    by 0x4F12C8: Ekf2::task_main() (ekf2_main.cpp:600)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x54F945: EstimatorInterface::setBaroData(unsigned long, float) (estimator_interface.cpp:272)
==15321==    by 0x4F12C8: Ekf2::task_main() (ekf2_main.cpp:600)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x5463E3: pop_first_older_than (RingBuffer.h:128)
==15321==    by 0x5463E3: Ekf::initialiseFilter() (ekf.cpp:257)
==15321==    by 0x548F24: Ekf::update() (ekf.cpp:214)
==15321==    by 0x4EEF68: Ekf2::task_main() (ekf2_main.cpp:693)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x5463F2: pop_first_older_than (RingBuffer.h:128)
==15321==    by 0x5463F2: Ekf::initialiseFilter() (ekf.cpp:257)
==15321==    by 0x548F24: Ekf::update() (ekf.cpp:214)
==15321==    by 0x4EEF68: Ekf2::task_main() (ekf2_main.cpp:693)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x546B79: pop_first_older_than (RingBuffer.h:128)
==15321==    by 0x546B79: Ekf::initialiseFilter() (ekf.cpp:325)
==15321==    by 0x548F24: Ekf::update() (ekf.cpp:214)
==15321==    by 0x4EEF68: Ekf2::task_main() (ekf2_main.cpp:693)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x546B87: pop_first_older_than (RingBuffer.h:128)
==15321==    by 0x546B87: Ekf::initialiseFilter() (ekf.cpp:325)
==15321==    by 0x548F24: Ekf::update() (ekf.cpp:214)
==15321==    by 0x4EEF68: Ekf2::task_main() (ekf2_main.cpp:693)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==
==15321== Conditional jump or move depends on uninitialised value(s)
==15321==    at 0x546D28: Ekf::initialiseFilter() (ekf.cpp:326)
==15321==    by 0x548F24: Ekf::update() (ekf.cpp:214)
==15321==    by 0x4EEF68: Ekf2::task_main() (ekf2_main.cpp:693)
==15321==    by 0x573486: entry_adapter(void*) (px4_posix_tasks.cpp:105)
==15321==    by 0x4E416B9: start_thread (pthread_create.c:333)
==15321==    by 0x59F082C: clone (clone.S:109)
==15321==  Uninitialised value was created by a heap allocation
==15321==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15321==    by 0x4F1718: ekf2_main (ekf2_main.cpp:1224)
==15321==    by 0x426E12: run_cmd(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) (main.cpp:219)
==15321==    by 0x4273CD: process_line(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool) [clone .constprop.81] (main.cpp:260)
==15321==    by 0x4244E2: main (main.cpp:466)
==15321==


Add medicines 💊  page to buy and home delivery

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
Hello @Anishkagupta04 & @varshith257
Add medicines 💊  page to buy and home delivery
Where user can buy medicine
Use Case
To buy medicines 💊 online
Benefits
No response
Add ScreenShots
No response
Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

@Anishkagupta04 PTAL

Hello @Anishkagupta04 plz review this


No environment variables at runtime

Java version: 17.0.2
SBT version: 1.7.1
Build log
[info] welcome to sbt 1.7.1 (Eclipse Adoptium Java 17.0.2)
[info] loading global plugins from /sbt/1.0/plugins
[info] loading settings for project my-project-build from plugins.sbt ...
[info] loading project definition from project
[info] loading settings for project root from build.sbt ...
[info] set current project to env-file (in build file:/path/to/my-project/)
[info] .env detected (fileName=.env). About to configure JVM System Environment with new map
[info] Configured .env environment
[info] sbt server started at local:....
[info] started sbt server
sbt:env-file>
;set _root_.scala.collection.Seq(historyPath := None,shellPrompt := { _ => "" }
,SettingKey[_root_.scala.Option[_root_.sbt.File]]("sbtStructureOutputFile")
in _root_.sbt.Global := _root_.scala.Some(_root_.sbt.file("/private/var/folders/.../.../.../sbt-structure.xml"))
,SettingKey[_root_.java.lang.String]("sbtStructureOptions") in _root_.sbt.Global := "download, resolveClassifiers")
[info] Defining Global / sbtStructureOptions, Global / sbtStructureOutputFile and 1 others.
[info] The new values will be used by cleanKeepGlobs
[info] 	Run `last` for details.
[info] Reapplying settings...
[info] set current project to env-file (in build file:/path/to/my-project/)
[info] .env detected (fileName=.env). About to configure JVM System Environment with new map
[info] Configured .env environment
[info] Applying State transformations org.jetbrains.sbt.CreateTasks from ...
[info] Reapplying settings...
[info] set current project to env-file (in build file:/path/to/my-project/)
[info] .env detected (fileName=.env). About to configure JVM System Environment with new map
[info] Configured .env environment
[warn] sbt 0.13 shell syntax is deprecated; use slash syntax instead: Global / dumpStructure
[info] Writing structure to /private/var/folders/.../.../.../sbt-structure.xml...
[info] Done.
[success] Total time: 0 s, completed Aug 12, 2022, 3:22:49 PM
[info] shutting down sbt server

.env
MY-SECRET=123456

Main.scala
object Main extends App {
  println(sys.env.get("MY-SECRET")) // Always None
}

Did you follow these instructions? https://github.com/Philippus/sbt-dotenv#illegal-reflective-access-warnings-and-exceptions

Absolutely I did!

Having the same issue, added configs in .sbtopts.

I'll try to create one for you. All custom code aside, it boils down to sys.env returning None when I do sbt run.

@Philippus Here is the minimal reproduction

I got this:
xxx@yyy dotenv-repro % sbt
[info] welcome to sbt 1.8.2 (Temurin Java 1.8.0_362)
[info] loading global plugins from /Users/philippus/.sbt/1.0/plugins
[info] loading settings for project dotenv-repro-build from plugins.sbt ...
[info] loading project definition from /Users/xxx/repositories/t/dotenv-repro/project
[info] loading settings for project root from build.sbt ...
[info] set current project to dotenv (in build file:/Users/xxx/repositories/t/dotenv-repro/)
[info] .env detected (fileName=.env). About to configure JVM System Environment with new map
[info] Configured .env environment
[info] sbt server started at local:///Users/xxx/.sbt/1.0/server/73506dc956349fbf3484/sock
[info] started sbt server
sbt:dotenv> run
[info] running dotenv.example
Running example
Found SOME_URI env variable with value http://google.com
[success] Total time: 1 s, completed 16-feb-2023 15:36:20

java.lang.reflect.InaccessibleObjectException: Unable to make field private static final java.util.HashMap java.lang.ProcessEnvironment.theEnvironment accessible: module java.base does not "opens java.lang" to unnamed module @722b3ba2

This is the content of my  /home/user/.sbt/.sbtopts:
-J--add-opens=java.base/java.util=ALL-UNNAMED
-J--add-opens=java.base/java.lang=ALL-UNNAMED

Which java version are you using?

[user@avm-dev dotenv-repro]$ sbt
[info] welcome to sbt 1.8.2 (Red Hat, Inc. Java 17.0.5)

And if you put the .sbtopts file in the root-directory of your project?

No, I put it in ~/.sbt directory. From your question I infer thats the wrong location. Let me check...

Yeah, OK, it works. So I was putting it in the wrong location. Thanks.


Rule Idea

All comments must include one of the following prefixes/suffixes:

I think...
I guess...
I suspect...
It seems like..
...as far I know
...probably
...hopefully
...kind of

After all, nobody is right all the time.


refactor: use console-log-level for logging

Start using console-log-level so that we can drop the custom logging
code in @google-cloud/common. This also fixes the issue that the logs
were previously getting emitted to stdout instead of stderr.

Related: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/27506. Will bring that in once it lands.

For record keeping, why did you decide to use console-log-level?

console-log-level serves the purpose we need it for

It can log to stderr – unlike log-driver.
It has support for prefixes – something we need.
It is not a global logger – unlike npmlog – so it is suitable for libraries to use.
It is small, simple and well-maintained.


Pandas series with object type get converted to strings

This error is a slightly different take on https://github.com/jsonpickle/jsonpickle/issues/407 and https://github.com/jsonpickle/jsonpickle/issues/358.
My issue is that if a dataframe has a column of mixed type (e.g. [4, 'foo']), then it will be converted to strings on unpickling (e.g. ['4', 'foo']):
import pandas as pd
import jsonpickle as jp
import jsonpickle.ext.numpy as jsonpickle_numpy
import jsonpickle.ext.pandas as jsonpickle_pandas
jsonpickle_numpy.register_handlers()
jsonpickle_pandas.register_handlers()

# Create simple data frame of mixed data types
df1 = pd.DataFrame((
  a = [1, 2],
  b = [4, 'foo']
))

# Convert to jsonpickle
string = jp.dumps(df1)
df2 = jp.loads(string)

# Show that it didn't work
print(df1.b.values)
print(df2.b.values)

assert df1.b[0] == df2.b[0] # False: the first is 4 and the second is '4'

I know there isn't an easy fix for this, but I'm hopeful that there's some fix, since (at least in this case) the actual dataframe data looks a lot like JSON format already! In particular, one suggestion I have is that currently just a single dtype is stored per column:
"meta": {"dtypes": {"a": "int64", "b": "object"}

My suggestion that I believe would solve this particular bug would be that if the dtype is object, to store a list (one for each element) instead. For example, in this case:
"meta": {"dtypes": {"a": "int64", "b": {"object": ["int", "object"]}}

Personally, I also think storing values as a dict of lists (rather than as a string) would be more robust and easier to read/interpret. I feel pd.DataFrame.to_dict() is already pretty close to what would be required!

Hey, sorry for never responding. I just remembered this again given new activity on #407. I'm thinking out loud here, but I wonder if storing a primary non-container dtype for each column, then establishing a sort of MRO of dtypes to try converting each object to if the previous attempt fails could work. It would be extremely inefficient if none of the dtypes work, but the best case scenario is almost no perf penalty and relatively high usability, and the user could customize the order of type conversion attempts too.

That sounds like it could be a pretty viable solution. I appreciate your tenacity!

These fixes are all so good that I think I'm going to create a one-off maint/v3 release branch and make two small tweaks to the current tree before tagging it as v3.4.0.
I'm going to remove the two breaking changes -- changing the safe=True default in the unpickler back to safe=False and I'm going to tweak the pickler so that it continues to emit tags.REPR for modules.
This effectively creates a v3 jsonpickle that's capable of reading the upcoming v4 version's data. In v4 we'll do the breaking change of emitting tags.MOD alongside the change to use safe=True.
I'll then merge that branch into main, but I won't take any of the source changes. Instead, I'll merge the changelog tweaks to insert the v3.4.0 release only. We can then release v4.0.0 with just the breaking changes.
I'll push the maint/v3 branch and the merge into main up shortly. I'll wait until this weekend before doing the final v4 release in case there's any last minute tweaks that materialize before then. We'll probably end up deleting that branch before the end of the year; it should just be a temporary diversion.

Sounds good. I do want to create something that can read versions of pandas dataframes encoded with previous versions of the code before this fix is released though.

Oops, I didn't see that 3.4.0 was already released. I'm going to push a 3.4.1 version to add the backwards-compatible decoding real quick.


1.8.0 release notes [draft]

The current release notes are included below. Any improvements on the text content for this release can be discussed here. This also serves as a good summary should you wish to critique specific parts of the upcoming release – please open separate issues for any of these critiques :)

This is a minor release, which includes new features and bugfixes.
To complement some necessary changes added in 1.7.0 to improve the safety of Parsedown, some new features have been added to help extensions take better advantage of the AST.
Summary of Changes
Added
The following have been added:
#576: Produce AST prior to render
#511: Allow element to have no name
#569: Add rawHtml option for extensions to use on trusted input
#589: Add strict mode to opt-in to strict CommonMark compliance
Fixed
The following have been resolved:
#566: Prevent Email autolink being started by HTML tags
Resolves: #565
#514: Fixes treatment of HTML blocks
By @Daniel-KM and @aidantwoods, resolves: #488, #567, #528, #259, #407, #405, #371, #370, #366, #356
#578: Fixes an issue where setext heading would not render if trailing spaces were present on the underline
Resolves: #571
#439: Improve CommonMark mixed-marker list compliance
By @PhrozenByte, resolves: #437, #581
#574: Remove legacy escaping
Resolves: #573, #287
#583: Fix trimming of internal #'s in ATX headers
Resolves: #337, #362
#584 (+ #612): Permit 1 column tables with less delimiters and assert header count matches delimiters in delimiter row
Resolves: #415
#586: Fix merging of adjacent blockquotes
Resolves: #344
#587: Fix ordered list interrupt
Resolves: #454
#592: Fix HTML comment endings
Resolves: #288
772c919: Recognise empty ATX headings
Resolves: #595
#600: Fix fenced code block closer length rules
Resolves: #599
#610: Fix lost line breaks
Resolves: #609
#621: Tilde characters may be escaped
By @paukenba, resolves a CommonMark issue pointed out in the PR
Public API Feature Notes
Strict Mode
#589 adds a new setter to opt-in to strict CommonMark compliance.
In #265 changes were made in favour of CommonMark compliance which introduced breaking changes to previously supported syntax. Strict mode aims to side step this dichotomy between supporting a commonly used deviation from the spec, and honouring the spec.
Currently requiring a space after a hash to form an ATX header is the only case that strict mode controls, but this opens up the possibility of releasing very breaking (but compliant) changes in the future into strict mode (similar to this case) since the intent of the setter is to be compliant.
We will aim to be as compliant as possible even when strict mode is off, but if there are changes where compliance generates major unforeseen breakage in existing texts (like #265) then it is nice to be able to limit that change to those that want strict compliance.
Extension Accessible Feature Notes
Text-element Adjacency
#511 adds the ability to omit (or set to null) the name of an element to have it render its contents only. This permits plaintext to sit adjacent to elements within the AST structure.
Conditionally Escaped Raw HTML
#569 adds a new element content key: rawHtml. This can be used in place of text, if both keys are present text will be preferred. rawHtml can be used to write HTML directly into the AST, however it is strongly recommended that this is only done when absolutely necessary.

rawHtml blinds Parsedown to (and thus breaks guarantees of) the output structure. You the author are therefore responsible for ensuring that HTML does not become malformed, and also for ensuring the safe encoding (and sanitisation if also necessary) of any user-input.

By default, rawHtml will be HTML encoded (in the same way as text) if safe-mode is enabled by the user. This facilitates conditional escaping of features which may be very powerful (like allowing arbitrary HTML), but also provides an automatic mechanism for disabling these features.
If you are confident that appropriate safety measures have been applied (i.e. contextual escaping, and sanitisation of user-input) then you can mark the rawHtml as trusted by setting the allowRawHtmlInSafeMode key to true.
AST Traversal
From #576, handlers have now been decoupled from playing a necessary role in the recursion process for rendering an element. In addition to the text in an element, there are two new keys: elements, and element. Only one of elements, element, text, and rawHtml should be used as the content of an element (i.e. only specify one of these keys). Their tentative order of precedence is as written – specifying multiple is an error, and exceptions may be thrown in future.
In text Parsedown will now only expect to find a string containing text to render inside the element. In elements, Parsedown will expect to find an array of sub-elements to be rendered inside the element. In element Parsedown will expect to find a single sub-element to be rendered inside the element.
More Expressive Handlers
Also from #576, previously a block using a handler in Parsedown might look something like:
$Block['li'] = array(
    'name' => 'li',
    'handler' => 'li',
    'text' => !empty($matches[3]) ? array($matches[3]) : array(),
);

Now, this should be implemented as follows:
$Block['li'] = array(
    'name' => 'li',
    'handler' => array(
        'function' => 'li',
        'argument' => !empty($matches[3]) ? array($matches[3]) : array(),
        'destination' => 'elements'
    )
);

Handler is now an array that contains information only relevant to handler delegation, in which the following keys should all be specified: function, argument, destination. function is the function which should be called during the handling process, argument is the argument that should be given to the function, destination is the key to which the result of this call should be written to within the element.
This serves to disambiguate the handling process, in particular the use of the text key to contain: text, elements, an element, and lines in an li isn't very intuitive and can be a source of hard to find bugs as a result.
For those wondering whether the handler key may be written to as a destination – yes, handlers may be defined recursively.
For any handlers still using the old string syntax – these will continue to to work via the compatibility layer summarised in https://github.com/erusev/parsedown/pull/576#issuecomment-375015648. Note that if a user enables safe-mode then this will cause the output of the handler to be HTML encoded. To avoid this either update to the new method of writing handlers, or if the output from your handler is safe when user-input is not trusted then you may mark the output as safe by permitting raw HTML in safe mode for the elements which use this handler.

PRs welcome for the above text :)
https://github.com/aidantwoods/parsedown/blob/1.8.0-release-draft/Release-Notes.md

Did you reach a decision on whether to make the next release major or minor ? Any ETA ?
Until then, are you going to cut 1.8.0-beta-5 to include #641 soon, or should I just test against master ?

I've added a 1.8.0-beta-5 release including that fix. As far as actually releasing it goes, I think (as @PhrozenByte said in one of these threads): it's probably cleaner to just make the next stable release major and thus explicitly breaking. Since 2.0 is something that would be nice to have anyway with regard to being able to make some breaking decisions, I'd also rather people didn't have to update stuff twice (i.e. potentially once after 1.8 and then again quite soon after to go to 2.0).
Likely next week I'll be able to finally put some more time into stuff over here again, I'm not sure how long it would take to get to 2.0. I don't think it'll take a huge amount of time to make the code changes, but I'd expect to allow at least a few weeks with a 2.0 beta perhaps longer depending on how much feedback there is. For me the primary goal is to permit custom behaviours to be added in a way that is backed by an interface (so we can avoid building a dependence on observed behaviour like we have now).

That's fine with me. Thanks for your support!
Damien Regad
Ch. de Trémessaz 4, 1222 Vésenaz, Suisse
Mobile: +41 79 615 3403
e-mail<EMAIL_ADDRESS>

Thank you for the information. 👍
I am new with Parsedown and haven't found any problems while testing. The AST made it very easy to understand Parsedown's design and write extensions. It's great that you have many choice to manipulate the AST, you can add elements, raw HTML or let the internal parsing continue.
Do you have any plans to make a release? Do you need help with something?

@aidantwoods next week has come and is long gone, and so I was wondering if you ever got around to deciding between 1.8.0 and 2.0, and if going for the latter, if there is any planned date for release.

I apologise for leaving this hanging for quite a bit longer than anticipated. To answer your question, the next version will be 2.0, although I'm not entirely sure of a date for that yet. Something I want to be sure of before reaching 2.0 is that we get the future of "extensions" right in a way that they have sufficient freedom to add custom behaviour as needed, but also so that these custom behaviours can be used together and that there are clear (ideally somewhat user malleable) precedence rules about what happens if there are conflicts. I have some ideas towards this, but didn't really get round to experimenting with them unfortunately.
Going forward my spare time should be a little more predictable, so I hope to start getting some more commits up in the coming days :)

@aidantwoods Firstly I want to write: thank you for your contributions to this project. I'm very happy to see the progress you've helped make to Parsedown!
What I'm less happy about is the ongoing beta state of 1.8.0. I understand that life happens and plans get waylaid. All your reasons for moving directly to 2.0 are good and sensible, but the – unfair, I know – question is: how long? A stable release with a beta designation is a frustrating situation for an upstream integrator.

Closing since this'll be super-seeded by 2.0.0. If anyone would like to help, please send PRs to the 2.0.x branch or leave a review over at https://github.com/erusev/parsedown/pull/708.

You mean superseded?😇

You mean superseded?😇

Yes, and I have no idea why I decided to spell it like that aha


Query api call

I want to use this framework to analyze whether a method in the apk is called. I can achieve this by "dx.get_tainted_packages().search_methods()" before. But now these methods have been removed, can you tell me an alternative method. Thanks very much!

you can use xref to do the same. Have a look at https://github.com/androguard/androguard/blob/master/tests/test_analysis.py#L129 to understand how to use them

you can use xref to do the same. Have a look at https://github.com/androguard/androguard/blob/master/tests/test_analysis.py#L129 to understand how to use them

dont forget that there is also a manual: https://androguard.readthedocs.io/en/latest/intro/xrefs.html

dont forget that there is also a manual: https://androguard.readthedocs.io/en/latest/intro/xrefs.html


Nodej use microsoft-cognitiveservices-speech-sdk auth 401

code like this:
const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("my key", "eastasia");

console.log('speech config', speechConfig)

function fromFile() {
    let pushStream = sdk.AudioInputStream.createPushStream();

    fs.createReadStream("./audio/e9dee8f7-马瑞文-2021-02-22-18-05-24.wav").on('data', function (arrayBuffer) {
        pushStream.write(arrayBuffer.slice());
    }).on('end', function () {
        pushStream.close();

        let audioConfig = sdk.AudioConfig.fromStreamInput(pushStream);
        let recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
        recognizer.recognizeOnceAsync(result => {
            console.log(result);
            console.log(`RECOGNIZED: Text=${result.text}`);
            recognizer.close();
        });
    });

}

fromFile();

recognizer.recognizeOnceAsync result ：
{
  privResultId: '42525738ECF0488BA8C1D58EF10BCA4C',
  privReason: 1,
  privText: undefined,
  privDuration: undefined,
  privOffset: undefined,
  privLanguage: undefined,
  privLanguageDetectionConfidence: undefined,
  privErrorDetails: 'Unable to contact server. StatusCode: 1006, undefined Reason:  getaddrinfo ENOTFOUND undefined.stt.speech.microsoft.com',
  privJson: undefined,
  privProperties: PropertyCollection {
    privKeys: [ 'CancellationErrorCode' ],
    privValues: [ 'ConnectionFailure' ]
  },
  privSpeakerId: undefined
}

my service like this:

I can't find the cause of the error, please help.

@zhaoxingyun "getaddrinfo ENOTFOUND undefined.stt.speech.microsoft.com" is your problem. Running your code works with no issue for me when I set the region to eastasia, but I get the exact same error as you when I use "undefined" for the region instead. Are you sure the region isn't getting overwritten somewhere in your code?

@zhaoxingyun Were you able to get this working?

The reason is the account problem, it can be used normally after creating a new account.


enhancement: satisfy vehicle logistic requests from the item-network

Since we already do it for players and certain logistic-containers, why not also support vehicles.
In vanilla, the only vehicle with logistics that I see is the spidertron.
The "trash" inventory for the spidertron is defines.inventory.spider_trash.
The "main" inventory for the spidertron is defines.inventory.spider_trunk.
The request slots are accessed via entity.request_slot_count and entity.get_request_slot(slot).
I know other mods add things like helicopters. I'll scan those and see what they use.

Pull request #49


Deployment not found

URL: vidstack.io
I wanted to use the player so I went to the docs and found this

Working on it, changing provider

It's back up

Thanks


README.md on how to connect the backend databse

require a README.md on how to connect the backend databse
(you can close this issue after you know this requirement)

readme has been updated, this part will explain your question.


Corrected the link to entitlement api

The link was broken - corrected it to point to the service principal entitlement API. Fixed it to point to the correct API.

This change was recently merged in https://github.com/MicrosoftDocs/azure-devops-docs/pull/13220/files. I'll close this PR now.
Thanks!


crypt + b2: 400 sha mismatch

I'm using rclone 1.33 on Linux x64, trying to upload a local file to Backblaze B2 using the new Crypt remote type.

Note that this has the unfortunate consequence that all B2 uploads with crypt will be buffered to disk first.  This is because B2 require the SHA1 of the object before it is uploaded.  They are planning to allow you to supply it afterwards in an update of the API which will fix this.
http://pub.rclone.org/v1.33-2-g140a3d0β/

I've confirmed that v1.33-2 fixes the issue. Thanks for the fast turnaround!
When uploading "Large Files" via B2's large file API, will only chunks need to be buffered, on the entire file?

Thanks for confirming that.
When uploading large files ( > --b2-upload-cutoff) the file won't be buffered to disk.  The individual chunks are buffered in memory as they were before.


hot to make a soap request in swift 3

hi
how can I make a soap request
call web service like http://www.w3schools.com/xml/tempconvert.asmx
and call method CelsiusToFahrenheit with send parameter and get response
can you please share a sample
i have tried many times
but did not get the true result
please me

http://webindream.com/soap-with-swift/

Sorry, no SOAP support in Alamofire. I'm truly sorry if you have to use such a service.
Sorry, we use our GitHub project for bug reports and feature requests. In the future, you should open questions like this on Stack Overflow and tag alamofire.
Cheers. 🍻

From our Contribution Guidelines
Asking Questions
We don't use GitHub as a support forum. For any usage questions that are not specific to the project itself, please ask on Stack Overflow instead. By doing so, you'll be more likely to quickly solve your problem, and you'll allow anyone else with the same question to find the answer. This also allows maintainers to focus on improving the project for others.


Add demo hosted on github pages

Add demo hosted on github pages

sound like good idea, but we must put some good json data for this project maybe we can use jslive.com for catch some

IMO probably something more relevant to the topic will be better, like PluralSight

... if PluralSight give us api with out registry, but yes is better that

should be possible with rest api discovery if not look for another source
but relevant topic
Pozdrawiam,
Piotr Witek
2016-06-04 12:19 GMT+02:00 Pan Rada Production<EMAIL_ADDRESS>
... if PluralSight give us api with out registry, but yes is better that
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/piotrwitek/training-management-tool/issues/6#issuecomment-223748176,
or mute the thread
https://github.com/notifications/unsubscribe/AAtHAzYBqe60K9x5qztfOgW0DFixrqzbks5qIVFPgaJpZM4IuFJS
.


PianoEval

hi, great job !
I am wondering if the Piano dataset used in the paper can be shared?
Thanks~ the high quality piano dataset is really rare TAT

Hi, thanks!
Unfortunately, due to the Recording Labels copyrights, we cannot share the dataset.


refactor(parser): remove oxc_ecmascript crate

#7109  👈
main

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

Join @Boshen and the rest of your teammates on  Graphite


expand chart functionality

Expand cloud custodian helm chart functionality to support:

Persistence Volume / Existing Persistence volume claim.
Customize args.
Ability to use external secret instead of envars as secrets.
Upgrade image version to 9.11.0.
Add CronJob restartPolicy.

@kapilt Is the project currently open for contribution ?

definitely, my apologies, i haven't been monitoring this repo for issues/prs as actively.

Was able to successfully upgrade from 0.1 to 0.2 and my job still ran after. I did not manually test all of the new configuration values but none of them fail helm lint
❯ helm history cloud-custodian-cron-1617375399
REVISION        UPDATED                         STATUS          CHART                           APP VERSION     DESCRIPTION
1               Fri Apr  2 10:56:39 2021        superseded      cloud-custodian-cron-0.1.0      0.9.9           Install complete
2               Fri Apr  2 11:06:24 2021        deployed        cloud-custodian-cron-0.2.0      <IP_ADDRESS>        Upgrade complete

@kapilt / @wwitzel3 ,
Thanks for commit review.
Let me know if you think about modifying some commit changes before merge.


Support long paths for NTFS

According to this blog post there are two ways to enable support for long paths in .NET applications for Windows 10: either target .NET 4.6.2 (1) or add some special app.config and app.manifest settings (2).
This PR implements (2).
app.config got formatted and this line is the important thing I added.
Since paket.res is a binary file and git doesn't provide a nice diff view, I'll try it here:
Before:

After:

I don't know why I had to put this under "RT_MANIFEST". I got this from powershell.exe.
Content of RT_MANIFEST/1 is copied from the blog post linked above:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
  </windowsSettings>
</application>

I couldn't figure out a nice way to test this so I only tried it locally.
Do you think paket.bootstrapper should have this as well?

I think you can use a xml manifest and modify the .fsproj
see http://stackoverflow.com/questions/26161113/how-do-i-embed-application-manifest-in-f-application

You mean an app.manifest? I tried that but it seems you can't have both a .res file and a .manifest file (see here - I know this is for C# but I got the same error from the F# compiler).

ah, I think you are correct - nevermind then. I just thought a xml manifest was a bit easier to modify than some binary res file.

I thought so too... until I got that compiler error :-)

Have to revert that. https://github.com/fsprojects/Paket/issues/1955#issuecomment-252642134
It seems to break people

Hm, sry about that, I hoped it would just be ignored. I currently can't find a way around it unfortunately.

Question is are we able to set the app.config dynamically when we detect windows 10 (for example via bootstrapper)?

that wouldn't work when you call paket.exe directly. Or it would need to copy itself to temp, modify the app config, and relaunch it.

Magic mode bootstrapper could write the correct manifest config before invoking paket.exe?

Our buildservers don't have internet, so we just check in paket.exe directly

@forki Can we consider adding this change back into paket?  Maybe add it into version 6 so the users on older systems would no be impacted? I would be hugely beneficial with the long .Net Standard packages names.

@FrankGagnon if some finds a way to make it non-breaking?!

@forki wouldn't it be fair to include a breaking change in a major version? Version 6 is supposed to be aimed at full .Net Core/Standard compatibility, I believe supporting long paths is a very important feature in achieving this goal.
As far as the breaking change itself, sadly the user that reported it didn't mention his environment, it would have been necessary to diagnose the issue and know why it would be breaking. I believe this is well supported on all non-deprecated versions of Windows.

The problem is not that it is breaking but that there is no workaround so
far.
FrankGagnon<EMAIL_ADDRESS>schrieb am Mi., 8. Apr. 2020, 16:41:

@forki https://github.com/forki wouldn't it be fair to include a
breaking change in a major version? Version 6 is supposed to be aimed at
full .Net Core/Standard compatibility, I believe supporting long paths is a
very important feature in achieving this goal.
As far as the breaking change itself, sadly the user that reported it
didn't mention his environment, it would have been necessary to diagnose
the issue and know why it would be breaking. I believe this is well
supported on all non-deprecated versions of Windows.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/fsprojects/Paket/pull/1944#issuecomment-610996908,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAOANBYZGEPHOI6ZMX4273RLSD2LANCNFSM4CSBOYTA
.

Do we know there's no work around? Two things could have failed for the user, the app.config setting or the manifest setting. It could me made so that the app.config would be downloaded in an "opt-in" fashion if it's a problem. If the manifest is a problem then it's trickier, I agree.
Don't you think it's worth giving it another shot and at least trying the fix the issues if any arise?

The manifest is the issue.
A manifested app fails on systems which don't support this entry.

Ok thanks for the insight, what are those systems?

Afaik anything pre Windows 10 Anniversary update (1607).

Understood, I see it in the Doc here https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests#longpathaware
So would introducing this as a breaking change be acceptable?
If not, would it be possible to build 2 versions of paket.exe, one with the manifest and the other without it and add an option to paket.bootstrapper.exe to download the one with the manifest? This  would be a way to make this change retro-compatible.

Yes, two exes with different manifests would probably work.
I think (but not 100% sure) that it is also possible to place the manifest next to the app (appname.manifest), if the app itself does not embed one.

From what I gather here, the Application Manifest has to be included as a resource in the assembly.
Would it be a big effort to have the 2 exes with different manifests (and one with a config file)?

As usual, the microsoft documentation is not complete. Embedding it as a resource is the preferred solution, but you can also put it next to the app.
There are a few caveats, for example it seems to be cached for some time:
https://csi-windows.com/blog/all/27-csi-news-general/245-find-out-why-your-external-manifest-is-being-ignored

The Microsoft documentation on external manifests would lead one to conclude that as long as an EXE does not have an embedded manifest, an external manifest will be read and used instead.

The truth, however, is that manifests are cached in the Activation Context Cache.

The secret sauce here is that if you change the EXE’s modification date time stamp, the loader will look again for a manifest.  This seems to work reliably every time.

Yes you're right it didn't work in my tests because I didn't update the exe's modification time stamps. Ok so the bootstrapper could have an option to support long paths which would do 3 things :

Download the paket.exe.manifest
Download the paket.exe.config
Update the paket.exe modification timestamp

This seems like a pretty good solution to me!


✨ #1616 Recovery script in Docker container

🤖[deprecated] Generated by Copilot at 610fdbd
This pull request adds a command-line interface to the application that allows resetting the passwords of users. It adds a cli directory with a cli.js file that defines two commands: reset-owner-password and reset-password, using the yargs package. It also adds two modules that implement the commands by generating random passwords, deleting sessions, and updating the database. It modifies the Dockerfile to copy the cli directory and install the yargs dependency.

Verified on my local instance that all sessions are deleted and user can log in with the new password 👍🚀


Render lilypond11d

This PR renders 11d-TimeSignatures-CompoundMultiple.xml.

NOTE: vexflow doesn't seem to support rendering compound time signatures, but this case seems to exceedingly rare, the fallback behavior is acceptable.

Divergences

vexml doesn't support beaming yet.
vexml and osmd don't support multiple complex time signatures, but reduce to the same "effective" time signature using the LCM of the denominators.
MuseScore 4 seems to only use the last time signature in the <time>.
GuitarPro 7 seems to only use the first time signature in the <time>.

vexml

lilypond

osmd

MuseScore 4

GuitarPro 7

@jaredjj3 vexml supports compound time signatures. Like this:
new Stave(10, 10, 300)
    .addTimeSignature('3/8')
    .addTimeSignature('+')
    .addTimeSignature('2/8')
    .addTimeSignature('+')
    .addTimeSignature('3/4');

Awesome! I’m glad you saw this. I’ll fix this.

I was able to use the fix in #143, thanks again @rvilarl.


Stackoverflow when upserting

I get a Stackoverflow with the following exception:
Caused by: java.lang.StackOverflowError: stack size 1037KB
at android.database.sqlite.SQLiteConnection$OperationLog.endOperation(SQLiteConnection.java:1355)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:525)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:996)
at io.requery.android.sqlite.SqlitePreparedStatement.(SqlitePreparedStatement.java:38)
at io.requery.android.sqlite.SqliteConnection.prepareStatement(SqliteConnection.java:127)
at io.requery.sql.ConnectionDelegate.prepareStatement(ConnectionDelegate.java:225)
at io.requery.sql.PreparedQueryOperation.prepare(PreparedQueryOperation.java:58)
at io.requery.sql.EntityUpdateOperation$1.evaluate(EntityUpdateOperation.java:66)
at io.requery.sql.EntityUpdateOperation$1.evaluate(EntityUpdateOperation.java:55)
at io.requery.query.BaseScalar.value(BaseScalar.java:49)
at io.requery.sql.EntityWriter.update(EntityWriter.java:594)
at io.requery.sql.EntityWriter.upsert(EntityWriter.java:494)
at io.requery.sql.EntityWriter.cascadeWrite(EntityWriter.java:932)
at io.requery.sql.EntityWriter.update(EntityWriter.java:575)
at io.requery.sql.EntityWriter.upsert(EntityWriter.java:494)
at io.requery.sql.EntityWriter.cascadeWrite(EntityWriter.java:932)
at io.requery.sql.EntityWriter.updateAssociations(EntityWriter.java:641)
at io.requery.sql.EntityWriter.update(EntityWriter.java:600)
at io.requery.sql.EntityWriter.upsert(EntityWriter.java:494)
at io.requery.sql.EntityWriter.cascadeWrite(EntityWriter.java:932)
It seems to be related to these two entities:
@Entity(stateless = true)
public abstract class AbstractMedia implements Persistable {

    @Key
    String id = UUID.randomUUID().toString();

    @OneToOne(mappedBy = "media")
    Submission submission;

    @ForeignKey
    @OneToOne(cascade = {CascadeAction.DELETE, CascadeAction.SAVE})
    OEmbed oembed;

    String type;

}

@Entity(stateless = true)
public abstract class AbstractOEmbed implements Persistable {

    @Key
    String id = UUID.randomUUID().toString();

    @OneToOne(mappedBy = "oembed")
    Media media;

    String provider_url;
    String description;
    String title;
    String url;
    String type;
    String author_name;
    String author_url;
    int thumbnail_height;
    int thumbnail_width;
    String thumbnail_url;
}

As always I'll keep doing some debugging but if you spot any glaring issues let me know.

Quick question; I've followed the Person and Phone example that you provided but I'm using Abstract classes rather than interfaces. My theory is that since it's a class and not an interface, when the entity is being written into the database it's picking up relationships and getting stuck in an endless loop.
For example, when writing Media it's finding OEmbed and writing that, but then within OEmbed it's finding Media and rewriting that, finding OEmbed again etc etc.

Wether it's an interface or class won't make a difference, this maybe likely happening because you modified both sides of the relationship before persisting them, when you only to need to modify one side and then persist. But either way it shouldn't stackoverflow will look into it.

The whole hierarchy is created from a web response so you're correct that both are modified, they are all stateless as well so I suppose this will always be the case.


Google Search - hide Related searches filter also removes page numbers

Describe the bug
The Hide the "Related searches" bottom content filter should normally remove the related searches content, but the page numbers are also removed, making it impossible to navigate to next page.
Your browser and device
Firefox/Chrome/Edge, desktop
Reproduction steps

Go to https://letsblock.it/filters/google-search-cleanup
Add google.*###botstuff to uBO filters list
Search for anything on Google and scroll to the bottom of the page

Expected behavior
Hide the related searches content without removing page numbers
Additional notes
Before and after adding this filter:

Thanks, it's no longer blocking the page numbers. :)


[SPARK-39258][TESTS] Fix Hide credentials in show create table after SPARK-35378

What changes were proposed in this pull request?
SPARK-35378 changes the return value of CommandResultExec.executeCollect() from InternalRow to UnsafeRow, this change causes the result of r.tostring in the following code:
https://github.com/apache/spark/blob/de73753bb2e5fd947f237e731ff05aa9f2711677/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala#L1143-L1148
change from
[CREATE TABLE tab1 (
  NAME STRING,
  THEID INT)
USING org.apache.spark.sql.jdbc
OPTIONS (
  'dbtable' = 'TEST.PEOPLE',
  'password' = '*********(redacted)',
  'url' = '*********(redacted)',
  'user' = 'testUser')
]

to
[0,10000000d5,5420455441455243,62617420454c4241,414e20200a282031,4e4952545320454d,45485420200a2c47,a29544e49204449,726f20474e495355,6568636170612e67,732e6b726170732e,a6362646a2e6c71,20534e4f4954504f,7462642720200a28,203d2027656c6261,45502e5453455427,200a2c27454c504f,6f77737361702720,2a27203d20276472,2a2a2a2a2a2a2a2a,6574636164657228,2720200a2c272964,27203d20276c7275,2a2a2a2a2a2a2a2a,746361646572282a,20200a2c27296465,3d20277265737527,7355747365742720,a29277265]

and the UT JDBCSuite$Hide credentials in show create table failed in master branch.
This pr is  change to use executeCollectPublic() instead of executeCollect() to fix this UT.
Why are the changes needed?
Fix UT failed in mater branch after SPARK-35378
Does this PR introduce any user-facing change?
NO.
How was this patch tested?

GitHub Action pass
Manual test

Run mvn clean install -DskipTests -pl sql/core -am -Dtest=none -DwildcardSuites=org.apache.spark.sql.jdbc.JDBCSuite
Before

After

cc @srowen

also ping @cloud-fan  for fix master UT

The original change went into 3.2, but do we need this only in master (3.4) or also 3.3?

The original change went into 3.2, but do we need this only in master (3.4) or also 3.3?

Let me check this

The original change went into 3.2, but do we need this only in master (3.4) or also 3.3?

3.3 and 3.2 also need this pr

Somehow I thought that PR passed tests and merged it...

This is something I ought to do, haha :)

+1, LGTM. Thank you for the fix.
However, @LuciferYang , please use PR link instead of JIRA link to point the problematic commit in the PR description. The bug is not originated from the original SPARK-39258, isn't it?

Use the pr link now

PySpark GitHub Action job is still running over 5h 40minute. It's irrelevant to this test PR. I'll merge this PR.

Merged to master/3.3/3.2.

thanks all ~


Folding: Allow custom textMarkers

Adds a marker option to foldOptions, to complement the existing widget option.
The marker value is expected to be a function that accepts a start and end range, a widget, and boolean for clearOnEnter, and returns a TextMarker.
This allows customization of the text marker for inclusive/select left/right properties, custom clear behavior, overriding clearWhenEmpty, and can be used as an entry point for code that should be run before adding a fold.

I'm not a fan of this—I don't see any reason to ever change the inclusivity of a fold marker, and adding imperative hooks when creating a marker probably won't end well. What's the specific use case that prompted this patch?

What's the specific use case that prompted this patch?

Mostly, I needed an immediately-before-added and after-removed hook, and I thought that making the marker available outside of the plugin was a nice bonus.
My use case isn't common, but I've added persistent folding to markdown documents, so that any heading ending with ... is considered "folded". To do that, I'm adding document content when the fold is created (that will get folded), and removing it when the fold is cleared.
The easiest way to do that was to change the content and alter the fold range at the last second, and to add a custom clear handler to the marker to remove that content. I may be misremembering but the unfold signal occured too late for my use.

Don't the "fold" and "unfold" events emitted by the foldcode addon provide a more solid way to do something like that?

I see, you need to change the document as a fold is taking place.  Working with changing coordinate systems is unfortunately not very convenient in CodeMirror 5.x.

Thanks. It doesn't sound like this PR is a good match, so I'll close.


configuration of Apollo with Nuxt.js

Setup Apollo Client
#2
What is the purpose of this pull request?
 Share initial configuration of Apollo

How Has This Been Tested?
  Not tested yet, waiting this review to be tested soon.

After #12 is merged, use npm run lintfix to fix the errors.

Here, just npm run lint -- --fix  worked.


ARROW-16048: [Python] Avoid exposing null buffer address to the Python buffer protocol

A 0-size buffer created in C++ can very well have a null address. However, when exporting that buffer through the Python buffer API, we should ensure we pass a valid pointer.
Also, ensure mutability of a buffer is preserved when pickling and unpickling.

@pitrou I'm sorry I'm not at a computer that I can merge PRs, it seems like this is ready though?

Hmm, right, I'm going to rebase first to get a working macOS build.

@github-actions crossbow submit -g python

Successful Appveyor build on my fork: https://ci.appveyor.com/project/pitrou/arrow/builds/43298552


Is there a way to view feature importance and pruned features of a trained predictor?

Since autogluon has a feature_prune parameter for the fit() method, there should have a way to get the importance of all features, and to get a list of pruned features.

This is a feature we are currently working on. If a user tries to specify feature_prune in v0.0.5 it will display a warning and automatically set to False, as the current feature pruning code is not robust enough to be ready for users. Once feature_prune functionality is ready, obtaining feature importance for all features and the list of pruned features will be made available at the same time.

@Innixma Thanks for the info.
Can't wait to see the new release. :smile:

Hi @ccll ,
The latest AutoGluon 0.0.6 now has built in feature importance support for Tabular. After getting your fitted predictor object, simply call predictor.feature_importance(X_test) or predictor.feature_importance().
Documentation: https://autogluon.mxnet.io/api/autogluon.task.html#autogluon.task.tabular_prediction.TabularPredictor.feature_importance
Note that feature pruning is still not implemented at the moment, and I plan to add this in a later version.
If you get a chance to try out feature importance, let me know what you think!

@Innixma
Yohoo! Thank you for the great work.
I'll try that later.

Guys, awesome library. Thank you!
How do you calculate feature importance, is it something similar to Shap value?
And do use the same strategy for dropping features during training as in feature_importance(X_test)?
Thank you!

@diff7 We use permutation-shuffle importance, a black-box feature importance method. It is very similar (and potentially identical) to the recently added sklearn permutation_importance: https://scikit-learn.org/stable/modules/permutation_importance.html
We currently do not do any feature pruning during training, but in future we do plan to do this, and when we do it will be using the permutation-importance method for dropping. Regarding which features to prune, small positive values can also be harmful, but it is difficult to identify without retraining the model. It is generally helpful to have a rising prune threshold with repeated model training, and then using a form of early_stopping to pruning iterations to find the best feature set.

Hi, thank you for your reply.
If you do not do feature pruning during training how
feature_prunebool, default = False in fit is used?
Or it can be used only after one session of training?

feature_prune = True will log a warning indicating that feature pruning is not available, and will force it to false. We do this to maintain backwards compatibility.

Got it, thank you!


Vertical Flip

Firstly, thanks for the code, it runs on my two ESP-EYE with a slight delay, I think its my wifi as depending on what ip address it gets depends on the latency, no idea nor can I make sense of it, but all works great.
If I wanted to flip the video back the other way, where would I modify it prior to compiling? I did try to modify m99141_regs.h at  line #define TIMING_TC_REG20_VFLIP   0x00 /* Vertical flip enable */ I tried a few settings to no avail.
thanks

sensor_t* s = esp_camera_sensor_get();
s->set_vflip(s, true);   // or false


[CT-1228] Incorrect Docs - dbt v1.3 - MODEL/NODE schema correction from raw_sql to raw_code

Describe the bug
Docs for manifest v6 are not aligned with what dbt v1.3 is producing for me.
Docs call for a field called raw_sql in the model jinja var but that field does not exist. It is instead raw_code for dbt v1.3
I'd love to fix this, but I haven't been able to figure it out after 20 minutes and now I'm moving on.
Thankss!

Thanks @randypitcherii!
Looks like ~we~ I may have missed a spot in https://github.com/dbt-labs/dbt-docs/pull/293:
https://github.com/dbt-labs/dbt-docs/blob/32327aa70c13007a59f065cb79e383623e365122/src/app/docs/operation.js#L30-L33


Update MSBuildLocator in source-build-externals from 1.4.1 to 1.5.5

dotnet/format has recently updated MSBuildLocator from 1.4.1 to 1.5.5: https://github.com/dotnet/format/commit/2d7dc85dc1c9856a77a3ccdbfcfac47a9f5ce05d
We should update the version in https://github.com/dotnet/source-build-externals' main branch to unblock offline tarball/VMR builds.

[Triage] There are some open questions on what version is going to be required in 7.0.  There is an active issue where the version is being updated in a servicing release - https://github.com/dotnet/format/issues/1759.  It will likely be needed in main.


Achievement Menu, Pause Menu, Achievement Popups

In this PR I implemented a pause menu that can be toggled by pressing escape. This way the users can pause the game if they want and we can also add some options here or access other menus. I also implemented a display menu for the achievements that is accessed through the pause menu. The functionality is good but I'm not the best at making it look nice so if you want to change the menu or the icons, they can be changed from AchievementMenu.tscn or Achievement.tscn respectively. Finally I just changed the achievement popup to be a fade in animation and I also worked on implementing a queue system so that the animations aren't all playing at the same time.

I actually hadn't thought about that. I had been thinking of them as two separate things, like ones for pausing to open different menus/save whereas the other is if you want to stop time and plan your city. There's no reason I can't combine them though so if you guys think I should, let me know!

Interesting, the only reason I really thought of them as one thing was because I was associating them both with the "pause" action, but I could see the necessity of keeping them separate for their respective purposes. Maybe when clicking pause users have the option of navigating to the pause menu? Not sure

I actually hadn't thought about that. I had been thinking of them as two separate things, like ones for pausing to open different menus/save whereas the other is if you want to stop time and plan your city. There's no reason I can't combine them though so if you guys think I should, let me know!

I think that keeping them separate is fine, but I do see how it could be confusing for a player to have a 'pause button' and a 'pause menu' that aren't related. Maybe something to talk to Patriel about when we get into UI stuff?

I went ahead and implemented both your and Alexandra's suggestions. You can now close the Achievement menu using escape and open the pause menu using the pause button. I think both those suggestions make a lot of sense, thanks!


Replace "being worked on for PHP 5.5" with "present in PHP 5.5 and up" on repository & readme?

Now that php 5.5 is out and considered stable and all, the tagline for the repository and the first line of the readme are a little misleading in that password_* is available in core now.

Good point, fixed :-)


Fix FieldTypes view for form rendering

Q
A

Bug Fix?
yes

New Feature?
no

BC Breaks?
no

Deprecations?
no

Fixed Tickets
#51

License
MIT

"Please change ICU version to 51.2" Argggg, are you kidding me!!
Installed: "54.1"
Stub: "51.2"
So the installed version is newer then the stub.
Great now what?


test roc gen-stub-lib on macos

an experiment. Maybe it just works

@Anton-4 does this command look right (and is it ok to run on those machines?)

I think we can move the dylib test after the cargo test --locked --release because that step already generates the libapp.so when doing the cli_run test for platform-switching/rust-platform. Thereby allowing us to skip the gen-stub-lib step.
Also, why is it cargo test test instead of cargo test?

It does look like libapp.so is missing so the platform_switching_rust() test must not have generated it.
I'll poke around a bit to see why that is.

When building the rust platform on macOS, only macos-arm64.o is generated. If that is the case, does it still make sense to generate a libapp.so with gen-stub-lib and test it?

that makes sense actually: that file is generated by the surgical linker on linux, but on mac we don't use the surgical linker. So we have to generate that file explicitly


Create internal process documentation for adding third-party content creators

Work in progress document

Still need to connect with you @Rajesh1041 to talk about this.

Any final additions or comments @Rajesh1041 ?

Seems fine @burrage , I sent you a slack message regarding a doubt i have.


New functionality, bug fixes, and enhancements

New functionality
Doubly linked list > Singly linked list
A singly linked list is a linked list where nodes are connected by pointer to the next node. This is a very simple, low overhead data structure, but it has it's disadvantages. In order to delete a node from the linked list, we must loop the entire list to find the previous node so the previous node can be linked to the node after the node we want to delete (e.g. Keeping the list linked together).
┌──────┐    ┌──────┐    ┌──────┐
│      │    │      │    │      │
│ Node ├────► Node ├────► Node │
│      │    │      │    │      │
└──────┘    └──────┘    └──────┘

A doubly linked list is a linked list where nodes are connected by pointers both to the next node and the previous node. The advantage of this over a singly linked list is that to delete a node, we already have both the previous, and next node. This means delete nodes from a doubly linked list is significantly faster than a singly linked list.
┌──────┐    ┌──────┐    ┌──────┐
│      ├────►      ├────►      │
│ Node │    │ Node │    │ Node │
│      ◄────┤      ◄────┤      │
└──────┘    └──────┘    └──────┘

Currently, the library can allocate onto the memstack, and then free the entire memstack at once. This is an incredibly useful functionality, but I believe the library would benefit from having the ability to do the following:

De-allocate the memstack without deleting the memstack itself like msfree does.
De-allocate a set number of nodes with and without deleting the user allocated memory.
Add new nodes to a memstack without having to allocate through the memstack library
Remove a node from the memstack and return the user allocated memory

Each section below details a function that can complete each functionality list above.
msclear(memstack*)
msclear is used to clear a memstack without deleting the memstack itself. This is useful if further allocations are going to be made, but previous allocations must be freed. In this case, using msfree would require another memstack* to be create which is inefficient and annoying.
memstack* ms = msnew();  // Create a new memstack
int* a = msalloc(ms, sizeof(int));  // Allocate onto the memstack
int* b = msalloc(ms, sizeof(int));
int* c = msalloc(ms, sizeof(int));
// ...
// Now we want to get rid of the allocations...
// But we want to make more allocations within the same scope!

// Using msfree would require us to call msnew() again which is annoying
msclear(ms);  // Instead, we "clear" the memstack's chain, but the memstack still exists!
int* x = msalloc(ms, sizeof(int));  // We can continue allocating to the memstack

// ...
// We finally free the memstack now we are done!
msfree(ms);

mspop(memstack*)
mspop allows the user to free the last memstack_chain_ptr* node of a memstack* and get a return value of the memstack_chain_ptr*'s void* ptr. This essentially "removes" the allocation from the memstack thereby, removing the pointer from being freed by msfree or msclear later on.
memstack* ms = msnew();  // Create a new memstack
int* a = msalloc(ms, sizeof(int));  // Allocate onto the memstack
int* b = msalloc(ms, sizeof(int));
int* c = msalloc(ms, sizeof(int));
// ...
// Now we want to free "a" and "b", but not "c".
// We can do this by using `mspop`.
c = mspop(ms);

msfree(ms); // Now we can free the memstack, but keep c for further use...

// ...
// The user is now in charge of "c", they must free it themselves.
free(c);

It's important to note, mspop will always remove the last element in the memstack_chain_ptr* chain. So, in order to "pop" a memstack node, it must have been the last one allocated.
mspush(memstack*, void*)
mspush allows allocations to be added to the memstack without the memory having been allocated by msalloc. This would allow users to manage allocations themselves, and then add those allocation to the memstack* if they wish.
This could also be used in scenarios when other library allocate memory for the user, and the user wants it all to be freed at once.
memstack* ms = msnew();  // Create a new memstack

int* a = malloc(sizeof(int));  // Allocating memory ourselves
int* b = give_me_memory();  // Allocating memory from another library's function

// ...
// The user wants these to be freed all at once, but the memory has already
// been allocated so they cannot use msalloc()!

mspush(ms, a);  // We can add them anyway!
mspush(ms, b);

msfree(ms);  // This will free "a" and "b" for us!

msrollback(memstack*, int, bool)
msrollback allows for many memstack_chain_ptr* nodes to be freed at once, but not necessarily all nodes, or memory will be freed! The user may specify the number of nodes they wish to be deleted, and whether the user memory will be deleted along with the node or not!
This would be extremely useful for deleting many nodes from the memstack* without deleting the memory the memstack_chain_ptr* was holding for the user.
memstack* ms = msnew();  // Create a new memstack

int* a = msalloc(sizeof(int));  // Allocate onto the memstack
int* b = msalloc(sizeof(int));
int* c = msalloc(sizeof(int));
int* d = msalloc(sizeof(int));

// ...
// I no longer want the memstack to manage "d" for me
// I want to free "b" and "c", without freeing "a" yet

msrollback(ms, 1, false);  // Removing the last element, without freeing the user's pointer
msrollback(ms, 2, true);  // Removing 2 elements starting at the last, free everything

*d = 100;  // "d" can still be accessed and managed by myself
*a = 100;  // "a" is managed by the memstack still, "b" and "c" are freed

msfree(a);  // "a" is gone!
free(d);  // I've freed "d" myself

msprint(memstack*)
msprint has nothing to do with managing memory instead, it is for contributers, and users of the library to debug their programs better. msprint will display the given memstack in the console which can help understand what's on the memstack.
It's usefulness can be shown through an example:
#include "memstack.h"

int main() {
    msinit();  // initialise global
    int* a = msalloc(GLOBAL_MEMSTACK, sizeof(int));  // Create allocations
    int* b = msalloc(GLOBAL_MEMSTACK, sizeof(int));
    int* c = msalloc(GLOBAL_MEMSTACK, sizeof(int));

    // Print the contents of global
    msprint(GLOBAL_MEMSTACK);

    // Modify global by freeing the last element
    free(mspop(GLOBAL_MEMSTACK));

    // print the contents of global again
    msprint(GLOBAL_MEMSTACK);

    msfree(GLOBAL_MEMSTACK);
    return 0;
}

The output from this code is:
Printing memstack:
 [-1] (nil) <--previous-- [0] Current: 0x562cff95c6d0 --next--> [1] 0x562cff95c710
 [0] 0x562cff95c6d0 <--previous-- [1] Current: 0x562cff95c710 --next--> [2] 0x562cff95c750
 [1] 0x562cff95c710 <--previous-- [2] Current: 0x562cff95c750 --next--> [3] (nil)
 [INFO] Node count: 3
 [INFO] Nodes are linked to both the next, and previous node
Printing memstack:
 [-1] (nil) <--previous-- [0] Current: 0x562cff95c6d0 --next--> [1] 0x562cff95c710
 [0] 0x562cff95c6d0 <--previous-- [1] Current: 0x562cff95c710 --next--> [2] (nil)
 [INFO] Node count: 2
 [INFO] Nodes are linked to both the next, and previous node

Bug fixes
Fixed dead memstack node allocated every msnew() call
msnew() creates a "first" node but that node is never used because msalloc always adds a new memstack_chain_ptr* node to the memstack*. This issue was found during the implementation of mspop and fixed with help from msprint.
Enhancements

Fixed "Legcacy" typo in README
Added more code comments (idk how.. There are already so many lmao)
Added a length property to the memstack struct

I forgot to add in the linked list section, but I changed memstack_chain_ptr* nodes to point to both the next and the previous nodes. This helps with deleting nodes.

Latest commits remove stdbool from include/memstack.h and use type int for parameter destructive of function msrollback. Users will use 1 or a macro of 1 like commonly defined TRUE to enable the freeing of memstack_chain_ptr->ptr.

I feel like adding a TRUE macro to the library could interfere with user code. If the user also defines a TRUE macro (which isn't uncommon) it will collide with the library's TRUE macro. I think it would be best to keep the parameter as it is now.

well, in case it would interfere with a TRUE macro, the user should be reccomended to define macros post-library, plus that the TRUE macro will almost always be 1 or(in certain cases) a boolean(https://stackoverflow.com/questions/17010041/why-define-true-1-1-in-a-c-boolean-macro-instead-of-simply-as-1). But it is your PR not mine, i'll just make an issue for it for later.

#7


@conda-forge-admin, please add user @DahnJ

[ ] I read the conda-forge documentation and could not find the solution for my problem there.

Issue:

Environment (conda list):

$ conda list

Details about  conda and system ( conda info ):

$ conda info

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I added user @DahnJ in conda-forge/h3pandas-feedstock#7.


Is it possible to unrar a file from memory rather than having to write it to disk and pass it a file name?

Hello, a bit new to go so apologies if i'm missing something obvious here. But is there a simple way to pass an ioReader containing a .rar to one of the functions and then init the Rar from the ioReader rather than having to pass it the file path?
Thanks.

There is now! That is what #302 does, which is a complete rewrite of this package and will become v4.


Solver hints with multiple outputs

Solve hints currently forces the signature to return only one output.
However, if multiple variables are linked (bit decomposition, external-proof verification, ...) then it is wasteful (somethings prohibitively so) to compute the same hint n-times for each bit.
Two ideas;

from @AlexandreBelling  Make "stateful hints" solving order deterministic
modify or add a new API [N]Variable <- cs.NewHint(N, ..)

Have you started working on it? If not, then I would have a look.

All yours :)
Ideally I'ld like to keep only 1 API for hints, no strong ideas on this topic 👍

For the second option - we can not return a variable-length array, but only slice. In that case, the arguments to NewHint wouldn't change, but the method would just return a slice of variables. So, the signature would be:
API.NewHint(f hint.Function, inputs... frontend.Variable) []frontend.Variable

We would also need to change the signature of hint.Function to:
type Function func(curveID ecc.ID, inputs []*big.Int, result []*big.Int) error

For me it seemed initially, that this wouldn't be a good approach, as then the user would need to know which elements in the returned frontend.Variable slice are which, but this can be documented with the hint function. I'll implement it and see how it looks.

Edit: Oh, I see - the variables are allocated before the function is evaluated and we do not know the number of resulting variables ahead of time.

Yes, that would force the user to pass api.NewHint(n, ...) , n being the size of the expected output. Or have hints functions be a struct implementing an interface rather than a function. Don't know.


Apply offset to Gihyeok's data

This applies to the Ni 3 edge.

@danielballan L3 edge just to be clear! 👌

Note to my knowledge there are no other issues with any other data that require this kind of shift, just FYI.

Yes, Gihyeok was clear on his instructions about this. I have received the offset values and the indications of which sample name each offset value applies to. Also, in that same email, he supplied the remaining files for 811 Ni L3 data that were missing in the first batch

Sorry, typo. Corrected original post now; thank you.


Handle sigpipe

Thanks for making this script, it's really handy to get my starred repos on the command line. I did have one issue, which this PR addresses.
 This PR follows the example recommended in the official Python docs for handling SIGPIPE cleanly.

@polm
Thank you very much for the PR. I was able to reproduce the BrokenPipeError that occurs when piping the command output to head before this PR. It looks good, so I'll merge it. Thanks!


Memory bottleneck

I have been trying to push Vayesta to calculate molecules with ~200 atoms with >2000 cGTO, but seem to a wall mostly due to memory issues. The BNO construction is not an issue, but the construction of cluster eri is. DF brought me a bit further, but this projection still is a bottleneck
Digging in the code and in pyscf, this seems to be done via rotation of the full eri which is of course very memory consuming. Could an 'integral-direct' approach help here?

So I have no doubt that this could be done, but doing it efficiently would take a bit of care and thought. At one level, we would just do a first 'quarter-transform' of the three-index DF integrals into the cluster basis in a direct fashion. This seems feasible, but getting is working for both solids and molecules may be difficult - I guess we just start with molecules. It does of course mean generating all integrals for each cluster, rather than reusing them. This would increase the prefactor in the (leading-order) N^4 step of the algorithm for the ERI projection...but could get the memory overhead down to N^2.
A longer-term option (I guess in conjunction with this) would be to start thinking about whether we can define a compact support of the cluster orbitals over the AOs, perhaps in a domain of AOs on atoms up to a certain distance away. This is obviously the first step towards a fully linear-scaling approach.

What's the cluster size here? Do you have an example script?
I'm not aware that we project full system ERIs in any solver, as this would
scale N^4 and anyways require too much memory.
On Fri, 27 Oct 2023, 16:40 ghb24, @.***> wrote:

@maxnus https://github.com/maxnus any thoughts...?
—
Reply to this email directly, view it on GitHub
https://github.com/BoothGroup/Vayesta/issues/147#issuecomment-1783127997,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADBNUNQGAU7FWAPL3W4535DYBPIXZAVCNFSM6AAAAAA6S6QFFCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBTGEZDOOJZG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi @maxnus
I am not sure about the PBC case, but for molecules core.eris calls ao2mo in pyscf to get the cluster hamiltonian
line 147 >mf.with_df.ao2mo(mo_coeff, compact=compact)
line 151 >pyscf.ao2mo.kernel(emb.mf._eri, mo_coeff, compact=compact)
line 149 >mol.ao2mo(mo_coeff, compact=compact)
Under the hood these make a projection of the full system ERI into the cluster orbitlas, mo_coeff if I am not mistaken
The cluster size is not really the problem: I have add troubles even to construct the DMET bath for an hydrogen ring with 402 atoms with cc-pvdz. That is only 2 cluster orbitals, but contracting the full system ERI (2010^4) seem to be the issue...?
I attach my input
Actually on a related memory issues: here I had remove mf = mpi.scf(mf)  and run the scf on each task instead. The reason is the the DF eri is so large that cannot be casted from master to all ranks (at least my architecture won't allow it)
`from pyscf import gto
from pyscf import scf
import vayesta
import vayesta.ewf
from vayesta.mpi import mpi
from vayesta.misc.molecules import ring
mol = gto.Mole()
mol.atom = ring("H", 402, 2.0)
mol.basis = 'cc-pvdz'
mol.output = 'pyscf-mpi%d.out' % mpi.rank
mol.verbose = 4
mol.build()
########  Run RHF ########
run hf
mf = scf.RHF(mol).density_fit()
mf.max_cycle = 200
#mf = mpi.scf(mf)
mf.kernel()
emb = vayesta.ewf.EWF(mf, solver='CCSD', bath_options=dict(bathtype='dmet'))
with emb.iao_fragmentation() as f:
f.add_all_atomic_fragments()
emb.kernel()`
``

The cluster size is not really the problem: I have add troubles even to construct the DMET bath for an hydrogen ring with 402 atoms with cc-pvdz. That is only 2 cluster orbitals, but contracting the full system ERI (2010^4) seem to be the issue...?

Hi Edoardo, this is weird, it should not construct the full tensor when using DF. Unfortunately, I won't be able to look into it before next week.

Quick update: following @ghb24 's suggestions I tried to reduce PYSCF_MAX_MEMORY to force ao2mo into outcore and not store all intermediates on memory. Unfortunately this not seem to affect the total memory allocation used and I seem to hit the same wall. Only the calculations are noticibly slower. I am sure if this seems that it is still running in incore  despite the lower max_memory

line 147 >mf.with_df.ao2mo(mo_coeff, compact=compact)
line 151 >pyscf.ao2mo.kernel(emb.mf._eri, mo_coeff, compact=compact)
line 149 >mol.ao2mo(mo_coeff, compact=compact)

Of these three transformation routines, only the first one should be encountered if density-fitting is used. The second is for systems without df and the third is a backup for the case that ERIs have been deleted somehow in the meantime.
I tried your example with reduced atoms and indeed only the df.ao2mo version was used.
Where exactly does your calculation run out of memory?
On an unrelated note:
mpi.scf does not speed up the mean-field calculation, but only keeps all ranks other than the master idle.
MPI does help to parallelize the embedding calculations, but in your case, you have a fully rotationally symmetric system, so as long as the mean field obeys this symmetry, it would be better to make use of this instead of using MPI.

Hi Max,
How many atoms have you tried with? Up to 200sh runs fine, but it won't work with 400sh like the example I show here (I think even 300 is problematic). I am not really interested in this system in particular, I just wanted to see how the method behaves with basis set size.
I am studying some enzymes with 200+ atoms and was aiming to use a basis set with >3000 GTOs. SCF converges, the BNOs gets constructed, but when it's time to build the local hamiltonian it goes OOM


Proposal: always install xgo-tool-coverage-serve-darwin-amd64 from source when using incremental coverage

When running xgo tool coverage serve cover.out, Mac OS fails with:
signal: killed

This is due to xgo depends an external downloaded tool, which is prohibited by the Mac OS security policy.
This external binary comes from: https://github.com/xhd2015/coverage-visualizer/releases

Currently if user faces this issue, can try rm ~/.xgo/tool/xgo-tool-coverage-serve and rerun again,


Remove Gradle warning

WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

Thanks @bahaa96, this is indeed needed but I cannot compile after making these changes. Did you test the build was working fine?


Fullscreen'ed window automatically minimizes when swiping the screen on macOS

Reported by @wasedaigo

Related? https://github.com/glfw/glfw/issues/143

This is a bug, but not so critical and should not be a blocker for the next release.

As there is another issue for the same milestone (#1424), let's cherry-pick the fix.