Пример #1
0
        internal IntRange _CalcCellRange(PyObject key, Range seq)
        {
            if (key.IsNone())
            {
                return(new IntRange(1, seq.count));
            }

            if (key.IsInt())
            {
                return(new IntRange(
                           key.As <int>() + 1
                           ));
            }

            if (key.IsSlice())
            {
                var range = new PyRangeAccess(key);
                if (range.Step != null)
                {
                    throw new Exception();
                }

                return(new IntRange(
                           range.Start?.As <int>() + 1 ?? 1,
                           range.Stop?.As <int>() ?? rows.count
                           ));
            }

            throw new Exception($"key = {key}");
        }
Пример #2
0
        public Range get_item0_key(PyObject key)
        {
            using (Py.GIL())
            {
                if (key.IsString())
                {
                    return(get_range(key.As <string>()));
                }

                if (key.IsSlice())
                {
                    var range = new PyRangeAccess(key);
                    if (range.Start == null && range.Stop == null)
                    {
                        return(this);
                    }

                    if ((range.Start?.IsString() ?? false) &&
                        (range.Stop?.IsString() ?? false))
                    {
                        return(get_range($"{range.Start.As<string>()}{range.Stop.As<string>()}"));
                    }
                }

                throw new Exception("invaild type");
            }
        }