Huge SQL query reaches memcached size limit per key

First, I'm using Django 1.8, Python 3.4.3, Postgres 9.3.x, and memcached 1.4.4 with pylibmc.
I have a form on my site that has a jQuery autocomplete box. This is used to for selecting locations (we have roughly ~13k locations in our database - continents, countries, states, and cities). Here's the view:
def location_query(request):
    # first handle the location autocomplete
    if request.is_ajax():
        term = request.GET['term']

        # I want to explicitly order matching countries at the front of the list
        matching_countries = Location.get_countries().filter(full_name__icontains=term)
        matching_states = Location.get_states().filter(full_name__icontains=term)
        matching_cities = Location.get_cities().filter(full_name__icontains=term)

        matching_locations = list()
        matching_locations.extend(matching_countries)
        matching_locations.extend(matching_states)
        matching_locations.extend(matching_cities)

        locations_json = list()
        for matching_location in matching_locations[:10]:
            location_json = dict()
            location_json['id'] = matching_location.pk
            location_json['label'] = '%s (%s)' % (matching_location.full_name, matching_location.admin_level)
            location_json['value'] = matching_location.pk
            locations_json.append(location_json)

        return JsonResponse(locations_json, safe=False)

And here's the Location model:
class Location(models.Model):
    name = models.CharField(max_length=255)
    full_name = models.CharField(max_length=255, blank=True)  # the name might be "Paris", but full_name would be "Paris, Texas, United States of America"; allowed to be blank only because the script that populates this table will fill it in after all locations are added
    imported_from = models.CharField(max_length=255)
    admin_level = models.CharField(max_length=255, blank=True)
    geometry = models.MultiPolygonField(blank=True, default=None, null=True)
    objects = models.GeoManager()  # override the default manager with a GeoManager instance
    parent = models.ForeignKey('self', blank=True, default=None, null=True)

    def __str__(self):
        return self.full_name

    def get_full_name(self, include_continent=False):
        """
            Get the full name of a location. This includes the entire hierarchy, optionally including the continent.
                e.g., Paris, Texas, United States of America
        """
        full_name = self.name
        current_parent = self.parent
        while current_parent is not None and (include_continent or (not include_continent and current_parent.parent is not None)):
            full_name += ', ' + current_parent.name
            current_parent = current_parent.parent
        return full_name

    def get_country(self):
        if self.admin_level == 'Country':
            return self.name
        return self.parent.get_country()

    @staticmethod
    def get_continents():
        return Location.objects.filter(parent=None).order_by('name')

    @staticmethod
    def get_countries(continent=None):
        if continent:
            # return a single continent's countries, sorted
            return Location.objects.filter(parent=continent).order_by('name')
        else:
            # return all countries, sorted
            return Location.objects.filter(admin_level='Country').order_by('name')

    @staticmethod
    def get_states(country=None):
        if country:
            # return a single country's states, sorted
            return Location.objects.filter(parent=country).order_by('name')
        else:
            # return all states, sorted
            return Location.objects.filter(admin_level='State').order_by('name')

    @staticmethod
    def get_cities(state=None):
        if state:
            # return a single state's cities, sorted
            return Location.objects.filter(parent=state).order_by('name')
        else:
            # return all cities, sorted
            return Location.objects.filter(admin_level='City').order_by('name')

    @staticmethod
    def get_non_continents():
        return Location.objects.exclude(parent=None).order_by('name')

    class Meta:
        ordering = ['full_name']

When I disable cachalot by commenting out the line in INSTALLED_APPS, the autocomplete works. When I enable it, it doesn't work. Other things on my site do indeed work, and the DDT panel shows that cachalot is doing its job. Can it deal with ajax calls like this?

Ok, I just now thought to use Firebug to see what happens as I type in the box, and this is what I got:
Traceback:
File "/path/to/public_html/env/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response

  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/path/to/public_html/webapp/apps/swap/views/views.py" in location_query
  285.         matching_locations.extend(matching_states)
File "/path/to/public_html/env/lib/python3.4/site-packages/django/db/models/query.py" in __iter__

  162.         self._fetch_all()
File "/path/to/public_html/env/lib/python3.4/site-packages/django/db/models/query.py" in _fetch_all

  965.             self._result_cache = list(self.iterator())
File "/path/to/public_html/env/lib/python3.4/site-packages/django/db/models/query.py" in iterator

  238.         results = compiler.execute_sql()
File "/path/to/public_html/env/lib/python3.4/site-packages/cachalot/monkey_patch.py" in inner
  45.         out = original(compiler, *args, **kwargs)
File "/path/to/public_html/env/lib/python3.4/site-packages/cachalot/monkey_patch.py" in inner
  98.             execute_query_func, cache_key, _get_table_cache_keys(compiler))
File "/path/to/public_html/env/lib/python3.4/site-packages/cachalot/monkey_patch.py" in _get_result_or_execute_query

  76.     cache.set(cache_key, (time(), result), None)
File "/path/to/public_html/env/lib/python3.4/site-packages/django/core/cache/backends/memcached
.py" in set
  91.         if not self._cache.set(key, value, self.get_backend_timeout(timeout)):

Exception Type: Error at /location_query/
Exception Value: error 37 from memcached_set: SUCCESS
Request information:
GET:
term = 'indi'

Django 1.8 is not yet supported.
Can you test with Django 1.7 please?

I just downgraded to 1.7.7, and I'm getting the exact same error. Looks like memcached is timing out?

I don’t really know, the raised exception is absolutely not helping. It says there is an error in Memcached, because there is SUCCESS. This couldn’t be more misleading…
You’re making a similar report as jmoiron/johnny-cache#3 & jmoiron/johnny-cache#4.
The queries you run seem to be way too huge for memcached.
There’s nothing to do in django-cachalot apart from warning users (which will be done in Limits). But it should be memcached’s job to correctly warn the users instead of this…
By the way, your queries are totally unoptimised, they must take a lot of time & memory (especially if you just type a space in the autocompletion). They must be rewritten, but at least the easy thing you could do is matching_locations = matching_countries | matching_states | matching_cities instead of creating a list that fetches up to 13k results and then keeps 10 results. You should definitely read the docs section When QuerySets are evaluated. Django-cachalot or not, performance will be terrible if you don’t fix that.

I actually have kept meaning to go back and fix those queries up. They run fast enough, but they're still nasty. Thanks for reminding me. I'll do that tomorrow.
Is there a way to detect when a query blows up memcached? The problem is that if I can't fix the query so that it fits in memcached, I'm left with no option except to not use cachalot, which I don't want to do because it provides a pretty nice performance boost in other areas of my site.
It would be nice if cachalot could do 1 of 2 things:

Detect a failure like this but continue to run the query by giving me the results without trying to cache them. And then it could remember in the future not to attempt to cache that query.
Maybe there could be a way for the programmer to mark a query as too big so that cachalot doesn't attempt caching.

Either way, just failing is not the right course of action.

No, there’s no way to detect it. And that would not be a clean solution. The solutions are:

obvious one: increase the memory limit per key in memcached (-l argument (yes, it’s also used for the binded IP…))
fix the queries
use Redis
disable django-cachalot in this view using dynamic overriding of the CACHALOT_ENABLED setting

Great! I'm going to go with options 2 and 4 if necessary. The dynamic overriding is what I was looking for. Thanks for your help!

I cleaned up the queries. Now, I only pull exactly what I need. I was still experiencing timeouts, so I added the cache override block, which has solved the issue entirely.
def location_query(request):
    # first handle the location autocomplete
    if request.is_ajax():
        term = request.GET['term']

        max_locations = 10
        matching_locations = list()

        with override_settings(CACHALOT_ENABLED=False):
            # I want to explicitly order matching countries at the front of the list
            matching_countries = Location.get_countries().filter(full_name__icontains=term)[:max_locations]
            matching_locations.extend(matching_countries)
            if len(matching_locations) < max_locations:
                # if there's still room, add states
                remaining_length = max_locations - len(matching_locations)
                matching_states = Location.get_states().filter(full_name__icontains=term)[:remaining_length]
                matching_locations.extend(matching_states)
                if len(matching_locations) < max_locations:
                    # if there's still room, add cities
                    remaining_length = max_locations - len(matching_locations)
                    matching_cities = Location.get_cities().filter(full_name__icontains=term)[:remaining_length]
                    matching_locations.extend(matching_cities)

        locations_json = list()
        for matching_location in matching_locations:
            location_json = dict()
            location_json['id'] = matching_location.pk
            location_json['label'] = '%s (%s)' % (matching_location.full_name, matching_location.admin_level)
            location_json['value'] = matching_location.pk
            locations_json.append(location_json)

        return JsonResponse(locations_json, safe=False)

This is returning results twice as fast as my unoptimized code above.
Thanks for your help. I'll close this issue now.

You can still improves your queries, but they are way better now.
I reopen the issue since something still needs to be mentioned in the docs.

How do you suggest I improve them?

Instead of your whole list creation, you can simply combine the querysets before filtering and slicing. Something like:
matching_locations = (Location.get_countries() | Location.get_states() | Location.get_cities())
matching_locations = matching_locations.filter(full_name__icontains=term)[:max_locations]

Ohhhhhh, that's killer. I didn't realize that could be done in Django.

Actually, I don't quite think that does what I want. I need all country results to be ordered before all states, which in turn need to be before all cities. This just lumps them all together. That's the reason I had done 3 separate queries and then added them to a list. I'm not sure of a way to keep the ordering like I need.

Then you probably want to use a PositiveSmallIntegerField for admin_level, with the choices parameter. That way, you’re able to sort results by admin_level then name without having to do 3 queries.

That's a clever idea. Thanks!

For what it's worth, increasing the item size (the -I command line argument) completely solved my issues. I just set it to 10mb (the default is 1mb).
Also, I figured I'd try it again on Django 1.8, and from what I can tell, it's working as intended. I'll report any issues I find.

Great news! :)
That mean I can write this doc section and tell people to use -I.  I thought it was an L at first. Once I figured out it stood for "item size", it made more sense. Here's how my current memcached config looks:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-I 10m"

Thanks!

Hi, although I understand the reasoning behind not gracefully handling this error within cachalot, I wanted to find a way to ensure our app didn't go down because of this issue under any scenario.  i.e. Even if I increase the max memory size for memcached, an object can exceed it causing application errors.
I found two libraries that provide a graceful way of handling this error:

python-memcached (https://github.com/linsomniac/python-memcached/blob/master/memcache.py#L1012).  this library doesn't scale as well as pylibmc, but will do the trick if your app is small.
pylibmc + django_pylibmc (https://github.com/django-pylibmc/django-pylibmc/blob/master/django_pylibmc/memcached.py#L145).  From what I can tell, using django_pylibmc wraps pylibmc, catches errors, and fails silently.

Hope this helps anyone else digging into this issue down the road.


switch from cdn.mathjax.org to rawgit.com

Fixes #1

@dpvc feel free to discard and implement as you see fit. But it would be good to update this.

This looks OK, except that the TeX.html lab needs its default version changed (at line 15).  I'd also add the 2.7.1 version.  Other than that, looks fine.

Updated.


Improve error display during dispatch.

Following up #222, this PR improves the current error message and adds contact support button.

@alanna Can you help improve the error message here?

Codecov Report

Merging #233 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #233   +/-   ##
=======================================
  Coverage   49.13%   49.13%
=======================================
  Files          14       14
  Lines         232      232
  Branches       41       41
=======================================
  Hits          114      114
  Misses         96       96
  Partials       22       22

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ef66660...89cde49. Read the comment docs.


Maps for Windows Phone

hi,
i was able to successfully used this map in sencha and built app for android and ios. can i know will this same works for windows phone and blackberry models

No. This plugin does not work on blackberry or windows and currently there no plans to support these OS

Thanks for your reponse


Installing kvm

I was able to install crouton successfully, however, I am having trouble getting kvm to work.  It seems like there are some additional kvm kernel modules need to be installed.  Is it possible to install these?  If so how would I be able to accomplish this.  Thanks again for providing these great scripts!

Just checking this answer remains the same 2 years later...
KVM acceleration support is needed for Android development and allowing it's emulation to work. I am trying to use Crouton to run Linux and my Android SDK, but need KVM support, bios setting changed, which I know is a kernel change.
There is no way to have a special target of an image of a Chromium build that has KVM support for this specific reason? I can see why running virtualized machines doesn't make a ton of sense using Crouton... but, KVM support for Android dev does...
Thoughts?

@dkovach - There is at least one approach that works but it's a definite DIY project.
Take a look at this issue https://github.com/dnschneid/crouton/issues/1733 and the related article.

Thanks @DennisLfromGA I saw that in my travels on this yesterday, and good to have you vouch for that solution. It is indeed very clear and enticing to maybe try that DIY project... I really want to not have a separate Linux machine, I really want a Chromebook with option to run Linux, so impressed with Crouton... but, it gets to a point of time/money and maybe just easier to get a dedicated Linux laptop.
Crouton allowing better speed than a virtual machine and shared resourcing with the ChromeOS -- really makes it enticing to keep trying to get a Chromebook to do Android development. That article looks like the only way.
I guess you also have to have the write Chromebook that is not locked to I guess the <= 3.4 Kernel as I am using a Acer C710 and though it says it will allow acceleration, I saw a comment from @dnschneid stating Crouton won't run accelerated on it.
It is weird that Google can't just get/make Android native development on ChromeOS a possibility.

@dkovach,
In my early Chrome OS days when it was just me and my trusty Cr-48 and 'crouton' had yet to be invented - or at least not yet released to us mere mortals, I tried various builds using the 'Chromium OS Developer Guide' method and even used other 'test pilots' builds - tvierling,moraj,hexxeh to name some. Just so you know, this was back in January of 2011 around version 10 (<IP_ADDRESS>1_01_26_1111). It was a lot of fun and truly got me hooked on Chromebooks.
So, to cut to the chase, the method linked above by Ron Minnich is definitely one way of getting KVM.
My Cr-48 still works, albeit at a snails pace, but I've added an Acer C710 (4GB RAM / 128GB SSD) and more recently an HP Chromebook 14 (4GB RAM / 128GB SSD). I've configured both with 'crispy crouton' ( that's 'ChRoots In a Seperate Partition - Yay! CROUTON' ) and ChrUbuntu.
Our Acer C710 (Parrot)s, however unfortunately, do not have the legacy boot (Sea BIOS) option so, as far as I know, they are still reliant on the Chrome OS kernel.
The HP Chromebook 14 (Falco), the older model, does have legacy boot and can boot other kernels like Jay Lee mentions in 'ChrUbuntu for New Chromebooks: Now with more Ubuntu'. I've loaded Linux Mint 17.1 Rebecca in the ChrUbuntu partiton that I boot with Ctrl+L but I haven't tried adding KVM to the kernel on it since 1) I hadn't been doing any VMs on it and 2) I've had to give it up to my wife since her windoze PC died - she loves it BTW.
With the Acer C710, I think your only option is to use Ron's method - backing up everything important first of course. If it doesn't work you can always do a usb restore.

Future sounds promising. Leaving some relevant links here...
https://chromium.googlesource.com/chromiumos/platform/crosvm/
https://chromium.googlesource.com/chromiumos/platform2/+/6c976ef165ee22ddf274035d16b8e2071b29cb0f/vm_tools/
https://chromium.googlesource.com/chromiumos/overlays/board-overlays/+/24a9d16fc15c3d07d726f3f974a541572d3584e5/project-termina/


Port CRX/Y/Z gates to Rust

Summary
Port the controlled Pauli rotations to Rust. Checks off parts of #12566.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

106 of 115 (92.17%)  changed or added relevant lines in 5 files are covered.
5 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.02%) to 89.78%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

crates/circuit/src/operations.rs
72
81
88.89%

Files with Coverage Reduction
New Missed Lines
%

crates/circuit/src/operations.rs
1
75.93%

crates/qasm2/src/lex.rs
4
91.86%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
63847

Relevant Lines:
71115

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

106 of 115 (92.17%)  changed or added relevant lines in 5 files are covered.
24 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-0.02%) to 89.735%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

crates/circuit/src/operations.rs
72
81
88.89%

Files with Coverage Reduction
New Missed Lines
%

crates/qasm2/src/expr.rs
1
94.02%

crates/circuit/src/operations.rs
1
73.44%

crates/qasm2/src/lex.rs
4
92.62%

crates/qasm2/src/parse.rs
18
96.69%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
63862

Relevant Lines:
71167

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

112 of 121 (92.56%)  changed or added relevant lines in 6 files are covered.
17 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-0.006%) to 89.748%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

crates/circuit/src/operations.rs
72
81
88.89%

Files with Coverage Reduction
New Missed Lines
%

crates/circuit/src/operations.rs
1
73.44%

crates/qasm2/src/lex.rs
1
93.64%

qiskit/circuit/quantumcircuit.py
3
95.52%

crates/qasm2/src/parse.rs
12
97.15%

Totals

Change from base Build<PHONE_NUMBER>:
-0.006%

Covered Lines:
63876

Relevant Lines:
71173

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

112 of 121 (92.56%)  changed or added relevant lines in 6 files are covered.
10 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-0.001%) to 89.783%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

crates/circuit/src/operations.rs
72
81
88.89%

Files with Coverage Reduction
New Missed Lines
%

crates/circuit/src/operations.rs
1
73.95%

qiskit/circuit/quantumcircuit.py
3
95.51%

crates/qasm2/src/lex.rs
6
92.37%

Totals

Change from base Build<PHONE_NUMBER>:
-0.001%

Covered Lines:
63922

Relevant Lines:
71196

💛  - Coveralls

Picking up the ctrl_state edge case @ElePT mentioned above, there is a potential sharp bit we're introducing with the change to Rust (this happens independently of the None vs 1 "1" discussion): changing the ctrl_state of a mutable gate, like CRX, once the gate is in the circuit does not change the matrix anymore, but did before.
For example
from qiskit.quantum_info import Operator
from qiskit.circuit import QuantumCircuit

qc = QuantumCircuit(2)
qc.crx(2, 0, 1)
print(Operator(qc))  # matrix with ctrl_state 1

# not very legal but not explicitly illegal?
qc.data[0].operation.ctrl_state = 0
# w/o Rust gates this prints the correct matrix with ctrl_state 0,
# with Rust gates it still shows the matrix for ctrl_state 1
print(Operator(qc))

This may be something we need to fix globally.

This sounds like a friend of:
gate.definition.global_phase = 3.14159
dag_node.op.params[0] = 3.14159

I don't think we'll be able to mutate any gate element post-Rust migration using that syntax.

The other issue with ctrl_state that I realized we're missing right now is what I pointed out here: https://github.com/Qiskit/qiskit/pull/12659#discussion_r1654466050 the handling in CircuitInstruction's rust code for when you do CircuitInstruction(CRXGate(pi, ctrl_state=0), ...) doesn't understand that CRXGate with ctrl_state=0 is not the standard gate definition. We will need to update the logic in that function to check the value of ctrl_state for a non-singleton controlled gate.

The other issue with ctrl_state that I realized we're missing right now is what I pointed out here: #12659 (comment) the handling in CircuitInstruction's rust code for when you do CircuitInstruction(CRXGate(pi, ctrl_state=0), ...) doesn't understand that CRXGate with ctrl_state=0 is not the standard gate definition. We will need to update the logic in that function to check the value of ctrl_state for a non-singleton controlled gate.

Yes, I am trying to fix it as part of #12659.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

112 of 121 (92.56%)  changed or added relevant lines in 6 files are covered.
10 unchanged lines in 3 files lost coverage.
Overall coverage increased (+0.03%) to 89.77%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

crates/circuit/src/operations.rs
72
81
88.89%

Files with Coverage Reduction
New Missed Lines
%

crates/circuit/src/operations.rs
1
73.76%

qiskit/circuit/quantumcircuit.py
3
95.51%

crates/qasm2/src/lex.rs
6
92.11%

Totals

Change from base Build<PHONE_NUMBER>:
0.03%

Covered Lines:
63926

Relevant Lines:
71211

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

112 of 121 (92.56%)  changed or added relevant lines in 6 files are covered.
6 unchanged lines in 3 files lost coverage.
Overall coverage increased (+0.006%) to 89.754%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

crates/circuit/src/operations.rs
72
81
88.89%

Files with Coverage Reduction
New Missed Lines
%

crates/circuit/src/operations.rs
1
73.76%

crates/qasm2/src/lex.rs
2
92.88%

qiskit/circuit/quantumcircuit.py
3
95.51%

Totals

Change from base Build<PHONE_NUMBER>:
0.006%

Covered Lines:
63915

Relevant Lines:
71211

💛  - Coveralls


Table re-rending

Hi
I tried to render different number of columns in one component. However, because the number of columns in the component is not re-rendered, an outOfRange Error occurs. So I tried calling HasStateChanged() but it didn't work. Is there any way to re-render the table component?

Hi,
There is an Update method on the table, check if that helps.

Hi,
Thanks for your solution.
In the work I'm currently working on, there is a problem that the columns included in the table are not redrawn. The way to express the floating column now is to set the maximum number of columns on the system and initially allocate it with a size of 100px. Then, allocate the pixel of the column required for the data set and 0px for the column that is not needed.
This process is repeated in the process of inquiring the data set. For example, the maximum number of columns supported by the system is set to 12. In this case, it is not a problem to look up a dataset of 6 and then a dataset of 12. However, when searching for a 6-piece data set and then searching for a 12-piece dataset, the column is not drawn even if the pixel of 0px column is allocated again and updated.
My guess is that if you set it to 0px, the problem is that the column itself disappears from rendering. Is this correct?

Hi,
Not sure I follow, but no column should be removed if the width is 0px.
Could you share a sample that reproduce the issue?

clean up


support for macbook m1

currently when I run cargo install cargo-tarpaulin on macbook pro m1, it fails to compile

So currently tarpaulin only works on x64 linux. The 0.18.0 alpha releases (alpha1 and alpha2) shoul compile but they'll just print out a message saying there's no tracing engine supported for the system


[C++] Implement meta string encoding algorithm for C++

Is your feature request related to a problem? Please describe.
We've implemented  meta string encoding algorithm in https://fury.apache.org/docs/specification/fury_xlang_serialization_spec#meta-string for java in #1514   , it's time to implement it in c++.
Describe the solution you'd like
Java implementation in #1514 can be taken as a reference. But note that the meta string encoding algorithm is used for encode field name only, so the special charater can't be . or $, thus the implementation will be simpler
Additional context
#1413

please assign me,thanks!

please assign me,thanks!

Great! Feel free to ask if you have further questions when implement this feature.

Could you also assign it to me? This is my first try of open source. Thanks.

Hi, i'm new in here and want to do some work. It seems to be inactivated for a while and i want to try this. Could you assign this task to me? @chaokunyang

Hi, i'm new in here and want to do some work. It seems to be inactivated for a while and i want to try this. Could you assign this task to me? @chaokunyang

Assigned, thanks for contributing to Apache Fury @Yangsx-1


Misc improvements

Remove obsolete clientID stuff. Fix support link in composer. Comment out tombstone check due to delete_immediate = 1 setting for testing. Improved testing for CRDTs with context. Added gitattributes file.

Tests pass.  Generally looks good.
:+1:


Catching error "ERR_CONNECTION_RESET"

Hello,
I am using:

Puppeteer version: "puppeteer": "^1.16.0",
Platform / OS version: windows 10
Node.js version: v10.15.3

What steps will reproduce the problem?
I am trying to test my website against proxy crawlers. Find below an example script - that's not my website as I am doing this on localhost that I am using:
function shuffle(dataObjArr) {
    let res = dataObjArr.sort(() => Math.random() - 0.5);
    return res
}

/**
 * Create random number between start and end value
 * @param {*} start
 * @param {*} end
 */
function randomNumberBetween(start, end) {
    return Math.floor(Math.random() * end) + start
}

/**
 * get 10 proxies from a list
 */
function getProxies() {
    // ...
    return proxies
}

async function main() {
    let issuerUrls = JSON.parse('[{"id":62,"name":"Product 1","ecomUrl":"/product/252","createdAt":"2019-05-25T07:51:49.000Z","updatedAt":"2019-05-25T07:51:49.000Z"},  {"id":15,"name":"Product 2","ecomUrl":"/product/251","createdAt":"2019-05-25T07:51:49.000Z","updatedAt":"2019-05-25T07:51:49.000Z"},  {"id":15,"name":"Product 2","ecomUrl":"/product/251","createdAt":"2019-05-25T07:51:49.000Z","updatedAt":"2019-05-25T07:51:49.000Z"},  {"id":15,"name":"Product 2","ecomUrl":"/product/251","createdAt":"2019-05-25T07:51:49.000Z","updatedAt":"2019-05-25T07:51:49.000Z"}]')

    let issuerUrlsShuffled = shuffle(issuerUrls)
    let BASE_URL = "https://www.webscraper.io/test-sites/e-commerce/allinone"

    let p = await getProxies();
    let proxies = [].concat(...p)
    let shuffledProxies = shuffle(proxies)
    let randNumbBool = true

    let i = 0
    let randNumb = 0
    // for (let i = 0; i < issuerUrlsShuffled.length; i++) {
    while (i < issuerUrlsShuffled.length) {

        if (randNumbBool) {
            randNumb = randomNumberBetween(0, shuffledProxies.length)
        }

        let proxy = '--proxy-server=' + shuffledProxies[randNumb].ipAddress + ":" + shuffledProxies[randNumb].port

        await puppeteer.launch({
            headless: false,
            args: ["--disable-notifications", proxy] // f.ex.: --proxy-server=<IP_ADDRESS>:9876
        }).then(async browser => {
            const page = await browser.newPage()
            await page.setViewport({
                width: 800,
                height: 600
            })

            try {

                let URL = BASE_URL + issuerUrlsShuffled[i].ecomUrl;

                await page.goto(URL)

                page.waitForNavigation({
                    timeout: 0,
                    waitUntil: 'domcontentloaded'
                });

                const data = await page.evaluate(async () => {

                    const priceData = []

                    let date = "9/23/2016" // this is needed for testing purposes only!!!

                    priceData.push({
                        price_date: await window.formatDate(date)
                    })
                    return priceData
                })

                // show data
                // should be emtpy!!!
                console.log(JSON.stringify(data, null, 2))

                await page.waitFor(3000)

                await browser.close()

                randNumbBool = false
                    ++i // next step in list
            } catch (error) {
                randNumbBool = true // get another random proxy
                console.log(error)
            }
        })
    }
}

main()

As you can see I am running through a bunch of proxies and test if puppeteer can connect.
What is the expected result?
I am successfully receiving this error from my webserver:

What happens instead?
However, the program stops and does not restart again when getting this error, even though I am in a loop.
Any suggestions how to catch this error and keep testing all available proxies until the end?

Any suggestions how to catch this error and keep testing all available proxies until the end?

I can't run your script since it requires extensive environment setup with all those proxies, but from what you ask here, I assume you need to wrap await page.goto with a try-catch construct.
Hope this helps.


Match latest React Boostrap API

Well, potatoes. Looks like the React Bootstrap camp has changed out the form APIs a bit. Only one I'm catching now is that <Input /> has been deprecated in favor of <FormControl />. Should check for other breaking changes here.

I found the same thing after I updated to the latest version. For instance in register the firstName field now looks like this:
      <FormGroup controlId="firstName">
        <ControlLabel>First Name</ControlLabel>
        <FormControl
          type="text"
          name="firstName"
          placeholder="First Name"
        />
      </FormGroup>

Also noticed, I'm now getting 'login.js:9 Uncaught TypeError: Cannot read property 'value' of undefined' so it looks like the change to FormGroup et al is causing some issues getting the values on submit.

Hey @redwards1966! Yes, this is a gotcha I've been trying to figure out as well. Something about the new structure of the <FormControl /> component is making the value inaccessible via refs (the current pattern). I need to sit down and play with it again. If you figure something out let me know otherwise watch the repo for updates.

@redwards1966 just a heads up, found a fix for this and it's now live! The solution involved using ReactDOM.findDOMNode(component.refs.someRefName).value to get the appropriate value.

@themeteorchef Thanks for the update. I've integrated the changes into my repo and it's working great.


Dialog onClosing and onClosed event handlers

RMWC or MDC?

What are the steps to reproduce the bug?

Warning: Unknown event handler property `onClosed`. It will be ignored.
    in div (created by DialogRoot)
    in DialogRoot (created by Dialog)
    in Dialog (created by Sandbox)
    in Sandbox

What is the expected behavior?
I would expect the Dialog component to more closely represent the onClosing and onClosed events described by MDC. Adding the respective event handlers to the type def. And a nice-to-have is that React does not give me a warning about the onClosed event handler property.
What is the actual behavior?
The onClose event handler is ambiguous and only fires when a dialog begins to close not

...when the Dialog closes.

From https://jamesmfriedman.github.io/rmwc/dialogs
Any other information you believe would be useful?
I love this package! Thanks for all yall have done so far!

I purposely didn’t expose the additional handlers to avoid confusion since it’s not necessarily clear when you should use one or the other. The react convention over al is to do things like onClick and onChange, not onClicked and onChanged.
I’m presuming you found a particular use case where you need to know when the dialog is definitively closed?
When you think in terms of unidirectional stateless flow, you would only say the dialog is open or closed. The opening animation and the closing animation would just be side effects of the state.
Glad you’re enjoying the library!

Yes I do ;)
Currently I am opening a dialog that contains a form.
I need to be sure that if there form is dirty and the dialog is attempting
to close I will prompt to make sure they want to close.
On the other hand, when the dialog is closed then I will update state.
Think edit user info dialog.
On Fri, Nov 2, 2018, 5:02 PM James Friedman<EMAIL_ADDRESS>wrote:

I purposely didn’t expose the additional handlers to avoid confusion since
it’s not necessarily clear when you should use one or the other. The react
convention over al is to do things like onClick and onChange, not onClicked
and onChanged.
I’m presuming you found a particular use case where you need to know when
the dialog is definitively closed?
When you think in terms of unidirectional stateless flow, you would only
say the dialog is open or closed. The opening animation and the closing
animation would just be side effects of the state.
Glad you’re enjoying the library!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jamesmfriedman/rmwc/issues/355#issuecomment-435522311,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEyA3iSMWtkkfw66wz1M7fmSqwq9ghJnks5urMDkgaJpZM4YMOx7
.

--
google is watching

how about this for a proposal.
{
  onOpen: () => mixed,
  onClose: () => mixed,
  onStateChange: (state: 'opening' | 'opened' | 'closing' | 'closed') => mixed
}

this way onOpen and onClose remain clear enough, and you can always hook into the dialogs lifecycle if you need to.

That's perfect
On Fri, Nov 9, 2018, 3:41 PM James Friedman<EMAIL_ADDRESS>wrote:

how about this for a proposal.
{
onOpen: () => mixed,
onClose: () => mixed,
onStateChange: (state: 'opening' | 'opened' | 'closing' | 'closed') => mixed
}
this way onOpen and onClose remain clear enough, and you can always hook
into the dialogs lifecycle if you need to.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jamesmfriedman/rmwc/issues/355#issuecomment-437503898,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEyA3jgfZP6rSFb07vUb8A39M0j_ci4hks5utfaRgaJpZM4YMOx7
.

--
google is watching


NoReverseMatch for complete

I successfully got access token using convert-token api point but after looks like I can not use it. It fails during SocialAuthentication runtime when it tries to reverse url pattern:
backend = load_backend(
    strategy, backend, reverse(f'{NAMESPACE}:complete', args=(backend,)),
)

Exception:
django.urls.exceptions.NoReverseMatch: Reverse for 'complete' not found. 'complete' is not a valid view function or pattern name.

I included urls:
path(f'{API_PREFIX}auth/', include('users.social_urls', namespace='social')),

Note, that code in users.social_urls is the same like in library, I just need to inherit some views to specify swagger response and request schemes.
And also I don't have any redirect urls, my flow is:

Get facebook token using convert-token api point.
Create user
Use that token on protected endpoints (permissions.IsAuthenticated)

Does someone has the same issue?

The problem was that my custom urls:
path(f'{API_PREFIX}auth/', include('users.social_urls', namespace='social')),

and django_social urls from package had the same namespace:
url(f'', include('social_django.urls', namespace='social')),

I changed namespace for my project custom urls to 'social_auth' and set setting:
DRFSO2_URL_NAMESPACE = 'social_auth'

Issue is resolved, maybe someone will have the same problem as me :)

@zubrzubr thaank you for your time and investigation.

@zubrzubr Спасибо что разобрался


Expiry folder already being watched warning in tegola docker

While running expiry tegola docker standalone, only one watching cycle happens before getting warnings :

WARNING:inotify.adapters:Path already being watched: [/data/files/imposm3/expired/20230521]

Nothing more happen then and I have to kill and restart docker to process expiry logs again.
It's ok but why does it require inotify then?
Is the docker expected to die on its own at the end of cycle?

That's odd - I don't see this warning. Unfortunately inotify can sometimes be a bit unreliable in some environments. I wonder if it depends on the filesystem driver that Docker is using...

Odder thing is this warning is raised when we add a watcher on a given directory (see Python source for inotify adapter).
Why does another watcher is added after a first round of expiry handling?
Isn't there a loop issue in the script or so?

It looks like this is dsoprea/PyInotify#77. The expire script doesn't delete the directory until the day has passed though, so I'm not sure why you are seeing this bug. Do you have else deleting empty directories?

I suppose this bug could still happen if imposm is processing a backlog of older change files so it probably does still need to be fixed.


Update RELEASING.md with details of build script updates

The openj9 jdk14 release file names were incorrect because changes needed to be made to various build scripts to change the download file name prefix from OpenJDK14 to OpenJDK14U.
This requirement is not mentioned in the RELEASING.md file.
The document should include details of which build scripts to be changed for the release engineer to either implement or check.

I would suggest this issue is covered under the same general topic of #1581

A few PR's have gone in recently to make updating the scripts easier for those releasing

https://github.com/AdoptOpenJDK/openjdk-build/pull/1822 removes the reliance on having to update hardcoded java head values
https://github.com/AdoptOpenJDK/openjdk-build/pull/1872 which has renamed the config files to whatever the current version string (u or not) is. This does not solve how to know if the version is in an update repo however (how do we know when it gets moved @karianna ?). Also see https://github.com/AdoptOpenJDK/openjdk-build/pull/1919 which allows the pr_tester to detect whether the java version is in an update repo or not.

@lumpfish Could you take a look at the current release document and let me know if there's anything in it at the moment that's confusing?

#1872 which has renamed the config files to whatever the current version string (u or not) is. This does not solve how to know if the version is in an updated repo however which is an open issue #1654 (how do we know when it gets moved @karianna ?).

You have to be monitoring the OpenJDK mailing lists basically for when they make the announcement to shift.

You have to be monitoring the OpenJDK mailing lists basically for when they make the announcement to shift.

Sounds like we should put in a link to the mailing list then

jdk-dev and jdk-updates-dev and jdk8u-dev are the three to watch

I see the latest releasing document https://github.com/AdoptOpenJDK/openjdk-build/blob/master/RELEASING.md now has this sentence, which I think relates to what had not been done giving rise to the file naming problem described in this issue.
"At some point the JDK N version will get to be maintained in an update repository. At that point a switch-over of job names from jdkXX to jdkXXu has to happen."
I don't think this adequately describes what needs to be done when that switch (from jdknn to jdknnu) occurs yet:

How to we decide 'this is the time to make the switch' (what needs to be monitored)?
Are there prereq changes before the pipelines can be changed (e.g. the repository mirroring scripts / jobs)?
Where are the places jdknn must be changed to jdknnu?

When we first discovered this issue, the question was raised while the problem was being investigated why we ever added the 'U' suffix to the file names, and there was a general feeling that we shouldn't bother.  Was that ever resolved?

Pretty sure I can answer the last two bullet points. I've yet to understand How to we decide 'this is the time to make the switch' however. When do we make the decision to do so @karianna ?

Regarding "when to make the switch" - I think that for the most recent release it was done between the openj9 release builds being created and the hotspot builds being created (and that what what gave rise to the issues we saw later).  Of course the jdknnu repository must exist before the switch can be made, but if we can assume that this is done before the initial release, then the answer may simply be "before we start building the first release".

Pretty sure I can answer the last two bullet points. I've yet to understand How to we decide 'this is the time to make the switch' however. When & How do we make the decision to do so @karianna ?

Basically when the jdk<version>u repo gets created - this will all happen at Skara going forward now so it should be easier.  The next one of these will be jdk15u (date TBD)

So this gets us back to the original issue.  If we create a release before the switch to jdknnu has been made then the build files do not contain the 'U' suffix, which seems to be what users are currently expecting.  So the choices would appear to be:

Do not release until the switch to jdknnu has been made
Drop the 'U' suffix from the build file names (which would affect users initially, but I think would mean that the release could be created before the switch is made).
The openj9 jdk is not built from the same git hg clone as the hotspot jdk, so is only affected by this as a 'side effect' of the settings (jdknn vs jdknnu) in the pipelines.


Stuck in configuration loophole...

Steps to reproduce
I'm trying to setup my global app logger (winston), independant from the logging middleware.
Something like that:
logger.ts
import winston = require('winston');
import { app } from '../app';

const config = app.get('logger');
const transports = [];

if (config.console) {
  transports.push(new winston.transports.Console({
    colorize: true,
    level: config.console.level
  }));
}
export const logger = new winston.Logger({ transports });

Obviously I need the app config  for this.
But on the other hand, to setup my logging middleware express-winston, I need the logger:
app.ts
import path = require('path');
import favicon = require('serve-favicon');
import compress = require('compression');
import helmet = require('helmet');
import cors = require('cors');
import bodyParser = require('body-parser');
import feathers = require('feathers');
import configuration = require('feathers-configuration');
import hooks = require('feathers-hooks');
import rest = require('feathers-rest');
import expressWinston = require('express-winston');
import errorHandler = require('feathers-errors/handler');

import { logger } from './core/logger';
import { notFoundHandler } from './middleware/not-found-handler';
import { services } from './services';

export const app = feathers();

app.configure(configuration(path.join(__dirname, '..')));

app.use(compress())
  .options('*', cors())
  .use(cors())
  .use(helmet())
  .use(favicon( path.join(app.get('public'), 'favicon.ico') ))
  .use(bodyParser.urlencoded({ extended: true }))
  .use(bodyParser.json())
  .use(expressWinston.logger({
    winstonInstance: logger,
    level: 'debug'
  }))
  .use('/', feathers.static(app.get('public')))
  .configure(hooks())
  .configure(rest())
  .configure(services)
  .use(expressWinston.errorLogger({
    winstonInstance: logger
  }))
  .use(notFoundHandler())
  .use(errorHandler() as any);

And boom, app.ts needs logger and logger.ts needs app for config. How to get out of this?
I never had similar issues with other frameworks, since usually the config is decoupled from everything else. Isn't this a major issue with your current approach?
Having the config exposed in the app is nice, but I think also having access to the config independently is also needed, for case like this, or maybe I'm missing something?

The trick is to .configure the logger on the app and add it to that object which is a general pattern used in Feathers around the generated application and its plugins:
import winston = require('winston');
import { app } from '../app';

export default function() {
  const app = this;
  const config = app.get('logger');
  const transports = [];

  if (config.console) {
    transports.push(new winston.transports.Console({
      colorize: true,
      level: config.console.level
    }));
  }

  app.logger = new winston.Logger({ transports });
  app.use(expressWinston.errorLogger({
    winstonInstance: logger
  }));
}

Then app.configure(logger):
import path = require('path');
import favicon = require('serve-favicon');
import compress = require('compression');
import helmet = require('helmet');
import cors = require('cors');
import bodyParser = require('body-parser');
import feathers = require('feathers');
import configuration = require('feathers-configuration');
import hooks = require('feathers-hooks');
import rest = require('feathers-rest');
import expressWinston = require('express-winston');
import errorHandler = require('feathers-errors/handler');

import { logger } from './core/logger';
import { notFoundHandler } from './middleware/not-found-handler';
import { services } from './services';

export const app = feathers();

app.configure(configuration(path.join(__dirname, '..')));

app.use(compress())
  .options('*', cors())
  .configure(logger) // Sets up `app.logger` and logging middleware
  .use(cors())
  .use(helmet())
  .use(favicon( path.join(app.get('public'), 'favicon.ico') ))
  .use(bodyParser.urlencoded({ extended: true }))
  .use(bodyParser.json())
  .use('/', feathers.static(app.get('public')))
  .configure(hooks())
  .configure(rest())
  .configure(services)
  .use(notFoundHandler())
  .use(errorHandler() as any);

Thanks for the tip!
Just out of curiosity, what's the advantage of using globally shared app object/and config like instead of simply putting the config in a .js/.ts file and importing it whenever it's needed?

Other plugins can add and modify their own configuration that way. Using node-config directly is totally fine, too of course.


weird type checking error with "throw"

This code:
throw  { message: "ff" };
Gives a weird error:
incompatible types: expected 'error', found 'error'

Now the error is:
incompatible types: expected 'error', found 'map'

This will be fixed with new error type.

PR https://github.com/ballerina-platform/ballerina-lang/pull/12773 merged, hence closing


add search capability as part of Agent moveTo

DFS may need some refactoring into a more generic graph search as part of this.

Used breadth-first-search instead to get optimal path.


APP-474: Add topic name for received notifications

/cc @Slash32

@kaa-leeroy test this please

@kaa-leeroy test this please

@kaa-leeroy test this please

@kaa-leeroy test this please


improvement reduce publish txn fail log

for a single txn,  if publish it failed, then print log every 5min (Config.publish_fail_log_interval_second)
Proposed changes
Issue Number: close #xxx

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run arm


--msvc=14.32.31332 but Nuitka just use gcc

my commandline:
python -m nuitka --msvc="14.32.31332" --onefile --onefile-windows-splash-screen-image=kq.png --standalone --follow-imports --windows-icon-from-ico=Keq.ico --windows-file-description="Kourain" --windows-company-name="Kourain" --windows-product-name="AOV Main Tools 2.7" --windows-file-version="2.7" --windows-product-version="2.7" main_tools.py

Wrong things: a) didn't fill out issue template b) didn't read warning about follow imports being useless c) didn't minimize options used, didn't provide file referenced, d) didn't provide relevant long output, e) likely used old version
That this weeks top score.


Support tag and tag_from_uri for opentelemetry input plugin

Is your feature request related to a problem? Please describe.
The OpenTelemetry input plugin of the Fluent Operator does not support tag and tag_from_uri at the current stage, which prevents users to tag the input data. detailed configuration can be found at here
Describe the solution you'd like
Add tag and tag_from_uri for opentelemetry input plugin
Additional context
No response

I'll handle this


OpenAI API Key encryption / decryption causing API key issues

Hi all, very cool tool but I did hit the following pain point when getting it set up.
I cloned this repo today and when I tried to run an agent the UI was stuck constantly "thinking..."
I looked at the console logs and noticed that SuperAGI was getting an error back from OpenAI that I my API key was being rate limited but when I checked my OpenAI account, no requests had been made at all.
I was, however, able to make REST queries against OpenAI directly through curl so I went into the OpenAI class and just hard coded my api key which made SuperAGI work fine.
https://github.com/TransformerOptimus/SuperAGI/blob/ff4067a4e3b972ec2b1001d16c1b2210f7c93da9/superagi/llms/openai.py#L23
I ran a blame on that particular line of code and it looks like it was recently modified to support fetching encrypted API keys from the database.
https://github.com/TransformerOptimus/SuperAGI/commit/8302f38cdeb6e43f03031f7ee80893557d07ed6f
I don't know the reason this is breaking but I do know that bypassing all the new database logic by hardcoding the key worked so I'm guessing it's related to these recent changes.

Would it be possible to set this as an environment variable?

@btello can we discuss this over the voice channel on Discord to understand it better?
https://discord.gg/ErBU4Ba9

@pallasite99 even passing in confi.yaml file should work if nothing has been set in frontend settings.

@luciferlinx101 sure I just messaged you on Discord.

@btello is this issue resolved?

No, I'm still having the same issue.  I did a pull to get the most recent version of the code base but I'm still finding that I have to override the api_key setting in OpenAis constructor with my static API key to get my agent to do anything.  Without that in place I just keep getting this error message:
superagi-celery-1           | Ensure the response can be parsed by Python json.loads.
superagi-celery-1           | [2023-06-27 16:40:00,850: INFO/ForkPoolWorker-8] error_code=None error_message='You exceeded your current quota, please check your plan and billing details.' error_param=None error_type=insufficient_quota message='OpenAI API error received' stream_error=False
superagi-celery-1           | 2023-06-27 16:40:00 UTC - Super AGI - INFO - [/app/superagi/llms/openai.py:80] - Exception:
superagi-celery-1           | [2023-06-27 16:40:00,850: INFO/ForkPoolWorker-8] Exception:
superagi-celery-1           | 2023-06-27 16:40:00 UTC - Super AGI - INFO - [/app/superagi/llms/openai.py:80] - You exceeded your current quota, please check your plan and billing details.
superagi-celery-1           | [2023-06-27 16:40:00,850: INFO/ForkPoolWorker-8] You exceeded your current quota, please check your plan and billing details.
superagi-celery-1           | [2023-06-27 16:40:00,876: ERROR/ForkPoolWorker-8] Task execute_agent[4cf2fba1-afee-4c0c-8966-1d313015f452] raised unexpected: KeyError('content')
superagi-celery-1           | Traceback (most recent call last):
superagi-celery-1           |   File "/usr/local/lib/python3.9/site-packages/celery/app/trace.py", line 451, in trace_task
superagi-celery-1           |     R = retval = fun(*args, **kwargs)
superagi-celery-1           |   File "/usr/local/lib/python3.9/site-packages/celery/app/trace.py", line 734, in __protected_call__
superagi-celery-1           |     return self.run(*args, **kwargs)
superagi-celery-1           |   File "/usr/local/lib/python3.9/site-packages/celery/app/autoretry.py", line 54, in run
superagi-celery-1           |     ret = task.retry(exc=exc, **retry_kwargs)
superagi-celery-1           |   File "/usr/local/lib/python3.9/site-packages/celery/app/task.py", line 717, in retry
superagi-celery-1           |     raise_with_context(exc)
superagi-celery-1           |   File "/usr/local/lib/python3.9/site-packages/celery/app/autoretry.py", line 34, in run
superagi-celery-1           |     return task._orig_run(*args, **kwargs)
superagi-celery-1           |   File "/app/superagi/worker.py", line 19, in execute_agent
superagi-celery-1           |     AgentExecutor().execute_next_action(agent_execution_id=agent_execution_id)
superagi-celery-1           |   File "/app/superagi/jobs/agent_executor.py", line 203, in execute_next_action
superagi-celery-1           |     response = spawned_agent.execute(agent_workflow_step)
superagi-celery-1           |   File "/app/superagi/agent/super_agi.py", line 168, in execute
superagi-celery-1           |     if response['content'] is None:
superagi-celery-1           | KeyError: 'content'

https://github.com/TransformerOptimus/SuperAGI/pull/628
I think This PR will resolve your issue

I had this same problem. I deleted the docker,  installed it again and it started working. The first install had the error where it was just thinking and thinking and I check the logs and it was just looping and looping.

OK, I also got paid again and I got access to Google Maker Suite to test out my Palm API too. I'll probably backup my original config, delete my docker containers, and start the installation again.

From: sblaque @.>
Sent: Saturday, August 26, 2023 12:09 PM
To: TransformerOptimus/SuperAGI @.>
Cc: Subscribed @.***>
Subject: Re: [TransformerOptimus/SuperAGI] OpenAI API Key encryption / decryption causing API key issues (Issue #272)
I had this same problem. I deleted the docker, installed it again and it started working. The first install had the error where it was just thinking and thinking and I check the logs and it was just looping and looping.
—
Reply to this email directly, view it on GitHubhttps://github.com/TransformerOptimus/SuperAGI/issues/272#issuecomment-1694412379, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AADNUL6I2HIPPCLCEDUVW5TXXIUTPANCNFSM6AAAAAAY7ZW45Y.
You are receiving this because you are subscribed to this thread.Message ID: @.***>


add IBInspectable to appropriate members

Good stuff, I had been meaning to do that - thanks! I'll merge it in tonight.

nice !🎉

Rock, thanks @cbpowell :)
On Wed, Feb 3, 2016 at 12:14 PM Charles Powell<EMAIL_ADDRESS>wrote:

Merged #25 https://github.com/cbpowell/MarqueeLabel-Swift/pull/25.
—
Reply to this email directly or view it on GitHub
https://github.com/cbpowell/MarqueeLabel-Swift/pull/25#event-536922086.


Failed to Install  duckduckgo_search 2.9.5

          something error,

Originally posted by @wuyue0509 in https://github.com/AbdullahAlfaraj/Auto-Photoshop-StableDiffusion-Plugin/issues/251#issuecomment-1547424781

@wuyue0509, is this error preventing Auto1111 from executing correctly?
It could be related to the index-url pointing to a different package index than the default one, which is https://pypi.python.org/simple.

No further errors occurred


my cardname

Hi @kyalo3
I see your contribution but you are not to edit the 'carddetails' template.
Kindly include details after the template. Thank you

Okay..thank you for the guidance.

Hello Amyyalex, just did an update of the card details..kindly check
and let me know.
Thank you.
On Tue, 16 Jan 2024, 1:30 am Amyy Alex-Okenwa, @.***>
wrote:

Hi @kyalo3 https://github.com/kyalo3
I see your contribution but you are not to edit the 'carddetails' template.
Kindly include details after the template. Thank you
—
Reply to this email directly, view it on GitHub
https://github.com/amyyalex/simple-contribution/pull/125#issuecomment-1892831924,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7KA7CHDIRRILJG3WAMNP3LYOWUYXAVCNFSM6AAAAABB3I2BHGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOJSHAZTCOJSGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


Not being able to append path to nltk_data

print(os.path.join(DATA_DIR, "nltk_data"))  nltk.data.path.append(os.path.join(DATA_DIR, "nltk_data"))  print(nltk.data.path)
The first print correctly returns the path to the nltk_data folder. Then, I try to append it to the path list, but the print returns the list without the previously appended path.
Also, it is weird, but if I append a wrong path to nltk_data, it correctly appends the wrong path.
I can do it with a previously set environment variable, which is not ideal. And I also cannot do it by setting environment variables programmatically.

It seems like there might be an issue with how the path is being appended to nltk.data.path. Ensure that the path you're trying to append exists and is in the correct format.
Here's an example of how you can append a path to nltk.data.path:
import nltk
import os

DATA_DIR = "/your/data/directory"

# Join the path and append it to nltk.data.path
new_path = os.path.join(DATA_DIR, "nltk_data")
nltk.data.path.append(new_path)

# Print the updated path list
print(nltk.data.path)

Ensure that the DATA_DIR variable contains the correct directory where your nltk_data folder is located. After appending the path, you should see the updated path list with the newly appended directory.
If the issue persists and the path doesn't appear in the nltk.data.path, there might be a permissions issue or a problem with the path itself. Double-check the permissions of the directory you're trying to append and make sure the Python script has the necessary permissions to access and modify it.
Regarding the behavior where appending a wrong path works, it might be due to how Python's os.path.join function handles the incorrect path. It might create a path that Python recognizes, even if it's incorrect, resulting in successful appending to the nltk.data.path. However, if the path doesn't exist or has issues, it might not behave as expected when used by NLTK.


Platform: add submodule to WinSDK for ProcessAPI

This adds the PSAPI submodule to WinSDK for use in swift-inspect.

Replace this paragraph with a description of your changes and rationale. Provide links to external references/discussions if appropriate.

Resolves SR-NNNN.

@swift-ci please test

Build failed
Swift Test OS X Platform
Git Sha - e6c6c5207b05b269c5ab39096a24b0e7241f3ec9

@swift-ci please test macOS platform

@swift-ci please smoke test macOS platform

@swift-ci please smoke test macOS platform

@swift-ci please smoke test macOS platform

@swift-ci please test macOS platform


alpine v3.4 image

Alpine v3.4 is released. It would be awesome with an alpine:3.4 image.

👍

Bruh... 👍

👍

👍

👍


Added script to configure BGP for l3bgp-demo target.

Makefile target for L3 mode demo setup without BGP.
make l3bgp-demo : sets up routing mode, configures BGP
make l3-demo : routing mode without BGP (no quagga vms)

LGTM

LGTM


Ubuntu: Ctrl+Shift+E cannot be used as a shortcut

VS Code Version:

Version: 1.53.2
Commit: 622cb03f7e070a9670c94bae1a45d78d7181fbd4
Date: 2021-02-11T11:48:44.518Z
Electron: 11.2.1
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 5.8.0-43-generic snap

OS Version: Ubuntu 20.04.2 LTS

Steps to Reproduce:

Open editor
Press Ctrl+Shift+E
A strange underlined input sequence begins starting with the letter "e". It terminates after 9 more characters are inputted.

Does this issue occur when all extensions are disabled?: Yes

Seems like the same issue as https://github.com/Microsoft/vscode/issues/48480, but the latter is old and I don't see a good solution for Ubuntu.
Seems like the GTK version should be with the fix included:
$ apt list --installed *libgtk-3*
Listing... Done
libgtk-3-0/focal-updates,now 3.24.20-0ubuntu1 amd64 [installed,automatic]
libgtk-3-bin/focal-updates,now 3.24.20-0ubuntu1 amd64 [installed,automatic]
libgtk-3-common/focal-updates,focal-updates,now 3.24.20-0ubuntu1 all [installed,automatic]

I think this is a well known issue and some configuratin needs to be changed to stop doing Emoji input via ctrl+shift+E -- https://unix.stackexchange.com/questions/394655/ctrlshifte-causes-beeping/394767#394767


add an example adc sample and send result to uart

yes, i think only showing how these features can integrated together.
i an a newer work on rust, first time.


Unexpected error in Containers page

I guess that Policy button should be disabled, when there are no records checked:

Now, after i select Edit tags, I'm getting unexpected error:

@romanblanco, can you add the traceback associated with this?

[----] F, [2015-10-15T16:32:37.091493 #6203:2af645981960] FATAL -- : Error caught: [ActionController::RoutingError] invalid button action
/home/rblanco/devel/manageiq/app/controllers/container_controller.rb:21:in `whitelisted_action'
/home/rblanco/devel/manageiq/app/controllers/container_controller.rb:35:in `x_button'

@abonas, can you check on that error?

@abonas ping @h-kataria if you need help disabling that button if there are no rows showing

cc @epacific1 @avi3tal

@romanblanco it is not reproducible anymore on master. Could you confirm/close the issue?

Works for me, closing issue, thanks.


[DOC-3069] Mark as failure

New topic to explain the mark as failure option for pipeline stages.
What Type of PR is This?

[ ] Issue
[ x] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ x] Tested Locally
[x] Optional Screen Shoot.

PR Preview: https://6461f8d6475a96005410e8a9--harness-developer.netlify.app/

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app


Getting errors from following tutorial.

Describe the bug
I'm getting 3 errors after following the tutorial.
1:

2:

3:

Desktop (please complete the following information):

OS: Windows 11
.NET: Net 6.0 Long Term Release
Version: Latest stable release 2.01

Documentation is flawed; you need to use the ui:UiWindow class instead of Window.

(As a temporary fix to a bigger problem, you can use the WPFUI extension for VS)

I was able to get around these issues by making the following changes:
Change Style="{StaticResource UiWindow}" to Style="{StaticResource DefaultChromeWindowStyle}"
Create a Pages folder and add 2 WPF Pages to it named Dashboard and Settings.
You's also have to change the import namespace for WPFUI to ui:
 xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"


SPI  (IDFGH-6183)

Environment

Module or chip used:  [ESP32C3]
IDF version (run git describe --tags to find it):
v4.3.1
Build System:         [idf.py]
Compiler version :xtensa-esp32-elf-gcc (crosstool-NG esp-2021r1) 8.4.0
Operating System:     [Linux]

Problem Description
typedef struct mj_spi_init_s
{
    spi_bus_config_t buscfg;
    spi_device_interface_config_t devcfg;
    spi_device_handle_t device_handle;

} mj_spi_data_t;

typedef mj_spi_data_t *mj_spi_handle_t;

esp_err_t mj_spi_read_buff(mj_spi_handle_t mj_spi_handle, uint8_t reg, uint8_t *buff, int length)
{
    esp_err_t ret;
    spi_transaction_t t;
    memset(&t, 0, sizeof(t));
    t.addr = (MPU_READ_FLAG | reg);
    t.length = length * 8;
    t.tx_buffer = NULL;
    t.rx_buffer = buff;
    t.user = (void *)0;
    ret = spi_device_polling_transmit(((mj_spi_handle_t)mj_spi_handle)->device_handle, &t);
    // gpio_set_level(PIN_NUM_CS, 1);
    return ret;
}
esp_err_t mj_spi_write_buff(mj_spi_handle_t mj_spi_handle, uint8_t reg, uint8_t *buff, int length)
{
    if (length == 0)
        return ESP_OK;
    esp_err_t ret;
    spi_transaction_t t;
    memset(&t, 0, sizeof(t));
    t.addr = reg;
    t.length = length * 8;
    t.tx_buffer = buff;
    t.rx_buffer = NULL;
    ret = spi_device_polling_transmit(((mj_spi_handle_t)mj_spi_handle)->device_handle, &t);
    return ret;
}

esp_err_t mj_spi_write8(mj_spi_handle_t mj_spi_handle, uint8_t reg, uint8_t val)
{
    esp_err_t ret;
    spi_transaction_t t;
    memset(&t, 0, sizeof(t));
    t.length = 8;
    t.addr = (MPU_WRITE_FLAG & reg);
    t.tx_data[0] = val;
    t.flags = SPI_TRANS_USE_TXDATA;
    ret = spi_device_polling_transmit(((mj_spi_handle_t)mj_spi_handle)->device_handle, &t);
    return ret;
}

esp_err_t mj_spi_write_buff2(mj_spi_handle_t mj_spi_handle, uint8_t reg, uint8_t *buff, int length)
{
    for (int i = 0; i < length; i++)
    {
        ESP_ERROR_CHECK(mj_spi_write8(mj_spi_handle, reg + i, buff[i]));
    }
    return ESP_OK;
}

void mj_p(char *p, uint8_t *buff, int count)
{
    printf("%s", p);
    for (int i = 0; i < count; i++)
    {
        printf("%02X", buff[i]);
    }
    printf("\n");
}

  unsigned char rrrr[6] = {0};
  unsigned char wwww[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};

  mj_spi_read_buff(mj_spi_handle, 0x13, rrrr, 6);
  mj_p("rrrr1:", rrrr, 6);
  mj_spi_write_buff(mj_spi_handle, 0x13, wwww, 4);
  mj_spi_read_buff(mj_spi_handle, 0x13, rrrr, 6);
  mj_p("rrrr2:", rrrr, 6);

Use SPI to read MPU6500.
According to the above code, the value written to the register using mj_spi_write_buff is always 0x01.
However, the value written to the register using mj_spi_write_buff2 is correct.
So where is the configuration error of the mj_spi_write_buff function?
Expected Behavior
rrrr1:000000000000
rrrr2:010203040000

Actual Behavior
rrrr1:000000000000
rrrr2:010101010000

esp32C3 will have this problem when using DMA. If SPI_DMA_DISABLED is used, the transfer byte is fixed at 64B.

In my experience, some ESP32-C3 development boards do not have the SPI connected correctly.
Rigth one: Work correct.
Left one: Dont work correct.


Update pkgdown documentation

ToDo

[x] Add our custom pkgdown theme (https://github.com/vallenderlab/vallender-pkgdown-theme)
[x] Add vignettes
[x] Ensure changelog/news.md is added
[x] Order functions into groups for the reference page i.e. data wrangling, visualization, utils etc.

More ToDos via @grabear https://github.com/vallenderlab/MicrobiomeR/issues/15#issuecomment-451359295

[x] Add an About tab on the navbar

[x] Add a leaflet widget

[ ] Add vignette's for shaurita's functions

[x] Stacked Bar
[ ] Ordination
[x] Permanova
[ ] Alpha Diversity

[ ] Hunt down pkgdown warnings:

[ ]
[ ]

[ ] Add search
[ ] Look at some of the pkgdown articles to get any other ideas

I think the test branch might be too messy to merge - I did a lot of weird things over there if I recall correctly (non pkgdown things)...
If you want I can do a quick pkgdown branch with just some of the base pkgdown things I implemented in the test branch.

That would be legit!

Also, check out this package's pkgdown. Nice example imo.
https://valr.hesselberthlab.org/index.html

Do you know if there is a quicker way to build the reference based on the roxygen tag @family?? @sdhutchins
That's what I'm going to do anyway, but I can't find anything in the docs (so far).

Yes, check out this link: https://pkgdown.r-lib.org/reference/build_reference.html

reference:
- title: Data Visualization
  contents:
  - ends_with("_plot")

I don't know how helpful that will be....

Yea, I was hoping I could port all of the @family Data Visualization functions and make that a reference section, but it seems that pkgdown doesn't do that out of the box..
I filed an issue, so we should hopefully get some insight.  https://github.com/r-lib/pkgdown/issues/954

Reference https://github.com/r-lib/pkgdown/issues/248 as well. Someone asked there.

They made it where you can base it on the @concept tag.

So do we need to do that with roxygen? @sdhutchins

So do we need to do that with roxygen? @sdhutchins

Yeah, but it may be that it's easy enough to implement selecting by @family instead of us having to go back and add the @concept tag to all of our functions.
About the @concept tag:

Aliases form the index that ? searches. Use @aliases space separated aliases to add additional aliases.
@concept add extra keywords that will be found with help.search()

Hrmmm...  I'm just going to use RStudio to get all of the functions with the family tag:
Edit > Find in Files "@family"
It actually works nicely and it points out the inconsistencies in family names:

Oh dear! lol Does work though!

I bet there is a regex that lets you do this and you could build a function for it but....

More Todos:

[ ] Add an About tab on the navbar

[ ] Add a leaflet widget

[ ] Add vignette's for shaurita's functions

[ ] Stacked Bar
[ ] Ordination

[ ] Hunt down pkgdown warnings:

[ ]
[ ]

[ ] Add search
[ ] Look at some of the pkgdown articles to get any other ideas

Should I commit all of the build_site() files?  @sdhutchins

Should I commit all of the build_site() files? @sdhutchins

Yeah, go ahead and do so.
On the warnings, typically the topic must be a valid R expression means the function does not exist or there is no .rd file for it.
I don't know if pkgdown supports the pretty print tag. The seealso is self-explanatory.

FYI @grabear
This week, I'm going to try to add more in-depth documentation to the alpha_diversity and ordination functions. I'm also going to integrate the search box for our docs.


AttributeError: 'str' object has no attribute 'get'

Getting this:
2024-12-03 13:22:27.892 | INFO     | sr_data.steps.workflows:main:46 - Repo LyonSyonII/run has 1 *.yml|*.yaml workflows inside .github/workflows
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/sr-data/src/sr_data/steps/workflows.py", line 50, in main
    workflow_info(
  File "/sr-data/src/sr_data/steps/workflows.py", line 96, in workflow_info
    if matrix.get(keys[0]):
       ^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'

@rultor release, tag is 0.0.28

@rultor release, tag is 0.0.28

@h1alexbel OK, I will release it now. Please check the progress here.

@rultor release, tag is 0.0.28

@h1alexbel Done! FYI, the full log is here (took me 19min).


⚠ Bofrost.es has degraded performance

In 7431d74, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1494 ms

Resolved: Bofrost.es performance has improved in 1a49eff after 12 minutes.


View method for CredentialType

We need a view method on the CredentialTypeManager that merges Achievement details into the 'required_achievements' attribute.

This is done and just needs a test.

What are the current roles that need full access to this view?

Just Admin for now.


Add spelling suggestions AB test

Thanks for this @laurentqro

is this still needed as there is this?


erro in reconstruct_contig.py when testing

Hi, Dear
I met a problem when running the test using command "reconstruct_contig.py test_human/test_human_0" as follows:
/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/Bio/Seq.py:349: BiopythonDeprecationWarning: This method is obsolete; please use str(my_seq) instead of my_seq.tostring().
BiopythonDeprecationWarning)
Opening file cogent.fa
Processed short contigs (<1000000 nt): ...
Contig mapping information has been written to file cogent.coords.
You should look at this file, and edit it if necessary
If everything is okay, you should proceed by running
make gmapdb
Reading coordinates from file cogent.coords
Logging contig path0 at path0:1..5342 in genome cogent
Logging contig path1 at path1:1..5312 in genome cogent
Logging contig path2 at path2:1..5286 in genome cogent
Chromosome path0 has universal coordinates 1..5342
Chromosome path1 has universal coordinates 5343..10654
Chromosome path2 has universal coordinates 10655..15940
Writing IIT file header information...done
Processing null division/chromosome...sorting...writing...done (3 intervals)
Writing IIT file footer information...done
Writing IIT file header information...done
Processing null division/chromosome...sorting...writing...done (3 intervals)
Writing IIT file footer information...done
Genome length is 15940 nt
Trying to allocate 14974 bytes of memory...succeeded.  Building genome in memory.
Reading coordinates from file cogent.coords
Writing contig path0 to universal coordinates 1..5342 in genome cogent
Writing contig path1 to universal coordinates 5343..10654 in genome cogent
Writing contig path2 to universal coordinates 10655..15940 in genome cogent
A total of 0 non-ACGTNX characters were seen in the genome.
Indexing offsets of oligomers in genome cogent (every 3 bp), position 0
Writing 16777217 offsets to file with total of 5303 positions
Trying to allocate 53034 bytes of memory...succeeded.  Building positions in memory.
Indexing positions of oligomers in genome cogent (every 3 bp), position 0
Writing 5303 genomic positions to file ./cogent.ref3positions ...
Copying files to directory ./cogent
GMAP version 2011-03-28.v3 called with args: -D . -d cogent -n 100 -f gff3_gene -t 1 in.trimmed.fa
Note: >1 sequence detected, so index files are being memory mapped.
GMAP can run slowly at first while the computer starts to accumulate
pages from the hard disk into its cache.  To copy index files into RAM
instead of memory mapping, use -B 3 or -B 4, if you have enough RAM.
For more speed, also try multiple threads (-t ), if you have multiple processors or cores.
Allocating memory for ref3 offsets db...done (67108868 bytes, 0.03 sec)
Pre-loading ref3 positions db....done (21212 bytes, 6 pages, 0.00 sec)
Pre-loading compressed genome....done (5988 bytes, 2 pages, 0.00 sec)
Processed 10 queries in 0.38 seconds (26.32 queries/sec)
Traceback (most recent call last):
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/bin/reconstruct_contig.py", line 4, in
import('pkg_resources').run_script('Cogent==2.1', 'reconstruct_contig.py')
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/pkg_resources/init.py", line 748, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/pkg_resources/init.py", line 1517, in run_script
exec(code, namespace, namespace)
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/Cogent-2.1-py2.7.egg/EGG-INFO/scripts/reconstruct_contig.py", line 352, in
main()
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/Cogent-2.1-py2.7.egg/EGG-INFO/scripts/reconstruct_contig.py", line 265, in main
run_Cogent_on_input()
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/Cogent-2.1-py2.7.egg/EGG-INFO/scripts/reconstruct_contig.py", line 245, in run_Cogent_on_input
post_gmap_processing(seqrecs=seqrecs)
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/Cogent-2.1-py2.7.egg/Cogent/Utils.py", line 39, in post_gmap_processing
for r in reader:
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/Cogent-2.1-py2.7.egg/Cogent/GFF.py", line 377, in next
return self.read()
File "/SDIVF/GUEST/zhuyb/Software/anaconda3/envs/anaCogent/lib/python2.7/site-packages/Cogent-2.1-py2.7.egg/Cogent/GFF.py", line 413, in read
rec = gmapRecord(chr, coverage, identity, strand, seqid)
UnboundLocalError: local variable 'coverage' referenced before assignment
Could you please tell me how to solve it? Thanks.

Hi,
It looks like an issue with processing GMAP. It appears you are using an extremely old version of GMAP (GMAP version 2011-03-28.v3 ) which was never tested. Please try upgrading to a newer version of GMAP (preferably the latest, if not after 2016) and let me know if you still see issues.
FYI, I will be on vacation until 11/30. Expect delay in responses.
--Liz

Thanks, it works well after updating the GMAP.


监控项目过多导致报错：Request Header Or Cookie Too Large

前端套了CF，在监控项目添加到50个左右时，访问监控列表发现部分项目信息无法正常获取，查看浏览器的开发者模式-网络，发现访问/trpc/monitor.recentData,monitor.getPublicInfo...接口时的参数过长，导致返回400 Request Header Or Cookie Too Large。
解决方案：
优化访问接口，控制或缩减URI及参数的总长度。

let me know if close cf is it work?

let me know if close cf is it work?

try direct access, still get error 414 Request-URI Too Large，guess the URI has really to large more than 512byte, here is the URI of 51 Monitor:
/trpc/monitor.recentData,monitor.get,monitor.data,monitor.events,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo,monitor.recentData,monitor.getPublicInfo?batch=1&input=%7B%220%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym953a00y3vhhqqx6lkn63%22%2C%22take%22%3A40%7D%2C%221%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym953a00y3vhhqqx6lkn63%22%7D%2C%222%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym953a00y3vhhqqx6lkn63%22%2C%22startAt%22%3A1731034211867%2C%22endAt%22%3A1731036011867%7D%2C%223%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym953a00y3vhhqqx6lkn63%22%7D%2C%224%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym953a00y3vhhqqx6lkn63%22%2C%22take%22%3A20%7D%2C%225%22%3A%7B%22monitorIds%22%3A%5B%22cm2ym953a00y3vhhqqx6lkn63%22%5D%7D%2C%226%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm383oxiuao80b1muyppuzlkx%22%2C%22take%22%3A20%7D%2C%227%22%3A%7B%22monitorIds%22%3A%5B%22cm383oxiuao80b1muyppuzlkx%22%5D%7D%2C%228%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym852g00wvvhhq3custbq6%22%2C%22take%22%3A20%7D%2C%229%22%3A%7B%22monitorIds%22%3A%5B%22cm2ym852g00wvvhhq3custbq6%22%5D%7D%2C%2210%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym7nfl00wlvhhqgzj4mjz0%22%2C%22take%22%3A20%7D%2C%2211%22%3A%7B%22monitorIds%22%3A%5B%22cm2ym7nfl00wlvhhqgzj4mjz0%22%5D%7D%2C%2212%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm34cf1go00lbb1mub8ezbqb2%22%2C%22take%22%3A20%7D%2C%2213%22%3A%7B%22monitorIds%22%3A%5B%22cm34cf1go00lbb1mub8ezbqb2%22%5D%7D%2C%2214%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymxrgv0243vhhq5q0wbwbw%22%2C%22take%22%3A20%7D%2C%2215%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymxrgv0243vhhq5q0wbwbw%22%5D%7D%2C%2216%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymy40j0251vhhqi9yyocd3%22%2C%22take%22%3A20%7D%2C%2217%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymy40j0251vhhqi9yyocd3%22%5D%7D%2C%2218%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym333100v5vhhqvr76ukpv%22%2C%22take%22%3A20%7D%2C%2219%22%3A%7B%22monitorIds%22%3A%5B%22cm2ym333100v5vhhqvr76ukpv%22%5D%7D%2C%2220%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2sycf0r000xhoto0ytboa1h%22%2C%22take%22%3A20%7D%2C%2221%22%3A%7B%22monitorIds%22%3A%5B%22cm2sycf0r000xhoto0ytboa1h%22%5D%7D%2C%2222%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym5yxp00vvvhhq3dtr6qrv%22%2C%22take%22%3A20%7D%2C%2223%22%3A%7B%22monitorIds%22%3A%5B%22cm2ym5yxp00vvvhhq3dtr6qrv%22%5D%7D%2C%2224%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymx4b2022hvhhq1mln43hf%22%2C%22take%22%3A20%7D%2C%2225%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymx4b2022hvhhq1mln43hf%22%5D%7D%2C%2226%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymwtq7021nvhhqigbyjm04%22%2C%22take%22%3A20%7D%2C%2227%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymwtq7021nvhhqigbyjm04%22%5D%7D%2C%2228%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymwgbk020nvhhqwbc5zqms%22%2C%22take%22%3A20%7D%2C%2229%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymwgbk020nvhhqwbc5zqms%22%5D%7D%2C%2230%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymw39u01zrvhhq1bv158b3%22%2C%22take%22%3A20%7D%2C%2231%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymw39u01zrvhhq1bv158b3%22%5D%7D%2C%2232%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymvkvb01ydvhhqsqzcgnh3%22%2C%22take%22%3A20%7D%2C%2233%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymvkvb01ydvhhqsqzcgnh3%22%5D%7D%2C%2234%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymv0wj01x7vhhqhh2afv45%22%2C%22take%22%3A20%7D%2C%2235%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymv0wj01x7vhhqhh2afv45%22%5D%7D%2C%2236%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymukht01vzvhhqftvwpgdm%22%2C%22take%22%3A20%7D%2C%2237%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymukht01vzvhhqftvwpgdm%22%5D%7D%2C%2238%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymub9301v7vhhqdp6ybaph%22%2C%22take%22%3A20%7D%2C%2239%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymub9301v7vhhqdp6ybaph%22%5D%7D%2C%2240%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymtwb601udvhhqre6ejjcv%22%2C%22take%22%3A20%7D%2C%2241%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymtwb601udvhhqre6ejjcv%22%5D%7D%2C%2242%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymt2yx01slvhhqs6okczuo%22%2C%22take%22%3A20%7D%2C%2243%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymt2yx01slvhhqs6okczuo%22%5D%7D%2C%2244%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymtgmv01tfvhhqc8ir7sp2%22%2C%22take%22%3A20%7D%2C%2245%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymtgmv01tfvhhqc8ir7sp2%22%5D%7D%2C%2246%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymsoru01rrvhhq9zg942sx%22%2C%22take%22%3A20%7D%2C%2247%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymsoru01rrvhhq9zg942sx%22%5D%7D%2C%2248%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2yms7z101qvvhhqzb4uzad6%22%2C%22take%22%3A20%7D%2C%2249%22%3A%7B%22monitorIds%22%3A%5B%22cm2yms7z101qvvhhqzb4uzad6%22%5D%7D%2C%2250%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymrpj901prvhhqltw9wucm%22%2C%22take%22%3A20%7D%2C%2251%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymrpj901prvhhqltw9wucm%22%5D%7D%2C%2252%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymr6a001olvhhqv9j9qdd4%22%2C%22take%22%3A20%7D%2C%2253%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymr6a001olvhhqv9j9qdd4%22%5D%7D%2C%2254%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymqr4o01ntvhhq5zp2jno7%22%2C%22take%22%3A20%7D%2C%2255%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymqr4o01ntvhhq5zp2jno7%22%5D%7D%2C%2256%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymqf4o01n7vhhqb8wlfn7d%22%2C%22take%22%3A20%7D%2C%2257%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymqf4o01n7vhhqb8wlfn7d%22%5D%7D%2C%2258%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymq1hc01mdvhhq9g0o75l4%22%2C%22take%22%3A20%7D%2C%2259%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymq1hc01mdvhhq9g0o75l4%22%5D%7D%2C%2260%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ympisu01ljvhhq2oarqwh9%22%2C%22take%22%3A20%7D%2C%2261%22%3A%7B%22monitorIds%22%3A%5B%22cm2ympisu01ljvhhq2oarqwh9%22%5D%7D%2C%2262%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymo8zs01jbvhhqcim5vexo%22%2C%22take%22%3A20%7D%2C%2263%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymo8zs01jbvhhqcim5vexo%22%5D%7D%2C%2264%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymnvpf01ihvhhqoieuoi01%22%2C%22take%22%3A20%7D%2C%2265%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymnvpf01ihvhhqoieuoi01%22%5D%7D%2C%2266%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymnesh01htvhhqb5n0lf5a%22%2C%22take%22%3A20%7D%2C%2267%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymnesh01htvhhqb5n0lf5a%22%5D%7D%2C%2268%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymn1k501h3vhhqehsodng0%22%2C%22take%22%3A20%7D%2C%2269%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymn1k501h3vhhqehsodng0%22%5D%7D%2C%2270%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymmndt01gbvhhqusgr6uu3%22%2C%22take%22%3A20%7D%2C%2271%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymmndt01gbvhhqusgr6uu3%22%5D%7D%2C%2272%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymlonm01f3vhhqdnq6v352%22%2C%22take%22%3A20%7D%2C%2273%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymlonm01f3vhhqdnq6v352%22%5D%7D%2C%2274%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2yml39m01e1vhhql9iq3drt%22%2C%22take%22%3A20%7D%2C%2275%22%3A%7B%22monitorIds%22%3A%5B%22cm2yml39m01e1vhhql9iq3drt%22%5D%7D%2C%2276%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymkpr901ddvhhq67cu4aqf%22%2C%22take%22%3A20%7D%2C%2277%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymkpr901ddvhhq67cu4aqf%22%5D%7D%2C%2278%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymk3xw01clvhhqju6t9tc4%22%2C%22take%22%3A20%7D%2C%2279%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymk3xw01clvhhqju6t9tc4%22%5D%7D%2C%2280%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymjp3001bxvhhqj59wq9k9%22%2C%22take%22%3A20%7D%2C%2281%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymjp3001bxvhhqj59wq9k9%22%5D%7D%2C%2282%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymj90101b9vhhqztl1uu21%22%2C%22take%22%3A20%7D%2C%2283%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymj90101b9vhhqztl1uu21%22%5D%7D%2C%2284%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymiray01afvhhq3h1tl3cw%22%2C%22take%22%3A20%7D%2C%2285%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymiray01afvhhq3h1tl3cw%22%5D%7D%2C%2286%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymhk8j018zvhhq647ydofo%22%2C%22take%22%3A20%7D%2C%2287%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymhk8j018zvhhq647ydofo%22%5D%7D%2C%2288%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymgg6w017lvhhq4glfadpr%22%2C%22take%22%3A20%7D%2C%2289%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymgg6w017lvhhq4glfadpr%22%5D%7D%2C%2290%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymfkdl016fvhhqk1v3dxkf%22%2C%22take%22%3A20%7D%2C%2291%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymfkdl016fvhhqk1v3dxkf%22%5D%7D%2C%2292%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymf1j1015rvhhq2impikr5%22%2C%22take%22%3A20%7D%2C%2293%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymf1j1015rvhhq2impikr5%22%5D%7D%2C%2294%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymejid0151vhhq2xykcddf%22%2C%22take%22%3A20%7D%2C%2295%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymejid0151vhhq2xykcddf%22%5D%7D%2C%2296%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymdbqw013pvhhquwlbx172%22%2C%22take%22%3A20%7D%2C%2297%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymdbqw013pvhhquwlbx172%22%5D%7D%2C%2298%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ymcpbc012vvhhqyrbx6ql1%22%2C%22take%22%3A20%7D%2C%2299%22%3A%7B%22monitorIds%22%3A%5B%22cm2ymcpbc012vvhhqyrbx6ql1%22%5D%7D%2C%22100%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym6bt100w3vhhq1o21jwcy%22%2C%22take%22%3A20%7D%2C%22101%22%3A%7B%22monitorIds%22%3A%5B%22cm2ym6bt100w3vhhq1o21jwcy%22%5D%7D%2C%22102%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2ym4ttv00vfvhhqkkpb9wq7%22%2C%22take%22%3A20%7D%2C%22103%22%3A%7B%22monitorIds%22%3A%5B%22cm2ym4ttv00vfvhhqkkpb9wq7%22%5D%7D%2C%22104%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2sy7u7v0003hoto33ar5z4f%22%2C%22take%22%3A20%7D%2C%22105%22%3A%7B%22monitorIds%22%3A%5B%22cm2sy7u7v0003hoto33ar5z4f%22%5D%7D%2C%22106%22%3A%7B%22workspaceId%22%3A%22cm2sy333q0001rd2xe6egxlyg%22%2C%22monitorId%22%3A%22cm2sybb74000rhoto55z0iecp%22%2C%22take%22%3A20%7D%2C%22107%22%3A%7B%22monitorIds%22%3A%5B%22cm2sybb74000rhoto55z0iecp%22%5D%7D%7D

May need consider make this api slim XD

OK, i get your mind, let me fix it.


Add Dark Mode to the Landing Page

Is your feature request related to a problem? Please describe.
Adding dark mode to a website enhances user experience by reducing eye strain and improving readability in low-light environments.
Describe the solution you'd like
After adding dark mode to the landing page it would look like something like this 👇

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Will do the following 3 things inorder to achieve the stated goal . 👇

Create a CSS class for dark mode
Add a toggle switch
Add JavaScript functionality

Hey I want to make this .Please assign it to me.

I would like to work on this issue. This is how we'll proceed:
To begin with, we'll add a toggle switch and by using JS, we'll add the functionality to the toggle switch which will, with the help of CSS, make the light parts dark,  keep some parts same and enhance some dark parts.
I think I have the skills to complete this issue and I'll love to work for this one. So, kindly please assign me this task under SSoC 2.0.

Hey, I want to try it as it will be my first contribution. So, if you can please assign it to me

Hi.. I am a mern stack developer and quite good at building the ui of the website . I found this issue interesting.Could you please assign it to me.

Go ahead


onTabShow event fires twice

When I call bootstrap wizard and try handle 'onTabShow' event, it fires two time
my code is:
var wizardEl = $('#rootwizard');
wizardEl.bootstrapWizard({
onTabShow: function (tab, navigation, index) {
var $total = navigation.find('li').length;
var $current = index + 1;
var $percent = ($current / $total) * 100;
wizardEl.find('.progress-bar').css({ width: $percent + '%' });
lastPageIndex = $total;
loadWizardCurrentStepContent(tab, $current);
},
onNext: wizardOnNext,
onTabClick: function (tab, navigation, index) {
return true;
}
});

+1 having the same issue.

+1
@stefann42 commit fixes the issue.

Please can anyone tell me the solution for this issue? I am facing the same in my project. Urgent.

@a3aakash just read the whole issue, solution is here : https://github.com/AreYouFreeBusy/twitter-bootstrap-wizard/commit/98e392746a14645ed4ff3ada31cd923e864273c6 - i already tested it and it works. However, i just make small tunes on @stefann42 code.

thank you @nask0.. I think this is not being released on the master branch thats why my code was not updated. Thanks again.. :)

This issue hasnt been uploaded on the master branch till yet. so please do this so that it wont create any issue further.

@mikheil09 @nask0 @a3aakash can you submit a pull request?

This is not an issue. This behaviour happens when you don't have any default active class on any of the tab's li.
When the library is initialised fixNavigationButtons from line 31 is called. But because you don't have an active tab the 275 line event is triggered which again trigger fixNavigationButtons
275: $('a[data-toggle="tab"]', $navigation).on('show show.bs.tab', innerTabShown);
As https://getbootstrap.com/docs/3.3/components/#nav-tabs tabs documentation example is:

Home

Profile

Messages

there is a default tab.