SQL Rule Error

Description of the issue
SQL Rules, AZR-000186 and AZR-000187 are being reported, even when the resources are defined within Bicep template and present in the generated ARM templates. Suspecting its a case sensitive issue of the rule looking for Properties.state whereas the generated ARM template is in all lowercase properties.state
https://github.com/Azure/PSRule.Rules.Azure/blob/a215902e1a75722a847f55b73719b3f6c28caedb/src/PSRule.Rules.Azure/rules/Azure.SQL.Rule.ps1#L35-L55
Resource defined in Bicep:
resource defenderSql 'Microsoft.Sql/servers/securityAlertPolicies@2022-11-01-preview' = {
  name: 'default'
  parent: sqlServer
  properties: {
    state: 'Enabled'
  }
}

resource sqlAuditPolicy 'Microsoft.Sql/servers/auditingPolicies@2014-04-01' = {
  name: 'Default'
  parent: sqlServer
  properties: {
    auditingState: 'Enabled'
  }
}

Generated ARM template:
        { -
          "type": "Microsoft.Sql/servers/securityAlertPolicies",
          "apiVersion": "2022-11-01-preview",
          "name": "[format('{0}/{1}', parameters('sqlServerName'), 'default')]", -
          "properties": { -
            "state": "Enabled"
          }, -
          "dependsOn": [
            "[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]"
          ]
        }, -
        { -
          "type": "Microsoft.Sql/servers/auditingPolicies",
          "apiVersion": "2014-04-01",
          "name": "[format('{0}/{1}', parameters('sqlServerName'), 'Default')]", -
          "properties": { -
            "auditingState": "Enabled"
          }, -
          "dependsOn": [
            "[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]"
          ]
        }, -

@robertsm84 Thanks for reporting the issue.

I also believe that Microsoft.Sql/servers/auditingPolicies is deprecated and replaced by Microsoft.Sql servers/auditingSettings

@robertsm84 The property path is not case-sensitive by default. Are you able to provide a few most details on the following so they we can reproduce the issue?

Is the Microsoft.Sql/servers defined in the same file as the Microsoft.Sql/servers/securityAlertPolicies resource?
Is sqlServer an existing reference?
Are you using an Bicep experimental features in bicepconfig.json?

Thanks @BernieWhite. I've had a chance to look further into the issue and it looks like the SQL Rules, AZR-000186 and AZR-000187 were reported as Red Herrings via Template-Analyzer and not PSRule.
Once default parameter values were set in the bicep file, these rules passed successfully.


Suggested Actions in a waterfall dialog, rolls to next step before user clicks on suggested actions

Version
What package version of the SDK are you using.
v4.4.0.b2
Describe the bug
Since ChoicePrompts are not yet implemented, a fall back is to use Suggested actions. I've used a suggested action message factory as part of my waterfall step. The intention is to get the use to click on a suggested action and then waterfall to next step where I capture the response via the im_back through activity.text. The weird behavior I'm observing is that as soon as the suggest action is prompted, it doesn't wait for the user to click on any of the actions before waterfalling.
To Reproduce
Steps to reproduce the behavior:
Example code below

Create two waterfall steps in your component dialog

async def first_step(self, step: WaterfallStepContext):
          message = MessageFactory.suggested_actions([CardAction(title='a', type=ActionTypes.im_back, value='a'), CardAction(title='b', type=ActionTypes.im_back, value='b'),  CardAction(title='c', type=ActionTypes.im_back, value='c')], 'Choose a color')
         await context.send_activity(message)
         return await step.next(None)

  async def next_step( self, step: WaterfallStepContext):
        # Retrieve the selected trip from the activity im_back and save to state
        print('Inside end')
        matched_trip = re.search('/^(.+?) at (. *)$/ gmi', step.context.activity.text)
        print('+++++++++ Matched information: ', matched_trip.groups())
        return await step.end_dialog()

Errors out with
  print('+++++++++ Matched information: ', matched_trip.groups())
**AttributeError: 'NoneType' object has no attribute 'groups'**

Expected behavior
This approach when using ChoicePrompts works perfectly with the NodeJS version of the SDK. As this is not yet implemented in Python, Suggested Actions is the way to go. Expecting a similar behavior a workaround to handle this issue.
An excerpt from the documentation of Waterfall Dialogs here
At each step, the bot prompts the user for input (or can begin a child dialog, but that it is often a prompt), waits for a response, and then passes the result to the next step. The result of the first function is passed as an argument into the next function, and so on.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
[bug]

@awaemmanuel this behavior is because of this line:
return await step.next(None)

Can you try and return Dialog.end_of_turn instead? This should not tell the WaterfallDialog to not start the next step (which is what return await step.next(None) does).

@stevengum I updated the code like this
return await step.next(None) to return await step.next(MyDialog.end_of_turn) and it just crashes the code with the following mrest error
msrest.exceptions.SerializationError: Unable to build a model: Unable to deserialize to object: type, AttributeError: 'str' object has no attribute 'get', DeserializationError: Unable to deserialize to object: type, AttributeError: 'str' object has no attribute 'get'

Detailed stack trace below.
Traceback (most recent call last):
  File "C:\Users\sources\python-bot\lost_and_found\bots\pax_bot.py", line 68, in on_turn
    await self.on_message_activity(context)
  File "C:\Users\sources\python-bot\lost_and_found\bots\pax_bot.py", line 79, in on_message_activity
    await dc.continue_dialog()
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\dialog_context.py", line 144, in continue_dialog
    return await dialog.continue_dialog(self)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\component_dialog.py", line 78, in continue_dialog
    turn_result = await self.on_continue_dialog(inner_dc)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\component_dialog.py", line 138, in on_continue_dialog
    return await inner_dc.continue_dialog()
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\dialog_context.py", line 144, in continue_dialog
    return await dialog.continue_dialog(self)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\component_dialog.py", line 78, in continue_dialog
    turn_result = await self.on_continue_dialog(inner_dc)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\component_dialog.py", line 138, in on_continue_dialog
    return await inner_dc.continue_dialog()
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\dialog_context.py", line 144, in continue_dialog
    return await dialog.continue_dialog(self)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\prompts\prompt.py", line 89, in continue_dialog
    return await dc.end_dialog(recognized.value)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\dialog_context.py", line 171, in end_dialog
    return await dialog.resume_dialog(self, DialogReason.EndCalled, result)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\waterfall_dialog.py", line 88, in resume_dialog
    return await self.run_step(dc, state[self.StepIndex] + 1, reason, result)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\waterfall_dialog.py", line 136, in run_step
    return await self.on_step(step_context)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\waterfall_dialog.py", line 122, in on_step
    return await self._steps[step_context.index](step_context)
  File "C:\Users\sources\python-bot\lost_and_found\dialogs\pax\find_trip_capture_item_dialog.py", line 116, in capture_latest_trip
    return await step.next(None)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\waterfall_step_context.py", line 47, in next
    return await self._wf_parent.resume_dialog(self, DialogReason.NextCalled, result)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\waterfall_dialog.py", line 88, in resume_dialog
    return await self.run_step(dc, state[self.StepIndex] + 1, reason, result)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\waterfall_dialog.py", line 136, in run_step
    return await self.on_step(step_context)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\dialogs\waterfall_dialog.py", line 122, in on_step
    return await self._steps[step_context.index](step_context)
  File "C:\Users\sources\python-bot\lost_and_found\dialogs\pax\find_trip_capture_item_dialog.py", line 147, in prompt_other_trips_if_needed
    await step.context.send_activity(message)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\core\turn_context.py", line 150, in send_activity
    result = await self._emit(self._on_send_activities, output, callback(self, output))
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\core\turn_context.py", line 217, in _emit
    return await logic
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\core\turn_context.py", line 146, in callback
    responses = await context.adapter.send_activities(context, output)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\core\bot_framework_adapter.py", line 201, in send_activities
    raise e
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botbuilder\core\bot_framework_adapter.py", line 199, in send_activities
    client.conversations.send_to_conversation(activity.conversation.id, activity)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\botframework\connector\operations\_conversations_operations.py", line 227, in send_to_conversation
    body_content = self._serialize.body(activity, 'Activity')
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 574, in body
    SerializationError, "Unable to build a model: "+str(err), err)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\exceptions.py", line 51, in raise_with_traceback
    raise error.with_traceback(exc_traceback)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 571, in body
    data = deserializer._deserialize(data_type, data)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1258, in _deserialize
    self._deserialize(local_type, value)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1258, in _deserialize
    self._deserialize(local_type, value)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1267, in _deserialize
    return self.deserialize_data(data, response)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1447, in deserialize_data
    return self.deserialize_type[iter_type](data, data_type[1:-1])
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1478, in deserialize_iter
    return [self.deserialize_data(a, iter_type) for a in attr]
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1478, in <listcomp>
    return [self.deserialize_data(a, iter_type) for a in attr]
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1460, in deserialize_data
    return self._deserialize(obj_type, data)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1298, in _deserialize
    raise_with_traceback(DeserializationError, msg, err)
  File "C:\Users\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\exceptions.py", line 51, in raise_with_traceback
    raise error.with_traceback(exc_traceback)
  File "C:\Users\emawa\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1288, in _deserialize
    found_value = key_extractor(attr, attr_desc, data)
  File "C:\Users\emawa\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1078, in rest_key_case_insensitive_extractor
    return attribute_key_case_insensitive_extractor(key, None, working_data)
  File "C:\Users\emawa\.virtualenvs\lost_and_found-KRYpeJaq\lib\site-packages\msrest\serialization.py", line 1101, in attribute_key_case_insensitive_extractor
    return data.get(found_key)
msrest.exceptions.SerializationError: Unable to build a model: Unable to deserialize to object: type, AttributeError: 'str' object has no attribute 'get', DeserializationError: Unable to deserialize to object: type, AttributeError: 'str' object has no attribute 'get'

@awaemmanuel I meant to convey the following: return Dialog.end_of_turn at the end of the WaterfallStep.
Sorry my instructions weren't clear... Let me know if that works.

@stevengum I tried this and still get the same crash. Can we connect at some point, if you have the time, and I can screen share?

Hello @awaemmanuel , I couldn't reproduce in 4.5.0b4 with this code:
async def first_step(self, step: WaterfallStepContext):
        message = MessageFactory.suggested_actions([CardAction(title='a', type=ActionTypes.im_back, value='a'), CardAction(title='b', type=ActionTypes.im_back, value='b'),  CardAction(title='c', type=ActionTypes.im_back, value='c')], 'Choose a color')
        await step.context.send_activity(message)
        return ComponentDialog.end_of_turn

    async def next_step(self, step: WaterfallStepContext):
        # Retrieve the selected trip from the activity im_back and save to state
        print('Inside end')
        # matched_trip = re.search('/^(.+?) at (. *)$/ gmi', step.context.activity.text)
        # print('+++++++++ Matched information: ', step.context.activity.text)
        await step.context.send_activity(f"You picked: {step.context.activity.text}")
        return await step.end_dialog()

I get this:

Then, after clicking 'b':

The error you're mentioning: **AttributeError: 'NoneType' object has no attribute 'groups'** It's because of the regex you're defining (which doesn't find any match) and it's returning None; but I believe the behavior of Suggested Actions here is the expected.
I'm closing the issue


update dependencies

This makes it easier to mix metrics-clojure and relying on a recent riemann-clojure-client.

thanks!

I will cut a new release in the evening.

much appreciated.

@michaelklishin a friendly reminder that a release would be great :-)

@pyr 2.6.1 was published to Clojars yesterday, sorry for the wait.

@michaelklishin no worries, thanks a lot.


Debugging failed. Missing brokeredServicePipeName

Type: Bug
Issue Description
After click on Start Debugging button, the system opens a message box with the error "Start debugging failed. Provided launch or attach configuration is missing required property brokeredServicePipeName" (also reported in the debug console).
Steps to Reproduce
Install v2.45.20 and start debugging. Downgrading to v2.39.29 solved the issue.
Expected Behavior
Actual Behavior
Logs
OmniSharp log
No entries in the Omnisharp log.
C# log
No entries in the C# Output.
Environment information
VSCode version: 1.90.2
C# Extension: 2.45.20
Using OmniSharp: true
Dotnet Information
.NET SDK:
 Version:           8.0.401
 Commit:            811edcc344
 Workload version:  8.0.400-manifests.b6724b7a
 MSBuild version:   17.11.4+37eb419ad
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.19045
OS Platform: Windows
RID:         win-x64
Base Path:   C:\Program Files\dotnet\sdk\8.0.401\
.NET workloads installed:
Configured to use loose manifests when installing new manifests.
There are no installed workloads to display.
 If so, it may be related to https://github.com/microsoft/vscode-dotnettools/issues/1432
If its just only the C# Extension, can you share the type of project you are trying to debug and launch.json that you are using?

Hi Warden,
yes, I have C# Dev Kit installed. I posted the error here due to this comment which makes me think that the issue might be related to C# instead of C# Dev Kit.
I have a workspace with two projects. One is a Console application, the another is a WPF. With v2.45.20 of C# extension the issue is on both and it appears to be unrelated to C# Dev Kit extension. This is my launch.json:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch ASTools.Core",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "Build ASTools.Core",
            "program": "${workspaceFolder}/ASTools.Core/bin/Debug/net8.0-windows/ASTools.Core.dll",
            "args": ["templates","--list"],
            "cwd": "${workspaceFolder}/ASTools.Core",
            "stopAtEntry": false,
            "console": "internalConsole",
            "internalConsoleOptions": "openOnSessionStart",
            "launchBrowser": {
                "enabled": false
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            }
        },
        {
            "name": ".NET Core Launch ASTools.UI",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "Build ASTools.UI",
            "program": "${workspaceFolder}/ASTools.UI/bin/Debug/net8.0-windows/ASTools.UI.dll",
            "args": ["--page","templates","--working-dir","C:\\Data\\test\\test\\Logical"],
            "cwd": "${workspaceFolder}/ASTools.UI",
            "stopAtEntry": false,
            "console": "internalConsole",
            "internalConsoleOptions": "openOnSessionStart",
            "launchBrowser": {
                "enabled": false
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            }
        }
    ]
}

Maybe I just have to add the property brokeredServicePipeName (as written in the error message), in this case could you please help me providing some documentation?

I'm pretty sure this is an error and it will be fixed soon, that said you can add it:
{
    "version": "0.2.0",
    "configurations": [
        {
            "brokeredServicePipeName": "A",
            [...]
        }
    ]
}

"A"? well, it wants something, so... lol

I'm pretty sure this is just an error and it will be fixed soon, that said you can add this:
{
    "version": "0.2.0",
    "configurations": [
        {
            "brokeredServicePipeName": "A",
            [...]
        }
    ]
}

"A"? well, it wants something, so... lol

I'm pretty sure this is just an error and it will be fixed soon, that said you can add it:
{
    "version": "0.2.0",
    "configurations": [
        {
            "brokeredServicePipeName": "undefined",
            [...]
        }
    ]
}

The issue was the debug configuration resolver was injecting a debugger option that should appear in the dotnet debug configuration that the C# Dev Kit provides. This should not affect the coreclr debugging scenarios.
Thank you to everyone for reporting and providing additional information on this issue.


Misc fixes may21

Just a few cleanups discovered in playing with the codebase lately.

Eclipse Checkstyle has moved the repository, so update that URL
The stu-home shortcut uses Cinnamon Nemo and doesn't work with Ubuntu, so make that a mint-only task. Ubuntu shortcuts also seem to require world-exec and gio set file.desktop "metadata::trusted" yes to run
Ubuntu 21.04 packer aborts without the apt "-y" flag, which we use elsewhere and most examples seem to show. I'm not sure how this was working before, but I think noninteractive mode is meant to suppress package prompts
The Ubuntu ISO checker is running on forks, which would likely cause diverging commits on the main branch

Looks like ansible-lint is now grumpy about some unrelated things (but just grumpy; not failing) with ignore_errors. We can track this separately.


Update birthdays to Date rather than DateTime

Allow students up to 18 by default.

Also of note:
Seemed to contain changes unrelated to birthdays

Pipfile.lock
coderdojochi/templates/welcome.html
fixtures/07-coderdojochi.location.json
fixtures/14-coderdojochi.session.json

Admin area does not enforce the age constraint for student. Though it is enforced in the Guardian add student form. Not sure if that was intentional or not.

Also of note:
Seemed to contain changes unrelated to birthdays

Pipfile.lock
coderdojochi/templates/welcome.html
fixtures/07-coderdojochi.location.json
fixtures/14-coderdojochi.session.json

Admin area does not enforce the age constraint for student. Though it is enforced in the Guardian add student form. Not sure if that was intentional or not.

Was running through testing, in dj-admin the date field now shows it is a date only (no longer requires time) for mentor, guardian, and student—so the migrations seems to be working as intended.
As a guardian, I was able to add a 19 year old student though with birthdate 1/16/2002. Noticed the change in coderdojochi/forms.py is what allows this, the min birthdate calculation uses an offset of -19 years.  Intended or typo?

Was running through testing, in dj-admin the date field now shows it is a date only (no longer requires time) for mentor, guardian, and student—so the migrations seems to be working as intended.
As a guardian, I was able to add a 19 year old student though with birthdate 1/16/2002. Noticed the change in coderdojochi/forms.py is what allows this, the min birthdate calculation uses an offset of -19 years.  Intended or typo?


Can't modify the login page?

Hello :
When I open the page http://<IP_ADDRESS>:4200/auth/login
I want to modify some hints on the login page.
But I found that the login component is in @nebular / auth, modified the<EMAIL_ADDRESS>file, and refreshed and found that the page has no changes.
How do I modify the login page? And can it be displayed correctly on the page?

You can check these pages:
https://akveo.github.io/nebular/docs/auth/custom-auth-components/#login-component-extension
https://github.com/akveo/ngx-admin/issues/5681


The background and foreground colours selected by the terminal do not match the colours set by the user.

VS Code Version: 1.84
OS Version: Windows10 19044

Steps to Reproduce:

The background and foreground colours selected by the terminal do not match the colours set by the user.
The background colour is selected by the terminal: #10F555
The foreground colour is selected by the terminal: #FFFFFF
2.
The following is the actual performance effect:
https://github.com/microsoft/vscode/assets/54253524/8495488e-2362-466a-82ea-79937dc383bf
https://github.com/microsoft/vscode/assets/54253524/5bfe8e20-554b-4220-bf9e-f0feaa46d6c3
Issue 2:
In this process when you select the font content the font will produce a shadow effect, this problem I reported to you in version 1.7.x, but no one has ever fixed it.

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.84.0. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

Can you share your settings.json? Does setting "terminal.integrated.minimumContrastRatio": 1 fix the issue?

Can you share your settings.json? Does setting "terminal.integrated.minimumContrastRatio": 1 fix the issue?

Hello!
Still not fixing the problem by setting "terminal.integrated.minimumContrastRatio": 1,. You can also try it yourself. . .

@zhouxinghong I cannot reproduce, which is why I'm after your settings.json to match your environment.

@zhouxinghong I cannot reproduce, which is why I'm after your settings.json to match your environment.

My setting.json file is too large. . .
Can you tell me what specific terminal configuration items you need? I will provide you with the terminal settings I have configured😜

Hard to say exactly, but all workbench.* and all terminal.* settings would probably include the likely ones.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Added My Repo File

Congratulations for your submission! your scores will get reflected in next server update! ⚡

Thank you


Feature Request: custom class selector inputs for the Form block

Based on forum comments, users are looking for a way to add custom class selectors to form element labels and inputs. This would allow for styling form elements in a way that doesn't rely on source order. Currently changing a form elements order, or removing a form element, will break the styling if is is based on source order (e.g. nth-child or nth-of-type).
I imagine it could be a simple text input or a Selectize input for adding multiple classes.
Example:

this isn't really something that we're going to add at the attribute level – and that's what these are, custom attributes. However, there are ways to customize the styles of attributes for your websites; this is a topic I'd like to cover at some point in the near future for the documentation website.

@aembler
Documentation for customizing attribute styling would be very useful.
Would this be related to Express Form templating? If not, documentation on Express Form templating would also be in big demand.

Yes, it's definitely related to that. There are significant changes on this
front in 8.2 (which will probably be frustrating to some) but once
documented they will be easier and more flexible to work with.
On Tue, Jun 13, 2017 at 3:30 PM, Karl Dilkington<EMAIL_ADDRESS>wrote:

@aembler https://github.com/aembler
Documentation for customizing attribute styling would be very useful.
Would this be related to Express Form templating? If not, documentation on
Express Form templating would also be in big demand.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/concrete5/concrete5/issues/5555#issuecomment-308267540,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAgNwXwbBDz4kgWh5nj8zTHD85B3ajGsks5sDw2igaJpZM4N4T2K
.


[Issue]Shows a black screen while creating unity view inside tab view

We are trying to put the unity view inside a tab view and once we switch from unity view to any other tabs its showing black screen. But if the app goes to back ground and comes back ,contents will be shown and black screen will be gone.
As for now we have made the view style height to 99.4 and resolved the issue temporarily.
If anyone could tell me what could be the possible reason for this issue and is there ant fix for this it would be great
Thank you,

You could give this a try.

We tried this but still there is a white gap on top and bottom of the view which looks a bit awkward,
What is the reason causing the black screen if unity view covers the whole screen and switches back to another view ?

Any update as to the reason this is happening?


Pipe dockerfile, deprecate 'sudo' in .travis.yml, allow to test feature branches

This PR includes three minor changes:

Some conditions are moved in order to allow testing feature branches (not master) on Travis.
Instead of creating a Dockerfile for each image, the content is piped through stdin as explained at Pipe Dockerfile through stdin.
Key sudo is deprecated now: blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration.

ping @moul @lafin

@lafin, I update the PR according to your comments.
Nonetheless, note that the modifications related to [[ $TRAVIS_BRANCH == 'master' && $TRAVIS_PULL_REQUEST == 'false' ]] were introduced just to enable testing changes such as piping the dockerfile, #55 and/or #56 in travis, which is not possible ATM. From a wider perspective, IMHO checking those envvars is not required. Travis provides features to achieve the an equivalent setup. Let me elaborate:
ATM, this is the procedure:

A RPM package is downloaded and extracted.
Tarballs are generated for each of the binary files extracted from the RPM.
Tarballs are pushed/published/released to GitHub using curl and GITHUB_TOKEN.
Docker images for amd64 hosts are generated by ADDing (downloading again) each tarball from GitHub.
Docker images are pushed to dockerhub.

I think that an alternative could be:

1
2
Docker images for amd64 hosts are generated by COPYing the locally available tarballs.
Deploy:

3
5

E.g.:
services: docker
language: bash
env:
    global:
        - VERSION=3.1.0-2
        - REPO=multiarch/qemu-user-static
        - PACKAGE_URI="https://kojipkgs.fedoraproject.org/packages/qemu/3.1.0/2.fc30/x86_64/qemu-user-static-3.1.0-2.fc30.x86_64.rpm"
before_script: sudo apt-get install jq rpm2cpio cpio
script:
    - ./generate_tarballs.sh
    - ./update.sh -v "$VERSION" -r "$REPO"
deploy:
  - provider: script
    script: docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" && docker push $REPO
    on:
      repo: multiarch/qemu-user-static
      branch: master
      tags: true
  - provider: releases
    skip_cleanup: true
#    api_key:
#      secure:
    file: "./releases/*.tgz"
    file_glob: true
    on:
      repo: multiarch/qemu-user-static
      branch: master
      tags: true

This would ensure that feature branches and PR only execute script. Only commits in master which are tagged will execute deploy.


Uncaught TypeError: Cannot read properties of null (reading 'nextSibling')

Describe the bug
The error is:
Uncaught TypeError: Cannot read properties of null (reading 'nextSibling')
    at 2d974b49-e6f9-4756-9a3b-355c5758ed5a:10:21
    at Counter (2d974b49-e6f9-4756-9a3b-355c5758ed5a:16:5)
    at jspm.dev/npm:solid-js@1.7.3:549:12
    at untrack (jspm.dev/npm:solid-js@1.7.3:434:12)
    at Object.fn (jspm.dev/npm:solid-js@1.7.3:545:37)
    at runComputation (jspm.dev/npm:solid-js@1.7.3:696:22)
    at updateComputation (jspm.dev/npm:solid-js@1.7.3:679:3)
    at devComponent (jspm.dev/npm:solid-js@1.7.3:556:3)
    at createComponent (jspm.dev/npm:solid-js@1.7.3:1232:10)
    at 2d974b49-e6f9-4756-9a3b-355c5758ed5a:18:31

The error appears during rendering simple markdown:
https://playground.solidjs.com/anonymous/cd306969-c2d8-4d59-97d3-1a46cd9fd86a
import { render } from "solid-js/web";

function Counter() {
  const handleClick = () => console.log(123);

  return (

      <form>

          Set input value
          <input type="text" />

        <fieldset>
          <legend>Time travel options</legend>

            Keep same values
            <input type="check" />

        </fieldset>
      </form>
       text

       text

        <button onClick={handleClick}>Undo</button>
        <button>Redo</button>
        <button>Clear history</button>

  );
}

render(() => <Counter />, document.getElementById("app")!);

Your Example Website or App
https://playground.solidjs.com/anonymous/cd306969-c2d8-4d59-97d3-1a46cd9fd86a
Steps to Reproduce the Bug or Issue
Go to the playground and insert the code.
Expected behavior
The markdown should be rendered without any errors.
Screenshots or Videos
No response
Platform

OS: [Windows,]
Browser: [Edge]
Version: [Latest]

Additional context
No response

Should it be possible to use random tags? AFAIK HTML spec allows to use any tag name.

I tested custom elements and they were fine.. it is just a few elements seem to have weird parsing exception cases.

Hey peeps, I had the same issues and I narrow down to babel-preset-solid.
I used to have<EMAIL_ADDRESS>and when I upgraded to<EMAIL_ADDRESS>then all my tests broke with the same error.

Yeah... depends on your test runner environment. I found out recently that Happy DOMs parser isn't as sophisticated as the browser's which makes things a little bit tricky since it pretty much breaks on any sort of tag omission. In the browser we've narrowed it down to a few special fields. I'm still trying to decide what to do with this information since it'd be nice to apply this optimization but not all non-browser environments are going to have an HTML parser with perfect behavior.

An interesting behaviour: if you remove onClick={handleClick} from the button, everything will work.

Wanted to add on to this that we were finding this same error when we were spreading props on a button element and it contains 3 prop elements on the same level, one of them being children, with a no op create effect. I know super specific but when we narrowed it down it was this weird combination of conditions that caused the same error and getting rid of any one of these pieces made it work again. Note this is in Astro using Solid's plugin. Have absolutely no idea what's going on but wrapping the props.children in a span is our current solution for it.
https://stackblitz.com/edit/github-9aeck2?file=src/components/Button.tsx

@howagain that looks like a bug but it is a completely different issue.
The error is generic for any sort of walk/DOM mismatch. I was going to close this one because I changed dom expressions to no longer aggressively omit closing tags.


add a GH action that updates the copyright year in every file

Is your feature request related to a problem? Please describe.
Copyright is described on a per-file basis, with a starting and current year - A GitHub action should keep the current year updated by running on a yearly basis.
Describe the solution you'd like
Integrate https://github.com/FantasticFiasco/action-update-license-year into the repo's actions, configured in such a way that it checks every source file for the copyright notice.

You might wanna look at this:
https://github.com/Rythe-Interactive/Legion-Engine/tree/task/automated-copyright-headers
should prolly be able to adapt it to increment the year too


Cannot parse GEOMETRYCOLLECTION

Uncaught Error: Unable to parse: Error: Parse error on line 1:
GEOMETRYCOLLECTION(L
^
Expecting 'POINT', 'LINESTRING', 'POLYGON', 'MULTIPOINT', 'MULTILINESTRING', 'MULTIPOLYGON', got 'INVALID'

this is more or less a duplicate of #16.
we should probably clarify this point in the documentation.

this is more or less a duplicate of #16.
we should probably clarify this point in the documentation.

we now explicitly call out acceptable WKT geometry types to pass to parse() in the documentation site.
http://terraformer.io/wkt-parser/#wktparse
i'll go ahead and close this issue, but i'd be happy to chat more if you have any additional questions.  either way, look for support for converting GeoJSON GeometryCollections in our next release! #19


[Misc] GPTQ Activation Ordering

Activation Ordering

Changes

Update QuantizationArgs to support actorder argument
Add weight_g_idx parameter loader which defaults to all -1s

If weight_g_idx is loaded with valid values, then the parameter is passed to the kernel
If weight_g_idx is not loaded, then no column reordering is performed

Testing

Added weight loading tests
Manually regression tested loading with neuralmagic/Meta-Llama-3-8B-Instruct-quantized.w4a16

Inference Script
infer_actorder.py
from vllm import LLM
llm = LLM("nm-testing/TinyLlama-1.1B-Chat-v1.0-actorder-group")
llm.generate("The future of AI is")

Actorder=Group Evaluation

Meta-Llama-3.1-8B-Instruct-quantized.w4a16
Ours
Stderr

78.57
78.87
± 00.41

50.46
49.24
± 01.52

76.48
76.00
± 01.20

These results have discrepancies not related to activation ordering, more precise results will be posted at a later date.
Actorder=Weight Evaluation
Accuracy
Accuracy evaluations were performed using compressed Meta-Llama-3-8B-Instruct as a base model. For reference, Meta-Llama-3-8B-Instruct-quantized.w4a16 was compressed using AutoGPTQ desc_act=True and achieved 72.25% on GSM-8K (5-shot, strict-match).
The following models were quantized using llm-compressor with the same quantization configuration but 156 calibration samples as opposed to 256.
Group Activation Ordering
vllm (pretrained=/home/ksayers/llm-compressor/llama3_actorder_group,add_bos_token=True), gen_kwargs: (None), limit: None, num_fewshot: 5, batch_size: auto
|Tasks|Version|     Filter     |n-shot|  Metric   |   |Value |   |Stderr|
|-----|------:|----------------|-----:|-----------|---|-----:|---|-----:|
|gsm8k|      3|flexible-extract|     5|exact_match|?  |0.7240|?  |0.0123|
|     |       |strict-match    |     5|exact_match|?  |0.7263|?  |0.0123|

Weight Activation Ordering
vllm (pretrained=/home/ksayers/llm-compressor/llama3_actorder_weight,add_bos_token=True), gen_kwargs: (None), limit: None, num_fewshot: 5, batch_size: auto
|Tasks|Version|     Filter     |n-shot|  Metric   |   |Value |   |Stderr|
|-----|------:|----------------|-----:|-----------|---|-----:|---|-----:|
|gsm8k|      3|flexible-extract|     5|exact_match|?  |0.7331|?  |0.0122|
|     |       |strict-match    |     5|exact_match|?  |0.7354|?  |0.0122|

Latency
Group Activation Ordering
Avg latency: 2.0740114107728003 seconds
10% percentile latency: 2.0585451871156693 seconds
25% percentile latency: 2.0614405693486333 seconds
50% percentile latency: 2.0715408828109503 seconds
75% percentile latency: 2.0796915404498577 seconds
90% percentile latency: 2.0825428303331135 seconds
99% percentile latency: 2.153371973782778 seconds

Weight Activation Ordering
Avg latency: 2.0243701239426932 seconds
10% percentile latency: 2.0120500519871714 seconds
25% percentile latency: 2.01621649088338 seconds
50% percentile latency: 2.020678504370153 seconds
75% percentile latency: 2.026012707967311 seconds
90% percentile latency: 2.0294162426143885 seconds
99% percentile latency: 2.1007918303459885 seconds

/ready

/ready

Confirmed that group activation ordering works with tp=2,4

I might be mistaken, but  actorder="weight" feels like purely a change in how (the order) llm-compressor quantizes weights, in which case why can't vLLM be oblivious to this fact? It appears from vLLM's perspective actorder="weight" and actorder=None/False is identical, in the sense that it's not reordering activations in either case.
So naming feels a bit confusing sinceactorder="weight" doesn't sound like "activation rendering" at all, maybe we can simplify this by adding a quantorder key in the checkpoint (for record keeping) and just set actorder=None/False that way vLLM can just ignore quantorder completely and actorder is just a boolean indicating if activations should be reordered or not (we could leave it as a str/enum for future proofing if we want but would be a boolean at this point in time)?
I think we should try to create better separation concerns, i.e. better separation on how the model was quantized and how the model needs to be run for inference otherwise its just more things/complexity kernel authors need familiarize themselves with only to realize (in this case) it has no impact.

I agree that there are benefits to separating "actorder" and "quantorder" as two orthogonal arguments, that being that vllm would only have to check for the "actorder=True" case.
I think one large downside to separating "actorder" from "quant order" is that we're essentially redefining "actorder" as "activation ordering groups". This means that an llm-compressor user might turn on "actorder", expecting it to also do quantization ordering like it does in GPTQ, then get a model that has additional latency but no performance gain. This is confusing for users, not only because they have to redefine the concept of actorder, but because there's a potential pitfall case now added.
There probably exist better names to better explain the ideas of "non-sequential grouping" and "quantization ordering", but folding these cases into the "actorder" argument allows us to leverage users' existing understanding of activation ordering.

In a followup PR, we could keep actorder, but add an additional argument continguous-groups. In the pydantic model we can validate that the continugous-groups argument is True iff actorder="group". This way a compression user can use the nice actorder arugment, but vllm only needs to pay attention to contiguous-groups

I think the goal here would be make it so vLLM doesnt have to maintain an enum of actorders so that users can experiment with orderings in llm-compressor without having to submit PRs to vLLM
In offline conversations with @kylesayrs , its seems like a good alternative solution would be to have a non-contiguous-groups flag which when present and true indicates if a g_idx is present (since g_idx doesnt actually contain the activation order instead but instead just a mapping of in-channels to groups)
This way vLLM can completely ignore actorder (opening room for experimentation with things like the weight order (and potential variations of that), or folding activation permutations into the MLP layers [1, 2] without having to update vLLM.  In this case actorder would only exist in the checkpoint as "record keeping" so people can remember what was used to create the checkpoint.
ideally though we wouldn't have compressed-tensor checkpoints in the wild with actorder="group" but no non-contiguous-groups flag, since then we'd have to have extra code/logic in vLLM for backwards compatibility (which would be a shame for just a couple models) @mgoin @kylesayrs do we know if there's any models like this in the wild?

@LucasWilkinson A decision has been made that we're not going to support the more generalized checkpoint config in this PR, and will instead continue with using list which specifies which activations orderings come with non-contiguous groupings.
I would characterizing the problem as being a difference in requirements between recipe configs and checkpoint configs, as well as a problem of coupling between llm-compressor and vllm-CT. While it is a problem that will likely come up again, it's considered out of scope for this PR.
There are some options to make the checkpoint config more extensible/ decoupled from llm-compressor in the future. The two that I have proposed are (1) separating the recipe/compression config from the checkpoint config or (2) adding an ActivationOrdering.NON_CONTIGUOUS option to the enum, which would help to generalize the config and allow compressors to be more vague while still giving enough information for correct inference.
Option (1) would likely involve some legacy support for backwards compatibility. Option (2) would be backwards compatible. Option (3) is to maintain a coupling between llm-compressor and vllm-CT. Hopefully these options are palatable enough to defer for a separate PR.

Cool, ya was just wanting making my voice heard that I think we should be striving separation of concerns in our software design, especially across repos to avoid versioning headaches in the future (and having to coordinate PRs across many repos).
Im not a huge fan option 2 as it is just a continuation of convoluting the difference between activation ordering and group assignment (i.e. mixing something that is fairly GPTQ specific with something that could be viewed as a more general group quantization thing).
Option 1 seems like what we should be striving for as it will give us more flexibly going forward even outside of this specific actorder case. Im not sure what you mean by "checkpoint config" but I assume you mean the validated by compressed tensors. I would imagine for option 1 you would still want to save recipe information for accuracy debugging and general recorded keeping, but stored in an separate structure or using keys that vLLM and compressed tensors can just ignore / pass-through.

@LucasWilkinson A recipe config means fields that are important to compression algorithms, a checkpoint config means fields relevant to vllm and serving. I agree that checkpoint configs should have some info about how they were compressed, but those fields wouldn't be a requirement.


Document usage of multiple apps/data stores

Perhaps this should be better as new section. If so, just let me know and I'll update my pull request.

hi - please could you add this as an "Example" page in the wiki? https://github.com/markevans/dragonfly/wiki
I'd rather add it there than add to the core docs, which I'd like to keep simple.
Thanks!


Panel refactor

just made some code edits. renamed variables etc etc.

Funny, @gazuntype I always took you for a free-spirit who eschews the hobgoblin of conformity. It almost looks like you used StyleCop....

i am a man of mystery.


folder rights of the fuseki folders are not correct

it is necessary to execute a  sudo chmod 777 -R fuseki-dev/ fuseki-live/ before writing to the corresponding folders.
comment 1 from FK
suggested solutions:
https://www.reddit.com/r/docker/comments/hjsipd/permission_denied_with_volumes/

It's about the user inside your container. As you map volumes the user inside the container will own the folder you map. And you probably created on the host first with your own user or root. As such it can map but can't write to it. What I in general do is to have a user setup on my docker host. Like dockeruser:dockeruser Uid 1001 gid 1001 Then I pass the same Uid and gid to my containers as env. And set the folder to 1001:1001
Now if you don't care about security just do a chmod 777 on your folder.

exec in your container check the uid anf gid of your "moonlightbot" user
make a user dockeruser edit the /etc/passwd and groups file and modify the uid and gid to match the ones in your container

or more info also e.g. here: https://mydeveloperplanet.com/2022/10/19/docker-files-and-volumes-permission-denied/
comment 2 from FK
quickfix could also be something like:
sudo chown -R 1000:root fuseki-dev/ fuseki-live/

might be related to this: https://pratikpc.medium.com/use-docker-compose-named-volumes-as-non-root-within-your-containers-1911eb30f731

fixed in commit #7d5c6d0 (merged into development with #181)


[T3A2][W10-A1] Alex Fong Jie Wen

Accepting this PR without a review because another of your PRs for this tutorial was reviewed in detail.


MockBukkit#unmock Hangs Indefinitely

#250 appears to have introduced a bug that causes MockBukkit to hang indefinitely when unmocking. This is largely due to the fact that PluginManagerMock#disablePlugins is not called until after the scheduler blocks for shutdown.
https://github.com/MockBukkit/MockBukkit/blob/99821e8e97e2ee54288308a00d6f3cd575ea12c1/src/main/java/be/seeseemelk/mockbukkit/MockBukkit.java#L311-L317
Not only is there no way for the plugin to know it is expected to stop scheduling tasks, sync tasks are not ignored. That means that any sync task in the scheduler will cause an unmock call to block forever.
Manually cancelling tasks prior to unmocking works, but that shouldn't be necessary. I've downgraded MockBukkit-1.17 to 1.10.0 and unmocking works as expected.

Can confirm this is also happening with MockBukkit-v1.16 version 1.5.2

Bumping this as it is still present in MockBukkit-v1.18 version 1.15.0

Adding the following two tests in src/test/java/be/seeseemelk/mockbukkit/scheduler/BukkitSchedulerMockTest.java demonstrates the problem. The first test shows an example of a repeating task that will keep on running. The second test shows that when the repeating task is cancelled the scheduler can shutdown succesfully.
@Test
// This will probably crash, run test with care.
void repeatingTask_Keeps_Running_Indefinitely() {
    scheduler.runTaskTimer(null, () -> System.out.println("I ran"), 0, 30);

    scheduler.shutdown();
}

@Test
void repeatingTask_Stops_Running() {
    BukkitTask task = scheduler.runTaskTimer(null, () -> System.out.println("I ran"), 0, 30);
    scheduler.performTicks(60);

    task.cancel();

    scheduler.shutdown();
}

Fyi: I have the same issue :smile:.
https://github.com/chaos-olymp/portals/actions/runs/1634847340

This has not been resolved. Here's a simple test that hangs after the changes made by #250:
import org.bukkit.plugin.Plugin;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class SchedulerTest {

  @Test
  void testSchedulerUsage() {
    MockBukkit.mock();
    Plugin plugin = MockBukkit.createMockPlugin("SampleText");
    plugin.getServer().getScheduler().runTaskLater(plugin, () -> {}, 1L);
    MockBukkit.getMock().getScheduler().performTicks(2);
    MockBukkit.unmock();
  }

}

This test still causes a hang on MockBukkit#unmock using MockBukkit-v1.18 1.24.1.

+1 to reopen @Jikoo . Still broken on MockBukkit-v1.16:1.5.2. 1.5.0 works though.

I've just created a new PR to address more hanging issues and backported it to 1.16-1.18. Just waiting for it to be merged. Can you guys see if #532 is still needed afterward?

Sorry for the late response - appears to work fine for me in a small project now, though I haven't yet updated MockBukkit in the project the majority of my scheduler-based test issues appeared in.


Guggg

lgtm if it builds :)

jenkins test please

Thanks, we need this. With this however stats will not be persistent by default- I think they need to be. Maybe a quick fix is just to add a third ctor parameter Flags that defaults to persist. Flags would need to be an enum though - if you don't like enum class use old enum. Another flag could beconstant - somebody asked for that to e.g. be able to expose rx/tx-ring sizes.


[Semantical Error] Annotation @Autowire is not allowed to be declared on class

[Semantical Error] Annotation @Autowire is not allowed to be declared on class Foo. You may only use this annotation on these code elements: METHOD.

Trying to use the following annotation on the class
@SourceField(name="company", annotations={@Autowire(for="$con")})
public function getCompany(ConnectionInterface $con = null)
This is necessary since Propel, the ORM we use, takes in the connection object in order to hydrate a relational object, if needed - lazy loading.

Hey @oojacoboo ,
Thanks a lot for this bug report!
This was fixed in #195. You should now be able to use @Autowire (and absolutely all the other annotations) in a @SourceField annotation.


Code Health

Note: This depends on #22.
Code Style

[ ] Get all code to pass lint checks, including having docstrings

How to Use Pylint
To run pylint, just execute pylint vivarium.
The files left to fix are listed in .pylintrc after ignore=. We use an exclusion list to ensure that once we fix a file, any code added to it also passes the linter. This prevents regressions. It also ensures that any new files added have proper style.
I use pylint's default rules. You can adjust this in .pylintrc after the disable= line.
Fixing a File

Delete the file from the list in .pylintrc
Run pylint by executing pylint vivarium
Fix all the errors that are shown
Repeat steps 2-3 until pylint finds no errors

Test Coverage

[ ] Reach 100% code coverage

How to Calculate Coverage
I use the pytest-cov plugin to calculate test coverage. Whenever you run the tests, add the --cov=vivarium argument to calculate coverage. At the end of the test output, you'll get a table like this:
Name                                                  Stmts   Miss  Cover   Missing
-----------------------------------------------------------------------------------
vivarium/__init__.py                                     37      0   100%
vivarium/composites/__init__.py                           0      0   100%
vivarium/composites/injected_glc_phosphorylation.py      13      0   100%
vivarium/core/__init__.py                                 0      0   100%
vivarium/core/composition.py                            403    180    55%   62, 64-68, 141, 143, 156-157, 179-193, 200-221, 247-333, 347, 364-370, 375-386, 417, 445-456, 527-540, 543-544, 548-552, 559-569, 578-580, 614-643, 686-706, 746-755, 998-1000
vivarium/core/control.py                                 85     13    85%   40, 42, 59-60, 63-64, 89-90, 104-106, 112, 119, 211
vivarium/core/emitter.py                                156     80    49%   32-33, 55, 59, 65, 70-73, 86-94, 103, 116, 119, 128, 176-189, 192-196, 199, 203-212, 216-222, 226-227, 232-280, 284-298, 304-312, 320-324
vivarium/core/experiment.py                            1018    104    90%   93, 102, 171, 173, 182-184, 191, 245, 250-251, 262, 267, 271-272, 285-286, 288, 293, 311, 327-328, 381-384, 416, 437, 442, 447, 452, 460-467, 481, 485, 487, 490, 500-502, 520-523, 665-672, 827-831, 855-872, 909, 920, 922, 948-949, 990-997, 1014, 1069, 1076, 1096, 1348-1352, 1461-1462, 1494-1495, 1517, 1546, 1548, 1570-1576, 1677, 2254
vivarium/core/process.py                                277     40    86%   30, 41, 43, 51, 78-81, 100-104, 211, 227, 274, 277-279, 319, 337, 353-361, 370, 386, 392-394, 401, 457, 459, 507, 516, 564
vivarium/core/registry.py                               118     57    52%   77-78, 115-122, 146-153, 164, 182-197, 202-204, 212, 227, 238, 246, 249, 253, 256, 260-264, 271-275, 284-286, 289, 294-296, 300
vivarium/experiments/__init__.py                          0      0   100%
vivarium/experiments/glucose_phosphorylation.py          48      5    90%   91-96, 105
vivarium/library/__init__.py                              0      0   100%
vivarium/library/datum.py                                28     19    32%   2-3, 6-7, 28-41, 44, 47, 50
vivarium/library/dict_utils.py                          163     75    54%   17-20, 33-36, 38, 53, 68, 70, 74, 94, 113-117, 127-132, 136-144, 150-152, 156-175, 183-202, 206, 230-236, 259-261
vivarium/library/fasta.py                                10      8    20%   4-12
vivarium/library/filepath.py                             35     22    37%   22-25, 31-34, 51-58, 73-77, 81-82, 87-89, 93-94
vivarium/library/make_network.py                         87     79     9%   15-27, 33-40, 55-92, 96-125, 136-171
vivarium/library/path.py                                  4      2    50%   4-5
vivarium/library/pretty.py                               24      5    79%   16, 18, 20-21, 26
vivarium/library/schema.py                               39     28    28%   4, 7, 12, 18-25, 28-40, 45-52, 55, 62, 69, 77
vivarium/library/timeseries.py                           32     27    16%   27-50, 61-69
vivarium/library/topology.py                            148     17    89%   36-37, 58-61, 93-98, 107-116
vivarium/library/units.py                                38      6    84%   62-66, 90
vivarium/plots/__init__.py                                0      0   100%
vivarium/plots/agents_multigen.py                       135    127     6%   13-24, 64-226
vivarium/plots/simulation_output.py                     103     16    84%   70, 76, 78-79, 82, 84, 99-103, 122, 129, 132, 138, 172
vivarium/plots/topology.py                              105     17    84%   40, 137-140, 151, 166-180, 187, 202, 255, 268-277
vivarium/processes/__init__.py                            0      0   100%
vivarium/processes/agent_names.py                        14      6    57%   12-14, 17, 29-30
vivarium/processes/burst.py                              58      6    90%   208-212, 217
vivarium/processes/derive_concentrations.py              28     19    32%   20-31, 34, 53-69
vivarium/processes/derive_counts.py                      24      8    67%   32, 35, 55-62
vivarium/processes/divide_condition.py                   15      7    53%   10-11, 14, 17, 25-28
vivarium/processes/engulf.py                             58      6    90%   183-187, 191
vivarium/processes/exchange_a.py                         15      0   100%
vivarium/processes/glucose_phosphorylation.py            39      5    87%   129-139
vivarium/processes/injector.py                           37      9    76%   57, 103-109, 113
vivarium/processes/meta_division.py                      76      9    88%   29, 52, 65, 207-211, 215
vivarium/processes/nonspatial_environment.py             27     15    44%   22-24, 27-72, 75-87
vivarium/processes/remove.py                             47      6    87%   116-120, 124
vivarium/processes/swap_processes.py                     63      6    90%   175-179, 183
vivarium/processes/template_process.py                   38      7    82%   138-146, 151
vivarium/processes/timeline.py                           57      5    91%   43-44, 51, 56-57
vivarium/processes/tree_mass.py                          50      7    86%   69, 168-172, 176
-----------------------------------------------------------------------------------
TOTAL                                                  3752   1048    72%

Required test coverage of 72.0% reached. Total coverage: 72.07%

This lists the fraction of lines in each file that are covered by the tests. It also tells you which lines in the file weren't covered so you can add tests for them.
Notice the last line says we require a code coverage of 72%. This is just the current coverage value. If coverage dips below 72%, the tests will fail to make sure we don't regress.
How to Improve Coverage

Run the tests with pytest --cov=vivarium.
Pick a file that is not completely covered (coverage < 100%) using the coverage output.
Match the lines listed as not being covered to the source file. These are the lines you need to write tests for.
Add tests that will check that the uncovered lines are working correctly.
Run the tests again. You should get a coverage value of 100% for that file.
Update the minimum coverage in .coveragerc to your current coverage value for the entire project.

Static Typing

[ ] Annotate all code with types and resolve all issues raised by mypy

How to Use Mypy
We use type annotations as specified by PEP 484 and prefer annotations to special comments like # type: str. See the documentation for typing for more information.
Mypy is configured using the mypy.ini file, which looks like this:
[mypy]

disallow_untyped_defs = True
disallow_incomplete_defs = True

# Ignore missing types from third-party libraries.
[mypy-numpy.*]
ignore_missing_imports = True
...

# Ignore missing types from Vivarium Core files we haven't typed yet.
[mypy-vivarium.core.registry.*]
disallow_untyped_defs = False
disallow_incomplete_defs = False

[mypy-vivarium.core.control.*]
disallow_untyped_defs = False
disallow_incomplete_defs = False
...

Notice how we first set disallow_untyped_defs and disallow_incomplete_defs to True. This means that by default, mypy will raise an error whenever a function is not completely typed. Then, for every file that hasn't been typed yet, we include a section like [mypy-vivarium.core.registry.*] for vivarium/core/registry.py that sets those options to False. As we add type hints, we can remove files from this list until everything has type annotations.
Also note that we tell mypy to ignore types in our dependencies like numpy. Many third-party libraries are poorly-typed, and we want to avoid spending time trying to get mypy to work with them. We will focus on making sure the types in our code are correct instead.
How to Add Types

Pick a file listed in mypy.ini as not being covered yet.
Delete the file's section from mypy.ini.
Run mypy by executing mypy vivarim
Fix any errors raised by mypy
Repeat 3-4 until no errors are raised

Tips:

PEP 563 makes a small semantic change to Python annotations that will become mandatory in Python 3.10. Ideally we should make the annotations compatible with that now and keep them that way as we fill them out. We can use from __future__ import annotations to ensure they're good with it now, or it might suffice to run PyCharm inspections set to check for Python 3.10 compatibility.

I'll have to re-read it but IIRC it won't change any of our type hints. The point of the change is to defer processing of the annotations so that (1) they can more easily handle forward references to classes and (2) they avoid taking the time to process annotations when "just" loading code to run it. The change impacts cases like using annotations for RPC protocol definitions, database queries, etc.

It'd be nice to make PyCharm inspections run clean on the code, even if that means letting it add some comments to ignore some inspections in some locations.

Tips:

PEP 563 makes a small semantic change to Python annotations that will become mandatory in Python 3.10. Ideally we should make the annotations compatible with that now and keep them that way as we fill them out. We can use from __future__ import annotations to ensure they're good with it now, or it might suffice to run PyCharm inspections set to check for Python 3.10 compatibility.

I'll have to re-read it but IIRC it won't change any of our type hints. The point of the change is to defer processing of the annotations so that (1) they can more easily handle forward references to classes and (2) they avoid taking the time to process annotations when "just" loading code to run it. The change impacts cases like using annotations for RPC protocol definitions, database queries, etc.

It'd be nice to make PyCharm inspections run clean on the code, even if that means letting it add some comments to ignore some inspections in some locations.

PR #43 adds runscripts to run the static checkers (so we don't have to remember how) and also fixes some checks.

PR #43 adds runscripts to run the static checkers (so we don't have to remember how) and also fixes some checks.


API returns 500

I followed all the instructions but the API calls do not work.
Tried on version 10.08 & 11 for Twilio.
Since I'm only using Twilio do I need other modules?

Sorry for the late response.
Could you describe each step you have followed and how files become after edited?


ShakeEffect does not work if the duration is less than 1000 milliseconds.

Working Code
const Icon(Icons.favorite, size: 28.0)
            .animate()
            .shake(duration: 1000.ms),  // <--- work fine

NOT working Code
const Icon(Icons.favorite, size: 28.0)
            .animate()
            .shake(duration: 999.ms),  // <--- NOT work

I think it because entry.duration.inSeconds return 0 if it is less than 1000 milliseconds.
https://github.com/gskinner/flutter_animate/blob/4228b68a817f3692d3378d6748322f1cff0c2faf/lib/effects/shake_effect.dart#L64
(Bug link)

Good catch. Funny that I have apparently never used ShakeEffect with <1s duration. Fixed.


Blast furnace recipe broken

The mod has conflicts with other libs, which ends up breaking the blast furnace recipe. (1.21 Neoforge)
I disabled all my mods and left only the libs and apis enabled, and several of them conflict with Quad, even libIPN, which only manages the game's interface.
Some don't conflict if I only turn it on and Quad, but if I turn on others, almost randomly, it breaks the recipe.
If I also activate all of them and don't activate Quad, the recipe doesn't break.
Is there any way to disable the management of this recipe in Quad?
I did the tests in a binary way: activating, entering the game and checking the recipe (all of this in new worlds)

Can you specify what mods seem to be causing the issue with Quad

https://github.com/LieOnLion/Quad/blob/8b173526e7729da16cf56b2a5c44b051e630e4db/src/main/resources/data/minecraft/recipe/blast_furnace.json#L9
It's this mod, assuming forge ingot tag for neoforge (which uses c for tags like fabric)

yes

https://github.com/LieOnLion/Quad/blob/8b173526e7729da16cf56b2a5c44b051e630e4db/src/main/resources/data/minecraft/recipe/blast_furnace.json#L9
It's this mod, assuming forge ingot tag for neoforge (which uses c for tags like fabric)

yes i know what my mod does, but another mod has to be messing with the tag

yes i know what my mod does, but another mod has to be messing with the tag

In 1.21 NeoForge there are no tags under forge namespace, at all.

Sorry, does look to be my mistake, a fix should be out now


Feature Request: Plugins for effects

Hello, I am not sure if this is the right place but I thought I post it here. Today I came across a problem with the fade effect were I wanted a different behaviour of fading slides. Currently there are two options of fading, fade slides on top of each other or crossfade slides.
This works all really well when you fade solid elements like images on top of each other. As soon as you deal with text slides fading becomes very ugly.
What I wanted to do is that the current slide fades away first and once this is done the new slide fades in, animation should not overlap.
I can sort of create this behaviour by setting this
.swiper-slide-active {
    transition-delay: 1s;
}

which works great when you interact with the pageinator or arrow navigation, but as soon as touch events and progress calculation comes in place the css properties are directly applied on the dom elements and from that point they are applied on all affected slides at the same time.
it would be cool to add a mechanism to add effects as plugins which need to implement an interface , like defaults, setTransition,setTranslate  and so on. It kind of feels like the right thing todo, but that might be just me.
Cheers Thomas

Hi, those setTransition setTranslate effect methods are basically just callbacks, so you can just take the code of fade effect and put same logic with requred changes to the onSetTransition and onSetTranslate callbacks

I know about the callbacks. I just thought it would be cleaner to offload the code in its own classes. That way it would be simple to create a repo of new effects which can be loaded on demand.

Got it. It is possible via Plugins API (which is not yet documented):
my-effect.js
Swiper.prototype.plugins.myEffect = function (swiper) {
    if (swiper.params.effect !== 'my-effect') return;
    // Do something on plugin init
    // ...

    // Return plugin hooks (same as callbacks with same arguments)
    return {
        onSetTranslate: function () {
            // Do something
        },
        onSetTransition: function () {
            // Do something
        }
    };
};

it solves my problem !  thx ! !

Hi @nolimits4web,
I am trying to make a vertical 3d circle using your code:
`
Swiper.prototype.plugins.circle3d = function (swiper) {
if (swiper.params.effect !== 'circle3d') return;
			    // Return plugin hooks (same as callbacks with same arguments)
				return {
				  onSetTranslate: function () {
				    var wrapperRotate = 0;
				    for (var i = 0; i < swiper.slides.length; i++) {
				        var slide = swiper.slides.eq(i);
				        var slideAngle = i * 60;
				        var round = Math.floor(slideAngle / 360);
				        var transform = 'rotateX(' + slideAngle + 'deg) translateZ('+(swiper.size / 2) +'px)';
								var progress = Math.max(Math.min(swiper.slides.eq(0).progress, 1), -1);
								if (progress <= 1 && progress > -1) {
								    wrapperRotate = i * 60;
								}

				        slide.transform(transform);
				    }
						swiper.wrapper.css({
						    '-webkit-transform-origin': '50% 50% -' + (swiper.size / 2) + 'px',
						    '-moz-transform-origin': '50% 50% -' + (swiper.size / 2) + 'px',
						    '-ms-transform-origin': '50% 50% -' + (swiper.size / 2) + 'px',
						    'transform-origin': '50% 50% -' + (swiper.size / 2) + 'px'
						});
          swiper.wrapper.transform('rotateX(' + wrapperRotate + 'deg)');
					}
				};
			};

`
I am trying to achieve:

I am stuck, so any help is appreciated.

Issue is closed because of outdated/irrelevant/not actual/needed more information/inactivity.
If this issue is still actual and reproducible for latest version of Swiper, please create new issue and fill the issue template correctly:

Clearly describe the issue including steps to reproduce when it is a bug.
Make sure you fill in the earliest version that you know has the issue.
Provide live link or JSFiddle/Codepen or website with issue


OCPBUGS-16598: Do not use name as key

Using the interface name as part of key, make react loose focus on the input element

/jira refresh

/lgtm


Unexpected token a in JSON at position 4

thats error when i run the project
SyntaxError: C:\Users\Tanjil\Desktop\steambot\config.json: Unexpected token } in JSON at position 66
at JSON.parse ()
at Object.Module._extensions..json (internal/modules/cjs/loader.js:708:27)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object. (C:\Users\Tanjil\Desktop\steambot\bot.js:2:16)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
thats my project
const SteamUser = require('steam-user');
const config = require('./config.json');
const client = new SteamUser();
const logOnOptions = {
accountName: config.username,
password: config.password
};
client.logOn(logOnOptions);
client.on('loggedOn', () => {
console.log('succesfully logged on.');

without your config.js its hard to say smth

without your config.js its hard to say smth
thats my config.json
{
accountName: ***********
password: ***********
}

obviusly i dont show the letters on this discussion but i writed on config (sry for my bad english)

without your config.js its hard to say smth

and now is that error Unexpected token a in JSON at position 4

{
"accountName": "1",
"password": "2"
}
replace 1 and 2 with your account name and password

{
"accountName": "1",
"password": "2"
}
substitua 1 e 2 pelo nome da sua conta e senha
Parece que você mais uma vez perdeu vírgula e não envolveu chaves e valores em "
i replaced 1 and 2 but the error its the same

so i writed
{
"username":"tanjil_08072005",
"password":"tanjil08072005",
}
and when i run the error is again :  Unexpected token } in JSON at position 66

{
"username":"tanjil_08072005",
"password":"tanjil08072005",
}
should be
{
"username":"tanjil_08072005",
"password":"tanjil08072005"
}

btw your issues not even connected with steam-user so try to google first please

btw your issues not even connected with steam-user so try to google first please

thanks thats worked

{ "username":"tanjil_08072005", "password":"tanjil08072005", } should be { "username":"tanjil_08072005", "password":"tanjil08072005" }

how the hell u discover my old credentials 😭


Update README.md

Just fixing a typo

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Thanks. 👍

You're welcome.


full screen feature is missing in cqube1 reports

Full screen feature is missing in textbook distribution report

Fixed now u can retest it.

Working as expected


[0567] Removed old_publish_link_for

Context
Changes proposed in this pull request
Guidance to review
Checklist

[ ] Make sure all information from the Trello card is in here
[ ] Attach to Trello card
[ ] Rebased master
[ ] Cleaned commit history
[ ] Tested by running locally

 Update back links in new publish to point to new publish


Bug: No option to control responsiveness of Navigation Component

Description of the bug
I am using Navigation component which asks for destinations and when passed on phone it is overflowing out of my window and there is no such option to pass to it as collapse below etc.
Playroom reproduction
No response
Version
^0.22.17
What browsers are you seeing the problem on?
Chrome

Hi @Sushant5776,
You have the option to fine-tune the Navigation's configuration, adjusting the size or padding of the items, or altering the typography to reduce the font-size. IMHO, enabling the items to collapse onto multiple lines may not always be the most effective solution. At times, it could be more beneficial to replace the component entirely with another that is more suited for mobile UI.


Oh great now that your secureHomeRouter succefully brought down my computer

😅

Hi. Recently I found that some individuals or groups have created viruses in the game under my name. All of my projects have been binary-free since late 2022. Please do not run any binary that claimed to be made by me unless you see very good proof that is indeed made by me.
discord server where i made the announcement: https://discord.gg/rQrMF7bgNk
the announcement: https://discord.com/channels/1146021124304556083/1146021125181153353/1263336684636999762


Conflict using multiple independent javascript files in one page

I have 2 independent javascript files, both generated by Transcrypt. Using them in one single page gives me a problem. It gives the error Cannot redefine property: format.
It redirects me to the line:
Object.defineProperty (String.prototype, 'format', ...
The property format on the String prototype cannot be defined twice.
How to solve this problem?
Is the only possible solution to merge the two files, or are there other possibilities?
Edit:
I changed the transcrypt file builtin.mod.js and added a check:
if(!String.prototype.hasOwnProperty('format')){
    Object.defineProperty (String.prototype, 'format', {
    ...
}

and:
if(!Function.prototype.hasOwnProperty('__setdoc__')){
    Object.defineProperty (Function.prototype, '__setdoc__', {value: __setdoc__, enumerable: false});
}

After recompiling my python files it worked as I hoped for.
Can this idea be used for the next release?

Hi,
you don't have to merge the 2 files but you can import the second within the first (just like with real python) - and therefore have everything available by just transpiling one file, the first.
Is this feasible for you?

I would like to have 2 separated javascript files, since it are 2 independent 'applications'. On the most paged in my web-application I only need 1 of the 2 files. But on one page I need them both. And then the conflict occurs.
I think it is valuable to have the possibility to use multiple javascript files on one page, all independently transpiled by Transcrypt. In this way it is better possible to serve the development of javascript libraries.
One of the FAQ on the Transcrypt page asks:
Can I write libraries in Transcrypt and distribute them in the Javascript world?
Answer: Sure you can, without restriction.
I think this should be reconsidered because of what I said above.
I think the Object.defineProperty on String.prototype and Function.prototype should first check if it is possible. If not, you might assume that there is already a transpiled javascript file, and it does not need to be done again.
Best regards

Hi, thanks, I think I understood your use case.  Allowing to have the transcrypt core evaluated twice does have many problems though, even if you bypass the global overloads via a check. The biggest is the double shipping of transcrypt core to the browser.
I suggest to consider one of these options:

On the page where you need both modules you set, in javascript, a global variable like load_mod2 = true' - and check that in the main module like:  if load_mod2: import mod2`. If you don't like to change the main module then do it in an umbrella file like "app.py" where you import page modules conditionally, dependent on page setup.

If you look into the __javascript__ folder you see that transcrypt produces TWO files for one python source file: e.g. "mod2.js" and "mod2.mod.js" for "mod2.py".
The ".mod" file does not contain the transcrypt core and can be imported on your second page, w/o the overload problem when running the core twice.

This second file imho justifies the statement on the FAQ: If you already have a full transcrypt module in your page: Just download the ".mod". Otherwise include the full ".js" file in your page - with same results.
Let me know if this works for you.

Thanks for your detailed answer!
I already tried the second option you mentioned, by using "mod2.mod.js". But it doesn't seem to work for me. But "mod2.mod.js" is not from a single python file, but also uses import, and so calls the method __nest__ in javascript. I get the error Uncaught ReferenceError: __nest__ is not defined.
Am I doing something wrong?

Am I doing something wrong?

funny - I get the same error now => I beg a pardon for my suggestion nr2.
What really really puzzles me is that I actually tried it before writing my answer to you (because I never used the '.mod' files directly, so I had to try) and it worked(!) - but now I see same probs like you, even w/o a subsequent import in the second module (nest not defined or pragma not defined). Strange.
=> @JdeH: When you are back from holidays, can you tell us if it is possible to use the xyz.mod.js files loaded standalone, via script tags? Or any other possiblity to use their code w/o shipping and evaluating the full transcrypt core twice but also w/o having to touch other modules?

Ok. I now have made a solution manually.
I first made an empty python file called transcrypt_core.py and compiled it to transcrypt_core.js. Then I removed the first line and the last few lines in the javascript file manually, to have all functions like __nest__ and __class__ globally available.
This file I added to my html page, before loading mod1.mod.js and mod2.mod.js.
It is just a workaround to show that it is possible.
Best regards

Hi, thats actually very nice and maybe a step towards 'hot module (re)loading' which a few people requested already.
Thanks for that, lets see if @JdeH decides to include a compile switch or sth like that to support your use case "officially".

Unfortunately, I think my solution isn't complete and ready to support.
When I add an import to mod2.py, to include mod2a.py, it doesn't work.
Still I think these problems can be solved, to get more flexibility in creating independant libraries. I need to find out how.

Allowing to have the transcrypt core evaluated twice does have many problems though, even if you bypass the global overloads via a check. The biggest is the double shipping of transcrypt core to the browser.

@AXGKl
After thinking about it, I still don't understand why bypassing the global overloads is not a good solution. Imagine you have two totally independant (Transcrypted) libraries, from different providers, and you want to use them on the same page.
Since the transcrypt core isn't big compared to the applications itself, it is not a problem, right?

Hi @pjbonestroo, after

my problems yesterday downloading and using a mod2 independently and
understanding again that the apps would otherwise really be nicely isolated against each other namespace wise
I begin to get second thoughts as well about that "totally decoupled" scenario.

@JdeH: If  you don't see other  reasons against it I support @pjbonestroo's suggestion, i.e. to prevent double overloads by a check.
Further rationale: Even if we do support e.g. a compiler switch in the future, allowing for a global transcrypt core / dependent module architecture we'll always support the current way of doing things as well, i.e. the all in one approach -> people will run into @pjbonestroo's problem, which seems easily preventable and the rest  seems to work as expected, w/o the standalone apps tapping on each other's toes ?
Or do we both not see the obvious way to do it?

@pjbonestroo
With regard to:

One of the FAQ on the Transcrypt page asks:
Can I write libraries in Transcrypt and distribute them in the Javascript world?
Answer: Sure you can, without restriction.
I think this should be reconsidered because of what I said above.

You're right, only one library generated from TS can be loaded at a time.
Moreover, modifying JS primitives is on one hand a hack, on the other hand the only way to make things fast, so it's a price that is paid deliberately.
The consequence is that Transcrypt couldn't cooperate with libs using the same kind of hack, which should be in the FAQ, I'll add it.
This problem is currently not pressing and can be solved by user defined aliases if it becomes a problem.
This would require a modification to the compiler but is doable in my view, it is not fundamentally different from other name clashes solved by aliases. Only now the 'clashee' comes from another lib, not from JS itself.
Using this trick for TS versus TS would be needlessly inefficient. I like the checks proposed by @pjbonestroo better.
@pjbonestroo @AXGKl
Then about separately loading libs.
The desire has been expressed by several people to have hot module loading.
It was postponed for a significant period since it's really a major reorganisation, influencing e.g. sourcemaps in a very hairy way. Honestly this is so complex that I want to be very careful not triggering the "second system" effect. Still Pareto's rule is pervasive design paradigm in the whole of TS.
But preventing double 'enrichment' of primitives like @pjbonestroo proposes would take most pain out of the problem. It would allow coexistence of several libs generated from TS. Indeed the core would be doubly included.
In practice this wouldn't be a big problem.
TS is primarily meant for complex single page apps.
To sprinkle some code, JS is OK.
To sprinkle much code, the overhead of double inclusion would be relatively small.
By the way there is a trick that I used for the turtle graphics demo, I've mentioned it before I think. Indeed user code is load dynamically there. But it is too hackish to become an official part of TS.
For now the checks proposed by @pjbonestroo seem the most sensible thing to do.
In this way JS libs with TS source will be fully self contained, avoiding versioning problems.
Since TS is still fully evolving, such versioning problems would be severe in practice.
If we ever embark on independent module loading, some standards will have to be established quite firmly. Altering certain things will have consequences comparable to the JS version circus, including things like polyfills.
For now I think we have to keep it simple.
So I will make a stab at the checks.
KR
Jacques

@JdeH

To have two TS libs loaded on the same page would require them to be compiled with the same or at least compatible TS versions.

I think the need for compatibility is not really painful, since it is only needed for the functions for which the checks are performed, i.e. the String.prototype.format and the Function.prototype.__setdoc__

Still I'd like to stress that TS is primarily meant for statefull single page apps.

I agree that TS is primarily meant for statefull single page apps. But I really like the possibility to have 2 separated libraries, both generated with TS on one single page. I have a use case which I unfortunately cannot share. It is a web application which holds one small library which I use on many pages, and one large library (with a lot of calculations, etc) which I use on only one page.
Kind regards,
Pieter Jan

Hi,
Fixed and committed.
Test is in transcrypt/development/manual_tests/incidental_tests/conditional_property_def
Let me know it it works for you.
// Conditional property installer function, prevents redefinition of properties if multiple Transcrypt apps are on one page
var __setProperty__ = function (anObject, name, descriptor) {
    if (!anObject.hasOwnProperty (name)) {
        Object.defineProperty (anObject, name, descriptor);
    }
}
__all__.__setProperty__ = __setProperty__

KR
J

@pjbonestroo
The versioning problem is a bit more severe, though not more severe than e.g. with JQuery versions.
It doesn't only occur at call locations of setProperty. A fragment like
String.prototype.capitalize = function () {
    return this.charAt (0).toUpperCase () + this.slice (1);
};

also requires compatibility.
But since its semantics are defined by CPython, I think it's a manageable problem.

@JdeH
You're right, I forgot about that.
Thanks for your help on this issue, and the great work for Transcrypt.

@pjbonestroo
And thanks for contributing this fix! The only thing I did is put it in a function.


Add superscript

Make possibility of adding superscript content.

Expected Behavior
There is a method on the TextBox, Paragraph or Portion level that allows adding superscripts. Adding superscript can be looked like this:
var pres = SCPresentation.Open("add-superscript.pptx", true);
var autoShape = pres.Slides[0].Shapes.GetByName<IAutoShape>("AutoShape 1");
var paragraph = autoShape.TextBox.Paragraphs[0];

var newPortion = new SCPortion();
newPortion.Font.OffsetEffect = 30;
newPortion.Text = "®";
paragraph.Portions.Add(newPortion);

Check List

[x] implement feature;
[x] add unit-test.

Pull Requests

https://github.com/ShapeCrawler/ShapeCrawler/pull/347

Testing

✔ IFont.OffsetEffect.get()
❌ IFont.OffsetEffect.set()

@amescodes, could you please check the following test case? Looks like setter of OffsetEffect breaks presentation:
Branch: master (code was refactored)
Presentation: autoshape-case010.pptx
Steps:

Run:

using var pres = SCPresentation.Open("autoshape-case010.pptx");
var font = pres.Slides[2].Shapes.GetById<IAutoShape>(2).TextFrame!.Paragraphs[0].Portions[0].Font;

font.OffsetEffect = 12;

pres.Save();

Open modified autoshape-case010.pptx

Actual behavior: PowerPoint suggests "Repair":

Expected behavior: PowerPoint should not suggests "Repair".


The "total in x ms" reports the Hugo build time only

It should include everything, i.e. also the static file sync. We are so fast now that we might as well be totally open about it.

This is now fixed.


Uncaught ReferenceError: exports is not defined in embed.js

Both embed.dev.js and embed.min.js attempt to bind code to the exports object, which does not exist in a browser context. Is there a compile step which I missed?
Here's the stack trace for embed.min.js:
Uncaught ReferenceError: exports is not defined
    at comments.jeremydormitzer.com/js/embed.min.js:19
    at comments.jeremydormitzer.com/js/embed.min.js:19

And the same for embed.dev.js:
Uncaught ReferenceError: exports is not defined
    at embed.dev.js:1306
    at embed.dev.js:2205

What version? From PyPi?

This was using the Debian package.
I think I needed to use the isso server's hosted requirejs script. What I ended up doing was installing isso from source, and then using:
<script src="//comments.jeremydormitzer.com/js/config.js"></script>
<script data-main="//comments.jeremydormitzer.com/js/embed" src="//comments.jeremydormitzer.com/js/components/requirejs/require.js"></script>

I have a feeling I could have done something similar to make it work with the Debian package?
Anyway, it seems to be working now. Thanks for the quick response!

@jdormit how were you able to solve this issue. I am currently also facing the same problem. I installed it using pip.

I had the same issue with the debian package on Ubuntu 16.04. Using the embed.min.js file from https://posativ.org/isso/api/js/embed.min.js and putting that into my web directory solved the issue for now.

I have the same issue, also with the ubuntu 16.04 package. It looks like this is a known bug with the debian/ubuntu package version 0.9.9, see here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783490. Newer versions are supposedly "fixed", but the changelog just says "use upstream javascript for now", and the file is missing from newer package versions. Why they were rolling their own JS I don't know.
I don't have a better workaround than manually installing the embed.min.js from master as commenters have mentioned above; but this was the first hit when I was trying to fix the problem myself, so I figured I'd save others the trouble of digging for the cause.

We intentionally rebuild everything that is not the preferred form of modification (e.g. minified files), so that we know it is possible to make modifications and built the resulting artefacts.

Well... it ended up in Ubuntu 16.04... why was the newer version never pushed to Ubuntu 16.04?  Hence there is still a 'new' bug open https://bugs.launchpad.net/ubuntu/+source/isso/+bug/1707347 since 2017.

There is no maintainer for isso in Ubuntu. Ubuntu automatically imports snapshots of packages (including isso) from Debian unstable.

Ah, ok, thanks for replying.  Hmm, they should probably do that more often then to update.  Is it worth mentioning in the documentation more explicitly than the Debian bug reference?  Ubuntu 16.04 isn't end of life until April 2021.  I noticed the Debian bug mention, but assumed Ubuntu would have a newer packaged, wasn't until I fought with it a while that I thought to check that.

Not necessarily opposed to adding a note about this in the docs if you wanted to send in a patch.
In general, I don't know that we want to track the state of isso as packaged in distributions. The main place where this should be tracked/fixed is in Ubuntu itself.


[New chain]: OP Celestia Raspberry

Summary

https://github.com/safe-global/safe-deployments/pull/511
https://github.com/ethereum-lists/chains/blob/master/_data/chains/eip155-123420111.json

Chain ID
123420111
Chain detail URL
https://chainlist.org/chain/123420111
RPC URL
https://rpc.opcelestia-raspberry.gelato.digital
Blockscout Client URL
No response
Etherscan Client URL
No response
Etherscan Client API URL
No response
Version
1.4.1
Address (Master copy)
0x41675C099F32341bf84BFc5382aF534df5C7461a
Deployment Tx hash (Master copy)
0x23d8768e9efab8a977b0253fef56cfe218be40d3b6cf1c1f09d93bd4cac78eea
Block explorer URL (Master copy)
No response
Address (Master copy L2)
0x29fcB43b46531BcA003ddC8FCB67FFE91900C762
Deployment Tx hash (Master copy L2)
0x7fab98bdb6a160bc78fba7b18f311ca897d45992f3138259cd5e2f76766dc964
Block explorer URL (Master copy L2)
No response
Address (Proxy factory)
0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67
Deployment Tx hash (Proxy factory)
0xaea51f87ea384afd645e80b86bd54677ec8a56fa4c40ec134234e34959f334fb
Block explorer URL (Proxy factory)
No response

/execute


CodePen Home React-Quill Custom HTML Toolbar BUG

the official example maybe  has some error
url:  https://codepen.io/wjryours/pen/eYpNygp?editors=0010
I want to move this CustomToolbar code  to render function
because i want bind some events on my costom
code like this
dosomething = ()=>{

}
render() {
    const CustomButton = () => ;
    const CustomToolbar = () => (

            <select className="ql-header" defaultValue={""} onChange={e => e.persist()}>
                <option value="1" />
                <option value="2" />
                <option selected />
            </select>
            <button className="ql-bold" />
            <button className="ql-italic" />
            <select className="ql-color">
                <option value="red" />
                <option value="green" />
                <option value="blue" />
                <option value="orange" />
                <option value="violet" />
                <option value="#d0d1d2" />
                <option selected />
            </select>
            <button className="ql-insertStar">
                <CustomButton />
            </button>

    );
    return (

            <CustomToolbar />
            <ReactQuill
                onChange={this.handleChange}
                placeholder={this.props.placeholder}
                modules={Editor.modules}
                formats={Editor.formats}
                theme={"snow"} // pass false to use minimal theme
            />

    );
}

but if i called in this way
this will has error in view when i input something in editor

so if i want to bind Components events ,how to do?

same problem happening for me, were you able to resolve this? @wjryours @zenoamaro

seems like this happens when we use version 2.0.0-beta.4". Not able to reproduce on 1.2.3


Do not bind ports with docker-compose in CI

Fixes

Fixes #1035 by @sarayourfriend
Follow-up to #990
This is not a viable replacement for #990 as it requires further work to make load_sample_data.sh work in CI without bound ports.
cc @dhruvkb
Description

As described in the issue, the idea here is that we shouldn't need to bind any ports in CI as no part of our CI environment makes requests from the host into the running containers.
Unfortunately this PR ended up being a bit bigger than I anticipated, primarily due to the fact that I hadn't considered how much we actually rely on host-bound networking. In particular, the load_sample_data.sh script needed to change to be able to run inside the context of the web container. It needs to run there so that it actually has access to the docker network. Once inside, it no longer has docker-compose, so everything relying on docker-compose needed to be changed. Additionally, because just is not available in the web container (and I couldn't justify installing it), everything that previously called out to a just script needed to be inlined into the script. I put these in bash functions when it made sense to do so. I also made changes to the way we waited for task completion by leveraging the ingestion server's task status endpoint rather than trying to infer the state based on the ES index status (which I found was flaky). The _cat endpoints are useful, but they're explicitly not for machine reading, according to the ES documentation, so I also removed the usages of those endpoints as much as possible.
It ended up being more changes than I wanted, and I could definitely pair down a number of the changes by moving things like the wait-for-index just script directly into the load_sample_data.sh. If folks feel that would be easier to review and would increase confidence in the changes, just let me know, I'm more than happy to do it.
Testing Instructions

just down -v (to clean your local environment) then just up and just init and make queries to local DB to ensure it all works. This will confirm that the local approach (with host-bound networking) still works. just recreate should also still work.
Next, to try the CI version. In addition to it passing in the CI on this PR, you should also be able to do the following locally (after just down -v):
$ CI=1 just up
$ CI=1 just api/init
$ CI=1 just curl '-H "Accept: application/json" http://web:8000/v1/images/'

The final command should yield a JSON blob with the same results that would have shown at localhost in the first pass.
Checklist

[x] My pull request has a descriptive title (not a vague title like
Update index.md).
[x] My pull request targets the default branch of the repository (main) or
a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible
errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

I'm not sure what is going on with the API tests job's init failure. When I run CI=1 just api/test locally (after api/init, also with CI=1) it works fine. I'll keep digging tomorrow if no one else comes up with a solution in the meantime.

 Even if I am able to figure out what is going on with the API tests (which I haven't looked at today at all), the ingestion server tests will need a lot of changes as they spin up their own docker-compose stack and rely heavily on host-bound networking. It's definitely possible to do, but not in a single PR.
I'm going to set this PR back to draft and decide how best to split it up and then we can decide whether it's worth tackling or if we're okay with just retrying things long-term as in #990. I still think it's worth doing this at some point, but having now spent two and a half days working on it, I don't think it is the correct use of our time right now. I still want to write up the rough outline of how to tackle this in the future as I've discovered a lot of hidden-ish details that cause hiccups here and there with the process.


88 Datatypes WIP

#88

TBeam and PapaDuck work. The rest still needs to be updated. GPS is the only one working right now.


Set up SSH tunnel from Groundstation to Satellite

For securing traffic containing GPU usage data/control commands.
Overview is as follows. We don't want to need external certificates/HTTPS in order to secure traffic (so the whole service can be run on a firewalled network). Instead, we'll piggy-back on the existing ssh infra in order to communicate, using SSH tunneling. We'll make a tunnel to/from the groundstation and satellite (so all communications on localhost to a particular port connect to a particular port on the other side), and then use http over that tunnel*.
*HTTP over ssh from satellite to groundstation is fine, the data is in plaintext on the satellite machine itself, but anyone with access to the machine can already get access to the same data as by running the nvidia command anyway. However going back the other way, aren't we going to have to have a server on localhost that any user on the machine can access to control the machine - do we instead want to just use a bash script over SSH that rely just on the fact the user the satellite binary is run under has reboot privileges??
https://pkg.go.dev/golang.org/x/crypto/ssh
https://eli.thegreenplace.net/2022/ssh-port-forwarding-with-go/

[ ] Create function for making/closing a ssh tunnel with Go (abstract to a module in internal/)
[ ] Rewrite data send functions to make requests through this ssh tunnel
[ ] Add HTTP endpoints to the satellite for receiving control commands (maybe? see *)

This issue is now done to the extent needed for the project.

Serving over HTTPS was easier than it seemed, we were able to use Caddy/Let's Encrypt with DNS challenges to get certificates without exposing the service to the wider net (#99).
SSH is used to onboard/reboot new machines, copying across the satellite binary then running it (#101), as well as when removing it from the database (#262)
We don't send any other control commands to the satellites, reboot is done through giving a command for the user to run (#188)