Support saving state for nested NavHostController

Describe the bug
iOS doesn't save state when moving between bottom bar items
Affected platforms

iOS

Versions

Kotlin version*: 1.9.23
Compose Multiplatform version*: 1.6.10-dev1593

Video
https://github.com/JetBrains/compose-multiplatform/assets/9390550/08ae3ca8-f302-4fe8-8029-bce68ea07696
Some code for reference
Scaffold(
    bottomBar = {
        BottomNavigation {
            BottomNavigationItem(
                icon = {
                    Icon(
                        Icons.Default.Home,
                        contentDescription = BottomNavigationItems.HOME.name
                    )
                },
                label = { Text(BottomNavigationItems.HOME.name) },
                selected = BottomNavigationItems.HOME == selectedScreen,
                onClick = {
                    selectedScreen = BottomNavigationItems.HOME
                    navController.navigate(
                        route = BottomNavigationItems.HOME.name
                    ) {
                        navController.graph.startDestinationRoute?.let {
                            popUpTo(it) {
                                saveState = true
                            }
                            launchSingleTop = true
                            restoreState = true
                        }
                    }
                },
                modifier = Modifier.padding(0.dp)
            )
            BottomNavigationItem(
                icon = {
                    Icon(
                        Icons.Default.AccountCircle,
                        contentDescription = BottomNavigationItems.PROFILE.name
                    )
                },
                label = { Text(BottomNavigationItems.PROFILE.name) },
                selected = BottomNavigationItems.PROFILE == selectedScreen,
                onClick = {
                    selectedScreen = BottomNavigationItems.PROFILE
                    navController.navigate(
                        route = BottomNavigationItems.PROFILE.name
                    ) {
                        navController.graph.startDestinationRoute?.let {
                            popUpTo(it) {
                                saveState = true
                            }
                            launchSingleTop = true
                            restoreState = true
                        }
                    }
                },
                modifier = Modifier.padding(0.dp)
            )
        }
    },
    content = {
        NavHost(
            navController = navController,
            startDestination = BottomNavigationItems.HOME.name
        ) {
            composable(BottomNavigationItems.HOME.name) {
                Column(
                    modifier = Modifier.fillMaxSize(),
                    verticalArrangement = Arrangement.Center,
                    horizontalAlignment = Alignment.CenterHorizontally
                ) {
                    ClickNavigation()
                }
            }
            composable(BottomNavigationItems.PROFILE.name) {
                Column(
                    modifier = Modifier.fillMaxSize(),
                    verticalArrangement = Arrangement.Center,
                    horizontalAlignment = Alignment.CenterHorizontally
                ) {
                    Text("PROFILE")
                }
            }
        }
    }
)

Additional context
I am quite new with Multiplatform, but I am trying to do everything in the common code without ever touching the platform based implementations

It should work just fine:
https://github.com/JetBrains/compose-multiplatform/assets/1836384/a279376c-2edf-4ad4-9487-566d2fc1fc88
Tested with: Compose 1.6.10-beta03, Navigation 2.7.0-alpha03
I don't see a version of the navigation library in the description, so the recommendation is quite common: use the latest version instead of early dev.
There were a few related changes, but I'm not entirely sure which one exactly fixed this case.
Closing as it works on the latest version

I am using
implementation("org.jetbrains.androidx.navigation:navigation-compose:2.8.0-alpha02") and compose = "1.6.10-beta03"
But I get the same result. @MatkovIvan  Can you share your codebase for this working example so I can take a look?

I've noticed another issue which is probably related. Opening a screen of the first tab and then switching tabs results to screen state and the whole screen stays the same while iOS is being set to the default screen and state:
https://github.com/JetBrains/compose-multiplatform/assets/9390550/7f7a07e7-7549-4d68-bdc5-65d033e0b88b
commonMain.dependencies {
            implementation(compose.runtime)
            implementation(compose.foundation)
            implementation(compose.material)
            implementation(compose.ui)
            implementation(compose.components.resources)
            implementation(compose.components.uiToolingPreview)

            //Moko mvvm
            api("dev.icerock.moko:mvvm-core:0.16.1")
            api("dev.icerock.moko:mvvm-compose:0.16.1")

            //Kamel
            implementation("media.kamel:kamel-image:0.9.4")

            //Ktor
            implementation("io.ktor:ktor-client-core:2.3.10")
            implementation("io.ktor:ktor-client-content-negotiation:2.3.10")
            implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.10")

            //Kotlinx serialization
            implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")

            //Koin
            implementation("io.insert-koin:koin-core:3.5.6")
            implementation("io.insert-koin:koin-compose:1.1.5")

            //Navigation
            implementation("org.jetbrains.androidx.navigation:navigation-compose:2.8.0-alpha02")
        }

[versions]
agp = "8.2.0"
android-compileSdk = "34"
android-minSdk = "24"
android-targetSdk = "34"
androidx-activityCompose = "1.9.0"
androidx-appcompat = "1.6.1"
androidx-constraintlayout = "2.1.4"
androidx-core-ktx = "1.13.0"
androidx-espresso-core = "3.5.1"
androidx-material = "1.11.0"
androidx-test-junit = "1.1.5"
compose = "1.6.10-beta03"
compose-plugin = "1.6.2"
junit = "4.13.2"
kotlin = "1.9.23"
kotlinxDatetime = "0.5.0"

@Composable
fun App() {
    TobTheme {
        BottomNavigation()
    }
}

private enum class BottomNavigationItems {
    HOME,
    PROFILE,
}

@Composable
fun BottomNavigation() {
    val navController = rememberNavController()
    var selectedScreen by remember { mutableStateOf(BottomNavigationItems.HOME) }

    Scaffold(
        bottomBar = {
            BottomNavigation {
                BottomNavigationItem(
                    icon = {
                        Icon(
                            Icons.Default.Home,
                            contentDescription = BottomNavigationItems.HOME.name
                        )
                    },
                    label = { Text(BottomNavigationItems.HOME.name) },
                    selected = BottomNavigationItems.HOME == selectedScreen,
                    onClick = {
                        selectedScreen = BottomNavigationItems.HOME
                        navController.navigate(
                            route = BottomNavigationItems.HOME.name
                        ) {
                            navController.graph.startDestinationRoute?.let {
                                popUpTo(it) {
                                    saveState = true
                                }
                                launchSingleTop = true
                                restoreState = true
                            }
                        }
                    },
                    modifier = Modifier.padding(0.dp)
                )
                BottomNavigationItem(
                    icon = {
                        Icon(
                            Icons.Default.AccountCircle,
                            contentDescription = BottomNavigationItems.PROFILE.name
                        )
                    },
                    label = { Text(BottomNavigationItems.PROFILE.name) },
                    selected = BottomNavigationItems.PROFILE == selectedScreen,
                    onClick = {
                        selectedScreen = BottomNavigationItems.PROFILE
                        navController.navigate(
                            route = BottomNavigationItems.PROFILE.name
                        ) {
                            navController.graph.startDestinationRoute?.let {
                                popUpTo(it) {
                                    saveState = true
                                }
                                launchSingleTop = true
                                restoreState = true
                            }
                        }
                    },
                    modifier = Modifier.padding(0.dp)
                )
            }
        },
        content = {
            NavHost(
                navController = navController,
                startDestination = BottomNavigationItems.HOME.name
            ) {
                composable(BottomNavigationItems.HOME.name) {
                    Column(
                        modifier = Modifier.fillMaxSize(),
                        verticalArrangement = Arrangement.Center,
                        horizontalAlignment = Alignment.CenterHorizontally
                    ) {
                        ClickNavigation()
                    }
                }
                composable(BottomNavigationItems.PROFILE.name) {
                    Column(
                        modifier = Modifier.fillMaxSize(),
                        verticalArrangement = Arrangement.Center,
                        horizontalAlignment = Alignment.CenterHorizontally
                    ) {
                        Text("PROFILE")
                    }
                }
            }
        }
    )
}

@Composable
fun ClickNavigation() {
    val navController = rememberNavController()
    NavHost(
        navController = navController,
        startDestination = MainNavHostDestinations.Routes.HOME
    ) {
        composable(
            route = MainNavHostDestinations.Routes.HOME
        ) {
            HomeScreen(
                onArticleClicked = {
                    navController.openArticle(articleTitle = it)
                }
            )
        }
        composable(
            route = MainNavHostDestinations.Routes.ARTICLE,
            arguments = listOf(
                navArgument(name = MainNavHostDestinations.ArticleArgs.TITLE) {
                    type = NavType.StringType
                }
            )
        ) {
            DetailedArticle(
                title = it.arguments?.getString(MainNavHostDestinations.ArticleArgs.TITLE),
                onNavigateBack = {
                    navController.navigateBack()
                }
            )
        }
    }
}

@OptIn(ExperimentalResourceApi::class, ExperimentalMaterialApi::class)
@Composable
fun HomeScreen(
    viewModel: HomeViewModel = koinInject(),
    onArticleClicked: (String) -> Unit,
) {
    val uiState by viewModel.uiState.collectAsState()

    LazyColumn(content = {
        items(uiState.articles) {
            Card(backgroundColor = Color.LightGray,
                modifier = Modifier.padding(all = 4.dp).fillMaxWidth().height(300.dp),
                onClick = {
                    onArticleClicked(it.title)
                }) {
                Column(
                    horizontalAlignment = Alignment.CenterHorizontally
                ) {
                    Text(it.title)
                    if (it.urlToImage.isNullOrEmpty()) {
                        Image(
                            painter = painterResource(Res.drawable.compose_multiplatform),
                            null,
                        )
                    } else {
                        KamelImage(resource = asyncPainterResource(it.urlToImage),
                            contentDescription = "",
                            contentScale = ContentScale.FillWidth,
                            onLoading = { CircularProgressIndicator(it) },
                            onFailure = {
                                Column {
                                    Text(
                                        text = "Failed to load",
                                        fontWeight = FontWeight.Bold,
                                    )
                                }
                            })
                    }
                }
            }
        }
    })
}

2.8.0-alpha02

It was explicitly reverted to 2.7 branch to avoid compatibility issues - we're using the original Google's binary on Android and 2.8 introduces dependency on Compose 1.7. It causes switching to Compose 1.7 alpha on Android and mismatching with common code. Please use 2.7 until Compose Multiplatform 1.7. It's not "older"
My testing code is based on yours:
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.text.BasicText
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountCircle
import androidx.compose.material.icons.filled.Home
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController

private enum class BottomNavigationItems {
    HOME,
    PROFILE,
}

@Composable
fun App() {
    var selectedScreen by mutableStateOf(BottomNavigationItems.HOME)
    val navController = rememberNavController()
    Scaffold(
        bottomBar = {
            BottomNavigation {
                BottomNavigationItem(
                    icon = {
                        Icon(
                            Icons.Default.Home,
                            contentDescription = BottomNavigationItems.HOME.name
                        )
                    },
                    label = { Text(BottomNavigationItems.HOME.name) },
                    selected = BottomNavigationItems.HOME == selectedScreen,
                    onClick = {
                        selectedScreen = BottomNavigationItems.HOME
                        navController.navigate(
                            route = BottomNavigationItems.HOME.name
                        ) {
                            navController.graph.startDestinationRoute?.let {
                                popUpTo(it) {
                                    saveState = true
                                }
                                launchSingleTop = true
                                restoreState = true
                            }
                        }
                    },
                    modifier = Modifier.padding(0.dp)
                )
                BottomNavigationItem(
                    icon = {
                        Icon(
                            Icons.Default.AccountCircle,
                            contentDescription = BottomNavigationItems.PROFILE.name
                        )
                    },
                    label = { Text(BottomNavigationItems.PROFILE.name) },
                    selected = BottomNavigationItems.PROFILE == selectedScreen,
                    onClick = {
                        selectedScreen = BottomNavigationItems.PROFILE
                        navController.navigate(
                            route = BottomNavigationItems.PROFILE.name
                        ) {
                            navController.graph.startDestinationRoute?.let {
                                popUpTo(it) {
                                    saveState = true
                                }
                                launchSingleTop = true
                                restoreState = true
                            }
                        }
                    },
                    modifier = Modifier.padding(0.dp)
                )
            }
        },
        content = {
            NavHost(
                navController = navController,
                startDestination = BottomNavigationItems.HOME.name
            ) {
                composable(BottomNavigationItems.HOME.name) {
                    Box(
                        modifier = Modifier.fillMaxSize(),
                        contentAlignment = Alignment.Center,
                    ) {
                        ClickNavigation()
                    }
                }
                composable(BottomNavigationItems.PROFILE.name) {
                    Box(
                        modifier = Modifier.fillMaxSize(),
                        contentAlignment = Alignment.Center,
                    ) {
                        Text("PROFILE")
                    }
                }
            }
        }
    )
}

@Composable
private fun ClickNavigation() {
        val lazyListState = rememberLazyListState()
        LazyColumn(state = lazyListState) {
            items(99) {
                val color = when (it % 7) {
                    0 -> Color.Red
                    1 -> Color.Blue
                    2 -> Color.Green
                    3 -> Color.Yellow
                    4 -> Color.Magenta
                    5 -> Color.Gray
                    6 -> Color.Cyan
                    else -> Color.Transparent
                }
                Row(
                    modifier = Modifier
                        .fillMaxWidth()
                        .padding(12.dp),
                    verticalAlignment = Alignment.CenterVertically,
                ) {
                    Box(modifier = Modifier.size(40.dp).background(color))
                    Spacer(modifier = Modifier.width(12.dp))
                    BasicText("Item number $it")
                }
            }
        }
}

There was a problem with my nested NavGraphs. Joining both into one helped. Thanks for your help!

I am receiving errors when running android on Navigation 2.7.0-alpha03 :
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':composeApp:debugRuntimeClasspath'.
This issue still persists though:
https://github.com/JetBrains/compose-multiplatform/assets/9390550/979f386c-e6ad-4f23-a094-c3599bcc3600

Looking at nested NavHost case (btw nested graphs don't require multiple NavHost/NavHostControllers)

Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':composeApp:debugRuntimeClasspath'.

Cannot say anything without reproduction, but it doesn't look related to navigation

I have added you to the repo if it helps with reproducing - https://github.com/slikasgiedrius/Tob

Investigation regarding state: save/restoring state works, but keys that are based on composition-key-hash are different. For now, I'm not sure that there is a guarantee that it will be the same even on Android. Trying to find why they are changed

Ok, It's about restoring the state of nested NavHostControllers - it's the limitation for these first alpha releases. Sorry, I didn't match the case with that unimplemented TODO.
It's under TODO for future versions because it requires serialization of structures based on Android's Parcelable that isn't ported to multiplatform yet.
Keeping this issue open to track this
Workaround 1: Use single NavHostController and define nested graphs via NavGraphBuilder.navigation() function. See documentation
Workaround 2: Move second rememberNavController() call out of wiped composition.

Regarding versions: I've prepared the fix https://github.com/slikasgiedrius/Tob/pull/1
It was a misusage of the version constants. The issue for renaming these constants in the template is tracked here: https://youtrack.jetbrains.com/issue/KT-66613

I see some iOS build issues after the PR of the changes

It looks like https://youtrack.jetbrains.com/issue/KT-61205 that should be already fixed. Looking why it's still here

Yeah I have just discovered that it's related to K2 (Which I have enabled today) :D

Everything works perfectly now, THANK YOU SO MUCH for your massive help. I'm loving it! Closing this issue

org.jetbrains.compose.resources.MissingResourceException: Missing resource with path

It's tracked in #4720 What's a chain of unrelated bugs! 🫠

Hey! Sorry for commenting on a closed thread, I have the same situation with slikasgiedrius, from the second part (the one where you renamed the thread to "support saving state for nested NavController")
On Android it works perfectly, but on IOS it does not. I tried using the workarounds you provided, but I still can't get it to work.

here is my code:
navigation.kt
object BaseRoutes {
    const val home = "home"
    const val callCenter = "callcenter"
    const val account = "account"
}

object HomeRoutes {
    const val homeRoot = "${BaseRoutes.home}/root"
    const val home_2 = "${BaseRoutes.home}/home_2"
    const val home_3 = "${BaseRoutes.home}/home_3"
}

object CallCenterRoutes {
    const val callCenterRoot = "${BaseRoutes.callCenter}/root"
    const val callcenter_02 = "${BaseRoutes.callCenter}/callcenter_2"
    const val callcenter_03 = "${BaseRoutes.callCenter}/callcenter_3"
}

object AccountRoutes {
    const val accountRoot = "${BaseRoutes.account}/root"
}

fun NavGraphBuilder.buildNavGraph(
    navController: NavController,
    accountViewModel: AccountScreenViewModel
) {
    home(navController = navController)
    account(accountViewModel)
    callCenter(navController = navController)
}

fun NavGraphBuilder.home(navController: NavController) {
    navigation(
        route = BaseRoutes.home,
        startDestination = HomeRoutes.homeRoot
    ) {
        composable(route = HomeRoutes.homeRoot) {
            ShowHomeUI(navController = navController)
        }
        composable(route = HomeRoutes.home_2) {
            GenericScreen(route = HomeRoutes.home_3, navController = navController, text = "home 2")
        }
        composable(route = HomeRoutes.home_3) {
            GenericScreen(route = route ?: "", navController = navController, text = "home 3")
        }
    }
}

// Tab 2
fun NavGraphBuilder.callCenter(navController: NavController) {
    navigation(
        route = BaseRoutes.callCenter,
        startDestination = CallCenterRoutes.callCenterRoot
    ) {
        composable(route = CallCenterRoutes.callCenterRoot) {
            ShowCallCenterUI(navController = navController)
        }
        composable(route = CallCenterRoutes.callcenter_02) {
            GenericScreen(
                route = CallCenterRoutes.callcenter_03,
                navController = navController,
                text = "Callcenter 2"
            )
        }
        composable(route = CallCenterRoutes.callcenter_03) {
            GenericScreen(route = route ?: "", navController = navController, text = "Callcenter 3")
        }
    }
}

// Tab 3
fun NavGraphBuilder.account(accountViewModel: AccountScreenViewModel) {
    navigation(
        route = BaseRoutes.account,
        startDestination = AccountRoutes.accountRoot
    ) {
        composable(route = AccountRoutes.accountRoot) {
            AccountScreen(
                viewModel = accountViewModel,
                modifier = Modifier.Companion
            )
        }
    }
}

App.kt (only the relevant part)
           Scaffold(                 bottomBar = {                     BottomNavigationBar(rootNavController)                 },             ) {                 NavHost(                     modifier = Modifier.padding(it),                     navController = rootNavController,                     startDestination = BaseRoutes.home                 ) {                     buildNavGraph(navController = rootNavController, viewModelAccountScreen)                 }             }

@Stancescu-Andrei It's not super clear from your message what exactly doesn't work for you, I hope I've got it right.

On Android it works perfectly, but on IOS it does not

Saving state for nested NavHostController is still not supported, I'll reopen this issue to track it. However nested graphs that I suggested as workaround works the same as on Android as far as I see.
Regarding your sample with switching tabs. The code should be adopted for the change from nested host to nested graphs a bit.
This should work in your case:
val currentGraphRoute = navBackStackEntry?.destination?.parent?.route
navController.navigate(screen.route) {
    popUpTo(currentGraphRoute!!) {
        inclusive = true
        saveState = true
    }
    launchSingleTop = true
    restoreState = true
}

Thanks! Indeed, this is what I was missing, now everything works great, thanks again!

@Too-Many-Bytes in a TODO list, but no ETA because there is an ongoing discussion with Google that can affect the it. Also, I want to emphasize that I'm not aware of scenarios where the nested graphs approach doesn't work (see https://github.com/JetBrains/compose-multiplatform/issues/4735#issuecomment-2090235055), so it shouldn't be a blocker for anyone.

@MatkovIvan I've studied the documentation, but I'm not sure if this approach is good in my case. If possible, please tell me how you would solve the problem with a nested graph.
My case:
I have two top-level screens: Registration and Main, so there is one root fullscreen NavHost (1) which holds them. Also, inside MainScreen there is a bottom navigation bar and the second NavHost (2) which is not fullscreen (because the navigation bar with tabs takes some place). Between tabs in MainScreen saving state is working fine. But the problem occurs in such scenario:
One of the tabs is the messenger with chats, so it is in MainScreen NavHost (2). However, a particular chat i want to open in fullscreen without bottom navigation bar. So I need to navigate to the particular chat screen within the root level NavHost (1). As a result, MainScreen goes into the backstack when i navigate to the particular chat and after returning to the messenger in MainScreen I get no restored state in MainScreen NavHost (2).
If you can give me advice on how to solve the problem effectively, I would appreciate it

Thanks for explaining the use case, indeed for non-fullscreen sub navigation multiple NavHosts is the best fit.
I beleive that second mentioned workaround is easy to implement:

Workaround 2: Move second rememberNavController() call out of wiped composition.

It will work because the state of controller matters here, not NavHost itself.
PS I'll try to resolve this without changes in the dependencies (that currently blocked), but still no promises regarding ETA.

Workaround helped without serious efforts. Thanks a lot!

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

Hi everyone. Someone can help me in this problem?
iOS save and restore state not working, android working fine, I tested all versions of compose-plugin and compose-multiplatform navigation. Please help me. Thanks
https://youtrack.jetbrains.com/issue/CMP-6691/Compose-navigation-restore-state-not-working

@shageldi-dev your issue is marked as duplicate, please follow the updates in the original one. Workarounds can be found in my comments above.


fix(curriculum): add regex to chai assertions for double and single quotes

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] All the files I changed are in the same world language, for example: only English changes, or only Chinese changes, etc.

Closes #XXXXX

Following on from this thread on the forum, it has been determined that the tests failed due to the assertions testing only for a response with single quotes: https://www.freecodecamp.org/forum/t/quality-assurance-and-testing-with-chai-run-functional-tests-on-an-api-response-using-chai-http-iii-put-method/381400/12
I am not sure if I should remove the check for quotes completely with something like this:
/Colombo/

Could possibly close:
Closes #17744

Solves part of #38837

Blocked because of the pinned code freeze issue - The PR can still be fixed up and reviewed, just not merged at the moment.

Limitations removed on Coding Interview Prep Challenges.


x86-16 real mode memory map and segmentation: incorrect segment start

The segment start cannot be set correcly.
To Reproduce

Load a binary file (with no analysis) with language 16 bit real mode.
Set Image Base to 1000:0000
Go to the memory map, split the segment a few times by using 102b:0000, 102e:0000, 1031:0000, etc. (explicit zeros in the offset!)
See that the starting offset is not correct, but recalculated so that the offset is non-zero.

For me, the problem happens with any sort of file, pdfs, jpgs, it seems to be an inherent problem in Ghidra, not connected to the actual file.
Expected behavior
Use the exact segment:offset that I specify.
Screenshots

Environment (please complete the following information):

OS: Arch Linux 64 bit
Java Version: 16.0.1
Ghidra Version: 9.2.4
Ghidra Origin: Arch Linux Package

** Example
The highlighted segment (stub003) should have the start at 1031:0000, not at 102e:0030. That's what I entered. It also will not let me "move" the segment, because it's already at that address.

I've tried to do this without Set Image Base, and it seems to work a bit better, however something is definitely wonky, see the attached screenshot, some addresses in the middle of nowhere just switch segment, then switch back...

Not sure if this is feasible, but the way IDA shows abstracts segment names, not addresses would (at least as an option) be very nice to have.

To explain why this is very much relevant:
Even though the physical address is the same, code will not work if the segment register is analysed incorrectly. Near jumps will end up in an incorrect place, as will data references. So it is essential that the segment addresses are honoured as they are, and not converted in any way :-/


AVRO-3197 Fallback to the 'type' when the logical type does not support the type

Jira

[X] My PR addresses the following AVRO-3197

Tests

[X] The relevant unit tests were updated. Now parsing a schema with mismatching type and logicalType will just log a warning and use the type. Just as Avro Java does.

Commits

[X] My commits all reference Jira issues in their subject lines.

Documentation

[X] No API changes! Only implementation details have been changed to match the expected behavior, as in the spec and Avro Java

@iemejia Could you please review this PR ? Thank you!


docs(all): update README & jsdoc

Issue
#174, #188
Description
Check just before 3.0 release.

Coverage remained the same at 91.81% when pulling cc40b12a43112cb09a7f54a76e6bb899d022a3d5 on Doc#174 into 49f0426853b6b82fcde5ca692c9577d5d3d61c9a on 3.0.0-rc.


[BSO] Can't get clues from Skilling if you have clues banked

🐛 Bug Report
You cannot receive any clue scrolls from skilling in BSO if you have clues banked. I believe this is because skilling clues follow the same limit as the main bot, where it checks for any clues in the bank before rolling, to ensure you don't get duplicates. Because there isn't a clue cap in place for BSO, clues from skilling should be changed accordingly.
This bug is present in mining, and I'd assume for fishing & woodcutting too. Me and my friend have done hundreds of mining trips with no clues, confirming this bug exists.

Fixed in next update.


Groundwork for OTel instrumentation in operator

Description
Here the groundwork for instrumenting operator components using OpenTelemetry is laid.

handling of OTel config secret
OTLP exporters for traces and metrics
creation of TracerProvider and MetricsProvider
startup auto instrumentation for golang runtime and host (just as an example)
simple manually instrumented metric in pod mutator webhook
simple manual span creation in pod mutator webhook

How can this be tested?

deploy the operator
create the OTel configuration secret according to olm.md provided with this PR
in your tenant and use data explorer to search for the metrics
in your tenant search for the service "dynatrace-webhook" and have a look at distributed traces
Note: the last two steps might differ if your tenant is configure differently. In case of doubt consult the Dyntrace support pages.

Checklist

[ ] Unit tests have been updated/added
[x] PR is labeled accordingly with a single label
[x] I have read and understood the contribution guidelines

Codecov Report

Merging #2272 (1bc1566) into main (1ccce1d) will increase coverage by 0.01%.
The diff coverage is 72.13%.

:exclamation: Current head 1bc1566 differs from pull request most recent head 6ba18eb. Consider uploading reports for the commit 6ba18eb to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main    #2272      +/-   ##
==========================================
+ Coverage   64.67%   64.69%   +0.01%
==========================================
  Files         248      249       +1
  Lines       15605    15651      +46
==========================================
+ Hits        10093    10125      +32
- Misses       4773     4787      +14
  Partials      739      739

Files
Coverage Δ

cmd/csi/provisioner/builder.go
70.51% <100.00%> (+1.17%)
:arrow_up:

cmd/csi/server/builder.go
69.51% <100.00%> (+1.15%)
:arrow_up:

cmd/operator/builder.go
71.18% <100.00%> (+0.49%)
:arrow_up:

pkg/webhook/mutation/pod_mutator/otel.go
100.00% <100.00%> (ø)

pkg/webhook/mutation/pod_mutator/request.go
41.66% <100.00%> (+3.07%)
:arrow_up:

pkg/webhook/validation/dynakube/config.go
0.00% <ø> (ø)

cmd/manager/test.go
60.00% <0.00%> (-10.00%)
:arrow_down:

cmd/webhook/builder.go
27.17% <0.00%> (-0.92%)
:arrow_down:

pkg/webhook/mutation/pod_mutator/pod_mutator.go
71.42% <90.62%> (+5.39%)
:arrow_up:

pkg/webhook/mutation/pod_mutator/register.go
0.00% <0.00%> (ø)

practically LGTM, checked in my cluster.


Fix(1199). Allow -ve values for int, float & duration

What type of PR is this?

[x] bug
[ ] cleanup
[ ] documentation
[ ] feature

What this PR does / why we need it:
This PR allows negative values for int64, float64 and duration flags from alternate input sources
Which issue(s) this PR fixes:
Fixes #1199
Special notes for your reviewer:
Testing
Added 3 tests

TestIntApplyInputSourceMethodSetNegativeValue
TestDurationApplyInputSourceMethodSetNegativeValue
TestFloat64ApplyInputSourceMethodSetNegativeValue

Release Notes

bump
On Sat, Aug 28, 2021 at 12:07 PM stale[bot] @.***> wrote:

Closed #1262.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

Can this be updated and merge ?!
cc: @dearchap  @urfave

@albttx i'll take a look at it this week

Amazing, thanks :+1:


Data plane upgrade binary

Changes:

Refactors upgrade-job, moves most of the code from the bin directory to the outer upgrade library.
Adds the restart-io-engines binary.

The restart-io-engines should go through all io-engine Pods restarting them, and then circling back and restarting them again, all while adhering to the 'upgrade' way of things.

This seems like a huge change to be adding near release, I'd like to understand this a bit better before.

That makes sense. I think I too want this to sit for now.

IMHO using a flag to skip the validation will be musch simpler change to do , rather than refactoring

This is no longer needed. Closing this PR.

This is no longer needed. Closing this PR.

I think it's still useful to have this sort of thing @niladrih.
Example: someone manages their cluster with Argo. After an upgrade the pods still need restarting.
We'd need some sort of upgrade-less restart or even have the kubectl-mayastor plugin itself do it.

Alright, I'd have set this up again.. hmm.

I've filed this issue: https://github.com/openebs/mayastor/issues/1674


fix(TDI-43437): Support Snowflake SSO authenticate through SiteMinder

What is the current behavior? (You can also link to an open issue here)
https://jira.talendforge.org/browse/TDI-43437
What is the new behavior?
https://jira.talendforge.org/browse/TDI-43437
Please check if the PR fulfills these requirements

[x] The commit message follows Talend standard
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features) ?
[ ] The code coverage on new code >75%
[ ] The new code does not introduce new technical issues (sonar / eslint)

What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build / CI related changes
[ ] Other... Please describe:

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Pull request test result: failure :x:

jenkins build failed as other reason, and pass local test, so merge it


Add the possibility to specify where the config is

It would be nice if we can specify at which relative path the config file is present.
codegen generate --config="./config/codegen"  or something like this.

You should be able to do: codegen generate ./config/codegen


Load content of the sheet as JSON

Hi,
How could I load the content of a specific sheet as JSON data?
 const doc = new GoogleSpreadsheet(xxx);

    await doc.useServiceAccountAuth({
        client_email:,
        private_key:
    });

    await doc.loadInfo()
   // how to get the content

Many Thanks

What do you mean load as json? What would you expect the format to be?
If you want something simple, I suggest using the row-based methods to fetch an array of row objects that use the header row as object keys. Then you can serialize to json as you like.


pyproject location argument for rye run

This enables using rye run outside of its project home.
For example, run python from the environment in a project:
rye run --pyproject-from ./path/to/project python3
The pyproject location is a separate parameter from the current working directory, both of which can be interesting to control when running programs.

Submitted as a discussion basis: multiple (all?) commands could have a command line override for pyproject location, but this is the most obvious one. rye init is maybe the only command that already has something equivalent.

This kind of makes sense to me. I suppose a similar parameter in Rust's cargo is --manifest-path which however is a pretty terrible parameter. I'm not particularly convinced that --pyproject-from is a great name either but I can't come up with something better yet.

--pyproject-dir is maybe better. It's explicit. I agree that it's hard to find a perfect name.

What about --pyproject-root?

I guess it comes down to something like this:

-C and --directory: behave as if one chdir into the given working directory
--pyproject (or a variation thereof): point directly to a pyproject.toml file
--pyproject-dir point to a folder the pyproject.toml is contained in, but don't change the cwd otherwise

The implications of changing the working directory of the process go beyond the behavior of the pyproject toml file, particularly because of that would have an effect of spawning scripts via rye run.
I'm not sure what the right approach is here.

I agree that we should avoid the chdir discussion for now. But I wonder if it makes sense to change it to --pyproject and to make it point to a file instead. For instance #237 indicates that you might want to not use a regular pyproject.toml file in some cases.

Now updated with --pyproject. See main PR description.


TEST: CI: flaky "Error response from daemon" from docker in set_up_sql_server

Error here from the set_up_sql_server step of test-ubuntu in a CI run on a PR:
./.github/workflows/sql_server/set_up_sql_server.sh
  shell: /usr/bin/bash -l {0}
  env:
    MODIN_ENGINE: ray
    MODIN_TEST_READ_FROM_SQL_SERVER: true
    MODIN_TEST_READ_FROM_POSTGRES: true
    MODIN_MEMORY:<PHONE_NUMBER>
    CONDA: /usr/share/miniconda[3](https://github.com/modin-project/modin/actions/runs/3141086969/jobs/5103180310#step:32:3)
    CONDA_PKGS_DIR: /home/runner/conda_pkgs_dir
Error response from daemon: received unexpected HTTP status: [5](https://github.com/modin-project/modin/actions/runs/3141086969/jobs/5103180310#step:32:5)00 Internal Server Error

Another similar error today was "Error response from daemon: toomanyrequests: Too many requests." on test-ubuntu (engine python, python 3.8): https://github.com/modin-project/modin/actions/runs/3141175788/jobs/5103371435
Error response from daemon: toomanyrequests: Too many requests. Please visit https://aka.ms/acr/skus#sku-feature-matrix to view limits of all service tiers.
Error: Process completed with exit code 1.


Webstorm Support

A lot of good work has been done on other IDEs and editors, it would be great to have something for webstorm.

You can setup eslint with standard as the config, fyi.

thats's what I am using right now. Is that the right approach?

@tusharmath PR welcome!

I tried setting standard up with webstorm, but it doesn't seem to work, I'm still getting warning about missing semicolons and I'm not sure the eslint thing does anything at all.
So if someone managed to make it work, it would really be useful to add info about it in the README.

@rom1504 https://github.com/feross/eslint-config-standard
.eslintrc
{
  "extends": [
    "standard"
  ]
}

And in your package.json, you'll wanna install the following:

eslint
eslint-config-standard
eslint-plugin-standard

@rom1504 Also make sure you deselect unterminated statement setting in settings > editor > inspections > Javascript > code style issues

Okay I'll do that, thanks

+1

@cesarandreu Nice - can you send a PR to add this to the readme?


Latest version of web3 is not being installed from the master

Describe the bug
latest version of web3 is not being installed from the master
To Reproduce
Steps to reproduce the behavior:

Clone ether_sql from this repo

Install ether_sql using the command pip install -e . -r requirements.txt

See error

Obtaining web3.py from<EMAIL_ADDRESS>(from -r requirements.txt (line 2))
  Updating ./venv/src/web3.py clone (to revision master)
  Running setup.py (path:/home/ankit/ether_sql/venv/src/web3.py/setup.py) egg_info for package web3.py produced metadata for project name web3. Fix your #egg=web3.py fragments.

Expected behavior
The web3 module from the master repo of web3.py should be installed
Desktop (please complete the following information):

OS: Ubuntu 18.04
Version 0.1.0

Corrected in hotfix: https://github.com/analyseether/ether_sql/commit/1f2746ce6d9ec26c4d1588af78361519587b69a7


Sync old site prerequisites

Sync prerequisites page from old site. PRs 25 through 31 (this one) complete synchronization back through October 4, 2015. I believe this is the last of it.

Reviewed native-code/development/prerequisite-sw/index.md which lgtm


Add a Python version of the Fortran code

@karlwx, @ShawnMurd: here's a draft python version of the Fortran code.  So far it's almost a line-for-line translation of the Fortran code, so the circulation calculation will likely be slow.  I haven't run it yet to see if it's slow enough to cause problems.

The Fortran version takes less than a second, while the python version could take multiple minutes.  That needs to be cut down a bit (ideally to ten seconds or less) before being used in a workshop.

I'm not surprised that the circulation code takes so long to run in Python. I did create a Pythonic version of it a while ago, but I cheated and used Numba's JIT compiler to speed it up so that it wasn't that much slower than the Fortran version. That's one approach you could use to speed things up. All you would need to do is add the @jit decorator before the function definition.
I wonder if maybe it would be easier to keep the circulation computation in Fortran, but use Python to plot the results. That would keep both the Fortran and Python components, and would perhaps better represent a typical research workflow (i.e., use Fortran for the heavy computations, then use Python for data perusal and visualization). Just a thought. You're leading the workshop this year, so you do what you feel is best!

As a follow-up, is the idea to have the Python/Fortran code be a black box? If that's the case, you can use whatever hacks you want to speed it up. When I did the workshop last year, I don't think we even opened any of the Fortran files. The main objective was just to show how to compile and run a Fortran program in Linux if someone shares a Fortran program with you, not how to actually code in Fortran.

I'm not surprised that the circulation code takes so long to run in Python. I did create a Pythonic version of it a while ago, but I cheated and used Numba's JIT compiler to speed it up so that it wasn't that much slower than the Fortran version. That's one approach you could use to speed things up. All you would need to do is add the @jit decorator before the function definition.

Numba is a bit hard for me to work with.  I tried doing multiple interpolations at once using scipy.interpolate.interpn, which took about a minute, then I tried doing that with the Fortran interpolation algorithm, which took about forty seconds, then I tried using numexpr with the Fortran implementation (not the python one I had before), which took the time down to fifteen seconds.
Numexpr is just as much of a cheat as Numba, but I've managed to get it to compile on my setup.  I could change circ.py and interp.py into Cython files while still keeping the Pythonic syntax, but I'd prefer to avoid the compile step.

I wonder if maybe it would be easier to keep the circulation computation in Fortran, but use Python to plot the results. That would keep both the Fortran and Python components, and would perhaps better represent a typical research workflow (i.e., use Fortran for the heavy computations, then use Python for data perusal and visualization). Just a thought. You're leading the workshop this year, so you do what you feel is best!

It would be possible to wrap circ.f and interp.f into a Python "C" extension module with f2py, but I don't know that I could get that working by Monday.  It would show best practices for project code, as defined by R's tidyverse proponents; I might look into that this weekend.
Either way, there would need to be modifications to the presentation to walk people through
module load python/anaconda3_...
conda create -n linux-intro numpy netCDF4 numexpr ...
source activate linux-intro

and at least a general idea of what each of those commands does.

As a follow-up, is the idea to have the Python/Fortran code be a black box? If that's the case, you can use whatever hacks you want to speed it up. When I did the workshop last year, I don't think we even opened any of the Fortran files. The main objective was just to show how to compile and run a Fortran program in Linux if someone shares a Fortran program with you, not how to actually code in Fortran.

Yeah, that's probably what I'll do this year, but it took me embarrassingly long in the process of setting up to remember that (to read through the presentation where it says that).

Numba is a bit hard for me to work with. I tried doing multiple interpolations at once using scipy.interpolate.interpn, which took about a minute, then I tried doing that with the Fortran interpolation algorithm, which took about forty seconds, then I tried using numexpr with the Fortran implementation (not the python one I had before), which took the time down to fifteen seconds.

Wow, I'm impressed that you got it down that low!

It would be possible to wrap circ.f and interp.f into a Python "C" extension module with f2py, but I don't know that I could get that working by Monday. It would show best practices for project code, as defined by R's tidyverse proponents; I might look into that this weekend.

Yup, f2py can be a pain. Probably best to not show this during the workshop.

Yeah, that's probably what I'll do this year, but it took me embarrassingly long in the process of setting up to remember that (to read through the presentation where it says that).

Yeah, keep in mind that most of these folks have minimal experience with a Linux terminal window. It's probably best not to do anything too fancy (or try to teach too much) otherwise it won't be absorbed.

It would be possible to wrap circ.f and interp.f into a Python "C" extension module with f2py, but I don't know that I could get that working by Monday.

Yup, f2py can be a pain. Probably best to not show this during the workshop.

I got the f2py wrapper working this morning, and that implementation keeps the 1 s time scale; I think the other code takes longer mostly because it makes more passes through the data (the Fortran version goes through u and v once each; the numexpr version does over ten).
I have a draft Cython version that should be similar to the Fortran version, but I can't convince the build system that it's an extension module.

Yeah, that's probably what I'll do this year, but it took me embarrassingly long in the process of setting up to remember that (to read through the presentation where it says that).

Yeah, keep in mind that the main goal is just to get people comfortable with a Linux terminal. It's probably best not to do anything too fancy (or try to teach too much), otherwise, that might detract from the main goal.

I'll probably stick to what you had last year: "here is how to find downloaded files; here is how to put them on the server; this is what compiling someone else's code should look like; this is how to run it" is a pretty decent goal.


Support for Pi HW watchdog

Related to pull request #58, but broken out in separate pull request to discuss feasibility:
Support for the Raspberry Pi built-in hardware watchdog. This allows the Pi to reboot in case of a failure, including e.g.:

Kernel Panics
Very High CPU load (> 24)
Out of memory

Can be tested with a fork bomb like:
sudo bash -c ':(){ :|:& };:'

Good call!


Getter and receiver buttons don't refresh

Observed behaviour
Often enough UI buttons get stale even after multiple save→build→deploy buttons and don't appear for new getters and receivers. To resolve this, one has to select and de-select the deployed contract until new buttons appear:

Expected behavior or possible solutions
Resolving this issue #17 may help, as it suggests making the cycle automatic (or at least semi-automatic) for deploying in the Sandbox.

This is a pain point for me as well.


Use of default cookie manager

@tonyofrancis What is the actual use & need of the default cookie manager in v2.3.4?
What is the different between use that and add cookies using addHeader() method?
Related to #281, #300

The cookie manager will automatically manage the cookie on the http client for specific websites/links that needs cookies. Some links need a cookie manager enabled to allow downloading. Just like a website may need cookies enabled to work correctly.

I always use addHeader() method to add cookies,
So now the question is "Is that necessary now? Because you introduce default cookie manager..",
Then what should be the correct fetch configuration for android.
BTW it would be great, if you automate these type (manually add cookies) of boilerplate.

I always use addHeader() method to add cookies,
So now the question is "Is that necessary now? Because you introduce default cookie manager..",
Then what should be the correct fetch configuration for android.
BTW it would be great, if you automate these type (manually add cookies) of boilerplate.

Hey jpvs0101, can you give an example of how to add cookie to request? I am trying but no success.

I always use addHeader() method to add cookies,
So now the question is "Is that necessary now? Because you introduce default cookie manager..",
Then what should be the correct fetch configuration for android.
BTW it would be great, if you automate these type (manually add cookies) of boilerplate.

Hey jpvs0101, can you give an example of how to add cookie to request? I am trying but no success.

Its simple, request.addHeader("Cookie", yourCookieString);
"Cookie" - is a header keyword;

Thanks! I figured it out yesterday. :)


Cannot install node-red-contrib-db2-for-i and node-red-dashboard on IBMi

Hello.
I successfully installed Node-red; from the menu "Manage palette" -> Install, I tried to install node-red-contrib-db2-for-i and node-red-dashboard but both installations fail. It appears it fails installing idb-connector. I also tried manually installing idb-connector from an SSH session, but it keeps failing.
Could you please advise on how can I solve ?
Thank you !
Here the log:
2020-12-04T10_51_53_880Z-debug.log

Hi Massimo,
Can you try running this on your IBM i?
yum install unixODBC unixODBC-devel
I ran into a similar issue when trying to install node odbc the other day and if I remember correctly I had to install this on IBM i as well.

Hello Matt, thank you for replying.
I was just trying to install the examples found in your blog !
I successfully installed the odbc you indicated, but the two node-red modules still fail... these are the messages coming from node-red:
4 Dec 10:27:44 - [info] Server now running at http://<IP_ADDRESS>:1880/
4 Dec 10:28:22 - [info] Installing module: node-red-contrib-db2-for-i, version: 0.2.1
4 Dec 10:28:22 - [warn] Installation of module node-red-contrib-db2-for-i failed:
4 Dec 10:28:22 - [warn] ------------------------------------------
4 Dec 10:28:22 - [warn] Error: spawn npm ENOENT
4 Dec 10:28:22 - [warn] ------------------------------------------
4 Dec 10:28:22 - [error] Error: Install failed
Manually installing idb-connector (1.2.10) also fails, the log seems the same as the one I attached before...
Everything looks very interesting, but I'm still stuck here...

It appears it's running the install from the bin directory, but doing a local install which seems like a very bad idea:
1179 warn enoent ENOENT: no such file or directory, open '/QOpenSys/pkgs/lib/nodejs14/bin/package.json'
1180 verbose enoent This is related to npm not being able to find a file.

Is this log from node-red or your manual install via SSH?

This is the log from manual install. The log coming from node-red is on my previous comment.
Any suggestions on how to install ? I have to tell that I am an RPG developer, but I am trying to experiment the new open source capabilities...

Error: spawn npm ENOENT seems to indicate that npm is not on the $PATH. I'd suggest ensuring that /QOpenSys/pkgs/bin is on your $PATH  and then starting node-red.

Thank you @kadler ! I set the path as follows and it finally worked !
PATH=/QOpenSys/pkgs/bin:$PATH
export PATH
@thebeardedgeek now your dashboard is running, so I can start playing with it..
Anyway, I remember once I set in my home directory a .profile file to make the path "permanent"... this is the content, is there something wrong with it ?
Thank you again
PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin

You may need to add export PATH after it if you're not using Bash. If you are using Bash, you may need to check for .bash_profile which takes precedence over .profile.
Also make sure the data is in ASCII, not EBCDIC.

@MD2706GIT Did you get everything worked out on this?

Hello Matt,
finally I got everything working, although I do not remember what i did..
it was some months ago. In any case, it's all OK.
Thank you
Massimo
Il giorno gio 18 mar 2021 alle ore 13:54 Matt Seeberger <
@.***> ha scritto:

@MD2706GIT https://github.com/MD2706GIT Did you get everything worked
out on this?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/IBM/ibmi-oss-examples/issues/73#issuecomment-801901264,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJEWGTTBA3KN6LWJG6F2OYLTEHZZBANCNFSM4UNJDUZQ
.


MariaDB Installation Issue on M1 Mac

Describe the bug
I’m encountering an issue while building an MWAA Docker image on my M1 Mac related to the installation of MariaDB packages (step 8/34). The installation script fails with several missing GLIBC dependencies for MariaDB-common, MariaDB-devel, and MariaDB-shared RPMs, specifically needing versions like libc.so.6(GLIBC_2.14)(64bit) and others.
I suspect this issue is related to the architecture difference (ARM vs x86_64), as the MariaDB packages are targeting x86_64 architecture.
Any recommendations for addressing this problem?

To Reproduce
Steps to reproduce the behavior:

Clone repository on Mac M1
Create venv
Input credentials in run.sh
Execute run.sh

System Information

OS: macOS Ventura
Kernel version: 22F82
System architecture: ARM
Browser version: Not applicable
Airflow version used: 2.10.1
aws-mwaa-docker-images commit ID: 69c851954e4aaa65d76d5d3dd691fe6614b37214 (latest)

Expected behavior
Installation script should complete successfully without interruptions to finish building the image and run Airflow.

Screenshots

Additional context

Check if there is a MariaDB image or package for ARM architecture
You can use servbay to solve this problem, the most professional environment deployment tool on Mac, one-click installation of mariaDB, you can go to their official website to check

Updating issue title to reflect that an overall update to support ARM is needed.

@marcosgama please let us know if this doesn't resolve your issues.


[BUG] Fix recovery overlays for read-only fs

Description
Currently, there are issues with mounting shared partitions as mount directories cannot be created on the read-only (squashfs) filesystem.
Observed on
Current dunfell branch.
How to reproduce
Flash a raspi with the full-image, boot (into system slot), change active boot slot via rauc status mark-active recovery.0 and reboot. You will end up with mount failures and in emergency mode.
Ideas for fixing
Maybe it's also just an issue of systemd execution order?

Root cause:
There were missing directories in the (read-only) rootfs to mount certain overlays to.
Fixed in:
Dunfell, commit https://github.com/JSydll/emx-base-stack/commit/5aa30c2e66ffb4527a2f3abf88e704696d5567c5


NAV BAR UPDATE

Related Issue
[Cite any related issue(s) this pull request addresses. If none, simply state “None”]
Fixes:  issue #145
Description
changed the nav bar and its UI

Type of PR

[ ] Bug fix
[ ] Feature enhancement
[ ] Documentation update
[ ] Other (specify): _______________

BEFORE:

AFTER:

Checklist:

[x] I have made this change from my own.
[ ] I have taken help from some online resources.
[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers and screenshots after making the changes.

@RAJIV81205
Please see the conflicts highlighted in the image above. Resolve the conflicts in the mentioned files. Ensure you pull all the latest changes before pushing your feature/bug fixes to the main branch. After resolving the conflicts, please open a new PR for review.
Thank you!


Add alert visual element

What would that feature address
Add an alert visual element to Taipy. It is not a notification but a visual element in the application that doesn't disappear. example

Parent issue: #436
Acceptance Criteria

[ ] Ensure new code is unit tested, and check code coverage is at least 90%
[ ] Create related issue in taipy-doc for documentation and Release Notes
[ ] Check if a new demo could be provided based on this, or if legacy demos could be benefit from it
[ ] Ensure any change is well documented

Hello, I am new to taipy and I would love to contribute to this issue. Is it still open?

This is still open. @FabienLelaquais @FredLL-Avaiga ?

Any update @FredLL-Avaiga @FabienLelaquais ?

Not yet, can you set up a meeting so that we can discuss what, how and when?

@FredLL-Avaiga proposes that it be first developed as an extension to be in the product afterwards. What do you think @FabienLelaquais ?

can I be assigned this issue?
Follow-up: how to replicate this issue

This is not an issue to replicate. This is a new feature to add to Taipy. The ticket is about adding a new visual element called alert to Taipy

@Paulie-Aditya
If you are still interested, I can assign the issue to you.
Thank you for your contribution.

Thanks, could you kindly help me out by answering the following questions briefly:
Where and when should this visual element come up?
Could you guide me as to how to work upon this, Should I build it with plain js/react or some other framework you guys are comfortable with?
Lastly, if typing out all this seems hectic, could we connect for a short call and discuss all of it? I promise I won't take up a lot of your time.

Hi @Paulie-Aditya ,
For front-end matters, the key guys to answer your questions are @FredLL-Avaiga @FabienLelaquais @namnguyen20999 @dinhlongviolin1.

Hey @FredLL-Avaiga @FabienLelaquais @namnguyen20999 @dinhlongviolin1 , kindly help me out by answering the above questions.
Thanks for your time.

Hi @Paulie-Aditya,

All components are located in the taipy/frontend/taipy-gui/src/components/Taipy directory. Please build them using React and MUI. Once done, run npm run build:dev.
After completing your component, add it to both the factory.py and viselements.json files. You could take a look into some of our components to see how to add it into those file, take Indicator component for example 😉
Once the above steps are complete, create a Python script that utilizes your component and the feature you're working on. Run the script and debug your component in the browser.

For examples of simple scripts, refer to the doc/gui/examples directory.
Let me know if you'd like any further tweaks!

Thanks for the help! Will work on it and definitely reach back to you with updates!

@quest-bot embark

Help needed
@FredLL-Avaiga @FabienLelaquais @namnguyen20999 @dinhlongviolin1
I have created a custom AlertComponent in React and made changes to register it in the Taipy environment. However, when running the component, I get the error:
<|INVALID SYNTAX - Control is 'alert'|>

Additionally, when testing with a Python script, I get a warning about the alert control being unrecognized.
Files and Changes
AlertComponent.tsx:
import React from "react";
import Alert from "@mui/material/Alert";
import { TaipyBaseProps } from "./utils";

interface AlertComponentProps extends TaipyBaseProps {
    severity?: "error" | "warning" | "info" | "success";
    message: string;
}

const AlertComponent = (props: AlertComponentProps) => {
    const { severity = "info", message } = props;
    return (
        <Alert severity={severity} id={props.id} className={props.className}>
            {message}
        </Alert>
    );
};

export default AlertComponent;

Changes in factory.py:
"alert": lambda gui, control_type, attrs: _Builder(
    gui=gui,
    control_type=control_type,
    element_name="AlertComponent",
    attributes=attrs,
)
.set_value_and_default(with_update=False)
.set_attributes(
    [
        ("severity", PropertyType.string),
        ("message", PropertyType.dynamic_string),
    ]
),

viselements.json:
[
    "alert",
    {
        "inherits": ["shared"],
        "properties": [
            {
                "name": "severity",
                "default_property": true,
                "type": "dynamic(str)",
                "default_value": "\"info\"",
                "doc": "Defines the severity level of the alert. Valid values: \"error\", \"warning\", \"info\", \"success\"."
            },
            {
                "name": "message",
                "type": "dynamic(str)",
                "default_value": "\"\"",
                "doc": "The message displayed in the alert."
            },
            {
                "name": "variant",
                "type": "str",
                "default_value": "\"filled\"",
                "doc": "Defines the variant of the alert. Can be \"filled\", \"outlined\", or \"standard\"."
            }
        ]
    }
]

test.py:
from taipy.gui import Gui

severity_level = "info"
alert_message = "This is an alert message!"

Gui("""
# Testing Alert Component
<|{severity_level}|alert|message={alert_message}|>
""").run()

Screenshot of the Error:

you need to add the default property name here

I suppose message would be the default property ?
then it doesn't need to be declared in
.set_attributes(
and with_update should be True as it is a dynamic property in .set_value_and_default(with_update=True)
you should look in other components to see how className is handled

@FredLL-Avaiga
Made changes as mentioned but still error remains the same. Please Help!
<|INVALID SYNTAX - Control is 'alert'|>

Files and Changes
AlertComponent.tsx:
import React, { useCallback, useMemo } from "react";
import Alert from "@mui/material/Alert";
import { TaipyBaseProps } from "./utils";
import { useClassNames } from "../../utils/hooks";

interface AlertComponentProps extends TaipyBaseProps {
    severity?: "error" | "warning" | "info" | "success";
    message: string;
    variant?: "filled" | "outlined" | "standard";
}

const AlertComponent = (props: AlertComponentProps) => {

    const { severity = "info", message, variant = "filled" } = props;

    // Handle className using a custom hook, if applicable
    const className = useClassNames(props.libClassName, props.dynamicClassName, props.className);

    // Memoize the severity and message rendering to optimize performance
    const renderAlert = useCallback(() => {
        return (
            <Alert severity={severity} variant={variant} id={props.id} className={className}>
                {message}
            </Alert>
        );
    }, [severity, message, variant, className, props.id]);

    // Use useMemo to potentially optimize complex rendering, though here it's simple
    return useMemo(() => renderAlert(), [renderAlert]);
};

export default AlertComponent;

Changes in factory.py:
 __CONTROL_DEFAULT_PROP_NAME = {
        "alert": "message",
}
 __CONTROL_BUILDERS = {
        "alert": lambda gui, control_type, attrs: _Builder(
            gui=gui,
            control_type=control_type,
            element_name="AlertComponent",
            attributes=attrs,
        )
        .set_value_and_default(with_update=True)  # Enable dynamic updates for the default property (message)
        .set_attributes(
            [
                ("severity", PropertyType.string),  # Add severity as it's not the default property
            ]
        ),
}

test.py:
from taipy.gui import Gui, Markdown

# Initialize the alert message and severity
alert_message = "This is an alert message!"
alert_severity = "info"

# Define the page with the custom alert component
page = Markdown(
    """
# Alert Component Test

## Current Alert:
<|{alert_message}|alert|severity={alert_severity}|>

### Update Alert Message:
<|{alert_message}|input|on_change=update_alert|>

### Update Alert Severity:
<|{alert_severity}|selector|lov={['error', 'warning', 'info', 'success']}|on_change=update_alert|>
"""
)

# Update the alert properties dynamically
def update_alert(state, var_name, value):
    if var_name == "alert_message":
        state.alert_message = value
    elif var_name == "alert_severity":
        state.alert_severity = value

# Run the GUI
if __name__ == "__main__":
    Gui(page).run(title="Test Alert Component")

Screenshot:

P.S. npm run build:dev compiles successfully.

Why don't you create a branch and a PR?
Then we can discuss.

Hey @FredLL-Avaiga
I've created a branch and opened a PR as suggested. This is my first time submitting a PR, so I kindly request your review. If I've made any mistakes, I would greatly appreciate your guidance and feedback. Apologies in advance for any errors!
Here’s the link to the PR:
https://github.com/Avaiga/taipy/pull/1975
Thank you for your time!

No problem
That's exactly the purpose of a PR
Purpose a base for discussion

@Rishi-0007, don’t forget to import your component into taipy/frontend/taipy-gui/src/components/Taipy/index.ts. After that, make sure to add the imported component to the object inside the getRegisteredComponents function. This make sure your component registered

Hi @namnguyen20999 ,
I've implemented the changes as suggested, including registering the AlertComponent in index.ts and modifying test.py to ensure dynamic behavior is tested. However, I'm still encountering the same issue with the control being unrecognized.
Here is the output when running the test:
python test-alert.py
[2024-10-09 03:28:39][Taipy][INFO]  * Server starting on http://<IP_ADDRESS>:5000
/usr/lib/python3.12/subprocess.py:1127: ResourceWarning: subprocess 326835 is still running
  _warn("subprocess %s is still running" % self.pid,
ResourceWarning: Enable tracemalloc to get the object allocation traceback
WARNING:root:
--- 1 warning(s) were found for page '/' in variable 'md' ---
 - Warning 1: Unrecognized control alert at line 5: "<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>".
--------------------------------------------------------------

alert_severity changed to: success
alert_severity changed to: success
^CKeyboardInterrupt
2024-10-08T21:58:55Z
Traceback (most recent call last):
  File "/home/rishi/taipy/frontend/taipy-gui/src/components/Taipy/test-alert.py", line 36, in <module>
    Gui(md).run()
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/taipy/gui/gui.py", line 2530, in run
    return self._server.run(
           ^^^^^^^^^^^^^^^^^
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/taipy/gui/server.py", line 319, in run
    self._ws.run(**run_config)
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/flask_socketio/__init__.py", line 718, in run
    self.wsgi_server.serve_forever()
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/gevent/baseserver.py", line 400, in serve_forever
    self._stop_event.wait()
  File "src/gevent/event.py", line 163, in gevent._gevent_cevent.Event.wait
  File "src/gevent/_abstract_linkable.py", line 521, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait
  File "src/gevent/_abstract_linkable.py", line 487, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
  File "src/gevent/_abstract_linkable.py", line 490, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
  File "src/gevent/_abstract_linkable.py", line 442, in gevent._gevent_c_abstract_linkable.AbstractLinkable.__wait_to_be_notified
  File "src/gevent/_abstract_linkable.py", line 451, in gevent._gevent_c_abstract_linkable.AbstractLinkable._switch_to_hub
  File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
  File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
  File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._greenlet_switch
KeyboardInterrupt

The main warning I'm receiving is:
--- 1 warning(s) were found for page '/' in variable 'md' ---
 - Warning 1: Unrecognized control alert at line 5: "<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>".

Despite the component being registered as per the previous instructions, the alert control is still not recognized. Could you please advise on what might be missing or misconfigured? I have also opened a PR https://github.com/Avaiga/taipy/pull/1975
Thank you for your time and assistance.

Hi @namnguyen20999 ,
I've implemented the changes as suggested, including registering the AlertComponent in index.ts and modifying test.py to ensure dynamic behavior is tested. However, I'm still encountering the same issue with the control being unrecognized.
Here is the output when running the test:
python test-alert.py
[2024-10-09 03:28:39][Taipy][INFO]  * Server starting on http://<IP_ADDRESS>:5000
/usr/lib/python3.12/subprocess.py:1127: ResourceWarning: subprocess 326835 is still running
  _warn("subprocess %s is still running" % self.pid,
ResourceWarning: Enable tracemalloc to get the object allocation traceback
WARNING:root:
--- 1 warning(s) were found for page '/' in variable 'md' ---
 - Warning 1: Unrecognized control alert at line 5: "<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>".
--------------------------------------------------------------

alert_severity changed to: success
alert_severity changed to: success
^CKeyboardInterrupt
2024-10-08T21:58:55Z
Traceback (most recent call last):
  File "/home/rishi/taipy/frontend/taipy-gui/src/components/Taipy/test-alert.py", line 36, in <module>
    Gui(md).run()
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/taipy/gui/gui.py", line 2530, in run
    return self._server.run(
           ^^^^^^^^^^^^^^^^^
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/taipy/gui/server.py", line 319, in run
    self._ws.run(**run_config)
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/flask_socketio/__init__.py", line 718, in run
    self.wsgi_server.serve_forever()
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/gevent/baseserver.py", line 400, in serve_forever
    self._stop_event.wait()
  File "src/gevent/event.py", line 163, in gevent._gevent_cevent.Event.wait
  File "src/gevent/_abstract_linkable.py", line 521, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait
  File "src/gevent/_abstract_linkable.py", line 487, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
  File "src/gevent/_abstract_linkable.py", line 490, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
  File "src/gevent/_abstract_linkable.py", line 442, in gevent._gevent_c_abstract_linkable.AbstractLinkable.__wait_to_be_notified
  File "src/gevent/_abstract_linkable.py", line 451, in gevent._gevent_c_abstract_linkable.AbstractLinkable._switch_to_hub
  File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
  File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
  File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._greenlet_switch
KeyboardInterrupt

The main warning I'm receiving is:
--- 1 warning(s) were found for page '/' in variable 'md' ---
 - Warning 1: Unrecognized control alert at line 5: "<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>".

Despite the component being registered as per the previous instructions, the alert control is still not recognized. Could you please advise on what might be missing or misconfigured? I have also opened a PR #1975
Thank you for your time and assistance.

Can you please push your latest commit to your PR so that we could take a look into it ? 🧐

Hi @namnguyen20999 ,
I've implemented the changes as suggested, including registering the AlertComponent in index.ts and modifying test.py to ensure dynamic behavior is tested. However, I'm still encountering the same issue with the control being unrecognized.
Here is the output when running the test:
python test-alert.py
[2024-10-09 03:28:39][Taipy][INFO]  * Server starting on http://<IP_ADDRESS>:5000
/usr/lib/python3.12/subprocess.py:1127: ResourceWarning: subprocess 326835 is still running
  _warn("subprocess %s is still running" % self.pid,
ResourceWarning: Enable tracemalloc to get the object allocation traceback
WARNING:root:
--- 1 warning(s) were found for page '/' in variable 'md' ---
 - Warning 1: Unrecognized control alert at line 5: "<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>".
--------------------------------------------------------------

alert_severity changed to: success
alert_severity changed to: success
^CKeyboardInterrupt
2024-10-08T21:58:55Z
Traceback (most recent call last):
  File "/home/rishi/taipy/frontend/taipy-gui/src/components/Taipy/test-alert.py", line 36, in <module>
    Gui(md).run()
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/taipy/gui/gui.py", line 2530, in run
    return self._server.run(
           ^^^^^^^^^^^^^^^^^
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/taipy/gui/server.py", line 319, in run
    self._ws.run(**run_config)
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/flask_socketio/__init__.py", line 718, in run
    self.wsgi_server.serve_forever()
  File "/home/rishi/taipy/venv/lib/python3.12/site-packages/gevent/baseserver.py", line 400, in serve_forever
    self._stop_event.wait()
  File "src/gevent/event.py", line 163, in gevent._gevent_cevent.Event.wait
  File "src/gevent/_abstract_linkable.py", line 521, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait
  File "src/gevent/_abstract_linkable.py", line 487, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
  File "src/gevent/_abstract_linkable.py", line 490, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
  File "src/gevent/_abstract_linkable.py", line 442, in gevent._gevent_c_abstract_linkable.AbstractLinkable.__wait_to_be_notified
  File "src/gevent/_abstract_linkable.py", line 451, in gevent._gevent_c_abstract_linkable.AbstractLinkable._switch_to_hub
  File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
  File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
  File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._greenlet_switch
KeyboardInterrupt

The main warning I'm receiving is:
--- 1 warning(s) were found for page '/' in variable 'md' ---
 - Warning 1: Unrecognized control alert at line 5: "<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>".

Despite the component being registered as per the previous instructions, the alert control is still not recognized. Could you please advise on what might be missing or misconfigured? I have also opened a PR #1975
Thank you for your time and assistance.

Can you please push your latest commit to your PR so that we could take a look into it ?

Done please check it here. Thank you for your time and assistance.

Hi @FredLL-Avaiga @namnguyen20999 ,
I've followed the steps for adding the Notification component, but I'm still encountering an issue where the component is not recognized. The error shows:
test
from taipy.gui import Gui

# Define the dynamic properties for the notification
alert_message = "This is a dynamic notification!"
alert_severity = "info"
alert_variant = "filled"

# Define the page with the notification component
page = """
<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>
"""

if __name__ == "__main__":
    Gui(page).run(title="Notification Test")

output:
Unrecognized control alert at line 2: "<|{alert_message}|alert|severity={alert_severity}|variant={alert_variant}|>".

Despite trying multiple fixes, the issue persists. Could you please help me troubleshoot this?
Thank you!

Let me know if you'd like to adjust anything further!

when your building the frontend bundle do you have any error in the log (scroll up to be sure) ?


Add a link to the informational content in the footer

There is no way for a user to get back to the information pages about GC Forms (marketing pages). Add a "About GC Forms" link to the footer to help people navigate to this important information.

Placing this link in the footer goes against Branding standards; more thought should be given to placement.


[Bug] model '/data/InternVL-Chat-V1-5' requires transformers version None but found transformers 4.36.2 installed.

Checklist

[X] 1. I have searched related issues but cannot get the expected help.
[X] 2. The bug has not been fixed in the latest version.

Describe the bug
使用lmdeploy尝试部署InternVL-Chat-V1-5遇到的bug
Reproduction
git clone https://github.com/InternLM/lmdeploy.git
cd lmdeploy
pip install -e .
lmdeploy serve api_server /data/InternVL-Chat-V1-5 --server-port 23333
Environment
python 3.10
transformers 4.36.2
pytorch 2.2.1
cuda 12.2

Error traceback
2024-04-30 07:37:06,501 - lmdeploy - ERROR - TypeError: expected string or bytes-like object
2024-04-30 07:37:06,501 - lmdeploy - ERROR - <transformers> test failed!
model `/data/InternVL-Chat-V1-5` requires transformers version None but transformers 4.36.2 is installed.

We don't support install by pip install -e ., please refer to installation guide https://github.com/InternLM/lmdeploy/blob/main/docs/en/build.md

InternVL-Chat-V1-5 is supported in the latest version v0.4.1. Enjoy 😃


Any introduction about api encode_with_unstable?

https://github.com/openai/tiktoken/blob/095924e02c85617df6889698d94515f91666c7ea/src/lib.rs#L524
Hello, I'm reading the lib.rs code and found the encode_with_unstable api, tt donesn't seem to be used in the documentation?
But it occupied so much in the lib.rs, and the comments in code don't explain Why and What.
So maybe some extra explanation?

This is a great question. I have some nice internal documentation explaining what problem this is solving, I'll see if I can make a version of it that doesn't include internal-only details.

Any update on this?  I'm working on a PR for this repo and need to make sure I don't break encode_with_unstable.  Would help to understand the use-cases it's serving.


FusionFinder: src/FusionFinder.cpp:41: std::__cxx11::string geneFromTranscript(std::__cxx11::string): Assertion `!match.empty()' failed.

Hi,
I used the new version of Aeron, but when I run the step of "rule fusionfinder" in the Snakefile_fusion, there always have the error.

Aborted (core dumped).
The format of input file I generated is in the attach file.
format.txt

Hi,
Thank you for using the software. Can you please upload your config file. Also, did you first run the quantification step and was it successful

Hi,
Thanks for your reply. I first run the quantification step  and it was successful and the first steps of Snakefile_fusion are also successful. But when I run the "fusionfinder"  step in the Snakefile_fusion. It always have the same error.
The config file and whole error log file are in attachment.
fusionfinder_stderr_N01_cdna_hg38.txt
config.zip

Hi,
The software is failing to parse the gene name from the transcript name. Could you please upload the fasta file you used for the reference transcripts?

Hi，
The reference transcripts  format file is in the attachment.
Thanks.
cDNA.txt
Do you mean there must have a format of the head line of each  transcripts?
Maybe I need to download  reference  transcripts in Ensemble.

Hi,
For now you can fix this either with this sed script sed -i 's/ ENSG/ gene:ENSG/g' input/transcript_file.fa or by search-and-replaceing " ENSG" with " gene:ENSG" in the transcript file. We'll look into more robust parsing.

Hi lane-zhao, maickrau,
I also had the same problem in the step3 Fusion-gene detection. The error is,
FusionFinder: src/FusionFinder.cpp:41: std::__cxx11::string geneFromTranscript(std::__cxx11::string): Assertion `!match.empty()' failed.
Command terminated by signal 6
I have downloaded the transcript file from ensembl.org. The format is,

ENST00000557168.1 cdna chromosome:GRCh38:14:22168429:22168988:1 gene:ENSG00000259092.1 gene_biotype:TR_V_gene transcript_biotype:TR_V_gene gene_symbol:TRAV30 description:T cell receptor alpha variable 30 [Source:HGNC Symbol;Acc:HGNC:12129]
ATGGAGACTCTCCTGAAAGTGCTTTCAGGCACCTTGTTGTGGCAGTTGACCTGGGTGAGA
AGCCAACAACCAGTGCAGAGTCCTCAAGCCGTGATCCTCCGAGAAGGGGAAGATGCTGTC

Please tell me if you have any good suggestions to solve this problem. I will be grateful for your help!

Hi Br1anChou ，
You shoule run the pipleline again form the first step by using  the transcript file from ensembl.org.

Hi,
I tried to download the transcript file and gtf file from ensemble, and reran all commands. But it didn't seem to work. I always got the error,
**Error in rule fusionfinder:
jobid: 8
output: fusiontmp/unfiltered_fusions_ccs_hg38cdna_hg38.txt, fusiontmp/unfiltered_corrected_ccs_hg38cdna_hg38.txt
log: fusiontmp/fusionfinder_stderr_ccs_hg38cdna_hg38.txt, fusiontmp/fusionfinder_stdout_ccs_hg38cdna_hg38.txt
RuleException:
CalledProcessError in line 98 of /software/Aeron/Snakefile_fusion:
Command ' set -euo pipefail;  /usr/bin/time -v Binaries/FusionFinder input/hg38.gfa fusiontmp/loose_gene_fusion_ccs_hg38cdna_hg38.txt fusiontmp/exactmatrix_ccs_hg38cdna_hg38.txt output/aln_hg38cdna_hg38_full_length.gam input/ccs.fq 1 1.0 1 1 3 fusiontmp/unfiltered_fusions_ccs_hg38cdna_hg38.txt fusiontmp/unfiltered_corrected_ccs_hg38cdna_hg38.txt 1> fusiontmp/fusionfinder_stdout_ccs_hg38cdna_hg38.txt 2> fusiontmp/fusionfinder_stderr_ccs_hg38cdna_hg38.txt ' returned non-zero exit status 6.
File "/software/Aeron/Snakefile_fusion", line 98, in __rule_fusionfinder
File "/software/python3.6/lib/python3.6/concurrent/futures/thread.py", line 56, in run
Shutting down, this might take some time.
Exiting because a job execution failed. Look above for error message
Complete log: /software/Aeron/.snakemake/log/2020-03-29T031559.394489.snakemake.log**
And I checked fusiontmp/fusionfinder_stderr_ccs_hg38cdna_hg38.txt, I still got the same erros. Please help me, and I hope this software will work successfully as soon as possible.

I got the familiar error because of header line format in the transcript.fasta file. It looks like the format of header line must be ">ENST00000492598.1 gene:ENSG00000117122.14".


tooltips

the tooltips dont work with mobile. Can change tooltip on label to something that works on mobile?

Tooltips are triggered using the "onhover" event. On mobile "onhover" is triggered by a "short press" which isn't convenient. There's no alternative, it's you to adjust your UI for mobile friendliness.


how to use robucop.vim?

Noob in Vim here.
How do I exactly incorporate that to an existing vimrc?

Get a basic understanding of how Vim works
Get a basic understanding of how Vim plugins work
Install syntastic
Read the manual
Add the recommended settings to your vimrc
Configure syntastic to run rubocop (you should have found out how to do that at step 4.) :)
Start checking your code.

If you need help beyond the above, this is probably not the right place to start.  Sorry about that.


Fix spelling error in documentation

Coverage remained the same at 95.803% when pulling c12ffe53a06bb61955f124a1e56a4a6b190334ac on AlphaHydrae:master into 1043dccf3b19463f4209e9a7ed5023a5bce13953 on Vincit:master.

Thanks!


Autogenerated update for Logging version v2beta1 (2016-11-29)

why i do not see Google Wallet in Service on this version?


Failed to connect to Davinci Resolve via AutoSubs Link

downloaded the new v2 and before it was going well it generated through but it didnt add any and popped up with this message (btw i used v1 and it worked perfectly and still does so idk if there was an update possibly done)

Same here.

its fixed now download his new update


Update documentation with example of using 'remaining' object

Hello! Great card, btw! :)
SInce I can't manage to use the 'remaining' object, would it be possible to add an exemple of usage?
Thanks in advance!

Hold your horses. I just started working on this today. It is released yet.


level=error msg="Failed to connect to proxy" error="websocket: bad handshake" when importing eks cluster

Bug:
Steps to reproduce:
import eks cluster,
running the yaml file that install all the cattle stuff
rancher node agent container exception:
Result:
level=error msg="Failed to connect to proxy" error="websocket: bad handshake
Other details that may be helpful:
We manage an on premise HA cluster in one of our data centers and trying to import an existing eks cluster that we've created with terraform
server mtu: 9000
docker engine mtu: 9000
eks worker mtu: 9001
Environment information

Rancher version: 2.2.8
Installation option (HA):

Cluster information

Cluster type (Hosted):
Machine type (metal) and specifications (CPU/memory): Dell R730XD
Kubernetes version : v1.14.1

- Docker version`: 19.03.1

I found a potential solution to the issue: https://github.com/rancher/rancher/issues/20651#issuecomment-528683673


How i can understand, that model is not sure with answers ? (Get Entropy/Probas)

i'm aware about temperature, top k/p parameters which i can configure using Ollama as serv. function for models inferencing,
But how do i can understand, that model is not sure about particular answer by my promts? While model inferences with Ollama.
I need to understand this to perform post-processing of 'low quality' answers.
Is it any possible ways to understand this ? Maybe by some optional parametr ? or get probas of tokens and calculate entropy.
Thanks!

Do you have an algorithm or something like that for this?
Because it is possible to get back the probability of a token. But I wouldn't know where to go from there as I don't care about 50 -75% of the tokens of a response as long as it is readable. And tokens are not words etc.
The truthfulness of an answer hangs afaik mostly on just 1 or 2 words per sentence, the rest is just fluff to make it readable.
So first you would need to get all the statistics of all tokens (relatively easily done)
So you would need to find the most important words in an answer (you could use a lower model for this)
Then you have to translate the words to tokens, get the probabilities from that, and see what the probabilities of the keywords are, also taking into account all the alternatives with probabilities (a token can be unsure if it is for example single or plural, but that doesn't often change the truthfulness)
So I can see a way to make it work with something like crew-ai or basically multiple llms, but Ollama is (at least for me) just 1 model per question.
Another way to make it work for me is just simply ask a json response (I already need that) and just add a truthfulness grade from 1-10 into the response, I even ask it to add an explanation of the grade into the response.
And that works well for me, it will still sometimes hallucinate on the grade or the explanation or something like that, but if it gives a grade other than 1-10 then I just re-ask the question with a new context, which I also do if the model returns invalid json.
I have found that it is very important not to constrict the model to a grammar, as for me it seems like if the model goes off the road with the json prompting then it has a really high chance to go off the road with the answer
Or you could simulate json with just adding instructions for a start-word and a stop-word. If it doesn't obey those simple instructions, then it hasn't read the question good enough.
So I can see multiple ways around it with prompting, but no real way to put it in Ollama.

Hello @Gomez12 thanks for the advise.
I wanted to understand by some value and so on, to collect metrics and statistic.
i found one interesting article reg. my question  https://medium.com/@miskelic/how-to-teach-your-llm-to-say-i-dont-know-8dc8beac1ea9
By the way i resolved my question by post processing. I found, if model tries to reflect to much, then model increases special symbols. It is accurate to my case. So, if there are to much symbols like "[" "(", e.t.c.
Model highlights alternative options by it, then model is not sure with the answer  :)
Thanks!


Could not build manifest

I tried to run the steps on
https://phero.dev/docs/getting-started
but when I try to run step 3 (https://phero.dev/docs/getting-started#step-3-run-the-development-environment) , I get this error
npx phero
npx: installed 61 in 2.26s
2022-11-06T18:59:14.985Z (node:6674) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open
'/Users/thehangrycoder/projects/temp/phero-example-project/api/phero-manifest.d.ts'
2022-11-06T18:59:14.9(node:6674) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside
4Z                   of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:6674) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections
that are not handled will terminate the Node.js process with a non-zero exit code.
phero-client @ ./app ◢ Building client...
phero-server @ ./api ✖ Could not build manifest
funcs.flatMap(...) is not a function or its return value is not iterable
If you think this is a bug, please submit an issue here: https://github.com/phero-hq/phero/issues

Fixed it
The tsconfig on the site was incorrect .. should be
    "rootDir": "src",
    "outDir": "dist"


feature request - display collections

It would be cool as other drivers do  - display tables and so on in treeview in left pane and to be able to fire query over context menu.

I've updated the package to handle your request. Now LinqPad shows collections in treeview and context menu shortcuts seem working well.
Anyway given the design nature of LiteDB as true schema-less database I couldn't specify any field under collections.

Absolutely cool stuff! Thanks
Couldbe without all prefix,  but this stuff is awesome, great job.


the redis instance slot info (from what to what) is stored in which config fiile?

please check codis's slides http://qiniuppt.qiniudn.com/liuqi.pdf


Long Covid prediction is MOST urgent

Yes would be great if it could make long predictions. I would be rich lol AFAIK no, this model needs enough days to be able to predict.

Just to inspire U :-)


Include documentation in #info requests

This builds on top of #925 (supersedes #921) to provide documentation in fstar-mode:

It slightly bothers me that documentation (a completely syntactic / cosmetic concern) appears in the guts of the type-checker...
Is there a way to keep a separate table on the side that is touched by desugaring only, so that the type-checker doesn't have to worry about fsdocs?

Other than that, the code looks excellent! :)

It slightly bothers me that documentation (a completely syntactic / cosmetic concern) appears in the guts of the type-checker...

Fair point.  Isn't it the same with ranges, though? Or do you see them as more fundamental than docs?

Good point. I see ranges as a tad bit more fundamental, since they're needed in depth (i.e. in the guts of the type-checker) to locate ourselves and throw an error message along with location information at arbitrary depth in the call stack. fsdocs, however, are not needed at arbitrary depth in the call stack, and are only queried from the interactive mode "receiver", if I undestand correctly.
Let me know if that's a lot of work for you to perform this change, and I'll merge now until you find time to perhaps clean things up later on.

(rebased on master to clarify what comes from this PR and what comes from the previous one :)

Very helpful, thanks.

@nikswamy may have an opinion on this fsdoc vs range business too

I see ranges as a tad bit more fundamental, since they're needed in depth (i.e. in the guts of the type-checker) to locate ourselves and throw an error message along with location information at arbitrary depth in the call stack.

Good point

fsdocs, however, are not needed at arbitrary depth in the call stack, and are only queried from the interactive mode "receiver", if I undestand correctly.

Fair point too

Let me know if that's a lot of work for you to perform this change, and I'll merge now until you find time to perhaps clean things up later on.

I'm not sure.  I'll need to look.  Is there a good story in F* to have a global reference reverted to its previous state when the user steps back ?

Thanks for these changes Clement.
I would also strongly prefer to not have fsdoc creep beyond the front end.
As for reverting the state of references:
Keeping some state in the front end associated with a dsenv and augmenting the push/pop behavior here:
https://github.com/FStarLang/FStar/blob/master/src/tosyntax/FStar.ToSyntax.Env.fs#L969
would probably be the simplest way to have whatever additional state you need follow the same discipline as the other state that gets reverted as the user steps back.

Got it; I'll try to update the patches.
Most of the documentation in the current patch is currently collected in the desugar* functions.  Just to make sure I'm getting this right @nikswamy, you're suggesting to add a table to ToSyntax.Env and add to modify that table from the various desugaring functions.  Correct?  And then I'd copy that table in ToSyntax's push.
I'm guessing that storing the info in a table of lid → fsdoc would be good.  Is there a pure implementation of that easily accessible already from F*'s sources?

Yes, adding a table to ToSyntax.Env would be good.
I don't know of an existing lid -> fsdoc table, but you could use FStar.Util.smap fsdoc, where the keys are the strings in a lident.str. (Although I've never worked on fsdoc myself, so I'm not sure.) However, these smaps are not pure ... so you need to copy them in push, as we do now with there with sigmap.

Thanks! I'll look into this.

Ok, I think this is ready for a new round of review :)

@cpitclaudel, @protz, I merged the changes, looked good to me. A general comment on desugaring code, it would be good to do push_sigelt and push_doc in a single place, but I can take it up on my aseem_env_changes branch, where I am trying to centralize all the changes to the environments to help populating the environments if modules are deserialized.

A general comment on desugaring code, it would be good to do push_sigelt and push_doc in a single place

Agreed, but tricky (as long as docs were attached to sigelts that was easy, but now the docs and the sigelts are separate, and in some cases we push docs without pushing sigelts). Let me know if I can help!

Btw, can we bump F*'s version number? (is it OK for me to do it?) This way I can update fstar-mode to use this feature by default.


Issue 5(Suggestion): Boss AI/Attack Pattern Only Targeting player one.

In the boss fight only player one is targeted, thus as one person playing both characters the boss can be defeated by causing it to walk into the line of fire of player 2. I think there are three possible solutions to this. Either make the boss's targeting more varied or have the attacks be area of effect or have additional mobs in the boss room to act as obstacles.

bug has been fixed